Domoticz sumowanie ...
 
Powiadomienia
Wyczyść wszystko

Domoticz Domoticz sumowanie liczników energii

21 Wpisów
4 Użytkownicy
0 Reactions
1,942 Wyświetleń
(@adamdudek)
Wpisów: 55
Kontrybutor
Autor tematu
 

Witam

Potrzebuje z sumować trzy liczniki energii PZEM004T podłączone do trzech klimatyzatorów tak a żebym od razu widział ile dziennie zużywają mi prądu wszystkie trzy klimatyzatory razem. 

utworzyłem zdarzenie które powinno mi zsumować trzy pierwsze pozycje (327,328,330)  i  wypluć sumę w pozycji 331 ale pewnie mam kilka błędów w tej formuje. ktoś może podpowiedzieć mi co należy zmienić aby mi to zaczęło liczyć, bo sam niestety nie jestem w stanie rozgryźć.   Nie bardzo wiem co wpisać w formule zamiast RFXMeter, bo to na pewno  jest nie poprawne   

liczniki złuzycia

 

formuła

 

błedy

 

 
Dodane : 18/08/2022 12:52 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@adamdudek chcesz aktualizować licznik, którego wartość powinna cały czas rosnąć , tak jak w liczniku zakładu energetycznego, wyłączysz klimy i będą bzdury. Użyj CustomSensor jako (331)

Jak chcesz zbierać wartości dzienne to powinno być domoticz.devices(327).counterToday

a aktualizowany czujnik domoticz.devices(331).updateCustomSensor

 
Dodane : 19/08/2022 7:45 am
(@bobrow)
Wpisów: 387
Weteran
 

Witam,

mam podobny temat. Dwa lata temu wymieniłem podlicznik do pompy ciepła na elektroniczny. W domoticzu mam dane z ciepłomierza i z tego nowego podlicznika-potrzebuję uaktualnić obliczanie SCOP pompy ciepła (średnia sprawność) o zużycie grzałki CWU (załącza się na 10 min przy wzroście napięcia z  fotowoltaiki).

Czy poniższy zapis jest ok ?

return {
on = {
devices = {'Energia PC kWh'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "Energia PC kWh"
},
execute = function(domoticz, device)
local p = tonumber(domoticz.devices('PC zużycie kWh').state)
local k = tonumber(domoticz.devices('Energia PC kWh').state)
local w = domoticz.devices('SCOP od 04012020')
local z = tonumber(domoticz.devices('Grzałka CWU zużycie').state)
-- Obliczenia
local w = domoticz.utils.round( (k - z - 29838) / (p - 28)  ,2)
domoticz.log('SCOP od 04012020' , domoticz.LOG_INFO)
w.updateCustomSensor('SCOP od 04012020')
end
}

    Chodzi mi głównie o ten zapis (k - z - 29838).

No i czy zapis dot logów jest ok

domoticz.log('SCOP od 04012020' , domoticz.LOG_INFO)
w.updateCustomSensor('SCOP od 04012020')

Dodam tylko ,że błędami nie sypie -ale "tajemniczo" nic się nie zmienia...SCOP taki sam 

 
Dodane : 20/08/2022 12:54 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Tajemniczy to jest cały ten wpis, :)) Nic nie wiadomo o urządzeniach a na dodatek nadużywany jest local 

 
Dodane : 20/08/2022 1:34 pm
(@bobrow)
Wpisów: 387
Weteran
 

Jednak pojawiły się błędy :

2022-08-20 14:28:02.421 Error: dzVents: Error: (3.1.7) Energia PC kWh: An error occurred when calling event handler SCOP od 04012020
2022-08-20 14:28:02.421 Error: dzVents: Error: (3.1.7) Energia PC kWh: ...z/scripts/dzVents/generated_scripts/SCOP od 04012020.lua:17: attempt to index a number value (local 'w')
 
Dodane : 20/08/2022 1:35 pm
(@bobrow)
Wpisów: 387
Weteran
 
Dodane przez: @isom

Tajemniczy to jest cały ten wpis, :)) Nic nie wiadomo o urządzeniach a na dodatek nadużywany jest local 

Dane p,k,z działaja prawidłowo -są odczyty w tych samych jednostkach (kWh).

