Aide en python

Bonjour,

J’ai fait tant bien que mal un script python que je lance depuis le plugin script basé sur un ruc tout fait pour ariston…

#!/usr/bin/env python3
import asyncio
from ariston_boiler_control import AristonBoilerControl, OperationMode

async def main():
    try:
        abc = AristonBoilerControl('email', 'password')
        abc.login()
                
        temperature = abc.get_target_temperature()
        print(temperature)  # valeur pour Jeedom

    except Exception as e:
        print(f"Erreur: {e}")
        sys.exit(1)  
asyncio.run(main())

Cela fonctionne MAIS… le retour dans Jeedom est

Dans la lib importée, il y a en retour le login sucessful et je ne veux pas modifier la lib

Comment je peux faire pour basculer mon info en numérique et n’avoir que 54.0 en retour dans Jeedom.

Merci de votre aide

la commande info dois être numeric non ?

Si je met ma commande info en numérique j’ai 0 puisque la cela retourne une chaine avec " Logi Successful 54 °C

Ma question est justement de savoir comment modifier en 54.0 numérique pour renvoyer vers Jeedom

et comme ça :

#!/usr/bin/env python3
import asyncio
from ariston_boiler_control import AristonBoilerControl, OperationMode

async def main():
    try:
        abc = AristonBoilerControl('email', 'password')
        await abc.login()

        temp = await abc.get_target_temperature()
        print(temp)  # valeur pour Jeedom

    except Exception as e:
        print(f"Erreur: {e}")
        sys.exit(1)  
asyncio.run(main())

CA génère une erreur dans le log du plugin script

0012|Erreur: object NoneType can't be used in 'await' expression
1 « J'aime »

et ça

#!/usr/bin/env python3
import asyncio
from ariston_boiler_control import AristonBoilerControl, OperationMode

#!/usr/bin/env python3
import asyncio
from ariston_boiler_control import AristonBoilerControl, OperationMode

async def main():
    try:
        abc = AristonBoilerControl('email', 'password')
        abc.login()
                
        temperature = abc.get_target_temperature()
        
        numeric_temp = ''.join(c for c in str(temperature) if c.isdigit() or c == '.')
        print(numeric_temp)  # valeur pour Jeedom

    except Exception as e:
        print(f"Erreur: {e}")
        sys.exit(1)  
asyncio.run(main())

le truc c’est que abc.get_target_temperature renvoie bien 54.0 °C
mais le abc.login renvoit login successfull donc on dirait que le retour est une concaténation de tout

oui c’est ça le problème.

il faut de faire du genre un substr() php en python :crazy_face:

doit bien y avoir un moyen de retourner juste le numérique vers jeedom

En attendant un spécialiste python, tu peux utiliser :

Capture d’écran du 2025-07-01 19-30-31

Merci j’avais pas pensé à cela.

Pour info j’utilise ce truc python pour ariston
https://pypi.org/project/ariston-boiler-control/

j’ai demandé toutes les valeurs possibles

abc.login()
                
        ctemp = abc.get_current_temperature()
        print(ctemp)  # valeur pour Jeedom
        ttemp = abc.get_target_temperature()
        print(ttemp)  # valeur pour Jeedom
        gmode = abc.get_operation_mode()
        print(gmode)  # valeur pour Jeedom
        gstate = abc.get_hp_state()
        print(gstate)  # valeur pour Jeedom
        gboost = abc.get_boost()
        print(gboost)  # valeur pour Jeedom

J’ai fait un scénario Jeedom ou je passe en tag ce qui arrive du script

[2025-07-01 19:53:28][SCENARIO] Exécution d'un bloc code
[2025-07-01 19:53:28][SCENARIO] +----------------------------
[2025-07-01 19:53:28][SCENARIO] | Tag reçu : Login successful
32.0
54.0
OperationMode.HCHP
HPState.OFF
False

j’ai donc bien toutes mes infos mais ca me fait switcher vers un scénario et php mais bon je dois pouvoir me demerder mais c usine a gaz, et pour faire les set au lieu de get ca sera aussi usine

À essayer,pour voir si c’est one la sortie de Login qui vient foutre la merde


import asyncio
import sys
import io
from contextlib import redirect_stdout
from ariston_boiler_control import AristonBoilerControl

async def main():
    try:
        abc = AristonBoilerControl('email', 'password')

        
        with io.StringIO() as buf, redirect_stdout(buf):
            abc.login()

        temperature = abc.get_target_temperature()
        print(temperature)  

    except Exception as e:
        print(f"Erreur: {e}")
        sys.exit(1)

asyncio.run(main())

Bonsoir,

Merci de te pencher sur mon souci
Je viens de tester ta proposition et voici le retour dans le script jeedom

Dc la lib ne renvoit pas du numérique et ajoute un °C mais avec ton script je m’évite le login successful

import asyncio
import sys
import io
from contextlib import redirect_stdout
from ariston_boiler_control import AristonBoilerControl

async def main():
    try:
        abc = AristonBoilerControl('email', 'password')

        
        with io.StringIO() as buf, redirect_stdout(buf):
            abc.login()

        
        with io.StringIO() as buf, redirect_stdout(buf):
            temperature = abc.get_target_temperature()

        print(temperature)  

    except Exception as e:
        print(0)
        sys.exit(1)

asyncio.run(main())

Tu peux ressayer ça,et passer en info numérique sur ton script

Bonjour,

J’ai proposé une PR pour faire en sorte que les messages ne soient plus envoyés si le nouveau paramètre est mis à True. Le résultat serait le suivant si la PR est validée :

#!/usr/bin/env python3
import asyncio
from ariston_boiler_control import AristonBoilerControl

async def main():
    try:
        abc = AristonBoilerControl('email', 'password', quiet_login=True) # Nouveau paramètre pour rendre la class silencieuse
        abc.login() # Ligne optionnelle : le login est fait par la class si nécessaire
                
        temperature = abc.get_target_temperature()
        
        print(temperature)  # valeur pour Jeedom

    except Exception as e:
        print('0')
        sys.exit(1)  
asyncio.run(main())

Surveillons si c’est validé…

À+
Michel

1 « J'aime »

En quoi ca aide pour limiter les print? Je vois pas la rapport avec le sujet

Regarde plus attentivement la valeur de la commande et la proposition de modification de Sekiro pour filtrer la valeur.

C’est niquel

Ca me remonte bien que la valeur et en info numerique !

Merci beaucoup !