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! :D

Tusen tack för hjälpen! :D

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