czwartek, 18 października 2018

dzVents - skrypt informujący o większym zużyciu prądu, gdy nie ma nas w domu

Aloha!

Od pewnego czasu miałem w głowie (w sumie jeden z podstawowych jakie powinienem napisać!) skrypt w dzVents:
- sprawdzam zużycie prądu w domu i gdy jest zbyt duże o zadanych godzinach, w danych dniach - wyślij mi e-mail. W dniach tygodnia i w godzinach o których przeważnie jesteśmy w pracy.

Dlaczego? A może zapomniałem o włączonym żelazku? A może włączyło się coś, co nie powinno?

Z tego to oto powodu system powinien:
- od poniedziałku do piątku w godzinach 8:15 - 15:00 sprawdzić zużycie prądu
- jeżeli jest wyższe niż 400 Watt ma mi wysłać e-mail z powiadomieniem

-- Author: Adam Sobczak
-- Date created: 2018-10-18
-- Script takes current energy reading, and when it's bigger than suggested on weekdays between 8:15 - 15:00 - notifies user.
return {
    on = {
        ['timer'] = {'every 15 minutes between 8:15 and 15:00 on mon,tue,wed,thu,fri'}
    },
    execute = function(domoticz)
    local Energy = domoticz.devices('OWL').usage
    local EnergyLimit = 400

    function round(num, numDecimalPlaces)
          local mult = 10^(numDecimalPlaces or 0)
          return math.floor(num * mult + 0.5) / mult
        end
   
    if (Energy > EnergyLimit) then
            domoticz.notify('Energia', 'Uwaga, zużycie energii większe niż zwykle: ' ..round(Energy,1) .. '!', domoticz.PRIORITY_NORMAL)
        end
    end
}

Tyle. Proste i działa. Powodzenia przy próbach zrobienia tego w Blockly ;)

8 komentarzy:

  1. Hej
    A czym mierzysz konsumpcję prądu? Czy to sonoffy? czy Fibaro?

    Tomek

    OdpowiedzUsuń
    Odpowiedzi
    1. Cześć. Tak jak w podanym w poście linku - Owl micro + - http://cezarowy.blogspot.com/2017/09/owl-micro.html?m=1

      Usuń
  2. Fajnie byłoby to rozbudować o pomiar średniej z kwadransa. Przy maksymalnie niekorzystnych wiatrach, żelazko może akurat wyłączać się w czasie pomiaru i nie wykryje tego. Zatem mierzenie co 15 minut średniej byłoby optymalne. Jednak mechanizmy Domoticza nie pozwalają na analizę średniej wprost z czujników. Trzeba zatem ustawić skrypt np. na co 5 minut i za każdym razem zapisywać zużycie do tablicy history. Późnie dopiero wyliczać średnią i ustawić warunek. Więcej zabawy, ale skuteczność lepsza. Ja dziś zostawiłem na cały dzień podgrzewacz do kanapek :) To mnie zmobilizowało do oskryptowania czujnika zużycia.

    OdpowiedzUsuń
  3. Ja zrobiłem to tak:

    return {
    on = {
    timer = { 'every minute' },
    },
    data = { energia = { history = true, maxItems = 30 },
    powiadom = { history = true, maxItems = 1 }},
    execute = function(domoticz, device)
    local Licznik = domoticz.devices(680).usage -- Odczyt licznika, u mnie IDX 680
    local limit = 320 -- limit kW do alarmu
    domoticz.data.energia.add(Licznik)
    local avg = domoticz.data.energia.avgSince('00:30:00')
    if avg > limit then
    if domoticz.data.powiadom.getOldest().time.minutesAgo >= 60 then -- Tylko jedno powiadomienie na godzinę
    domoticz.data.powiadom.add(Licznik)
    domoticz.notify('PRAD!!!', 'DUŻE ZUŻYCIE PRĄDU!!!',domoticz.PRIORITY_NORMAL,nil,nil,domoticz.NSS_TELEGRAM)
    end
    end
    end
    }

    OdpowiedzUsuń
    Odpowiedzi
    1. Bardzo dziękuję! Pozwolę sobie skorzystać :)

      Usuń