Co jest nieprawidłowo ? Local użyłem wg Twojego pomysłu-jak można to zmienić ,to ok...tylko nie wiem jak i dlaczego 😮 

 
Dodane : 20/08/2022 2:02 pm
(@bobrow)
Wpisów: 387
Weteran
 

Zrobiłem jeszcze korektę , zobaczymy...

Dodałem scop jako w-nie wiem czy to dobrze rozumiem

return {
on = {
devices = {'Energia PC kWh'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "Energia PC kWh"
},
execute = function(domoticz, device)
local p = tonumber(domoticz.devices('PC zużycie kWh').state)
local k = tonumber(domoticz.devices('Energia PC kWh').state)
local w = domoticz.devices('SCOP od 04012020')
local z = tonumber(domoticz.devices('Grzałka CWU zużycie').state)
-- Obliczenia
local scop = domoticz.utils.round( (k - z - 29838) / (p - 28)  ,2)
domoticz.log('SCOP pompy'..scop..'SCOP' , domoticz.LOG_INFO)
w.updateCustomSensor(scop)
end
}
 
Dodane : 20/08/2022 2:07 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 
Dodane przez: @bobrow

Local użyłem wg Twojego pomysłu

Jak robisz coś bezmyślnie, to nie powołuj się proszę na moje pomysły :))

 
Dodane : 20/08/2022 2:11 pm
(@bobrow)
Wpisów: 387
Weteran
 

Local jest tylko po to ,że by nie używać długich nazw-jeśli jest jakieś więcej zadanie , to nie wiem...

Nie wiem co jest nie tak z używaniem local ?

Ot , i tyle 

 
Dodane : 20/08/2022 2:13 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 
Dodane przez: @bobrow

Local jest tylko po to ,że by nie używać długich nazw

To prawda , więc dlaczego skoro raz użyłeś local w = xxxxxx, potem w obliczeniach znów to powielasz ? przecież już wiadomo jaka to nazwa :))

 
Dodane : 20/08/2022 2:25 pm
(@bobrow)
Wpisów: 387
Weteran
 
Dodane przez: @isom
Dodane przez: @bobrow

Local jest tylko po to ,że by nie używać długich nazw

To prawda , więc dlaczego skoro raz użyłeś local w = xxxxxx, potem w obliczeniach znów to powielasz ? przecież już wiadomo jaka to nazwa :))

Ale w tym poprawionym zapisie jest poprawione to.

Zrobiłem małą modyfikację i co ciekawe skrypt zadziałał tj zmieniła się wartość SCOP i nie ma błędów (na razie).

