DzVents pour Domoticz, les scripts n’ont jamais été plus faciles

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

Résultat de recherche d'images pour "ca c'est fait"

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz.

2 Comments

  1. Merci pour cet article.

    est ce compatible avec Windows ou bien seulement sous certains OS ? et lesquel du coup ,

    Merci

  2. 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
    🙂

Comments are closed.