Sida 1 av 1
LUA: för att multiplicera en temperatur
Postat: 11 jan 2017, 09:12
av Lillios
Hej..
Jag köpte för en tid sedan denna:
Wireless Multi Sensor Mk3 ifrån foogadgets. Tellsticken hittar sensorn direkt och det verkar fungera bra.
Till denna har jag kopplat in en MH-Z19 Co2 givare. Tanken är att logga Co2 värdena främst i Sovrummen för att se om något behöver göras åt ventilationen.
När denna Co2 givare är inkopplad så visas den som en temperatur, detta temperatur värde behöver sedan multipliceras med x50 för att den skall visa korrekt Co2 värde. Tex temperatur visar 8°C, (50x8)=400ppm.
Jag använder Domoticz och skulle vilja ha denna temperatur till en "Dummy sensor" som fick ett multiplcerat värde ifrån ett script.
Är det någon som använder något liknade som råkar har ett script för detta?
Eller något tips på vart jag kan hitta det, eller i vilken ände jag ska börja.
Jag är helt kass vad det gäller LUA, har försökt göra ett par olika scripts men ännu har inget fungerat:-)
Re: LUA: för att multiplicera en temperatur
Postat: 15 jan 2017, 21:45
av HobbesApps
Ändrade i ett annat skript jag har för att hantera energimätningar.. prova detta:
Kod: Markera allt
--Domoticz LUA Script (put text in file script_device_CO2.lua in /home/pi/domoticz/scripts/lua)
--Name of the real CO2 meter
aqMeterName = 'WMS-Test co2'
--ID of the created dummy CO2 meter
dummyAqMeterId = 35
aqVal = otherdevices_svalues[aqMeterName]
commandArray = {}
if devicechanged[aqMeterName] then
--calculate actual value
actual = 50 * tonumber(aqVal)
--update dummy meter
commandArray['UpdateDevice'] = dummyAqMeterId .. "|1|" .. actual
end
return commandArray
Re: LUA: för att multiplicera en temperatur
Postat: 16 jan 2017, 10:46
av Lillios
Grymt!
Tack så otroligt mycket.
Sitter på jobbet och läser detta och fick plötsligt en väldig hemlängtan
Tack igen.
Re: LUA: för att multiplicera en temperatur
Postat: 19 jan 2017, 10:22
av Lillios
Det fungerar nästan.
Co2 Dummy:n visar kostant 1ppm. Oavsett vilket värde WMS-Test co2 har?
Jag får inga fel i Log filen heller.
Re: LUA: för att multiplicera en temperatur
Postat: 19 jan 2017, 18:00
av HobbesApps
Ok! Jag provkörde aldrig själv, men ska försöka mig på det ikväll. Återkommer!
Re: LUA: för att multiplicera en temperatur
Postat: 19 jan 2017, 18:20
av HobbesApps
Prova att ändra ena raden till:
commandArray['UpdateDevice'] = dummyAqMeterId .. "|" .. actual
d.v.s. "|1|" --> "|". Bör vara lösningen.
Re: LUA: för att multiplicera en temperatur
Postat: 20 jan 2017, 09:27
av Lillios
Det gjorde ingen skillnad. Den visar fortfarande 1 konstant.
Har provat att ändra lite själv, men allt är bara gissningar. Då ändrades den till 0, nu när jag ändrar tillbaka till ditt förslag så visar den fortfarande 0.
Så den verkar endast visa sitt tidigare värde och inte uppdateras?
Re: LUA: för att multiplicera en temperatur
Postat: 20 jan 2017, 12:55
av redina
Lillios skrev:Det gjorde ingen skillnad. Den visar fortfarande 1 konstant.
Har provat att ändra lite själv, men allt är bara gissningar. Då ändrades den till 0, nu när jag ändrar tillbaka till ditt förslag så visar den fortfarande 0.
Så den verkar endast visa sitt tidigare värde och inte uppdateras?
Du har skapat en Co2 dummy device, skriptet fungerar mot en text dumm device
Om du ändrar raden
Kod: Markera allt
--update dummy meter
commandArray['UpdateDevice'] = dummyAqMeterId .. "|1|" .. actual
till
Kod: Markera allt
--update dummy meter
commandArray['UpdateDevice'] = dummyAqMeterId .. "|" .. actual .. "|0"
Först är det: ID | nvalue | svalue
Så det beror på device vilket som används.
Re: LUA: för att multiplicera en temperatur
Postat: 20 jan 2017, 14:07
av Lillios
Det fungerade!
Tusen tack för hjälpen!
Kod: Markera allt
--Domoticz LUA Script (put text in file script_device_CO2.lua in /home/pi/domoticz/scripts/lua)
--Name of the real CO2 meter
aqMeterName = 'WMS-Test co2'
--ID of the created dummy CO2 meter
dummyAqMeterId = 35
aqVal = otherdevices_svalues[aqMeterName]
commandArray = {}
if devicechanged[aqMeterName] then
--calculate actual value
actual = 50 * tonumber(aqVal)
--update dummy meter
commandArray['UpdateDevice'] = dummyAqMeterId .. "|" .. actual .. "|0"
end
return commandArray