Page 1 sur 2

Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 14:43
par YvanM
Bonjour,

J'essaye de faire un script pour remplacer ma box Wiser (la croix blanche) dans le contrôle du chauffage. Pas de problème particulier d'algorythme mais plus sur l'utilisation d'une variable (peut-être). J'arrive à contrôler manuellement (via les widgets) mon activateur de radiateur :
Opération 1 : On
Opération 2 : Fixation Température courante
Opération 3 : Fixation Température de consigne.

J'essaye donc de scripter ça (très simplement pour l'instant) et je m'aperçois que je n'arrive pas à modifier la valeur de la consigne de mon radiateur ...

Code : Tout sélectionner

 print ("Th : Température consigne : "..otherdevices['W-The1-Control'].."°C");
    print ("Th : Température actuelle : "..otherdevices['W-The1-Temp'].."°C");
    print ("Rad : Température consigne : "..otherdevices['W-Rad1-ConsigneSet'].."°C");
    print ("Rad : Température actuelle : "..otherdevices['W-Rad1-TempSet'].."°C");
        
    -- Si changement de consigne
    if (deviceName=='W-The1-Control' or deviceName=='W-The1-Temp') then
        
        -- Commun : Allumer + Mode sans fil pilote
        commandArray['W-Rad1-OnOff'] = "On";
        commandArray['W-Rad1-FilPilote'] = "Normal";
        -- Passer la Température
        commandArray['W-Rad1-TempSet'] = otherdevices['W-The1-Temp'];
        -- Passer la consigne
        commandArray['W-Rad1-ConsigneSet'] = deviceValue;
        
        if(tonumber(otherdevices['W-The1-Temp']) < tonumber(deviceValue)) then
            print ("TH - COLD : Il faudrait allumer le radiateur");
        else
            print ("TH - HOT : Il faudrait couper le radiateur");
Quand je regarde les logs, j'obtiens généralement ça :
' RETOUR MODIF DE LA TEMPERATURE
2023-12-08 14:22:55.867 Status: LUA: Device based event fired on 'W-The1-Temp', value '19.4'
2023-12-08 14:22:55.867 Status: LUA: Th : Température consigne : 21.00°C
2023-12-08 14:22:55.867 Status: LUA: Th : Température actuelle : 19.4°C
2023-12-08 14:22:55.867 Status: LUA: Rad : Température consigne : 19.50°C
2023-12-08 14:22:55.867 Status: LUA: Rad : Température actuelle : 18.90°C
2023-12-08 14:22:55.867 Status: LUA: TH - HOT : Il faudrait couper le radiateur
2023-12-08 14:22:55.867 Status: LUA: Rad 2 : Température consigne : 19.50°C
2023-12-08 14:22:55.867 Status: LUA: Rad 2 : Température actuelle : 18.90°C
2023-12-08 14:22:55.867 Status: LUA: Device based event fired on 'W-The1-Temp_Temperature', value '19.39999961853'
2023-12-08 14:22:55.868 Status: LUA: Th : Température consigne : 21.00°C
2023-12-08 14:22:55.868 Status: LUA: Th : Température actuelle : 19.4°C
2023-12-08 14:22:55.868 Status: LUA: Rad : Température consigne : 19.50°C
2023-12-08 14:22:55.868 Status: LUA: Rad : Température actuelle : 18.90°C

' RETOUR MODIF DE LA VALEUR DE CONSIGNE
2023-12-08 14:32:01.401 Status: LUA: Device based event fired on 'W-The1-Control_Utility', value '22.5'
2023-12-08 14:32:01.401 Status: LUA: Th : Température consigne : 22.50°C
2023-12-08 14:32:01.401 Status: LUA: Th : Température actuelle : 19.4°C
2023-12-08 14:32:01.401 Status: LUA: Rad : Température consigne : 19.50°C
2023-12-08 14:32:01.401 Status: LUA: Rad : Température actuelle : 18.90°C
2023-12-08 14:32:01.402 Status: LUA: Device based event fired on 'W-The1-Control', value '22.50'
2023-12-08 14:32:01.402 Status: LUA: Th : Température consigne : 22.50°C
2023-12-08 14:32:01.402 Status: LUA: Th : Température actuelle : 19.4°C
2023-12-08 14:32:01.402 Status: LUA: Rad : Température consigne : 19.50°C
2023-12-08 14:32:01.402 Status: LUA: Rad : Température actuelle : 18.90°C
2023-12-08 14:32:01.402 Status: LUA: TH - COLD : Il faudrait allumer le radiateur
2023-12-08 14:32:01.402 Status: LUA: Rad 2 : Température consigne : 19.50°C
2023-12-08 14:32:01.402 Status: LUA: Rad 2 : Température actuelle : 18.90°C
2023-12-08 14:32:01.405 Status: EventSystem: Script event triggered: Script OnDevice

