Domoticz/ESP8266/ESPEASY

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 <\>.
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Domoticz/ESP8266/ESPEASY

Message par david86 »

Bonjour à tous,
Je cherche une solution à mettre en œuvre pour récupérer une mesure de pression que mesure un wemos sous ESPEASY et qui remonte cette valeur sur un dummy, tout est bon côté domoticz 👍🏻
Cette valeur pression est intéressante mais elle le serait encore si j’arrivais à la combiner avec celle qui enclenche ma pompe de piscine. Cet enclenchement de pompe se fait avec un wallplug Fibaro zwave.
Je cherche à faire un contrôle du genre si pompe=0 et pression =0 ok normal
Si pompe=1 et pression inférieur à 0,6 bars problème, si après 1 minute pression <0,6 mettre pompe =0 et envoyer une notification mail.
J’ai essayé de trouvé un truc en blocky, mais rien.
Alors je me dis peut être qu’en Lua c’est plus jouable, mais j’avoue que je ne vois pas où et comment commencer.

Est ce réalisable déjà ou une autre manière pour vous ?

Merci
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Domoticz/ESP8266/ESPEASY

Message par david86 »

Je pensais également au dzevent, sachant que mon device pression est un dummy que j’ai appelé Pression-pompe, et que mon wallplug s’appelle Pompe-piscine.
Ceci pour juste faire une notification :
Mais ma question c’est de faire ce checkup au démarrage et toutes 30 minutes :
return
{
on =
{
devices = {
'Pression-pompe',
'Pompe-piscine'
}
},
execute = function(domoticz, device)
if ((device.name == 'Pompe-piscine' = on and device.active) and
(device.name == 'Pression-piscine' and device.pressure <= 0,6)) then
domoticz.notify('Pompe', 'La pompe ne fonctionne pas', domoticz.PRIORITY_EMERGENCY)
end
end
}
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Domoticz/ESP8266/ESPEASY

Message par Keros »

Dans les petits boutons en haut de le zone d'écriture, il y a un pour afficher le code : </> : cela facilite la lecture.

Si tu débutes dans la programmation, tu peux regarder les guides que j'ai écrit (voir ma signature) : ils t'aideront à démarrer.

Concernant ton code, si tu souhaites qu'il s'active toutes les 30 minutes, il faut que tu utilises un trigger Time : regarde la documentation et les exemples.

Concernant ton code DZvents, tu n'as pas compris le principe : quand tu indiques des devices en haut, le script Execute n'est fait que lorsque les devices que tu as listé au-dessus changent. Dans ton cas précis, les vérifications device.name ne sont pas utiles.
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
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Domoticz/ESP8266/ESPEASY

Message par david86 »

Bonsoir Keros,
Merci de ta réponse.
J'ai lu tes différents lien dans ta signature... Ca m'a documenté sur le Lua, et j'ai réussi à lire a valeur de mon capteur pression pompe (ce que je comprends pas d'ailleurs car la pompe est OFF et le script me renvoi la dernière mesure avant le OFF de la pompe, soit 7.6 bars).

//pour mes essais, plutôt que de démarrer la pompe toutes les 2 minutes, j'ai sélectionner un autre interrupteur Lumière-cellier

Code : Tout sélectionner

commandArray = {}
if (devicechanged['Lumière-cellier']) then
    valeur_pression=(otherdevices_svalues['Pression-pompe'])
    print("La denière valeur de la pression enregsitrée est de :" ..valeur_pression)
end
return commandArray
Ce bout de script (lol, si on peut dire un script) me renvoi une valeur dans les logs, comme dit plus haut, il ne m'est renvoyé que la dernière valeur avant que la pompe passe OFF, pourquoi ça déjà ? :shock:

Après j'ai essayé de déclaré une variable avant le commandArray du type Pression_min = 6 pour faire ensuite

Code : Tout sélectionner

if(valeur_pression<Pression_min) then
message = 'La pompe tourne dans le vide"
commandArray['SendNotification']='message#pushover'
Sans même vouloir atteindre l'objectif de l'envoi de notification, j'ai d'abord essayé :

Code : Tout sélectionner

Pression_min = 6

commandArray = {}
if (devicechanged['Lumière-cellier']) then
    valeur_pression=(otherdevices_svalues['Pression-pompe'])
    print("La dernière valeur de la pression enregsitrée est de :" ..valeur_pression)
    if valeur_pression<Pression_min then
    print("comparaison")
    end
end

return commandArray
j'ai l'impression que la déclaration de la variable Pression_min = 6 ne fonctionne pas, les logs me le signifiait. : [string "Pression_min = 6..."]:8: attempt to compare string with number

Comme tu le vois je débutes, non même pas je découvre ce milieu...

Pour le DZEvent, je comprend la nuance que tu m'as apporté, je vais y regardé, mais en gros le trigger sur lequel je me fixe va être l'état de mon interrupteur "Lumière cellier".

Pour mon but final de m'envoyer un message d'avertissement par notification ou mail et de couper la pompe, vaut-il mieux que je regarde en Lua ou DZEvent ? Et avec ton aide je veux bien.

