On Mon, 13 May 2024 at 22:19, Perini Matteo <perini.mat...@gmail.com> wrote:
> vorrei leggere lo stato di un dispositivo ewelink (sonoff) tramite script ma 
> ricevo un comportamento che non capisco.
> Se faccio uno script isolato
[…]
> ottengo esattamente quello che voglio ovvero il print mi dice se il 
> dispositivo è on, off o offline.

In questo script dove richiami `ask_status()`?


> Come posso fare per forzare l'esecuzione di ask_status ogni volta che 
> richiamo la funzione check?

In genere con le parentesi dopo il nome funzione

    async def check(update: Update, context: ContextTypes.DEFAULT_TYPE):
        await context.bot.send_message(
            chat_id=update.effective_chat.id, text=ask_status(the_client)
        )

Nota che dovresti restituire la stringa in `ask_status` piuttosto che
stamparla su stdout

    @ewelink.login("Password", "em...@email.eu")
    async def ask_status(client: Client) -> str:
        device = client.get_device("100000000")
        try:
            return str(device.state.value)
        except DeviceOffline:
            return "Device is offline!"


-- 
Andrea D'Amore
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a