Licznik energii elektrycznej SDM120M w Domoticzu

Ostatnio założyłem sobie licznik energii elektrycznej SDM120M, który można podpiąć do domoticza. Przedstawię jak to zrobiłem u siebie.

Ważne jest, żeby wybrać wersję licznika z literką M, która jest wyposażona w modbus – dzięki temu mamy komunikację z domoticzem (i nie tylko). Potrzebny jeszcze będzie konwerter USB do RS485 do którego podłączamy licznik, a sam konwerter do Raspberry Pi no i kawałek przewodu (2 żyły).

Do domoticza trzeba teraz wgrać plugin. W sieci jest kilka udostępnionych za darmo. Ja wybrałem taki, który odczytuje wszystkie chyba możliwe parametry z licznika. Można go pobrać [TUTAJ]. Archiwum należy wypakować do /home/pi/domoticz/plugins tak, aby w folderze plugins pojawił się folder SDM120 a w nim plik plugin.py. Teraz wystarczy zrestartować domoticza poleceniem

sudo service domoticz.sh restart
.

Zanim dodamy sprzęt do domoticza, trzeba podłączyć licznik do RPi. Na schemacie wszystko jest pokazane, gdzie jest + i – RS458. Na konwerterze również powinien widnieć + i -. Podłączamy tak jak akumulator w aucie – plus do plusa, minus do minusa :).

Teraz w domoticzu wchodzimy w Konfiguracja>Sprzęt i dodajemy jak na obrazku poniżej.

Jako port szeregowy trzeba wybrać konwerter. Jeśli nie wiesz który to, odepnij konwerter, odśwież stronę i sprawdź dostępne porty, po czym podepnij, odśwież i zobacz co doszło.

Po kliknięciu przycisku dodaj w zakładce Konfiguracja>Urządzenia powinny pojawić się wszystkie urządzenia dotyczące licznika, jak np. stan, aktualny pobór, itd.

Małym minusem jest to, że urządzenia są typu zwykły licznik, co mnie nie do końca zadowalało. Domoticz ma w sobie licznik typu P1, który jest dedykowany do prądu. Co zyskujemy dzięki niemu? Lepsze statystyki (w zainstalowanym pluginie pojawia się zwykły wykres liniowy, co jest średnie np. dla stanu licznika), raporty poboru prądu wraz z kosztem. Dodamy więc jeszcze licznik typu P1 w domoticzu 🙂

Najpierw w zakładce Konfiguracja>Sprzęt musi być stworzony wirtualny typ urządzeń – Dummy. Jeśli go nie masz – dodaj. Jeśli już jest, kliknij Utwórz wirtualne czujniki. Jako typ wybierz P1 Smart Meter i nazwij jak chcesz.

Teraz ustawimy cenę prądu za 1 kWh. Wszystko jest w Konfiguracja>Ustawienia>Mierniki/liczniki. Do ustawienia jest:

  • Energia elektryczna – pozostaw 1000 (czyli cena za 1000 Wh = 1 kWh),
  • Koszty T1 – oblicz z rachunku koszt jednej kWh – na rachunku jest kilka pozycji liczonych za kWh, dodaj je,
  • Koszty T2 – koszt taryfy drugiej, jeśli ktoś korzysta np. z taryf dzienna i nocna,
  • Koszty R1 – koszt produkcji prądu – jeśli masz np. fotowoltaike i sprzedajesz prąd, licznik jest dwukierunkowy,
  • Koszty R2 – podobnie jak T2 – jeśli masz 2 taryfy sprzedaży prądu.

W moim przykładzie używam tylko T1 – mam jedną stawkę za kWh i nie posiadam fotowoltaiki.

Teraz trzeba dodać skrypt, który będzie pobierał dane z licznika stworzonego przez plugin i przesyłał do wirtualnego licznika. Wchodzimy więc w Konfiguracja>Więcej opcji>Zdarzenia i dodajemy skrypt typu LUA (obojętnie który, może być All). Wklejamy do niego poniższy kod:

function getdevname4idx(deviceIDX)
 for i, v in pairs(otherdevices_idx) do
   if v == deviceIDX then
     return i
   end
 end
 return 0
end

local idxP1 = 73
local idxUSAGE1 = 50 -- counter kWh
local idxCONS = 49 -- actual W

commandArray = {}

local USAGE1 = 0
local CONS = 0

for deviceName,deviceValue in pairs(otherdevices) do
    if (deviceName==getdevname4idx(idxUSAGE1)) then
        USAGE1 = deviceValue * 1000
    elseif (deviceName==getdevname4idx(idxCONS)) then
        CONS = deviceValue
    end
end
commandArray['UpdateDevice'] = idxP1.."|0|"..USAGE1..";0;0;0;"..CONS..";0"


return commandArray

W kodzie zamieniamy numery idxP1 oraz idx CONS na odpowiednio idx (odczytane z Konfiguracja>Urządzenia) dla stanu licznika i aktualnego poboru prądu w watach (linie 10-12). idxUSAGE1 to nasz wirtualny licznik. Po zapisaniu licznik powinien zacząć naliczanie. Dzięki niemu mamy wgląd do bardziej zaawansowanych statystyk i raportów jak poniżej.

5 myśli na “Licznik energii elektrycznej SDM120M w Domoticzu”

  1. Witam, czy mógłbyś podać konkretnie w którym miejscu zmieniać te wartości idx w skrypcie? Niestety u mnie wszystko działa za wyjątkiem tego skryptu LUA 🙁

  2. Czy istnieję licznik/miernik z komunikacją “modbus”, ale z typową wtyczką i gniazdem elektrycznym stosowanym w PL?

  3. ciekawym rozwiązaniem do pomiaru zużycia jest zastosowanie modułu pzem 004 i esp 8266 z wgranym np. espeasy. Ja mam tak opomiarowane
    dwa klimatyzatory działa ok, do tego samego esp mam tez podpięte czujniki temeratur wiec jest kilka pomiarów i bez kabelków.

  4. Wyam -mam taki skrypt na moc cieplną wymiennika, mógłbyś pomóc w napisaniu skryptu aby na podstawie mocy liczył energię
    on = {
    devices = {
    152
    }
    },
    execute = function(domoticz, device)
    domoticz.devices(153).updateEnergy(domoticz.devices(152).temperature * domoticz.devices(171).flow * 4.1899 * 994 / 3600)
    end
    }
    gdzie 152 to delta temp.
    171 przepływ

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

 

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.