return {
on = {
devices = {'Energia PC kWh'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "Energia PC kWh"
},
execute = function(domoticz, device)
local p = tonumber(domoticz.devices('PC zużycie kWh').state)
local k = tonumber(domoticz.devices('Energia PC kWh').state)
local w = domoticz.devices('SCOP od 04012020')
local z = tonumber(domoticz.devices('Grzałka CWU zużycie').state)
-- Obliczenia
local scop = domoticz.utils.round( (k - z - 29838) / (p - 28)  ,2)
domoticz.log('SCOP pompy'..scop..'SCOP' , domoticz.LOG_INFO)
w.updateCustomSensor(scop)
end
}

Nie rozumiem tego zapisu :

domoticz.log('SCOP pompy'..scop..'SCOP' , domoticz.LOG_INFO)

Chodzi mi to konkretnie : ('SCOP pompy'..scop..'SCOP'

Wzorowałem się (tak , na małpę-przyznaję bez bicia) na podobnym zapisie-czy w tym nawiasie nie może być sam scop ?

Dlaczego są z przodu te opisy i z tyłu ?

 
Dodane : 20/08/2022 2:50 pm
(@bobrow)
Wpisów: 387
Weteran
 

Ok-dokopałem się do informacji odnośnie opisu w logach-chodzi o pomocnicze treści.

Jeszcze jedna sprawa-zauważyłem ,że mam przekłamanie przy przeliczaniu Gj na kWh.

Wygląda jakby zapis nie mnożył wartości po przecinku -tak to wygląda :

local p = tonumber(dz.devices('ciepłomierz energia').state)
local w = dz.devices('Energia PC kWh')
-- Obliczenia
local kWh = dz.utils.round( p * 277.77 ,2)

Wartość p jest z dwoma  miejscami po przecinku-działanie mnoży jakby tylko wartości całkowite. Czy jest na to jakiś sposób ? 

 
Dodane : 20/08/2022 4:44 pm
(@bobrow)
Wpisów: 387
Weteran
 

Niestety nie znalazłem rozwiązania-więc zacząłem robić eksperymenty...

Najpierw przemnożyłem x100 odczyt z ciepłomierza o wartości 308,85Gj...wynik wyszedł jak należy tj 30885.

Zmieniłem zatem zapis w przeliczniku-jak domoticz "nie widzi" wartości po przecinku , to pomnożyłem x100 , a potem podzieliłem...i jest ok. Nie potrafię zrobić jak należy ,zrobiłem jak mogłem.

Oto działający zapis :

return {
on = {
devices = {'ciepłomierz energia'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "przelicznik kWh"
},
execute = function(dz, device)
local p = tonumber(dz.devices('ciepłomierz energia').state)
local w = dz.devices('Energia PC kWh')
-- Obliczenia
local kWh = dz.utils.round( (p * 100 * 277.77) / 100 ,2)
dz.log('PC Gj na kWh' .. kWh.. 'kWh' , dz.LOG_INFO)
w.updateCustomSensor(kWh)

end
}

   Ok, a teraz idę na winko i jakiś film. O!

Tymczasem 

 
Dodane : 20/08/2022 8:33 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 
Dodane przez: @bobrow

local kWh = dz.utils.round( (p * 100 * 277.77) / 100 ,2)

Dlaczego taki bezsensowny zapis ? Chyba wiem "Małpa" rządzi a nie głowa :)) . Co robi dz.utils.round ? Poczytaj 

 
Dodane : 21/08/2022 10:19 am
(@bobrow)
Wpisów: 387
Weteran
 

Nie mogę nic konkretnego znaleźć-poproszę o link.

Znalazłem tylko info na zagranicznym forum -round zaokrągla.

Nie wiem jaka komenda będzie lepsza od round

 
Dodane : 21/08/2022 12:39 pm
(@waldekgr)
Wpisów: 12
Bywalec
 

Witam niby proste a jednak, cos ciągle źle robię

chciałbym na 1 kafelku zsumować 2 liczniki które mam od 2 falowników

mianowicie 1 kafelek produkcja z 2 kafelków na domoticzu - General kWh

na 2 produkcja dzienne z obu liczników - General kWh

poproszę o pomoc

 

 
Dodane : 13/06/2023 5:37 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @waldekgr

cos ciągle źle robię

Wstaw to co robisz, nie ma się co wstydzić każdy kiedyś zaczynał. Zobaczymy czy da się coś poprawić 

 
Dodane : 13/06/2023 9:30 pm
(@waldekgr)
Wpisów: 12
Bywalec
 

return {

on = {
devices = { 575 }
},

execute = function(domoticz, item)
local fotowoltaikadach = domoticz.devices(575)
local fotowoltaikaogrod = domoticz.devices(847)
local totalfotowoltaika = domoticz.devices(856)

totalfotowoltaika.updateElectricity(
fotowoltaikadach.WhActual + fotowoltaikaogrod.WhActual,
fotowoltaikadach.WhToday + fotowoltaikaogrod.WhToday
)

end

}

w logach domoticza

Error: EventSystem: Lua script suma licznikow did not return a commandArray
poproszę o pomoc by to zadziałało, skryptu sam nie pisalem jedynie przerobiłem
tak czy inaczej nie umiem juz dalej zrobić.
 
 
Dodane : 14/06/2023 8:17 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @waldekgr

skryptu sam nie pisalem jedynie przerobiłem

Dodaj te przerobine wypociny jako skrypt dzVents, a nie LUA i zobacz co będzie. 

 
Dodane : 14/06/2023 10:15 pm
(@waldekgr)
Wpisów: 12
Bywalec
 

Działa! piwo mailem? Dziękuje, taki niby banał a jednak brakowało mi pomysłu. Jeszcze jednak prośba, co dopisać i gdzie by skrypt miał wykonanie co 1 min

 
Dodane : 15/06/2023 3:15 pm
Strona 1 / 2
Udostępnij: