Script de contrôle Thermostat / Radiateur : Consigne KO

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
YvanM
Messages : 18
Inscription : 27 nov. 2023, 10:22

Script de contrôle Thermostat / Radiateur : Consigne KO

Message 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
Raspberry P400 - Zigate + - Conversion d'un système Schneider Wiser
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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'.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
YvanM
Messages : 18
Inscription : 27 nov. 2023, 10:22

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

Message 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 ?
Raspberry P400 - Zigate + - Conversion d'un système Schneider Wiser
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
YvanM
Messages : 18
Inscription : 27 nov. 2023, 10:22

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

Message 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
Raspberry P400 - Zigate + - Conversion d'un système Schneider Wiser
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

Tu as essayé avec l'IDX à la place du nom du device ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

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

Message par denis_brasseur »

Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Dernière modification par Keros le 08 déc. 2023, 21:49, modifié 1 fois.
Raison : Ajout test
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
YvanM
Messages : 18
Inscription : 27 nov. 2023, 10:22

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

Message 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.
Raspberry P400 - Zigate + - Conversion d'un système Schneider Wiser
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

En prenant 5 minutes pour essayer :mrgreen:
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre