Sida 8 av 11
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 21:29
av Niklas
Kall skrev:Ja den heter Elräknare, den trådlösa som sitter och räknar blink på elmätaren.
Sen läste jag att man skulle göra 2 st user variables som heter LastEnergyTimestamp och LastEnergyCount typ integer och värde 0.
Sen gjort en dummy under hardware och virtual sensor typ electric (instant + counter) den fick idx 3 under devices. Låter det rätt eller är jag ute och cyklar?
Fick då en ruta med visning under utility fliken, och den har inte uppdaterat sig eller visat nåt.
Får försöka med det senast du la upp nu och se vad som händer. Troligtvis är det skit bakom spakarna så det kan bli vad som helst.
Så då måste jag göra 3 st virtual sensors om jag förstår det rätt, namnet på dom spelar väl ingen roll?
Det spelar ingen roll men detta bör funka med din setup:
Kod: Markera allt
--Domoticz Script to get medium actual energy between energy counter readings and puts it on a dummy device etc
f=0.1
--Name of the real energy counter
energyCounter = 'Elräknare'
--ID of the created dummy energy meter with the new actual value
dummyEnergyMeterid = 3
--The names of two user variables to keep track of previous value due to wrong values from dummy in otherdevices_lastupdate and otherdevices_svalues
userVariableTimestamp = 'LastEnergyTimestamp'
userVariableLastCount = 'LastEnergyCount'
commandArray = {}
if devicechanged[energyCounter] then
current_counter_value=tonumber(otherdevices_svalues[energyCounter])
time_diff = ((tonumber(current_counter_value) - tonumber(uservariables[userVariableLastCount])))/((os.time()-uservariables[userVariableTimestamp])/3600)
counts_since_last_read = tonumber(current_counter_value)-tonumber(uservariables[userVariableLastCount])
use_now_watt = f*time_diff
use_now_watt_rounded = math.floor(use_now_watt+0.5)
total_wh_used=current_counter_value*f
total_wh_used_rounded= math.floor(total_wh_used+0.5)
wh_used_since_last_read=counts_since_last_read*f
wh_used_since_last_read_rounded=math.floor(wh_used_since_last_read+0.5)
total_kwh_used=total_wh_used/1000
total_kwh_used_rounded=math.floor(total_kwh_used+0.5)
kwh_used_since_last_read=wh_used_since_last_read/1000
kwh_used_since_last_read_rounded=math.floor(kwh_used_since_last_read+0.5)
print("current_counter_value: " .. current_counter_value)
print("counts_since_last_read: " .. counts_since_last_read)
print("use_now_watt: " .. use_now_watt .. " (" .. use_now_watt_rounded .. ") W")
print("total_wh_used: " .. total_wh_used .. " (" .. total_wh_used_rounded .. ") Wh")
print("wh_used_since_last_read: " .. wh_used_since_last_read .. " (" .. wh_used_since_last_read_rounded .. ") Wh")
print("Used kWh since start: " .. total_kwh_used .. " (" .. total_kwh_used_rounded .. ") kWh")
print("Used kWh since last read: " .. kwh_used_since_last_read .. " (" .. kwh_used_since_last_read_rounded .. ") kWh")
--calculate new actual value
--update dummy energy meters
commandArray[1] = {['UpdateDevice'] = dummyEnergyMeterid .. "|0|" .. use_now_watt .. ";" .. current_counter_value}
--update user variables
commandArray[2] = {['Variable:'..userVariableTimestamp] = tostring(os.time())}
commandArray[3] = {['Variable:'..userVariableLastCount] = tostring(current_counter_value)}
end
return commandArray
Detta för 10 000 blink per kWh.
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 21:47
av Kall
Funkade inte får fortfarande samma fel.
Siffran 19 har ändrats den var 18 innan.
Ändrade namnet till Elräknare som min heter.
Måste göra något fel någonstans. Frågan är vart.
2016-02-19 20:40:54.402 Error: EventSystem: ...e/pi/domoticz/scripts/lua/script_device_ActualEnergy.lua:19: attempt to perform arithmetic on field '?' (a nil value)
2016-02-19 20:40:54.395 (RFXtrx) RFXMeter (Elräknare)
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 21:50
av Niklas
Kall skrev:Funkade inte får fortfarande samma fel.
Siffran 19 har ändrats den var 18 innan.
Ändrade namnet till Elräknare som min heter.
Måste göra något fel någonstans. Frågan är vart.
2016-02-19 20:40:54.402 Error: EventSystem: ...e/pi/domoticz/scripts/lua/script_device_ActualEnergy.lua:19: attempt to perform arithmetic on field '?' (a nil value)
2016-02-19 20:40:54.395 (RFXtrx) RFXMeter (Elräknare)
Kolla så att du inte råkar få med några radbrytningar i koden som inte ska vara där och att du har med fnuttarna på rätt plats. Hur får du över koden till domo?
Edit: Elräknare kan du lägga till som RFXMeter Counter så får du en visning av kWh i domoticz samtidigt som du har detta script.
Här är mina men de visar olika värden osv, trots att jag mig veterligen följer domoticz api...
Elmätare och EL 2 är korrekt. Watt stämmer också på samtliga men om jag går in på loggen för EL 2 och tittar på diagrammen så har jag använt 81 000 watt kl 10:20.
Den som heter EL är helt åt skogen som synes. Vissa blir också delade med antalet blink som man anger i inställningarna för Domoticz. Jag har försökt att presentera data till de virtuella sensorerna på alla möjliga sätt utan att få det rätt. Jag har också frågat i Domoticz forum men nu har det gått några dagar utan svar.
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 22:13
av Kall
Jag för över med FileZilla ftp.
Kopierar texten och klistrar in i textdokument. Ser inte att det skiljer nåt.
Provade att lägga in en tomrad på scriptet så då ökade siffran 19 till 20 så jag vet inte om den pekar på vilken rad som är fel.
Jo jag har en visare för kWh.
Fick det att börja fungera idag. Har bara elmätare än så länge. Så har ingen större koll på nåt av det här, varken Domoticz eller lua.
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 22:15
av Niklas
Kall skrev:Jag för över med FileZilla ftp.
Kopierar texten och klistrar in i textdokument. Ser inte att det skiljer nåt.
Provade att lägga in en tomrad på scriptet så då ökade siffran 19 till 20 så jag vet inte om den pekar på vilken rad som är fel.
Jo jag har en visare för kWh.
Fick det att börja fungera idag. Har bara elmätare än så länge. Så har ingen större koll på nåt av det här, varken Domoticz eller lua.
Jag klistrar in allt via Putty (terminal) och kör UTF-8 i encoding.
Ja, den säger vilken rad felet är på, oftast. Ibland så ligger det längre upp men den stannar på raden som den anger. Den får i alla fall inget värde från din räknare. Nil står för "ingenting".
Kolla så att du verkligen har
current_counter_value=tonumber(otherdevices_svalues[energyCounter])
time_diff = ((tonumber(current_counter_value) - tonumber(uservariables[userVariableLastCount])))/((os.time()-uservariables[userVariableTimestamp])/3600)
Detta skall vara två rader totalt.
Variablarna har du skapat med rätt namn under användarvariabler?
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 22:25
av Kall
Såg nu när jag räknade rader och provade lägga in tomrader att jag får en brytning där du la upp nu.
current_counter_value=tonumber(otherdevices_svalues[energyCounter])
time_diff = ((tonumber(current_counter_value) - tonumber(uservariables[userVariableLastCount])))/((os.time()-uservariables
[userVariableTimestamp])/3600)
Ska se om jag kan få till det. Tack för hjälpen så långt

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 22:28
av Niklas
Kall skrev:Såg nu när jag räknade rader och provade lägga in tomrader att jag får en brytning där du la upp nu.
current_counter_value=tonumber(otherdevices_svalues[energyCounter])
time_diff = ((tonumber(current_counter_value) - tonumber(uservariables[userVariableLastCount])))/((os.time()-uservariables
[userVariableTimestamp])/3600)
Ska se om jag kan få till det. Tack för hjälpen så långt

