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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
--[[ xiaomiTHBsensors.lua author/auteur = papoo update/mise à jour = 10/06/2019 création = 22/04/2019 https://pon.fr/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
Je suis passé à Home Assistant
les possibilités sont bien plus grandes
seul regret le lua/dzvents
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
bonjour Thierry_06110
je n’utilise plus du tout domoticz
as tu poser ta question aux utilisateurs de ce script sur le forum?
https://easydomoticz.com/forum/viewtopic.php?f=15&t=7593&p=69089#p69089
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
Nouvelle version 1.2 supprimant l’erreur générée par les devices non équipés de baromètres
nouvelle version 1.1 pour la gestion des devices Temp + hygro (même non xiaomi) en plus des Temp + hygro + Baro