[DzVents] Script de notifications ultime (mais pas que)

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Entourez votre code source avec les balises Quote grâce au bouton correspondant
denis_brasseur
Messages : 683
Enregistré le : 24 déc. 2018, 17:05
Localisation : (26)

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par denis_brasseur »

Tout est possible à partir de ce script, j'ai fait pas mal de modif afin de le personnaliser.
Il faut juste savoir ce que l'on veux faire..
Pi3 + DD PiDrive + RFXtrx433 + AEON Labs ZW090
7 Modules fil pilote ZMNHJD1
2 détecteur fumées CHACON 34131
5 Bresser Capteur thermo/hygro
1 contacteur porte Philio PST02-1A Z
OWL Micro+ CM180
D2L LINKY
FGR-223 "Roller Shutter 3"

jjlf
Messages : 11
Enregistré le : 04 févr. 2018, 20:58

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par jjlf »

Bonjour, merci pour votre script.
Est-il possible de configurer un device (lumiere) pour qu’il s’allume des qu’un motion sensor est activé ?
Et qu’il s’éteigne automatiquement après x minutes si pas de mouvement detecté. Je pense avoir trouvé pour cette derniere condition :
{
« auto_off_minutes »: 2,
« auto_off_motion_device »: [« Motion1 », « Motion2 »]
}
Mais pas pour la premiere (allumage de la lumiere si motion detectée).
Merci d’avance.

hestia
Messages : 177
Enregistré le : 12 sept. 2018, 22:36

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par hestia »

A voir ici ?
Auto-On, Auto-Off and Auto-OnOff
Auto-On is used to switch on any device when another device switches on. Examples of how to use this script are for example: a motion sensor switching on one or more lights, or a fan in the bathroom or shower that switches on automatically when the light is switched on. Auto-On now supports functions that you can use to implement o.a. not switching on when it is not dark. Examples are in the script code and further down in this thread.
Pas testé...

jjlf
Messages : 11
Enregistré le : 04 févr. 2018, 20:58

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par jjlf »

Merci pour ta réponse Hestia.
Je pensais plutôt à une modif du script ultime pour ajouter un auto_on_motion pour prendre en compte comme le auto_off_motion une liste de motion sensor qui active la lumière et éventuellement même des plages horaires.
On pourrait par exemple configurer une lumière comme ceci :

{
« auto_on_time»: ['at 07:00-09:10','at 17:00-01:00'],
« auto_on_motion_device »: [« Motion1 », « Motion2 »],
« auto_off_minutes »: 2,
« auto_off_motion_device »: [« Motion1 », « Motion2 »]
}

jeanmars
Messages : 7
Enregistré le : 20 févr. 2021, 18:16

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par jeanmars »

Bonjour,

je viens de découvrir cet intéressant thread et je voudrais pouvoir utiliser ce script pour recevoir une notification si ma consommation électrique dépasse un certain seuil, et bien sur je me pose 10M de questions :-)
J'ai rajouté les scripts global_data.lua et JsonDescription.lua dans domoticz/scripts/dzVents/scripts, activé dzvents dans les paramètres, je pense qu'il me faut rajouter un JSON dans le descriptif de mon device Linky (champ CONS je pense) mais je ne trouve pas d'exemple de device P1 dans JsonDescription.lua.
Me faut-il modifier ce JsonDescription.lua ?
Un peu d'aide pour me permettre de partir du bon pied serait appréciée :-)
Merci,
Jean

jeanmars
Messages : 7
Enregistré le : 20 févr. 2021, 18:16

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par jeanmars »

Hello de nouveau,

j'en profite pour signaler que dès que j'active dzvents dans les paramètres, quel que soit le niveau de log (même silent!), j'ai ces lignes chaque minute:
2021-02-20 18:32:00.119 Status: dzVents: Info: Json Description v1.13: ------ Start external script: JsonDescription.lua:, trigger: "every minute"
2021-02-20 18:32:00.132 Status: dzVents: Info: Json Description v1.13: la moyenne des temperatures exterieures est de 0.0°C
2021-02-20 18:32:00.132 Status: dzVents: Info: Json Description v1.13: la moyenne des temperatures intérieures est de 0.0°C
2021-02-20 18:32:00.132 Status: dzVents: Info: Json Description v1.13: la moyenne des delta T est de 0.0°C
2021-02-20 18:32:00.132 Status: dzVents: Info: Json Description v1.13: la moyenne des seuils est de 0.0°C
2021-02-20 18:32:00.132 Status: dzVents: Info: Json Description v1.13: 2 devices scannés.
2021-02-20 18:32:00.133 Status: dzVents: Info: Json Description v1.13: ------ Finished JsonDescription.lua

J'ai redémarré Domoticz, active/dé-activé dzvents, mais pareil...

jeanmars
Messages : 7
Enregistré le : 20 févr. 2021, 18:16

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par jeanmars »

OK, je comprends, le niveau de log se contrôle directement dans JsonDescription.lua ...
Dans les paramètres, c'est celui de dzvents!

Désolé pour le dérangement mais ma question sur comment notifier une consommation électrique au delà d'un certain seuil reste là ;-)

denis_brasseur
Messages : 683
Enregistré le : 24 déc. 2018, 17:05
Localisation : (26)

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par denis_brasseur »

jeanmars a écrit : 20 févr. 2021, 18:47 Désolé pour le dérangement mais ma question sur comment notifier une consommation électrique au delà d'un certain seuil reste là ;-)
De quel type est ton device de consommation ?
Pour un device de type custom sensor, tu peux utiliser ceci :

