Dernier épisode concernant dzVents, le parcours de quelques méthodes qui seront à utiliser dans le bloc execute
Les méthodes dzVents
- email(subject, message, mailTo): Fonction. Envoi de email.
- fetchHttpDomoticzData: Fonction. Ceci lance un script qui récupère les données Domoticz et les place dans les fichier dzVents.Ce fonctionnement est activé par le fichier dzVents_settings.lua. Si vous l’avez désactivé dans les settings il vous faudra appeler cette méthode.
- log(message, [level]): Fonction. Envoie un message dans le log Domoticz avec le niveau de verbiage [level] qui peut être domoticz.LOG_INFO, domoticz.LOG_DEBUG or domoticz.LOG_ERROR. Dans le dzVents_settings.lua vous pouvez préciser le niveau des messages qui doit s’afficher (1,2,3).
- notify(subject, message, priority, sound): Fonction. Envoi d’une notification (Prowl). La priorité sera choisie entre domoticz.PRIORITY_LOW, PRIORITY_MODERATE, PRIORITY_NORMAL, PRIORITY_HIGH, PRIORITY_EMERGENCY et peut même faire un son sur le Raspberry,voir ici plus bas
- openURL(url): Fonction. l’appel d’une URL
- setScene(scene, value): Fonction. Activez ou désactiver une scene Domoticz domoticz.setScene(‘My scene’, ‘On’). Cela supporte les timing voir ici .
- sms(message): Fonction. Envoi d’un SMS si configuré dans Domoticz.
- switchGroup(group, value): Fonction. Activation d’un groupe domoticz, la syntaxe est domoticz.switchGroup(‘My group’, ‘Off’). Cela supporte les timing voir ici .
Iterateurs
dzVents apporte des itérateurs sur les 3 tables: devices, changedDevices et variables. Cela évite de recourir aux pair() or ipairs() de Lua , les passionés liront le chapitre concerne en anglais ici https://github.com/dannybloe/dzVents
Sinon, pour illustrer:
domoticz.devices.forEach(Fonction(device)
if (device.batteryLevel < 20) then
-- do something
end
end)
Ou en filtrant sur les devices non mis à jours depuis 60 minutes :
local deadDevices = domoticz.devices.filter(Fonction(device)
return (device.lastUpdate.minutesAgo > 60)
end)
deadDevices.forEach(Fonction(zombie)
-- do something
end)
Constantes
- Pour mettre à jour les widget texte : ALERTLEVEL_GREY, ALERTLEVEL_GREEN, ALERTLEVEL_ORANGE, ALERTLEVEL_RED, ALERTLEVEL_YELLOW
- Pour forcer les barometres à nuageux,nuageux pluvieux, stable ,etc,etc utilisez : BARO_CLOUDY, BARO_CLOUDY_RAIN, BARO_STABLE, BARO_SUNNY, BARO_THUNDERSTORM, BARO_UNKNOWN, BARO_UNSTABLE
- Pour les critères d’hulmidté ; confortable,sec,normal,humide c’est : HUM_COMFORTABLE, HUM_DRY, HUM_NORMAL, HUM_WET
- Les niveau de Log : LOG_DEBUG, LOG_ERROR, LOG_INFO.
- Les priorités pour les messages,notifications sortants PRIORITY_LOW, PRIORITY_MODERATE, PRIORITY_NORMAL, PRIORITY_HIGH, PRIORITY_EMERGENCY
- Le panneau de sécurité : SECURITY_ARMEDAWAY, SECURITY_ARMEDHOME, SECURITY_DISARMED.
- Les sons des notifications : SOUND_ALIEN , SOUND_BIKE, SOUND_BUGLE, SOUND_CASH_REGISTER, SOUND_CLASSICAL, SOUND_CLIMB , SOUND_COSMIC, SOUND_DEFAULT , SOUND_ECHO, SOUND_FALLING , SOUND_GAMELAN, SOUND_INCOMING, SOUND_INTERMISSION, SOUND_MAGIC , SOUND_MECHANICAL, SOUND_NONE, SOUND_PERSISTENT, SOUND_PIANOBAR , SOUND_SIREN , SOUND_SPACEALARM, SOUND_TUGBOAT , SOUND_UPDOWN.
L’API des devices.
Chaque matériel Domoticz et ses propriétés associées ci-dessous est accessible grâce à la commande domoticz.devices
On y accéde soit par le nom ussuel ou par l’idx .
Pour certains capteurs (température, humidité) il y a la commande qui va bien directement. Pour d’autres matèriels il faudra utiliser la syntaxe .rawData(1) — xxxx value, xxx représentant le nom sous lequel Domoticz envoie cette valeur dans Json
domoticz.devices['mySensor'].temperature
domoticz.devices['myLightSensor'].rawData[1] -- lux value
Les Device attributes
Ils permettent de récupérer des valeurs
La syntaxe en général est de la forme
Temp=domoticz.devices['Temperature Salon'].temperature
Niv_Lum=domoticz.devices['Lumiere Salon'].level
- batteryLevel: Nombre (note this is the raw value from Domoticcz and can be 255)
- bState: Booléen. Renvoie true pour les états tels que ‘On’ ‘Open’ ou ‘Motion’.
- barometer: Si le matériel le permet.
- changed: Booléen. True si le capteur vient de changer.
- deviceSubType: String. Fait référence à Subtype de l’interface Domoticz.
- deviceType: String. See Fait référence à type de l’interface Domoticz.
- dewpoint: Only when applicable.
- hardwareName: String. Fait référence à la rubrique éponyme de l’interface Domoticz.
- hardwareId: Nombre. Fait référence à la rubrique éponyme de l’interface Domoticz.
- hardwareType: String. Fait référence à HarwareType de l’interface Domoticz.
- hardwareTypeVal: Nombre. Fait référence à HardwareTypeVal de l’interface Domoticz.
- humidity: Si géré par ce matériel
- id: Nombre. Idx du matériel
- lastUpdate:
- day: Nombre
- hour: Nombre
- isToday: Boolean. Indique (True/False) si ce matéreil à été mis à jour aujourd’hui
- month: Nombre
- min: Nombre
- minutesAgo: Nombre. Nombre de minutes depuis la dernière mise à jour.
- raw: String. Generé par Domoticz
- sec: Nombre
- secondsAgo: Nombre. Nombre de secondes depuis la dernière mise à jour.
- year: Nombre
- level: Nombre. Pour dimmers et autres matériel à %(‘Set Level..%’) cela contient la valeur du sélecteur de l’interface.
- lux: Nombre. Lux pour les light sensors.
- name: String. Nom du matériel
- rain: Only when applicable.
- rainLastHour: Only when applicable.
- rawData: Table: La table des informations donnée par Domoticz. sauf que tout n’y est pas dedans (cas des multisensors) et que parfois il faudra utiliser rawData. Par exemple si la premeire valeur renvoyée par un rawData est le lux , rawData(1) recupérera cette valeur. Attention on recupere sous forme de chaine de caractéres si vous souhaitez un nombre convertissez par (
toNombre(device.rawData[1]
). - signalLevel: String. le niveau de captage zwave, rfxcom …
- state: String. pour les interrupteurs on obtient ‘On’ ou ‘Off’. Les dimmers c’est ‘On’ ou le % . Pour les selector switches (Dummy switch) on obtient le NOM du niveau actuellement sélectionné. La valeur numérique correspondnate est renvoyée par rawData
device.rawData[1]
. - setPoint: Nombre. Le set point du thermostats.
- heatingMode: String. La zone du thermostat EvoHome.
- switchType: String. Fait référence à la rubrique éponyme de l’interface Domoticz.
- switchTypeValue: Nombre.Fait référence à la rubrique éponyme de l’interface Domoticz.
- temperature: Si le capteur le renvoie
- utility: Si le capteur le renvoie
- uv: Si le capteur le renvoie
- weather: Si le capteur le renvoie
- WActual: Nombre. Courant électrique Watt usage.
- WhToday: Nombre. Total Wh du jour . Notez que l’unité est le Wh pas le kWh.
- WhTotal: Nombre. Total Wh (incremental).
- winddir: Si le capteur le renvoie
- windgust: Si le capteur le renvoie
- windspeed: Si le capteur le renvoie
Les Device methods
Les méthodes permettent de commander :
device.close()
device.updateHumidity(100, HUM_WET)
- attributeChanged(attributeName): Fonction. Retourne (true/false) si un attribut à changé depuis le derniercycle d’interrogation :
device.attributeChanged('temperature')
renvoie True/False - close(): Fonction. Met le matériel en « Close » si il le supporte. On peut utiliser les timers aussi.Voir plus bas.
- dimTo(percentage): Fonction. Pour les dimmer envoie un %. On peut utiliser les timers aussi.Voir plus bas.
- open(): Fonction. Envoie un « Open ». On peut utiliser les timers aussi.Voir plus bas.
- setState(newState): Fonction. Fonction générique pour envoyer un nouvel état tel que On ou Off dans les switches. Par ex.: device.setState(‘On’). On peut utiliser les timers aussi.Voir plus bas.
- stop(): Fonction. Envoi Stop (Volets). On peut utiliser les timers aussi.Voir plus bas.
- switchOff(): Fonction. Force le Switch à off. On peut utiliser les timers aussi.Voir plus bas.
- switchOn(): Fonction. Force le Switch device à On.On peut utiliser les timers aussi.Voir plus bas.
- switchSelector(level): Fonction. Envoie d’une valeur à un switche. On peut utiliser les timers aussi.Voir plus bas.
- update(< params >): Fonction. Fonction générique de mise à jour en utilisant la syntaxe proche du commandArray Lua. sans lui donner le device idx. Example pour mettre à jour une température:
device.update(0,12)
. Cela remplace donc commandArray équivalent à['UpdateDevice']='<idx>|0|12'
- toggleSwitch(): Fonction. Bascule l’état du switch : si on est à ON, passe à Off et vice-versa.
- updateAirQuality(quality): Fonction.
- updateAlertSensor(level, text): Fonction. Mise à jour d’un AlertSensor avec le Level :ALERTLEVEL_GREY, ALERTLEVEL_GREE, ALERTLEVEL_YELLOW, ALERTLEVEL_ORANGE, ALERTLEVEL_RED puis votre texte.
- updateBarometer(pressure, forecast): Fonction. Mise à jour de la pression baro, donnez votre pression atmo puis un des termes suvants.BARO_STABLE, BARO_SUNNY, BARO_CLOUDY, BARO_UNSTABLE, BARO_THUNDERSTORM, BARO_UNKNOWN, BARO_CLOUDY_RAIN
- updateCounter(value): Fonction. Mise à jour d’un compteur
- updateDistance(distance): Fonction.Mise à jour d’un compteur de distance
- updateElectricity(power, energy): Fonction.
- updateGas(usage): Fonction.
- updateHumidity(humidity, status): Fonction. Mise à jour d’un compteur d’humidité. Donnez d’abord la valeur puis un des termes suivants pour qualifier HUM_NORMAL, HUM_COMFORTABLE, HUM_DRY, HUM_WET
- updateLux(lux): Fonction.
- updateP1(sage1, usage2, return1, return2, cons, prod): Fonction.
- updatePercentage(percentage): Fonction.Capteur %
- updatePressure(pressure): Fonction. capteur pression
- updateRain(rate, counter): Fonction. Capteur pluie.
- updateTemperature(temperature): Fonction. Capteur température.
- updateTempHum(temperature, humidity, status): Fonction. Capteur température ET humidité pour le status voyez plus haut.
- updateTempHumBaro(temperature, humidity, status, pressure, forecast): Fonction.
- updateText(text): Fonction. passez votre texte
- updateUV(uv): Fonction.
- updateVoltage(voltage): Fonction.
- updateWind(bearing, direction, speed, gust, temperature, chill): Fonction.
Les Timers : spécifiez vos délais et durées d’activation de vos switches
Pour donner la durée ou le délai d’activation des switches nous avons :
-- switch passe à on pour 2 minutes apres 10 seconds
device.switchOn().after_sec(10).for_min(2)
-- switch on for 2 minutes apres un delai tire au hasard entre 1-10 minutes grace à within
device.switchOff().within_min(10).for_min(2)
-- sinon on peut faire simple
device.close().for_min(15) -- pour 15 minutes
device.open().after_sec(20) --apres 20 sec
device.open().after_min(2)
- after_sec(seconds): Fonction. lance la commande aprés x secondes.
- after_min(minutes): Fonction. idem en minutes.
- for_min(minutes): Fonction. lance la commande pour 15 minutes (repasse donc dans l’autre état apres cette durée (device.open().for_min(10))
- within_min(minutes): Fonction. Active la commande sur un délai randomisé dont le max est (minutes) donc entre 0 et minutes
Merci pour cet article.
est ce compatible avec Windows ou bien seulement sous certains OS ? et lesquel du coup ,
Merci
Bonjour
Dannybloe sur le github de dzvents écrit
« Note: this code is not tested on a non-linux machine like Windows. I’m almost certain you will have complications. »
Toutefois cela ne t’empêche pas de tester et de nous faire part de tes retours d’expérience
🙂