Mäta elförbrukning, Raspberry Pi & Domoticz.

I detta forum hör diskussioner gällande teknik i största allmänhet och hemautomation i synnerhet hemma.

Moderator: elf98

Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Niklas » 19 feb 2016, 21:29

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.
Kall
Wannabe
Inlägg: 7
Blev medlem: 19 feb 2016, 16:42
Ort: Arboga

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Kall » 19 feb 2016, 21:47

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)
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Niklas » 19 feb 2016, 21:50

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. ;)
Domoticz_-_Google_Chrome_2016-02-19_20-53-41_41871070.png
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.
Kall
Wannabe
Inlägg: 7
Blev medlem: 19 feb 2016, 16:42
Ort: Arboga

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Kall » 19 feb 2016, 22:13

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.
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Niklas » 19 feb 2016, 22:15

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?
Kall
Wannabe
Inlägg: 7
Blev medlem: 19 feb 2016, 16:42
Ort: Arboga

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Kall » 19 feb 2016, 22:25

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 :)
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Niklas » 19 feb 2016, 22:28

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. :)
pi@Pi2Domo_~domoticzscriptslua_2016-02-19_21-28-34_15496288.png
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}
Kall
Wannabe
Inlägg: 7
Blev medlem: 19 feb 2016, 16:42
Ort: Arboga

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Kall » 19 feb 2016, 23:11

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.
Kall
Wannabe
Inlägg: 7
Blev medlem: 19 feb 2016, 16:42
Ort: Arboga

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Kall » 29 feb 2016, 15:42

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.
Log.png
Elräknare.png
Lua.png
darkmarc
Inlägg: 1
Blev medlem: 21 nov 2016, 18:20
Ort: Göteborg

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av darkmarc » 21 nov 2016, 18:23

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? :)
Lillios
Wannabe
Inlägg: 23
Blev medlem: 16 nov 2016, 23:12
Ort: Ronneby

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Lillios » 27 nov 2016, 01:02

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
Lillios
Wannabe
Inlägg: 23
Blev medlem: 16 nov 2016, 23:12
Ort: Ronneby

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Lillios » 28 nov 2016, 11:37

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?
rich710
Wannabe
Inlägg: 3
Blev medlem: 27 okt 2015, 11:25
Ort: Höganäs

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av rich710 » 01 dec 2016, 15:31

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?
mrhedstrom
Wannabe
Inlägg: 21
Blev medlem: 14 feb 2014, 14:53
Ort: Åkersberga

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av mrhedstrom » 02 dec 2016, 16:58

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
Lillios
Wannabe
Inlägg: 23
Blev medlem: 16 nov 2016, 23:12
Ort: Ronneby

Re: Mäta elförbrukning, Raspberry Pi & Domoticz.

Inlägg av Lillios » 04 dec 2016, 21:58

mrhedstrom skrev: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
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!
Bilagor
Untitled.jpg
Untitled.jpg (21.6 KiB) Visad 3673 gånger
Skriv svar