Een gecombineerde sensor in Domoticz geeft twee of meerdere waarden. Een voorbeeld hiervan is de temperatuursensor die ook vaak het percentage van de luchtvochtigheid aangeeft. Soms is het gemakkelijker om enkelvoudige sensoren te hebben. In dit artikel leggen we uit hoe het mogelijk is een gecombineerde sensor kunt opsplitsen in twee aparte (virtuele) sensoren. Als voorbeeld nemen we een temperatuur + luchtvochtigheidssensor.
Benodigdheden
- Raspberry Pi
- Raspbian software
- Domoticz software
- RFXCom interface
- Gecombineerde sensor
Dummy hardware en sensoren
Allereerst moeten we een dummy hardware aanmaken. Ga naar Setup > Hardware. Bedenk een logische naam en kies bij Type voor Dummy (Does nothing, use for virtual switches only). Data Timeout kun je op Disabled laten staan. Klik op Add om de dummy hardware toe te voegen.
Klik nu op Create Virtual Sensor (donkerblauw). Bedenk een handige naam voor de sensor en kies bij Sensor Type voor “Temperature”. Maak nog een virtuele sensor aan maar dan met het Sensor Type “Humidity”. Ga nu naar Setup > Devices, hier zal je de zojuist aangemaakte sensoren zien staan. Beide virtuele sensoren hebben een idx-nummer gekregen. Noteer de idx-nummer van beide sensoren en klik op het groene pijltje om de sensoren toe te voegen (in onderstaande afbeelding zijn de pijltjes blauw, aangezien ik de sensoren al toegevoegd heb). Je vindt ze dan terug op het tabblad “Temperature”.
LUA-script
Hieronder vind je het benodigde LUA-script.
Op regel 3 wijzig je “Badkamer” naar de naam van jouw gecombineerde sensor (2).
Op regel 4 en 5 zet je de idx-nummers van jouw virtuele sensoren neer (1).
Sla dit script op met de naam script_time_scrapesensor.lua
in de folder /home/pi/domoticz/scripts/lua/
. Het script zal nu automatisch iedere minuut draaien en de twee virtuele sensoren updaten.
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 |
commandArray = {} idxc = 'Badkamer' -- naam van de gecombineerde sensor idxt = '191' -- idx van de virtuele temperatuursensor idxh = '192' -- idx van de virtuele humidity sensor --Data verzamelen uit de gecombineerde sensor: tp, hd = otherdevices_svalues[idxc]:match("([^;]+);([^;]+)") tp = tonumber(tp); hd = tonumber(hd); dp = otherdevices_dewpoint[idxc]; --Optioneel print("Temperatuur van de " .. idxc .. " is: " .. tp .. "º"); print("Humidity van de " .. idxc .. " is: " .. hd .. "%"); print("Dauwpunt van de " .. idxc .. " is " .. dp .."º"); --hum_stat 0=Normal (niet gebruikt), 1=Comfortable, 2=Dry of 3=Wet zijn --er wordt gekeken naar het dauwpunt, aangezien de luchtvochtigheid in combinatie met de temperatuur bepalend is voor hoe de luchtvochtigheid ervaren wordt if dp > 20 then hum_stat = 3 -- wet elseif dp > 10 then hum_stat = 1 -- confortable else hum_stat = 2 -- dry end commandArray[1]={['UpdateDevice'] = idxt .. '|0|' .. tp } commandArray[2]={['UpdateDevice'] = idxh .. '|' .. hd .. '|' .. hum_stat } return commandArray |
Het resultaat: één sensor met de temperatuur en één sensor met de luchtvochtigheid:
Uiteraard kun je dit script ook als basis gebruiken voor andere gecombineerde sensoren.