22/01/2018, 21:04
(Questo messaggio è stato modificato l'ultima volta il: 29/01/2018, 15:44 da farinel.)
Avevo già guardato rpinotify, ma per il mio utilizzo mi sembrava esagerato. Curiosando un po' sono riuscito a mettere insieme questo. Arrivato fino a qui mi piacerebbe farlo funzionare....
Il problema è che se invio un comando al raspberry dopo non mi esegue l'invio dei messaggi (testo e audio) a telegram e viceversa.
Riesco far rimanere in attesa le due funzioni contemporaneamente sino a quando non ne esegue una dopodichè esegue solo quella.
Il problema è che se invio un comando al raspberry dopo non mi esegue l'invio dei messaggi (testo e audio) a telegram e viceversa.
Riesco far rimanere in attesa le due funzioni contemporaneamente sino a quando non ne esegue una dopodichè esegue solo quella.
Codice:
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 = [111111,2222222,3333333,4444444,5555555]
def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
sender = msg['from']['id']
print 'Got command: %s' % command
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")
#fine invio comandi al raspberry da telegram inizio codice invio messaggi da raspberry a Telegram
while True:
if input_state == False:
bot.sendMessage(chat_id, 'Messaggio di testo') #invio messaggio di testo
time.sleep(3)#tempo in secondi dal messaggio di testo all'inizio registrazione messaggio
os.system("arecord -d 20 -f cd -t raw -D plughw:1 | oggenc - -r -o f.ogg") #registra il messaggio e lo converte in file.ogg
bot.sendAudio(chat_id, open('f.ogg', 'rb'), title='audio')#invia il file.ogg
else:
bot.sendMessage(chat_id, 'Non sei autorizzato a darmi ordini!')
bot.sendMessage(chat_id, sender)
bot = telepot.Bot('il mio token')
bot.message_loop(handle)
while 1:
time.sleep(10)