import telebot
import requests
from telebot import types
import conf_bot

auth = conf_bot.auth
url = conf_bot.url
bot = telebot.TeleBot(conf_bot.TOKEN)

# Обработка команд "/start" и "/help"
@bot.message_handler(commands=['start', 'help'])
def start(message):
    sent = bot.send_message(message.chat.id, 
    	'''*Тестовый бот NetPing* 

    	Этот бот может запросить актуальные данные 
    	с датчиков и IO линий устройства NetPing. 

    	Для продолжения используйте команду /npstatus''')
    
# Обработка команды "/npstatus", создание меню.
@bot.message_handler(commands=['npstatus'])
def status(m):
	keyboard = types.InlineKeyboardMarkup() 
	keyboard.add(*[types.InlineKeyboardButton(text=name, 
		callback_data=name) for name in ['Температура', 
	'Влажность' , 'Cтатус IO линии' ]])
	msg = bot.send_message(m.chat.id, ' Выберите параметр:',
		reply_markup=keyboard)

# Обработка нажатия кноки меню "Температура"
@bot.callback_query_handler(func=lambda c: True)
def inline(c):
	if c.data =='Температура':
		bot.edit_message_text(
			chat_id=c.message.chat.id,
			message_id=c.message.message_id, 
			text='Текущие показания термодатчиков UniPing Server Solution v3',
			parse_mode='Markdown')
		i=1
		while i <=8:
			def termo ():
				r = requests.get(url+'thermo.cgi?t'+str(i), auth=auth)
				t = r.text[20:22]
				s = r.text[-3]
				if s == '0':
					t = ('Датчик #' +str(i) + ' не подключен или сбоит.')
					return t
				else:
					t= ('Текущая температура на термодатчике #' 
					+ str(i)  +':  '+ t + ' градусов С' )
					return t			
			term = termo()			
			sent = bot.send_message(c.message.chat.id, term )			
			i=i+1
			
			
# Обработка нажатия кнопки меню "Влажность"		
	elif c.data =='Влажность':
		bot.edit_message_text(
			chat_id=c.message.chat.id,
			message_id=c.message.message_id, 
			text='Текущие показания датчиков влажности UniPing Server Solution v3',
			parse_mode='Markdown')
		i=1
		while i <=4:
			def rel_hum ():
				r = requests.get(url+'relhum.cgi?h'+str(i), auth=auth)
				h = r.text[20:22]
				s = r.text[-3]
				if s == '0':
					h = ('Датчик #' +str(i) + ' не подключен или сбоит.')
					return h
				else:
					h= ('Текущая относительная влажность на датчике #' 
					+ str(i)  +':  '+ h + ' %' )
					return h			
			hum = rel_hum()			
			sent = bot.send_message(c.message.chat.id, hum )			
			i=i+1
	

# Обработка нажатия кнопки меню "Статус IO линии"
	elif c.data =='Cтатус IO линии':
		bot.edit_message_text(
			chat_id=c.message.chat.id,
			message_id=c.message.message_id, 
			text='''Текущий статус IO линий UniPing Server Solution v3 
			(0 - выкл. 1 - вкл.)''',
			parse_mode='Markdown')
		i=1
		while i <=8:
			def IO_line ():
				r = requests.get(url+'io.cgi?io'+str(i), auth=auth)
				io = r.text[20:21]				
				if io == '0':
					io = ('Текущее состояние IO линии #' 
						+ str(i) + ': ' + io + ' выключено')
					return io
				else:
					io= ('Текущее состояние IO линии #' 
						+ str(i)  + ': ' + io + ' включено')
					return io			
			io_stat = IO_line()			
			sent = bot.send_message(c.message.chat.id, io_stat )			
			i=i+1


bot.polling()