Je me dis que l'affichage n'est pas bon car le CommandArray n'est pas encore passé ...
' RETOUR MODIF 2 DE LA VALEUR DE CONSIGNE
2023-12-08 14:34:37.644 Status: LUA: Device based event fired on 'W-The1-Control_Utility', value '23.5'
2023-12-08 14:34:37.644 Status: LUA: Th : Température consigne : 23.50°C
2023-12-08 14:34:37.644 Status: LUA: Th : Température actuelle : 19.6°C
2023-12-08 14:34:37.644 Status: LUA: Rad : Température consigne : 19.50°C
2023-12-08 14:34:37.644 Status: LUA: Rad : Température actuelle : 18.90°C
2023-12-08 14:34:37.644 Status: LUA: Device based event fired on 'W-The1-Control', value '23.50'
2023-12-08 14:34:37.644 Status: LUA: Th : Température consigne : 23.50°C
2023-12-08 14:34:37.644 Status: LUA: Th : Température actuelle : 19.6°C
2023-12-08 14:34:37.644 Status: LUA: Rad : Température consigne : 19.50°C
2023-12-08 14:34:37.644 Status: LUA: Rad : Température actuelle : 18.90°C
2023-12-08 14:34:37.644 Status: LUA: TH - COLD : Il faudrait allumer le radiateur
2023-12-08 14:34:37.644 Status: LUA: Rad 2 : Température consigne : 19.50°C
2023-12-08 14:34:37.644 Status: LUA: Rad 2 : Température actuelle : 18.90°C

Toujours 19,5° => pas pris en compte ...
Le script se termine par return commandArray => je suppose que ça doit passer les commandes

Est-ce que quelq'un aurait une idée du pourquoi et du comment pour passer cette valeur de consigne ?

Merci,
Yvan

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 15:10
par Keros
Je viens de déplacer ton sujet dans la section dédiée aux scripts.

Essaye avec la commande commandArray['SetSetPoint:MySetPointIdx']='20.5'.

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 15:52
par YvanM
Merci @Keros mais je ne suis pas sûr d'avoir compris ton explication :
J'ai essayé

Code : Tout sélectionner

commandArray['W-Rad1-ConsigneSet'] = '24';
mais sans résultat ...

Code : Tout sélectionner

commandArray['SetSetPoint:W-Rad1-ConsigneSet']='24'
pas mieux ...

Peux-tu détailler stp ?

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 16:35
par Keros
Normalement, cela devrait être la commande commandArray['SetSetPoint:W-Rad1-ConsigneSet']='24'

Tu n'as pas besoin des ; à la fin de chaque ligne.

C'est ton script entier que tu nous avais donné ? Il manque le commandArray = {} au début et le return commandArray à la fin.

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 19:02
par YvanM
Non, je n'ai pas donné le script entier. Le voici avec quelques print en moins ;-) Rien de bien exceptionnel ...

Code : Tout sélectionner

commandArray = {}

-- loop through all the changed devices
print (" *************** Nouveau déclenchement **************************** ");

for deviceName,deviceValue in pairs(devicechanged) do
    print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");
    
    print ("Th : Température consigne : "..otherdevices['W-The1-Control'].."°C");
    print ("Th : Température actuelle : "..otherdevices['W-The1-Temp'].."°C");
    print ("Rad : Température consigne : "..otherdevices['W-Rad1-ConsigneSet'].."°C");
    print ("Rad : Température actuelle : "..otherdevices['W-Rad1-TempSet'].."°C");
        
    -- Si changement de consigne
    if (deviceName=='W-The1-Control' or deviceName=='W-The1-Temp') then
        
        -- Commun : Allumer + Mode sans fil pilote
        commandArray['W-Rad1-OnOff'] = "On";
        -- commandArray['W-Rad1-FilPilote'] = "Normal";
        -- Passer la Température
        commandArray['W-Rad1-TempSet'] = otherdevices['W-The1-Temp'];
        -- Passer la consigne
        -- commandArray['W-Rad1-ConsigneSet'] = '24'; --otherdevices['W-The1-Control'];
        commandArray['SetSetPoint:W-Rad1-ConsigneSet']='24';
    
        
        if(tonumber(otherdevices['W-The1-Temp']) < tonumber(deviceValue)) then
            print ("TH - COLD : Il faudrait allumer le radiateur");
        else
            print ("TH - HOT : Il faudrait couper le radiateur");

        end
    print ("Rad 2 : Température consigne : "..otherdevices['W-Rad1-ConsigneSet'].."°C");
    print ("Rad 2 : Température actuelle : "..otherdevices['W-Rad1-TempSet'].."°C");
    end


end

return commandArray

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 20:59
par Keros
Tu as essayé avec l'IDX à la place du nom du device ?

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 21:12
par denis_brasseur

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 21:39
par Keros
Pourtant, cela semble fonctionner dans ce sujet.

Edit : la commande commandArray['SetSetPoint:MySetPointIdx']='20.5' est fonctionnelle avec le numéro de l'IDX mais pas avec le nom du widget.

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 22:36
par YvanM
Oui, la commande commandArray['SetSetPoint:MySetPointIdx'] fonctionne parfaitement. :D :D

Où as-tu trouvé que cette commande fonctionnait avec l'IDX et pas avec le nom ? Ca me fera une nouvelle source d'info.

Merci beaucoup.

Re: Script de contrôle Thermostat / Radiateur : Consigne KO

Publié : 08 déc. 2023, 22:48
par Keros
En prenant 5 minutes pour essayer :mrgreen: