[DzVents] Mettre à jour le status d'un switch sans l'actionner

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 <\>.
adv
Messages : 580
Inscription : 02 févr. 2016, 13:54
Contact :

[DzVents] Mettre à jour le status d'un switch sans l'actionner

Message par adv »

Salut à tous,
petite compilation de quelques heures de recherche et de tests personnels.

Voici mon cas.
J'ai un portail Somfy, commandé par la télécommande RTS, mon alarme (contact sec) et un RFXcom.
Quand j'ouvre le portail avec la domotique je vois le statut correct à l'écran sur mon interrupteur "Portail".

2019-04-26_13-54-14.png
2019-04-26_13-54-14.png (15.01 Kio) Consulté 5487 fois

En revanche si j'ouvre à la télécommande (RTS ou alarme) mon serveur domoticz n'est pas au courant, ba oui le RFXcom ne sait pas recevoir les trames Somfy, juste les transmettre, et ne sais pas non plus recevoir les trames de la zapette Paradox (mon alarme)...

Pour savoir l'état réel du portail à distance j'ai donc installé un contact ILS+aimant et connecté à une entrée de ma piFace + création d'un interrupteur... super, je sais donc maintenant si le portail est ouvert ou fermé...

2019-04-26_13-57-58.png
2019-04-26_13-57-58.png (11.77 Kio) Consulté 5487 fois

Mais encore mieux... si au lieu de cela on mettait à jour l'interrupteur "Portail" - plutôt que d'afficher un interrupteur "Portail fermé" - qui se mette à jour sans pour autant renvoyer l'ordre (j'ai pas testé mais je pense que ça bouclerait sans cesse, enfin dans tous les cas c'est cochon)...

Voici le script dzVents pour faire ça:

'Portail fermé': nom de l'interrupteur de détection de fermeture
IDX 423: Portail somfy


Code : Tout sélectionner

return {
	on = {
		devices = {
			'Portail fermé'
		}
	},
	
	execute = function(dz, device)
	if (device.active) then
    dz.devices(423).switchOn().silent()
    dz.log('Portail détecté comme fermé, passage du Portail à état Fermé')
    else
    dz.devices(423).switchOff().silent()
    dz.log('Portail détecté comme ouvert, passage du Portail à état Ouvert')
    end
end

}
Plus tard le contact "Portail fermé" sera renommé en "$Portail fermé" ça sera 100% waf !

Je ne sais pas si vous trouverez une application pour votre cas...
Raspberry pi 3 - Domoticz 2024.4 | Piface v.2 + Téléinfo + RFXtrx433E
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS
prises chacon, wifi | Sonoff easyESP, Tasmota, Espurna | ParadoxMG5050
samourai47
Messages : 286
Inscription : 04 déc. 2018, 19:44

Re: [dzVents] mettre à jour le status d'un switch sans l'actionner

Message par samourai47 »

Merci pour ce script
Je l'adapte à mon systeme mais j'iai l'impression que l'oredre on/off est quand meme envoyé

La difference, j'ai un capteur xiaomi (door contact) qui affiche ouvert ou ferme. je recupere l'info pour mettre à jour la device "Porte du garage". J'i l'impression que ca fonctionne

Par contre si l'aimant tombe au sol (par exemple), j'ai donc ouvert sur le capteur et la porte de garage s'ouvre. Pas secure du coup? J'ai inversé les commandes car le On ferme et le Off ouvre????

Code : Tout sélectionner

return {
	on = {
		devices = {
			'Porte Garage Sensor'
		}
	},
	
	execute = function(dz, device)
	if (device.active) then
    dz.devices(52).switchOff().silent()
    --dz.log('Portail détecté comme ouvert, passage du Portail à état ouvert')
    else
    dz.devices(52).switchOn().silent()
    --dz.log('Portail détecté comme ferme, passage du Portail à état ferme')
    end
end

}
J'ai bien testé. Effectivement si je remplace mon sensor par un dummy device on/off. Lorsque je fais on, le capteur Garage se met a jour, mais l'ordre est envoyé... donc ca tourne parfois en boucle
Qu'en pensez vous?
phalseb
Messages : 41
Inscription : 16 janv. 2018, 17:11

Re: [DzVents] Mettre à jour le status d'un switch sans l'actionner

Message par phalseb »

Bonjour, désolé de déterré ce poste.

Avez-vous trouvé une solution?

Bien à vous
samourai47
Messages : 286
Inscription : 04 déc. 2018, 19:44

Re: [DzVents] Mettre à jour le status d'un switch sans l'actionner

Message par samourai47 »

oui sur le forum anglais

Code : Tout sélectionner

return
{
    on =
    {
        devices =
        {
            'Sensor garage',
        },
    },

    logging =
    {
        level = domoticz.LOG_DEBUG, -- set to domoticz.LOG_ERROR when all is OK
        marker = 'quiet gate',
    },

    execute = function(dz, item)
        local gate = dz.devices('La Porte du Garage')

        local opened = 1
        local closed = 3
        local stopped = 0

        function updateQuiet(id, nValue, sValue)
            local url = dz.settings['Domoticz url'] ..
                '/json.htm?type=command&param=udevice' ..
                '&nvalue=' .. nValue ..
                '&svalue=' .. sValue ..
                '&idx=' .. gate.id

            dz.openURL(url)
        end

        dz.log('State of ' .. item.name .. ' is ' .. item.state, dz.LOG_DEBUG)
        if item.active then
            updateQuiet(gate.id, opened, 0) -- change to closed if action is reverted
        else
            updateQuiet(gate.id, closed, 0) -- change to opened if action is reverted
        end
    end
}
Sensor c 'est lui qui voit ouvert / ferme et qui met a jour le statut de la porte du garage
Répondre