Paramétrage pompe à chaleur Caliente

Sous forum dédié au plugin MQTTMAPPER de FlyingDomotic
Merci de poster vous questions concernant ce plugin ici et non pas dans le forum MQTT directement
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

"pour info que signifie ?

Code : Tout sélectionner

2024-06-06 18:25:07.372 Status: dzVents: Clim config 4: Config4 modifié par Pompe PAC à true
J'esperai une valeur dans Clim config 4 mais pas un etat?
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

Le log lorsque j'appui sur le switch pompe.

Code : Tout sélectionner

024-06-06 23:03:36.203 Pompe PAC: Light/Switch (Pompe PAC)
2024-06-06 23:03:36.198 Status: User: knasson (IP: 192.168.1.1) initiated a switch command (1238/Pompe PAC/On)
2024-06-06 23:03:36.274 Status: dzVents: Debug: Processing device-adapter for Pompe PAC: Switch device adapter
2024-06-06 23:03:36.274 Status: dzVents: Debug: - Device: Pompe PAC
2024-06-06 23:03:36.286 Status: dzVents: Info: Handling events for: "Pompe PAC", value: "On"
2024-06-06 23:03:36.286 Status: dzVents: Info: ------ Start internal script: Gestion PAC: Device: "Pompe PAC (Pompe PAC)", Index: 1238
2024-06-06 23:03:36.287 Status: dzVents: Clim config 4: Config4 modifié par Pompe PAC à true
2024-06-06 23:03:36.287 Status: dzVents: Info: ------ Finished Gestion PAC
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Plugin MQTT de FlyingDomotic

Message par Flying Domotic »

J'ai modifié le plugin (il faut le mettre à jour) et généré une nouvelle version du script. J'ai aussi ajouté la trace numérique de config4 dans le log, histoire de ne pas être perdu ;-)

Code : Tout sélectionner

-- Gestion du paramètre Config4 de la clim
local config4Device = "Clim config 4"
local pompeDevice = "Pompe PAC"
local horlogeDevice = "Horloge PAC"
local modeDevice = "PAC modes"

return {
	on = {devices = {config4Device, pompeDevice, horlogeDevice, modeDevice}},
	execute = function(domoticz, device)

        -- Fonction de changement d'un switch depuis config4
        function changeSwitch(setDevice, newState)
            if setDevice.active ~= newState then                                -- Doit on changer le switch ?
                print(config4Device..": Mets "..setDevice.name.." à "..tostring(newState))
                if newState then
                    setDevice.switchOn()
                else
                    setDevice.switchOff()
                end
            end
        end

        -- Fonction de changement d'un sélecteur depuis config4
        function changeSelector(setDevice, newLevel)
            if setDevice.levelVal ~= newLevel then                              -- Doit on changer la valeur ?
                print(config4Device..": Mets "..setDevice.name.." à "..tostring(newLevel))
                setDevice.setLevel(newLevel)
            end
        end

        -- Fonction de changement de config4 depuis un switch
        function changeConfigSwitch(changedDevice, oldState)
            if changedDevice.active ~= oldState then                            -- Doit on changer le switch
                print(config4Device..": Config4 modifié par "..changedDevice.name.." à "..tostring(changedDevice.active))
            end
            return changedDevice.active
        end

        -- Fonction de changement de config4 depuis un sélecteur
        function changeConfigSelector(changedDevice, oldLevel)
            if changedDevice.levelVal ~= oldLevel then                          -- Doit on changer la valeur ?
                print(config4Device..": Config4 modifié par "..changedDevice.name.." à "..tostring(changedDevice.levelVal))
            end
            return changedDevice.levelVal
        end

        -- Fonction de chargement de config4
        function setConfig4(pompe, horloge, mode)
            local setValue = (mode / 10) + 23                                   -- Mode 10 = 24, 20 = 25, 30 = 26
            if (pompe == true) then
                setValue = setValue + 32                                        -- Pompe + 32
            end
            if (horloge ==true) then                              
                setValue = setValue + 132                                       -- Horloge + 132
            end
            if domoticz.devices(config4Device).levelVal ~= setValue then        -- Doit on changer config4?
                print(config4Device..": Défini config4="..tostring(setValue))   -- Oui
                domoticz.devices(config4Device).updateCustomSensor(setValue)
            end
        end

	    -- Décoder config4. Si le contenu n'est pas comme attendu, ne rien faire
	    local config4 = domoticz.devices(config4Device).sensorValue             -- Lit la valeur de config4
	    local tmp = config4
		local horloge = false   
		if tmp >= 132 then                                                      -- Horloge = 132
            horloge = true
            tmp = tmp - 132
		end
		local pompe = false
		if tmp >= 32 then                                                       -- Pompe = 32
		    pompe = true
		    tmp = tmp - 32
		end
		if tmp < 24 or  tmp > 26 then                                            -- Mode = 24 (Froid), 25 (Chaud) ou 26 (Auto)
		    print(config4Device..": ?? Ne sait pas décoder config4="..tostring(config4))
		else
		    mode = (tmp - 23) * 10                                              -- Mode 24 = froid (10), 25 = chaud (20), 26 = auto (30)
            -- Ici, config4 semble correct, voir ce qui a changé et agir en conséquence
            if device.name == domoticz.devices(config4Device).name then
                -- C'est config4 qui a été modifié
                print(config4Device..": Reçu "..tostring(domoticz.devices(config4Device).sensorValue)..", pompe="..tostring(pompe)..", horloge="..tostring(horloge)..", mode="..tostring(mode)) 
                changeSwitch(domoticz.devices(pompeDevice), pompe)              -- Aligner les valeurs
                changeSwitch(domoticz.devices(horlogeDevice), horloge)
                changeSelector(domoticz.devices(modeDevice), mode)
            elseif device.name == domoticz.devices(pompeDevice).name then
                -- C'est la pompe qui a changé
                setConfig4(changeConfigSwitch(domoticz.devices(pompeDevice), pompe), horloge, mode) -- Aligner les valeurs
                
            elseif device.name == domoticz.devices(horlogeDevice).name then
                -- C'est l'horloge qui a changé
                setConfig4(pompe, changeConfigSwitch(domoticz.devices(horlogeDevice), horloge), mode)
            elseif device.name == domoticz.devices(modeDevice).name then
                -- C'est le mode qui a changé
                setConfig4(pompe, horloge, changeConfigSelector(domoticz.devices(modeDevice), mode))
            else
                -- On a été activé par un device inconnu. Bug de Domoticz?
                print(config4Device..": ?? Je ne comprends pas le changement de "..device.name..", idx="..device.id)       
            end
        end
end
}
Je suis preneur de retour.
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

Merci pour le travail..
mis a jour le plugin
adopté la version 2 du script dzvents

voila le log

Code : Tout sélectionner

[size=85]2024-06-07 08:52:33.342 Pompe PAC: Light/Switch (Pompe PAC)
2024-06-07 08:52:33.479 PAC Calient: onDeviceModified 010/Clim config 4, /home/alsavo/config/4, sValue=56.0
2024-06-07 08:52:33.337 Status: User: knasson (IP: 192.168.1.1) initiated a switch command (1238/Pompe PAC/On)
2024-06-07 08:52:33.423 Status: dzVents: Debug: Processing device-adapter for Pompe PAC: Switch device adapter
2024-06-07 08:52:33.424 Status: dzVents: Debug: - Device: Pompe PAC
2024-06-07 08:52:33.435 Status: dzVents: Info: Handling events for: "Pompe PAC", value: "On"
2024-06-07 08:52:33.435 Status: dzVents: Info: ------ Start internal script: Gestion_PAC V2: Device: "Pompe PAC (Pompe PAC)", Index: 1238
2024-06-07 08:52:33.436 Status: dzVents: Clim config 4: Config4 modifié par Pompe PAC à true
2024-06-07 08:52:33.436 Status: dzVents: Info: ------ Finished Gestion_PAC V2
2024-06-07 08:52:33.947 Status: dzVents: Info: ------ Start internal script: Gestion_PAC V2: Device: "Clim config 4 (PAC Calient)", Index: 1237
2024-06-07 08:52:33.948 Status: dzVents: Debug: Processing device-adapter for Pompe PAC: Switch device adapter
2024-06-07 08:52:33.948 Status: dzVents: Debug: Processing device-adapter for Horloge PAC: Switch device adapter
2024-06-07 08:52:33.949 Status: dzVents: Debug: Processing device-adapter for PAC modes: Switch device adapter
2024-06-07 08:52:33.949 Status: dzVents: Info: ------ Finished Gestion_PAC V2[/size]
Les codes corrects remontent bien dans le device "Clim config 4".
maintenant je cherche pourquoi ils ne sont pas envoyés a la pompe,!!!
alors que ca fonctionne sur les setpoints temperature, et sur le selecteur de mode de fonctionnement.
je remarque dans le log un point décimal sur le svalue qui est remonté...le format choisi est bitmap donc des entiers.
il y a peut etre un bug a ce niveau?

