UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Witam,
Czy ktos moze przerabial ten temat jak obliczyc zuzycie energi w kWh i jej kalkulowac koszt wiedzac czas pracy danego urzadzenia. Mam jedno urzadzenie o mocy 2kW i fajnie by bylo obliczac zuzycie energi w ciagu dnia jak rowniez jej koszt. Energia nie tanieje
Dodam tylko ze czas pracy urzadzenia mam juz w sitemap wyswietlony.
Pozdrawiam
Najlepiej chyba będzie użyć jakiegoś ESP z pomiarem zużycia: Sonoff pow, Shelly, blitzwolf bw-shp6
Jeśli urządzenie ma charakter rezystancyjny (np. bojler, piec konwekcyjny, grzałka wody, itp) oraz nie ma przełącznika mocy, to wystarczy raz zmierzyć realny pobór mocy (czasami to co na tabliczce odbiega od rzeczywistości) i przemnożyć razy czas pracy w godzinach. Mnożąc razy koszt energii (około 70gr za kWh) otrzymasz w miarę zbliżony koszt eksploatacji. Oczywiście dobowo występują wahania napięcia z sieci, a to wpływa wprost na moc pobieraną (wyższe napięcie = większa moc), ale przy założeniu, że nie potrzebujesz bardzo dokładnych pomiarów, to powinno wystarczyć.
Upraszczając wyjdzie: 2 * 0,7 /3600
koszt w złotówkach = 0,00039 * czas w sekundach
Witam.
Nie potrzebuje bardzo dokładnych pomiarów wiec przybliżone dane były by ok. Narazie nie planuje zakładać czujników zużycia energi na każde urządzenie więc najlepszym rozwiązaniem będzie metoda kalkulacji.
Czy ktoś na forum jest w stanie pomóc w napisaniu rule (lub script in JS) do obliczenia zużycia/kosztu energii ?
Pozdrawiam
Może napisz czego oczekujesz. Jak często chcesz aktualizować odczyty? Czy w ogóle ma być odczyt live, czy tylko dane archiwalne? Czy chcesz jakieś okresy, za dzień, za tydzień, miesięczne zużycie?
Za każdym razem gdy załącza się urządzenie to zliczam czas i wyświetlam go w sitemap - uaktualniam co minutę. Te dane się zeruja codziennie o północy.
Takze w tej chwili już mam informacje o czasie pracy urządzenia.
Potrzebuje rule lub script aby obliczyć zużyta moc przez to urządzenie jeśli np urządzenie pracuje przez 10 minut tylko. Jak pisałes powyżej proste zadanie matematyczne powinno dać rady. Eksperymentuje z rules ale narazie nie udało mi się zrobić to poprawnie miałem nadzieje ze może ktoś przerabiał ten temat tutaj.
Pozdrawiam
Doszedłeś do czegoś w temacie czy porzuciłeś ? bo jestem właśnie w tym miejscu i szukam jakichś informacji jak to rozwiązać najlepiej.
Tak, znalazlem rozwiazanie, przypomnij jutro to napisze jak to zrobilem.
To może ja dla przykładu przedstawię swoje rozwiązanie.
Całość to licznik energii elektrycznej na podstawie impulsów odczytywanych z licznika zakładu energetycznego. Licznik ten generuje 2500 impulsów na 1kWh (czyli 1 impuls to 0,0004kWh). Pojawienie się impulsu rejestruję na jednym z GPIO, zliczam w zmiennej impulsy i sprawdzam czas totalTime od poprzedniego last_change. Jeśli czas jest większy niż 2 sekundy, to wykonuję obliczenia, a jeśli mniejszy, to nic nie robię. Ma to na celu obsługę dużych obciążeń gdy impulsy mogą się pojawiać kilkanaście razy na sekundę, a nam przecież nie potrzeba danych o chwilowym poborze energii częściej niż co 2 sekundy.
Wyjściowo z tej reguły mam:
- chwilowy pobór energii wysyłany do itemu PoborMocy,
- ilość energii zużytą danego dnia do itemu KWHdzis
- ilość energii zużytą danego miesiąca do itemu KWHtenmiesiac
- dodatkowe liczniki poszczególnych impulsów do celów debugowania GPIOlicznik i GPIOliczmies
Na koniec dnia przepisuję dzienny pobór energii i resetuję o północy, a na koniec miesiąca to samo z miesięcznym.
Wiem, że poniższy kod nie jest optymalny, ale powstawał w długim okresie czasu i jest tu spory bajzel, ale działa bardzo dobrze.
var impulsy = 0
rule "licznik"
when
Item GPIO_BUTTON changed to OPEN
then
var last_change = GPIOdlugosc.state as DecimalType
var totalTime = ((now.millis - last_change) / 1000)
impulsy = impulsy + 1
if (totalTime > 2) {
var newValue = (GPIOlicznik.state as DecimalType).intValue()
var newValuemies = (GPIOliczmies.state as DecimalType).intValue()
var totalEnergy = (1440 * impulsy)/ totalTime
newValue = newValue + impulsy
newValuemies = newValuemies + impulsy
GPIOlicznik.postUpdate(newValue)
GPIOliczmies.postUpdate(newValuemies)
GPIOdlugosc.postUpdate(now.millis)
PoborMocy.postUpdate(totalEnergy)
KWHdzis.postUpdate(newValue * 0.0004)
KWHtenmiesiac.postUpdate(newValuemies * 0.0004)
impulsy = 0
}
end
rule "reset dzienny"
when
Time cron "0 0 0 * * ?"
then
KWHdzienny.postUpdate(KWHdzis.state as DecimalType)
KWHdzis.postUpdate(0)
GPIOlicznik.postUpdate(0)
end
rule "reset miesieczny"
when
Time cron "1 0 0 1 * ?"
then
KWHmiesieczny.postUpdate(KWHtenmiesiac.state as DecimalType)
KWHtenmiesiac.postUpdate(0)
GPIOliczmies.postUpdate(0)
end
@_marss_ W tym temacie chodzi o wyliczenie zużycia energii na podstawie włączonych urządzeń które mają stały pobór prądu np lampka w sypialni która ma żarówkę 9W nie zmienia to faktu iż twojego rozwiązania mogę tylko po zazdrościć 🙂
Ależ ja to doskonałe rozumiem. Kilka postów wyżej napisałem, że dla grzejnika o mocy 2000W:
koszt w złotówkach = 0,00039 * czas w sekundach
W załączonej procedurze przedstawiłem jak czytać i przechowywać czas w sekundach oraz jak przeliczać to na wartości.
Taka różnica, że triggerem procedury dla jednego urządzenia będzie zmiana stanu przełącznika go włączającego.
Jeśli zmienił stan na ON, to weź czas aktualny i zapisz do itemu. Jeśli na OFF, to weź czas, odejmij poprzedni i przemnożyć przez liczbę. Gotowe!
Tak jak kolega @_MarSs_ pisal wyzej, jest to dosc prosta kalkulacja. Jesli znasz czas pracy urzadzenia w minutach (w moim wypadku to Farelka_Czas_Dzien) to wystarczy pomnozyc ten czas przez cene jednego kilowata (Prad) i podzielic przez 60.
Moze nie jest to jakas super dokladna metoda ale z zupelnoscia mi wystarcza. Chcialem jeszcze dodac ze moja farelka jest ustawiona na moc 1kW.
val Prad = 0.55 // cena 1kWh
rule "Koszt zuzycia farelki - Dzienny"
when
Item Farelka_Czas_Dzien changed
then
Farelka_Zuzycie_Koszt_Dzienny.postUpdate((Farelka_Czas_Dzien.state as DecimalType * Prad)/60)
end
jakim urządzeniem odczytujesz impulsy? i czym wysyłasz je do raspberry??
chciałbym zrobić takie samo cuś, ale mój licznik jest ponad 50m od domu...
@matulekpl To ja mam bliżej, bo tylko około 6 metrów i czytam od razu na Raspberry. Fototransystor, wzmacniacz operacyjny z histerezą i GPIO.