DZVents : Gestion des sondes xiaomi THB avec le plugin Domoticz-deCONZ

le plugin Domoticz-deCONZ a une gestion des devices Température + hygrométrie + baromètre différente de la passerelle XIAOMI ou du plugin Domoticz-Zigate. Il génère 3 devices séparés pour chaque sonde appairée.
Ce script permet de les regrouper et de les mettre à jour simplement, sans paramétrage autre que la convention de nommage suivante : une sonde température + hygrométrie + baromètre que nous appellerons pour l’exemple Douche.

le plugin génère 3 devices :
Température Douche.
Hygrométrie Douche.
Baromètre Douche.
on nomme ces 3 devices en :
$Température Douche
$Hygrométrie Douche
$Baromètre Douche

on créé manuellement un device virtuel THB nommé … Douche



il est automatiquement prise en charge par le script et sera mis à jour avec les données de $Température Douche, $hygrométrie Douche, $baromètre Douche qui n’apparaissent plus dans les onglets Température et météo de domoticz mais sont toujours actifs.

si vous respectez cette règle de nommage à chaque ajout de device, nul besoin de toucher au script, le nouveau device sera directement pris en charge

le script complet

--[[
xiaomiTHBsensors.lua
author/auteur = papoo
update/mise à jour = 10/06/2019
création = 22/04/2019
DZVents : Gestion des sondes xiaomi THB avec le plugin Domoticz-deCONZ
https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/xiaomiTHBsensors.lua https://easydomoticz.com/forum/viewtopic.php?f=15&t=7593&p=69089#p69089 --]] local scriptName = 'xiaomiTHBsensors' local scriptVersion = '1.2' return { active = true, logging = { level = domoticz.LOG_DEBUG, -- Uncomment to override the dzVents global logging setting -- level = domoticz.LOG_INFO, -- Seulement un niveau peut être actif; commenter les autres -- level = domoticz.LOG_ERROR, -- level = domoticz.LOG_MODULE_EXEC_INFO, marker = scriptName..' '..scriptVersion }, on = { devices = {'$Température*'} }, execute = function(domoticz,sensor) local function logWrite(str,level) -- Support function for shorthand debug log statements domoticz.log(tostring(str),level or domoticz.LOG_DEBUG) end local function levelForecast(pressure) pressure = tonumber(pressure) if type(pressure) ~= "number" then return domoticz.BARO_NOINFO elseif pressure < 1000 then return domoticz.BARO_RAIN elseif pressure < 1020 then return domoticz.BARO_CLOUDY elseif pressure < 1030 then return domoticz.BARO_PARTLYCLOUDY else return domoticz.BARO_SUNNY end end function deviceType(device) if device ~= nil then if domoticz.devices(device).deviceType:upper() == "GENERAL" then return domoticz.devices(device).deviceSubType else return domoticz.devices(device).deviceType end else return nil end end local function UpdateSensor(sensor) TemperatureSensor = sensor.name sensor = string.gsub (sensor.name, "$Température ", "") t = domoticz.utils.round(domoticz.devices(TemperatureSensor).temperature,1) logWrite(t) logWrite(deviceType(sensor)) if domoticz.devices("$Humidité "..sensor) ~= nil then HumiditySensor = tostring("$Humidité "..sensor) if domoticz.devices(HumiditySensor).humidity ~= nil then h = domoticz.devices(HumiditySensor).humidity hs = domoticz.devices(HumiditySensor).humidityStatusValue logWrite(h) logWrite(hs) end end if deviceType(sensor) == "Temp + Humidity + Baro" then if domoticz.devices("$Baromètre "..sensor) ~= nil then BarometreSensor = tostring("$Baromètre "..sensor) if domoticz.devices(BarometreSensor).barometer ~= nil then p = tonumber(domoticz.devices(BarometreSensor).barometer) logWrite(p) end end end if h ~= nil and p ~= nil and domoticz.devices(sensor) then domoticz.devices(sensor).updateTempHumBaro(t, h, hs, p, levelForecast(p)) logWrite("mise à jour du device "..domoticz.devices(sensor).name) elseif h ~= nil and p == nil and domoticz.devices(sensor) then domoticz.devices(sensor).updateTempHum(t, h, hs) logWrite("mise à jour du device "..domoticz.devices(sensor).name) end end UpdateSensor(sensor) end }

retrouver la dernière version de ce script sur



 Site Officiel :   github.com

6 thoughts on “DZVents : Gestion des sondes xiaomi THB avec le plugin Domoticz-deCONZ

  1. Bonsoir

    Non je n’ai pas posé la question aux utilisateurs . J’ai simplement lu le script et j’ai tout de suite compris le problème .
    Tout est dans le détail
    le problème était dans la désignation des capteurs $Température $Humidité et $Baromètre … Les Accents . Maintenant ca marche Bien . Merci

    Sans indiscrétion , pourquoi avoir quitter DomoticZ ? et pour le remplacer par quoi ?

    Bonne soirée ou bonne journée

  2. Bonjour
    Voila le message d’erreur que je récupère quand j’essaye de faire marcher le script .
    Une idée

    2021-01-12 14:27:38.937 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_xiaomiThBsensor.lua: …i/domoticz/scripts/lua/script_device_xiaomiThBsensor.lua:18: attempt to index a nil value (global ‘domoticz’)

    Merci d’avance

  3. Nouvelle version 1.2 supprimant l’erreur générée par les devices non équipés de baromètres

  4. nouvelle version 1.1 pour la gestion des devices Temp + hygro (même non xiaomi) en plus des Temp + hygro + Baro

Laisser un commentaire