Code : Tout sélectionner

 "Clim config 4": {"topic": "/home/alsavo/config/4",
        "type": "243", "subtype": "31", "switchtype": "0",
        "options": {"Custom":"1;Bitmap"},
        "visible": "false",
        "mapping":{"item":"value"},
        "set": {"command":"plugins/MqttMapper/alsavoSetNum.sh 4 #"}
    }
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Plugin MQTT de FlyingDomotic

Message par Flying Domotic »

Il doit y avoir un souci quelque part. En effet, si config4 doit être modifié, on a un message "Clim config 4: Défini config4=nnn".

Et effectivement, le paramètre pour réaliser le comparaison n'était pas le bon.

Voilà le script qui devrait fonctionner :

Code : Tout sélectionner

-- Gestion du paramètre Config4 de la clim
local config4Device = "Clim config 4"
local pompeDevice = "Pompe PAC"
local horlogeDevice = "Horloge PAC"
local modeDevice = "PAC modes"

return {
    on = {devices = {config4Device, pompeDevice, horlogeDevice, modeDevice}},
    execute = function(domoticz, device)

        -- Fonction de changement d'un switch depuis config4
        function changeSwitch(setDevice, newState)
            if setDevice.active ~= newState then                                -- Doit on changer le switch ?
                print(config4Device..": Mets "..setDevice.name.." à "..tostring(newState))
                if newState then
                    setDevice.switchOn()
                else
                    setDevice.switchOff()
                end
            end
        end

        -- Fonction de changement d'un sélecteur depuis config4
        function changeSelector(setDevice, newLevel)
            if setDevice.levelVal ~= newLevel then                              -- Doit on changer la valeur ?
                print(config4Device..": Mets "..setDevice.name.." à "..tostring(newLevel))
                setDevice.setLevel(newLevel)
            end
        end

        -- Fonction de changement de config4 depuis un switch
        function changeConfigSwitch(changedDevice, oldState)
            if changedDevice.active ~= oldState then                            -- Doit on changer le switch
                print(config4Device..": Config4 modifié par "..changedDevice.name.." à "..tostring(changedDevice.active))
            end
            return changedDevice.active
        end

        -- Fonction de changement de config4 depuis un sélecteur
        function changeConfigSelector(changedDevice, oldLevel)
            if changedDevice.levelVal ~= oldLevel then                          -- Doit on changer la valeur ?
                print(config4Device..": Config4 modifié par "..changedDevice.name.." à "..tostring(changedDevice.levelVal))
            end
            return changedDevice.levelVal
        end

        -- Fonction de chargement de config4
        function setConfig4(pompe, horloge, mode)
            local setValue = (mode / 10) + 23                                   -- Mode 10 = 24, 20 = 25, 30 = 26
            if (pompe == true) then
                setValue = setValue + 32                                        -- Pompe + 32
            end
            if (horloge == true) then                              
                setValue = setValue + 132                                       -- Horloge + 132
            end
            if domoticz.devices(config4Device).sensorValue ~= setValue then     -- Doit on changer config4?
                print(config4Device..": Défini config4="..tostring(setValue))   -- Oui
                domoticz.devices(config4Device).updateCustomSensor(setValue)
            end
        end

        -- Décoder config4. Si le contenu n'est pas comme attendu, ne rien faire
        local config4 = domoticz.devices(config4Device).sensorValue             -- Lit la valeur de config4
        local tmp = config4
        local horloge = false   
        if tmp >= 132 then                                                      -- Horloge = 132
            horloge = true
            tmp = tmp - 132
        end
        local pompe = false
        if tmp >= 32 then                                                       -- Pompe = 32
            pompe = true
            tmp = tmp - 32
        end
        if tmp < 24 or  tmp > 26 then                                            -- Mode = 24 (Froid), 25 (Chaud) ou 26 (Auto)
            print(config4Device..": ?? Ne sait pas décoder config4="..tostring(config4))
        else
            mode = (tmp - 23) * 10                                              -- Mode 24 = froid (10), 25 = chaud (20), 26 = auto (30)
            -- Ici, config4 semble correct, voir ce qui a changé et agir en conséquence
            if device.name == domoticz.devices(config4Device).name then
                -- C'est config4 qui a été modifié
                print(config4Device..": Reçu "..tostring(domoticz.devices(config4Device).sensorValue)..", pompe="..tostring(pompe)..", horloge="..tostring(horloge)..", mode="..tostring(mode)) 
                changeSwitch(domoticz.devices(pompeDevice), pompe)              -- Aligner les valeurs
                changeSwitch(domoticz.devices(horlogeDevice), horloge)
                changeSelector(domoticz.devices(modeDevice), mode)
            elseif device.name == domoticz.devices(pompeDevice).name then
                -- C'est la pompe qui a changé
                setConfig4(changeConfigSwitch(domoticz.devices(pompeDevice), pompe), horloge, mode) -- Aligner les valeurs
                
            elseif device.name == domoticz.devices(horlogeDevice).name then
                -- C'est l'horloge qui a changé
                setConfig4(pompe, changeConfigSwitch(domoticz.devices(horlogeDevice), horloge), mode)
            elseif device.name == domoticz.devices(modeDevice).name then
                -- C'est le mode qui a changé
                setConfig4(pompe, horloge, changeConfigSelector(domoticz.devices(modeDevice), mode))
            else
                -- On a été activé par un device inconnu. Bug de Domoticz?
                print(config4Device..": ?? Je ne comprends pas le changement de "..device.name..", idx="..device.id)       
            end
        end
end
}
Il faut également charger la dernière version du plugin.

