[Python] comportamento def async
Perini Matteo
perini.matteo a gmail.com
Lun 13 Maggio 2024 22:18:55 CEST
Ciao,
vorrei leggere lo stato di un dispositivo ewelink (sonoff) tramite
script ma ricevo un comportamento che non capisco.
Se faccio uno script isolato
importewelink
fromewelinkimportClient, DeviceOffline
@ewelink.login('Password', 'email a email.eu')
asyncdefask_status(client: Client):
device= client.get_device('100000000')
try:
print(device.state.value)
exceptDeviceOffline:
print("Device is offline!")
ottengo esattamente quello che voglio ovvero il print mi dice se il
dispositivo è on, off o offline.
ho provato ad integrare la stessa funzione in uno script un po' più
articolato per comunicare con un bot telegram.
fromtelegramimportUpdate
fromtelegram.extimportApplicationBuilder, ContextTypes, CommandHandler,
MessageHandler, filters
fromcredentialsimportTOKEN
importewelink
fromewelinkimportClient, DeviceOffline
@ewelink.login('Password', 'email a email.eu')
asyncdefask_status(client: Client):
device= client.get_device('100000000')
try:
print(device.state.value)
exceptDeviceOffline:
print("Device is offline!")
asyncdefstart(update: Update, context: ContextTypes.DEFAULT_TYPE):
awaitcontext.bot.send_message(chat_id=update.effective_chat.id,
text="I'm a bot, please talk to me!")
asyncdefcheck(update: Update, context: ContextTypes.DEFAULT_TYPE):
awaitcontext.bot.send_message(chat_id=update.effective_chat.id,
text=ask_status)
if__name__== '__main__':
application= ApplicationBuilder().token(TOKEN).build()
start_handler= CommandHandler('start', start)
check_handler= CommandHandler('check', check)
application.add_handler(start_handler)
application.add_handler(check_handler)
application.run_polling()
Il bot funziona (è un po' più complicato di così) ma quando chiamo
"ask_status" mi restituisce sempre lo stato che aveva il dispositivo
quando faccio partire il bot.
Come posso fare per forzare l'esecuzione di ask_status ogni volta che
richiamo la funzione check?
Cosa mi sto perdendo?
Grazie a chi mi può dare un suggerimento
Matteo
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20240513/8a57d3dd/attachment.html>
Maggiori informazioni sulla lista
Python