W poprzednim artykule opisałem jak uruchomić pomiar zużycia energii elektrycznej z wykorzystaniem diody w liczniku.
Ta część przeznaczona jest dla osób które rozliczają się w systemie dwutaryfowym (np. tańszy prąd w nocy).
Skrypt rozdzielający zużycie na system taryfowy oryginalnie i pochodzi z bloga:
Zaczynamy!
Cały myk polega na tym, że pozostawiając bez zmiannasz dotychczasowy licznik, utworzymy drugi – już dwutaryfowy który będzie korzystał z danych pochodzących z pierwszego.
Aby utworzyć nowy licznik wchodzimy do zakładki sprzęt, dodajemy nowe urządzenie Dummy:
…wybierjąc P1 Smart Meter.
Następnie aby rozróżniać taryfy tworzymy nowy przełącznik typu Dummy:
Po dodaniu urządzen, przechodzimy do zakładki Urządzenia i odczytujemy Idx:
- Dotychczasowego licznika
- Nowo dodanego licznika P1
- Przełącznika taryfy
Kolejnym krokiem będzie edycja harmonogramu przełącznika „Tania Taryfa”, tak aby ten automatycznie był włączany i wyłączany o określonych porach:
Teraz czas na skrypt. Konfiguracja -> Więcej opcji -> Zdarzenia.
Dodajemy nowy:
function log(p_message) -- print("[HPHC] " .. p_message) end function getdevname4idx(deviceIDX) for i, v in pairs(otherdevices_idx) do if v == deviceIDX then return i end end return 0 end commandArray = {} DEBUG = false local nomCompteurPrincipal = getdevname4idx(129) --OWL local idxCompteurIntelligent = 133 local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)--HPHC local nomHeureCreuse = getdevname4idx(134) -- Switch Heures Creuses for deviceName,deviceValue in pairs(devicechanged) do if (deviceName==nomCompteurPrincipal) then -- On récupère la valeur du compteur unique => consEnergy ConsPower, consEnergy = string.match(otherdevices_svalues[nomCompteurPrincipal], "(%d+%.*%d*);(%d+%.*%d*)") log(ConsPower.."-"..consEnergy) --on somme les compteurs HP et HC => EnergyImport --http://www.domoticz.com/wiki/Upload_energy_data_to_PVoutput EnergyImportLow, EnergyImportHigh, EnergyExportLow, EnergyExportHigh, PowerImport, PowerExport = otherdevices_svalues[nomCompteurIntelligent]:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)") EnergyImport = EnergyImportLow + EnergyImportHigh EnergyExport = EnergyExportLow + EnergyExportHigh log(" ----- PowerImport = " .. PowerImport .. " W"); log(" ----- EnergyImportLow = " .. EnergyImportLow .. " Wh"); log(" ----- EnergyImportHigh = " .. EnergyImportHigh .. " Wh"); log(" ----- EnergyImport = " .. EnergyImport .. " Wh"); log(" ----- PowerExport = " .. PowerExport .. " W"); log(" ----- EnergyExportLow = " .. EnergyExportLow .. " Wh"); log(" ----- EnergyExportHigh = " .. EnergyExportHigh .. " Wh"); log(" ----- EnergyExport = " .. EnergyExport .. " Wh"); --On calcule le delta avec le compteur actuel delta = consEnergy - EnergyImport --On ajoute le delta sur le bon tarif if (otherdevices[nomHeureCreuse] == 'On') then EnergyImportLow = EnergyImportLow + delta else EnergyImportHigh = EnergyImportHigh + delta end --On modifie le compteur intelligent commandArray['UpdateDevice'] = idxCompteurIntelligent.."|0|"..EnergyImportLow..";"..EnergyImportHigh..";0;0;"..ConsPower..";0" end end return commandArray
Pamiętaj aby w powyższym kodzie zmienić Idx:
local nomCompteurPrincipal = getdevname4idx(129) <-- Nasz dodtychczasowy licznik local idxCompteurIntelligent = 133 <-- Nasz nowy licznik local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)--HPHC local nomHeureCreuse = getdevname4idx(134) <-- Przełącznik taryfy
Gotowe! Od teraz licznik działa w układzie dwutaryfowym, a ceny pobierane są z ustawień T1 T2!
Zrobiłem wszystko zgodnie z instrukcją i fajnie działa ale w logach domoticza cały czas jest błąd:
Error: EventSystem: in Elektrownia: [string „function log(p_message)…”]:21: bad argument #1 to 'pairs’ (table expected, got nil)
Co jest przyczyną?
Witam. Arku nie wiem czy jeszcze tutaj trafisz ale błąd jest spowodowany tym, że autor poradnika źle przepisał troszkę tutka lub w czasie pisania było inaczej na oryginalnej stronie.
Aby usunąć ten błąd z logów ( tak też mnie denerwował ) trzeba :
Skrypt ustawić jako Lua i Device.
Tyle.
Błąd jest spowodowany tym, że autor pokazał aby skrypt umieścić jako ALL co jest błędem. Pozdrawiam
Podbijam pytanie poprzednika: dot.
rror: EventSystem: in Elektrownia: [string „function log(p_message)…”]:21: bad argument #1 to ‚pairs’ (table expected, got nil)?
Dołączam się do pytania Akra, co to za błąd w logach i jak go usunąć?
Cześć.A jak ustawić ESP(Formuły) dla licznika 6400imp/kWh
Witam
Mam pytanie odnośnie ustawienia tych wartości
local nomCompteurPrincipal = getdevname4idx(129) <– Nasz dodtychczasowy licznik
local idxCompteurIntelligent = 133 <– Nasz nowy licznik
local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)–HPHC
local nomHeureCreuse = getdevname4idx(134) <– Przełącznik taryfy
Chodzi mi o tę trzecią
(idxCompteurIntelligent)
tutaj trzeba coś zmienić ? No generalnie działa, ale wartości
Licznik: T1: 0.000 kWh, T2: 0.000 kWh
są cały czas na 0
Witam.
Po pierwsze chcę Podziękować za super poradnik.
Wszystko działa, liczy, mierzy tak jak potrzeba, jednak jest jeden error który pojawia się w Logach Domoticza i nie za bardzo wiem jak sobie z nim poradzić.
wygląda to tak:
2020-02-05 22:45:00.298 Error: EventSystem: in ELEKTROWNIA: [string „function log(p_message) …”]:21: bad argument #1 to 'pairs’ (table expected, got nil)
2020-02-05 22:45:01.712 MQTT: Topic: domoticz/in, Message: {„idx”:152,”RSSI”:2,”nvalue”:0,”svalue”:”120″}
2020-02-05 22:45:01.736 Status: EventSystem: Script event triggered: ELEKTROWNIA
2020-02-05 22:45:16.720 MQTT: Topic: domoticz/in, Message: {„idx”:152,”RSSI”:2,”nvalue”:0,”svalue”:”440″}
2020-02-05 22:45:16.745 Status: EventSystem: Script event triggered: ELEKTROWNIA
Pierwszy wpis leci z błędem pozostałe są OK.
Proszę o jakąś podpowiedź. Pozdrawiam.
Witam, trafiłem tutaj szukając innych informacji na temat Domoticza.
Temat licznika dwutaryfowego jest do wdrożenia w moim układzie i przyda się to co tutaj jest opisane.
Jest jedna rzecz, którą bym chciał zrobić w swoim domu, a mianowicie zależałoby mi na takim rozwiązaniu aby nie ustawiać przełączania liczenia zużycia energii w pierwszej jak i w drugiej taryfie za pomocą definiowania godzin, ale żeby Domoticz przełączał się automatycznie gdy zaświeci się dioda z pierwszej taryfy na pierwszą taryfę, a gdy zacznie migać dioda z drugiej taryfy na drugą taryfę.
Są przynajmniej dwa powody dlaczego zależy mi na takim rozwiązaniu. Pierwszy jest taki, że różnica we wskazaniach zegara na liczniku względem czasu rzeczywistego jest już +17 minut i dalej się zmienia. Drugi powód to taki, że mam taryfę, która inaczej liczy w dni wolne od pracy i nie chce mi się dopisywać kolejnych linijek z godzinami. Ponadto chciałbym aby za pomocą impulsów wysyłanych przez diody licznika sterować przekaźnikiem załączającym urządzenia, które mają pracować tylko w tańszej taryfie.
Co sądzicie o moim pomyśle?
Pozdrawiam.