Enfin, le fichier alsavoSetNum.sh doit contenir les commandes suivantes, pour ne plus envoyer de décimales (à priori, ça devrait déjà être le cas) :

Code : Tout sélectionner

#!/bin/bash
value=$(echo "scale=0; $2 / 1" | bc)
echo "Received $1 $value"
[chemin où est installé AlsavoCtrl]/AlsavoCtrl -s 824500039214 -l 8608 -a 192.168.1.66 -p 1194 $1 $value  | python3 mqpublish.py
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

Bravo! :D
Je crois qu'on y est la pompe démarre!!! je dois faire d'autres tests pour compléter le retour.
@+
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

bien demarré la pompe en mode chauffage avec l'envoi du code "57"
1) j'ai eu du mal a l'arreter ;) -->le switch pompe sur "off" ne l'a pas arretée. J'ai du mettre en plus le selecteur de modes sur "off". (j'aurai du essayer de voir le code pompe généré.
2)Aprés quand je veux refaire un demarrage, j'ai des codes bizarre dans config 4 style "150" ou "17" qui ne correspondent a rien(même modulo 32,ou 64 ou 128.)
3) je pense que l'on se trouve face a une reinit du bitmap qui ne se fait pas ou qu'on doit rajouter.

Voila ce que je vois pour le moment si tu veux d'autres elements ou faire des manip précises ,il suffit de demander.
En tous cas un grand pas a été franchi.
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

pompe "On"

Code : Tout sélectionner