Code : Tout sélectionner

Exemple 9 :être averti si un périphérique Custom Sensor dépasse les seuils minimal ou maximal
    avec fréquence de notifications en minutes et notification des heures calmes

  {
 "low_threshold_custom": 1000,
 "high_threshold_custom": 4000,
 "frequency_notifications": 60,
 "quiet_hours":"23:00-07:15"
  }
SI il s'agit d'un P1 Smart meter, il va falloir mettre les main dans le code en utilisant : counterToday, à vérifier si cette valeur ou une autre est bien la valeur journaliere et non pas cumulée.
Si la valeur journaliere n'est pas remontée, cela ne marchera pas !
P1 Smart meter
counterDeliveredToday: Number.
counterToday: Number.
usage1, usage2: Number.
return1, return2: Number.
updateP1(usage1, usage2, return1, return2, cons, prod): Function. Updates the device. Supports command options.
usage: Number.
usageDelivered: Number.
Ca pourrait ressembler à ceci :

Code : Tout sélectionner

--[[
être averti si un périphérique P1 smart meter dépasse les seuils minimal ou maximal
    avec fréquence de notifications en minutes et notification des heures calmes
  {
 "low_threshold_smart_meter": 10,
 "high_threshold_smart_meter": 40,
 "frequency_notifications": 60,
 "quiet_hours":"23:00-07:15"
  }

]]
-- a inserer dans le code

elseif device.sensorType ~= nil and (settings.high_threshold_smart_meter ~= nil or settings.low_threshold_smart_meter ~= nil)  then
--alarme p1 smart meter
    logWrite('La valeur mesurée par '.. device.name .. ' est de  ' .. tostring(dz.utils.round(device.counterToday, 1)), dz.LOG_INFO)
    if settings.low_threshold_smart_meter ~= nil and tonumber(device.counterToday) < settings.low_threshold_smart_meter then -- seuil bas
        logWrite(device.name .. ' a un seuil bas défini à  ' .. settings.low_threshold_smart_meter, dz.LOG_INFO)
        message = 'La valeur mesurée par '.. device.name .. ' est inférieure au seuil défini ('..settings.low_threshold_smart_meter..'). Valeur : '..tostring(dz.utils.round(device.counterToday, 1))
        dz.helpers.managedNotify(dz, subject, message, notificationTable(subSystems), frequency_notifications, quiet_hours)
    end
    if settings.high_threshold_smart_meter ~= nil and tonumber(device.counterToday) > settings.high_threshold_smart_meter then -- seuil haut
        logWrite(device.name .. ' a un seuil haut défini à  ' .. settings.high_threshold_smart_meter, dz.LOG_INFO)
        message = 'La valeur mesurée par '.. device.name ..' est supérieure au seuil défini ('..settings.high_threshold_smart_meter..'). Valeur : '..tostring(dz.utils.round(device.counterToday, 1))
        dz.helpers.managedNotify(dz, subject, message, notificationTable(subSystems), frequency_notifications, quiet_hours)
    end
elseif ----------------
Je ne l'ai pas testé, n'ayant pas de device de ce type.
Je n'ai pas testé non plus l'échelle de valeur, je suppose qu'il va s'agir de kWh et non pas de Wh, à verifier afin de mettre des valeurs cohérentes.
Modifié en dernier par denis_brasseur le 21 févr. 2021, 14:53, modifié 1 fois.
Pi3 + DD PiDrive + RFXtrx433 + AEON Labs ZW090
7 Modules fil pilote ZMNHJD1
2 détecteur fumées CHACON 34131
5 Bresser Capteur thermo/hygro
1 contacteur porte Philio PST02-1A Z
OWL Micro+ CM180
D2L LINKY
FGR-223 "Roller Shutter 3"

jeanmars
Messages : 7
Enregistré le : 20 févr. 2021, 18:16

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par jeanmars »

Merci Denis

D'après le plugin domoticz linky (https://github.com/guillaumezin/DomoticzLinky), il s'agit bien d'un device smart P1, je vais tester voir avec tes indications.

jeanmars
Messages : 7
Enregistré le : 20 févr. 2021, 18:16

Re: [DZVents] Script de notifications ultime (mais pas que)

Message par jeanmars »

Hello,

j'ai fait quelques essais pas très concluants...
Déjà mon dispositif Linky, sur lequel j'ai ajouté le JSON suivant dans le champ description:
{
"low_threshold_smart_meter": 10,
"high_threshold_smart_meter": 40,
"frequency_notifications": 60,
"quiet_hours":"01:01-01:10"
}
rentre bien dans la boucle dz.devices().forEach( de JsonDescription.lua
mais son type est nil, j'ai rajouté une trace pour en être convaincu:
2021-02-21 22:34:00.437 Error: dzVents: Error: (3.0.2) Json Description v1.13: ...8GB/domoticz/scripts/dzVents/scripts/JsonDescription.lua:679: attempt to concatenate a nil value (field 'sensorType')

Du coup le if de la ligne à rajouter:
if device.sensorType ~= nil and (settings.high_threshold_smart_meter ~= nil or settings.low_threshold_smart_meter ~= nil) then
n'est jamais vrai.

Pourtant le dispositif Linky ma semble être bien délaré du type P1 (p.j.).

Il n'y aurait pas un fonction à appeler depuis le .lua pour afficher tous les champs du device histoire de voir un peu plus ce que c'est?
Fichiers joints
dispositif.jpg
dispositif.jpg (15.55 Kio) Vu 546 fois

Répondre