Pomiar zużycia energii elektrycznej w systemie dwutaryfowym. [część 2]

Pomiar zużycia energii elektrycznej w systemie dwutaryfowym. [część 2]

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:

Do ustawień harmonogramu pracy wykorzystamy zakładkę Plany

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!

Facebook Comments

Ten post ma 8 komentarzy

  1. Arek

    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ą?

    1. Marcin

      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

  2. Janek

    Podbijam pytanie poprzednika: dot.
    rror: EventSystem: in Elektrownia: [string „function log(p_message)…”]:21: bad argument #1 to ‚pairs’ (table expected, got nil)?

  3. Kuba

    Dołączam się do pytania Akra, co to za błąd w logach i jak go usunąć?

  4. Kevson

    Cześć.A jak ustawić ESP(Formuły) dla licznika 6400imp/kWh

  5. Piotr

    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

  6. DONDI

    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.

  7. Piotr

    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.

Dodaj komentarz