Så här bör det se ut.
Edit:
Ett fel!
commandArray[1] = {['UpdateDevice'] = dummyEnergyMeterid .. "|0|" .. use_now_watt .. ";" .. initial}
Ändra initial till current_counter_value så att det blir
commandArray[1] = {['UpdateDevice'] = dummyEnergyMeterid .. "|0|" .. use_now_watt .. ";" .. current_counter_value}
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 19 feb 2016, 23:11
av Kall
Funkar inget bra för mig. Fortfarande fel.
Namnet du frågade om döpte jag så här.
2 st user variables som heter LastEnergyTimestamp och LastEnergyCount typ integer och värde 0
Nu ger jag upp och går och lägger mig.
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 29 feb 2016, 15:42
av Kall
Hallå.
Tänkte bara uppdatera hur det gått.
Har fått det att fungera, tror jag.
Fick dock i denna raden
actual = ((tonumber(otherdevices_svalues[energyCounter]) - tonumber(uservariables[userVariableLastCount])))/((os.time()-uservariables[userVariableTimestamp])/3600)
Ta bort
/((os.time()-uservariables[userVariableTimestamp])/3600) då jag hela tiden fick error på 'LastEnergyTimestamp'
Varför vet jag inte och vad det gör vet jag inte heller.
Aktuell watt visar dock några decimaler fel.
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 21 nov 2016, 18:23
av darkmarc
Av ren nyfikenhet: Har exakt samma problem och fick det också att funka genom att ta bort divisionen med "((os.time()-uservariables[userVariableTimestamp])/3600)". Du har möjligen inte fått det att funka nu?

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 27 nov 2016, 01:02
av Lillios
Har försökt köra scriptet ovan men får bara följande fel i logfilen på Domoticz:
2016-11-27 00:01:19.634 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_actualenergy.lua: ...e/pi/domoticz/scripts/lua/script_device_actualenergy.lua:17: attempt to perform arithmetic on a nil value
Kod: Markera allt
--Name of the real energy counter
energyCounter = 'El_förbrukning'
--ID of the created dummy energy meter with the new actual value
dummyEnergyMeterid = 7
--The names of two user variables to keep track of previous value due to wrong values from dummy in otherdevices_lastupdate and otherdevices_svalues
userVariableTimestamp = 'LastEnergyTimestamp'
userVariableLastCount = 'LastEnergyCount'
commandArray = {}
if devicechanged[energyCounter] then
--Calculate new actual value
actual = ((tonumber(otherdevices_svalues['El_förbrukning']) - tonumber(uservariables['LastEnergyCount'])))
--Update dummy energy meter
commandArray[1] = {['UpdateDevice'] = 3 .. "|0|" .. actual .. ";" .. otherdevices_svalues['El_förbrukning']}
--Update user variables
commandArray[2] = {['Variable:'..'LastEnergyTimestamp'] = tostring(os.time())}
commandArray[3] = {['Variable:'..'LastEnergyCount'] = otherdevices_svalues['El_förbrukning']}
print("El: " .. actual .. "W," .. otherdevices_svalues['El_förbrukning'] .. "kWh")
end
return commandArray
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 28 nov 2016, 11:37
av Lillios
Lillios skrev:Har försökt köra scriptet ovan men får bara följande fel i logfilen på Domoticz:
2016-11-27 00:01:19.634 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_actualenergy.lua: ...e/pi/domoticz/scripts/lua/script_device_actualenergy.lua:17: attempt to perform arithmetic on a nil value
Kod: Markera allt
--Name of the real energy counter
energyCounter = 'El_förbrukning'
--ID of the created dummy energy meter with the new actual value
dummyEnergyMeterid = 7
--The names of two user variables to keep track of previous value due to wrong values from dummy in otherdevices_lastupdate and otherdevices_svalues
userVariableTimestamp = 'LastEnergyTimestamp'
userVariableLastCount = 'LastEnergyCount'
commandArray = {}
if devicechanged[energyCounter] then
--Calculate new actual value
actual = ((tonumber(otherdevices_svalues['El_förbrukning']) - tonumber(uservariables['LastEnergyCount'])))
--Update dummy energy meter
commandArray[1] = {['UpdateDevice'] = 3 .. "|0|" .. actual .. ";" .. otherdevices_svalues['El_förbrukning']}
--Update user variables
commandArray[2] = {['Variable:'..'LastEnergyTimestamp'] = tostring(os.time())}
commandArray[3] = {['Variable:'..'LastEnergyCount'] = otherdevices_svalues['El_förbrukning']}
print("El: " .. actual .. "W," .. otherdevices_svalues['El_förbrukning'] .. "kWh")
end
return commandArray
Kanske skall tillägga att jag använder mig utav denna mätaren:
Elövervakningspaket 1wire
https://www.m.nu/matinstrument/eloverva ... aket-1wire
Har provar en del andra scripts med liknande funktion och ändrat lite i dem, men jag får alltid fel på raden som innehåller:
Kod: Markera allt
--Calculate new actual value
actual = ((tonumber(otherdevices_svalues['El_förbrukning']) - tonumber(uservariables['LastEnergyCount'])))
Är väldigt ny på det här, så jag har ingen direkt förståelse för vad den raden gör?
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 01 dec 2016, 15:31
av rich710
darkmarc skrev:Av ren nyfikenhet: Har exakt samma problem och fick det också att funka genom att ta bort divisionen med "((os.time()-uservariables[userVariableTimestamp])/3600)". Du har möjligen inte fått det att funka nu?

Hej!
Efter två dagars strulande så tog jag bort den raden och då började den äntligen skriva till dummyMonitorn, dock ett högt värde.. men error-meddelandet i loggen är borta, så frågan kvarstår? vad är det i den raden som gör felet, och behövs inte raden?
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 02 dec 2016, 16:58
av mrhedstrom
Hej alla felsökare.
Har uppdaterat scriptet så att det fungerar i nya domoticz. Nu slipper ni skapa variabler i domoticz.
https://github.com/mrhedstrom/domoticz/ ... Energy.lua
Re: Mäta elförbrukning, Raspberry Pi & Domoticz.
Postat: 04 dec 2016, 21:58
av Lillios
Grymt, det funkade.
Men den visar fortfarande 0Watt i momentan förbrukning. Precis när scriptet kördes så visades ett par Watt, men efter det så har det bara visat 0.
Tack!