ElectricityCalculator
ElectricityCalculator | |
---|---|
Zweck / Funktion | |
Berechnung der Energiekosten | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE Thema |
Support (Forum) | Unterstützende Dienste |
Modulname | 73_ElectricityCalculator.pm |
Ersteller | Sailor |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
ElectricityCalculator ist ein Modul zur Berechnung von Energiemengen.
Features / Funktionen
Die Haupteigenschaft des ElectricityCalculator Moduls ist die Verbrauchsberechnung an Energie für Strom bzw. Gas auf der Basis eines Zählwertes (counter). Das Modul als solches ist kein Zählermodul, sondern nur eine Berechnungsinstanz, die einen eigenen fhem Zähler bzw. Wert aus dem DS2343 erfordert. commandref:" It is not a counter module itself but it requires"
Somit gibt es zwei grundlegende Möglichkeiten
- Direkter Anschluss an einen GPIO, um eine aktive Impulsverarbeitung zu nutzen (Zählerinstanz liegt auf dem GPIO)
- Indirekter Anschluss über z.B. einen USB <> 1Wire Adapter < DS2343 Counter (Zählerinstanz liegt im DS2343)
Hinweise zum Betrieb mit FHEM
Direkter Betrieb
Für den direkten Betrieb benötigt man einen Stromzähler der in der Lage ist, die Zählimpulse abzugeben. Als Beispiel sei hierbei der Drehstromzähler eltako DSZ12E-80 erwähnt, der mittels Impulsen zu jedem Watt den Counter an einem GPIO entsprechend über dieses Event informiert. (1 Impuls = 1Wh = 0,001kWh)
Diese Impulse müssen dann zunächst importiert werden. In diesem Beispiel verwenden wir den Raspberry Pi auf dem auch das fhem System betrieben wird.
Da der GPIO an einem PI jedoch die Spannung von 3,3 V nicht übersteigen darf, gibt es mit den meisten S0 Bus Zählern ein Problem, da diese eine höhere Spannung zur Impulsbildung benötigen.
Dies bedeutet, das man die Impulse erst mittels einer externen Schaltung (Spannungsteiler) wandeln muss.
Anschließend werden diese Impulse mittels des Moduls RPI_GPIO in fhem eingebunden.
(Notwendiges Modul: RPI_GPIO)
Definition des GPIOs :
defmod GPIO26 RPI_GPIO 26 attr GPIO26 active_low no attr GPIO26 direction Input attr GPIO26 event-on-change-reading .* attr GPIO26 event-on-update-reading .* attr GPIO26 interrupt falling
Wichtig sind hierbei die Attribute "event-on-update-reading .*" sowie "event-on-change-reading .*" da ansonsten das ElectricityCalculator - Modul nicht reagiert.
Indirekter Betrieb
Wenn der Stromzähler sich nicht in direkter Nähe zum fhem - System befindet, bleibt einem nur die Möglichkeit einen externen Zähler per Funkt oder LAN/WLAN dazwischenzuschalten.
Als Lösung kann hierbei der Homematic HM-ES-TX-WM zum Einsatz kommen. Siehe HM-ES-TX-WM Zählersensor für Strom- und Gaszähler.
Auch bei dessen Definition ist auf die Attribute "event-on-update-reading .*" sowie "event-on-change-reading .*" zu achten, da ansonsten das ElectricityCalculator - Modul nicht reagiert.
Allgemeine Moduldefinition
defmod MEINZAEHLER ElectricityCalculator REGEXP
defmod WPVerbrauch ElectricityCalculator GPIO26.Counter.*
(bei mir funktioniert auch GPIO26.*)
Sollte es Readings geben, welche auch mit GPIO26.Counter beginnen, sollte auf ein genaues Reading verwiesen werden.
Beispiel GPIO26.Counter und GPIO26.Counter2
In diesem Fall würde der Energy Counter für beide Readings für die Callculation nutzen.
Somit wären eine Menge Readings angelegt, welche Falsch sind.
Um dem Modul nun zu sagen, welchen Werte er genau nutzen soll, im Beispiel wollen wir GPIO26.Counter nehmen,
muss das Define wie folgt aussehen.
Unterscheid ist hier der : (Doppelpunkt), somit wird nur genau das GPIO26.Counter Device für die Berechnung herangezogen.
defmod WPVerbrauch ElectricityCalculator GPIO26.Counter:.*
Sofern das Modul korrekt angelegt wurde, sollte man die Attribute (attr)
- BasicPricePerAnnum
- Currency
- ElectricityKwhPerCounts
- ElectricityPricePerKWh
- MonthlyPayment
setzen, damit die Berechnung korrekt durchgeführt werden kann.
Zusätzlich kann man vermeiden, dass man bis zu 12 Monate warten muss, bis alle Werte in den Readings korrekt sind, diese Readings manuell setzen:
<DestinationDevice>_<SourceCounterReading>_CounterDay1st,
<DestinationDevice>_<SourceCounterReading>_CounterMonth1st,
<DestinationDevice>_<SourceCounterReading>_CounterYear1st und
<DestinationDevice>_<SourceCounterReading>_CounterMeter1st
setreading <Device> <Reading> <WERT>
Beispiel:
setreading <Device> <DestinationDevice>_<SourceCounterReading>_CounterDay1st 12506142
Attribute
Damit die Berechnung überhaupt durchgeführt werden kann, müssen dem Modul noch einige Daten angegeben werden.
Ein Übersicht erhält man in der commandref.
Hinweis
Das Attribut MonthOfAnnualReading
gibt an wann der Zähler abgelesen wird.
Sollte nun am 31.12 der Zählerstand für die Abbrechnung genutzt werden, so ist im Attribute der Monat 1 einzutragen.
Wird nun am 31.4 abgelesen, so ist im Attribute der Monat 5 einzutragen.
Bekannte Probleme
Die Readings des Counters sind bei der Verarbeitung fundamental. Sollten diese nicht korrekt definiert bzw. übergeben werden, kann das Modul keine Berechnungen durchführen.
Sofern dem Modul keine initialen Werte mittels set Befehl übergeben werden, kann es vorkommen, dass erst nach einem Tageswechsel die Daten berechnet werden und die Readings des Moduls angelegt werden (siehe device specific help bzw. commandref).
Weblinks
Mit nachfolgendem Produkt ist Vorsicht geboten, denn es handelt sich nicht um den DALLAS 1 Wire Standard!