2024-06-07 22:03:51.227 Pompe PAC: Light/Switch (Pompe PAC)
2024-06-07 22:03:51.200 Status: User: knasson (IP: 192.168.1.1) initiated a switch command (1238/Pompe PAC/On)
2024-06-07 22:03:51.749 Status: dzVents: Debug: Processing device-adapter for Pompe PAC: Switch device adapter
2024-06-07 22:03:51.750 Status: dzVents: Debug: - Device: Pompe PAC
2024-06-07 22:03:51.761 Status: dzVents: Info: Handling events for: "Pompe PAC", value: "On"
2024-06-07 22:03:51.761 Status: dzVents: Info: ------ Start internal script: Gestion_PAC V3: Device: "Pompe PAC (Pompe PAC)", Index: 1238
2024-06-07 22:03:51.762 Status: dzVents: Info: ------ Finished Gestion_PAC V3
le code dans "Clim config 4" est "17 Bitmap" et reste bloqué a cette valeur

pompe "Off"

Code : Tout sélectionner

2024-06-07 22:05:38.529 Status: User: knasson (IP: 192.168.1.1) initiated a switch command (1238/Pompe PAC/Off)
2024-06-07 22:05:38.644 Status: dzVents: Debug: Processing device-adapter for Pompe PAC: Switch device adapter
2024-06-07 22:05:38.644 Status: dzVents: Debug: - Device: Pompe PAC
2024-06-07 22:05:38.656 Status: dzVents: Info: Handling events for: "Pompe PAC", value: "Off"
2024-06-07 22:05:38.657 Status: dzVents: Info: ------ Start internal script: Gestion_PAC V3: Device: "Pompe PAC (Pompe PAC)", Index: 1238
2024-06-07 22:05:38.657 Status: dzVents: Info: ------ Finished Gestion_PAC V3
le code dans clim config 4 est "17 bitmap" et rien ne bouge

le code pour demarrer la pompe est normalement de 57 dans le cas précis (PAC modes sur CHAUFFAGE, Horloge "Off", Pompe PAC "On" )
mais le Clim config 4 reste bloqué sur 17.
Flying Domotic
Messages : 772
Inscription : 10 mars 2020, 15:26

Re: Plugin MQTT de FlyingDomotic

Message par Flying Domotic »

Qu'est-ce que contient le reste du log ? Il y a plusieurs déclenchements à la suite les uns des autres. Il faut regarder dans les 1 à 5 secondes du déclenchement initial pour voir ce qui se passe.
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: Plugin MQTT de FlyingDomotic

Message par knasson »

bonjour,
j'obtiens un bon résulat avec ce simple script lua

Code : Tout sélectionner

commandArray = {}
local x=x
if (otherdevices['Pompe PAC'] == 'On'and otherdevices['Horloge PAC'] == 'Off') then
    if (otherdevices['PAC modes'] == 'Cooling') then
        x=56
        elseif (otherdevices['PAC modes'] == 'Chauffage') then
        x=57
        elseif  (otherdevices['PAC modes'] == 'Auto') then
        x=58
    end
    print ("variable x"..x)
    commandArray ['UpdateDevice']='1237|0|'..x
else
   -- x=25
  --commandArray ['UpdateDevice']='1237|0|'..x
    if (otherdevices['Horloge PAC'] =="On") then 
    print ("Coucou le furet")
        if (otherdevices['PAC modes'] == 'Cooling') then
            x=188
        elseif (otherdevices['PAC modes'] == 'Chauffage') then
            x=189
        elseif  (otherdevices['PAC modes'] == 'Auto') then   
            x=190
        end
    end
    commandArray ['UpdateDevice']='1237|0|'..x

end 
if (otherdevices['Pompe PAC'] =="Off") then
    x=25
    commandArray ['UpdateDevice']='1237|0|'..x
end    
return commandArray
Je n'oublie pas le genial plugins MqttMapper que tu soutiens et developpe et la contribution de Mikko Strandborg pour le logiciel de decodage AlsavoCtrl.
Pour info copie d'ecran de l'appli alsavo pro sur Play Store et de la couverture du mode d'emploi de la pompe a chaleur.
Pièces jointes
Screenshot_20240609-085132.jpg
Screenshot_20240609-085132.jpg (352.88 Kio) Consulté 1438 fois
PACCaliente.png
PACCaliente.png (87.35 Kio) Consulté 1438 fois
Répondre