22/01/2018, 11:19
Ciao,
Sono nuovo del forum e alle prime armi con python.
Voglio realizzare un Bot x telegram che mi invii un messaggio di testo + un messaggio vocale (che deve registrare il raspberry) alla chiusura di un contatto collegato alla GPIO.
Oltre a questo ho bisogno di inviare dei comandi al Bot da telegram per fare effettuare dei comandi banali al raspberry (il riavvio, spegnerlo, ecc.)
Seguendo alcune discussioni in internet sono riuscito a fare le due cose separatamente ma se metto tutto il codice sotto lo stesso file py non riesco a farlo girare.
Sicuramente sbaglio un comando o l'indentazione del codice o giù di lì ma non ne vengo a capo....
questo è quello che ho realizzato:
import sys
import os
import telepot
import datetime
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
input_state = GPIO.input(16)
"""
Ctrl-C per uscire.
"""
id_a = [1111111,2222222,3333333,4444444,5555555]
def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
sender = msg['from']['id']
print 'Got command: %s' % command
while True:
if input_state == False:
bot.sendMessage(chat_id, 'messaggio_di_testo') #invio un messaggio su Telegram
time.sleep(3) #attendo 3 secondi, mi serve per partire giusto con la registrazione
os.system("arecord -d 20 -f cd -t raw -D plughw:1 | oggenc - -r -o f.ogg") #registro l'audio da microfono e lo converto in messaggio vocale
bot.sendAudio(chat_id, open('f.ogg', 'rb'), title='titolo_del_messaggio_vocale')
#qui parte la seconda parte di codice dove invio comandi al raspberry da telegram
if sender in id_a:
if command == '/ciao':
bot.sendMessage(chat_id, 'Hei, ciao!')
elif command == '/riavvia':
bot.sendMessage(chat_id, 'Riavvio in corso...')
os.system("sudo reboot")
else:
bot.sendMessage(chat_id, 'Non sei autorizzato a darmi ordini!')
bot.sendMessage(chat_id, sender)
bot = telepot.Bot('TOKEN')
bot.message_loop(handle)
while 1:
time.sleep(10)
Grazie in anticipo a chi mi potrà aiutare....
Sono nuovo del forum e alle prime armi con python.
Voglio realizzare un Bot x telegram che mi invii un messaggio di testo + un messaggio vocale (che deve registrare il raspberry) alla chiusura di un contatto collegato alla GPIO.
Oltre a questo ho bisogno di inviare dei comandi al Bot da telegram per fare effettuare dei comandi banali al raspberry (il riavvio, spegnerlo, ecc.)
Seguendo alcune discussioni in internet sono riuscito a fare le due cose separatamente ma se metto tutto il codice sotto lo stesso file py non riesco a farlo girare.
Sicuramente sbaglio un comando o l'indentazione del codice o giù di lì ma non ne vengo a capo....
questo è quello che ho realizzato:
import sys
import os
import telepot
import datetime
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
input_state = GPIO.input(16)
"""
Ctrl-C per uscire.
"""
id_a = [1111111,2222222,3333333,4444444,5555555]
def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
sender = msg['from']['id']
print 'Got command: %s' % command
while True:
if input_state == False:
bot.sendMessage(chat_id, 'messaggio_di_testo') #invio un messaggio su Telegram
time.sleep(3) #attendo 3 secondi, mi serve per partire giusto con la registrazione
os.system("arecord -d 20 -f cd -t raw -D plughw:1 | oggenc - -r -o f.ogg") #registro l'audio da microfono e lo converto in messaggio vocale
bot.sendAudio(chat_id, open('f.ogg', 'rb'), title='titolo_del_messaggio_vocale')
#qui parte la seconda parte di codice dove invio comandi al raspberry da telegram
if sender in id_a:
if command == '/ciao':
bot.sendMessage(chat_id, 'Hei, ciao!')
elif command == '/riavvia':
bot.sendMessage(chat_id, 'Riavvio in corso...')
os.system("sudo reboot")
else:
bot.sendMessage(chat_id, 'Non sei autorizzato a darmi ordini!')
bot.sendMessage(chat_id, sender)
bot = telepot.Bot('TOKEN')
bot.message_loop(handle)
while 1:
time.sleep(10)
Grazie in anticipo a chi mi potrà aiutare....