Merci de ton aide.
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Domoticz/ESP8266/ESPEASY

Message par david86 »

Bonjour Keros,
j'ai un peu avancé et j'ai fait les quelques tests de tes différentes pages, à savoir :
ok : arriver un autre interrupteur en fonction de l'état d'un autre inter
ok : enclencher un inter dimmable en fonction de l'état d'un autre inter

pas trop ok : arriver à éteindre un dimmable selon condition d'un inter et d'une consigne de température
Mais déjà dans les logs, domoticz me remonte une erreur sur ma variable Seuil_temp=90
Erreur renvoyée : Error: EventSystem: in test-script allumage+température: [string "Seuil_temp=90..."]:5: attempt to index a nil value (global 'devicechanged')
Malgré cela, ça fonctionne quand même, mais il doit y avoir un pb quelque part qui fait que ce n'est pas nickel.
Et autre point, il faudrait que domoticz rafraichisse sa lecture au moment du changement d'état à OFF.
Je ne sais pas si c'est nécessaire de mettre une variable pour faire la comparaison, je préférerai que domoticz lise au moment du clic OFF la valeur à l'instant t et agisse en fonction.
Au lieu d'écrire if val_temp < Seuil_temp then... une phrase du type if val_temp < 30 then
mon script :

Code : Tout sélectionner

Seuil_temp=90

commandArray = {}

if (devicechanged['Interrupteur salon'] == 'On')
    then
    print ("L'interrupteur salon à ON")
    commandArray['Dimmer salon'] = 'Set Level 80'
    print("Le dimmer salon ON à 80%")
end

if (devicechanged['Interrupteur salon'] == 'Off') then
    val_temp = (otherdevices_svalues['Temp-virtuel'])
    val_temp=tonumber(val_temp)
    print("Température virtuelle = "..val_temp)
    if val_temp < Seuil_temp then
        print("controle seuil Température")
        commandArray['Dimmer salon'] = 'Set Level 00'
        print("Le dimmer salon OFF")
    end
end

return commandArray
Merci,
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Domoticz/ESP8266/ESPEASY

Message par Keros »

Je vois que tu avances, c'est super !

Je ne vois pas ce qui explique ton erreur. Cette erreur apparait quand ? quand le script se lance ? En fonction de la valeur On / Off ?
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
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Domoticz/ESP8266/ESPEASY

Message par david86 »

Ce message apparaissait lorsque je cliquais sur le "on" de mon inter virtuel... J'ai peut-être trouvé l'origine, j'avais laissé "All" dans le trigger de mon script. En mettant "Device", je n'ai plus ce message dans les logs.

Ca j'arrive à faire :
if inter=on then dimmer=on
end

Par contre je ne trouve pas comment faire un :
if inter =off ET temperature < 20 then dimmer=off
end

je n'ai pas trouvé de guide, tuto ou autre sur le and en lua. Il existe au moins ? :(

Merci,
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Domoticz/ESP8266/ESPEASY

Message par Keros »

Ah oui le trigger All. Bien vu !

Le and permet de mettre deux conditions l'une après l'autre :if inter == 'Off' and temperature < 20 then dimmer=off end

Voilà divers sites avec des infos sur le LUA :

https://www.lua.org/manual/5.4
viewtopic.php?t=4471
https://wxlua.developpez.com/tutoriels/ ... plet/#L4-a
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
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Domoticz/ESP8266/ESPEASY

Message par david86 »

C'est bon, après mes essais de cet après-midi et un de tes liens (merci), j'ai trouvé ma solution, en tout cas celle qui fonctionne pour chez moi :

Code : Tout sélectionner

if ((devicechanged['Interrupteur salon'] == 'Off') and (otherdevices_temperature['Temp-virtuel'] < 100)) then
   commandArray['Dimmer salon'] = 'Set Level 2'
--  if val_temp < 100 then
     print("Le dimmer salon est abaissé")
--  end
end
Il fallait que j'utilise otherdevices_temperature['ee'] et non devicechanged['devicename_Temperature'] = value

Bon j'avance petit a petit, il faut maintenant que je fasse envoyer la notification ;-)
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
david86
Messages : 224
Inscription : 06 avr. 2018, 08:22

Re: Domoticz/ESP8266/ESPEASY

Message par david86 »

Auto-réponse, trouvé dans la même liste que la solution otherdevice précédente... commandArray['SendNotification']='subject#body#extraData#priority#sound'
J'en reviens pas.
Maintenant je peux revenir à mon sujet initial...
Pompe piscine, pression, envoi notification après 1 minutes de fonctionnement. Je verrai sur l'étape d'après comment faire pour que si au bout de 2 minutes la valeur n'est pas bonne, ==> envoi notif et Mise à Off interrupteur.
Raspberry Pi 3, Domoticz, RFXComm, contrôle RTS, contrôle SPOT PISCINE ;-), 2 inter Chacon 1000W, 2 inter CHACON 3000W, AEON Stick ZWAVE, 1 wall plug
1 WEMOS avec capteur pression
Boitier sonde + LED en cours...
Répondre