ElectricityCalculator: Unterschied zwischen den Versionen
R1F800 (Diskussion | Beiträge) |
K (Neue Seite GasCalculator verlinkt) |
||
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 11: | Zeile 11: | ||
== Features / Funktionen == | == Features / Funktionen == | ||
Die Haupteigenschaft des ElectricityCalculator Moduls ist die Verbrauchsberechnung an Energie für Strom bzw. Gas auf der Basis eines Zählwertes (counter). | Die Haupteigenschaft des ElectricityCalculator Moduls ist die Verbrauchsberechnung an Energie für Strom bzw. Gas auf der Basis eines Zählwertes (counter). | ||
Für Gas gibt es nun ein eigenes Modul, den [[GasCalculator]]. | |||
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" | 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 | Somit gibt es zwei grundlegende Möglichkeiten | ||
* Direkter Anschluss an einen GPIO, um eine aktive Impulsverarbeitung zu nutzen (Zählerinstanz liegt auf dem GPIO) | * 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) | * Indirekter Anschluss über z.B. einen USB <> 1Wire Adapter < DS2343 Counter (Zählerinstanz liegt im DS2343) oder IR Lesekopf eingebunden über OBIS Modul | ||
== Hinweise zum Betrieb mit FHEM == | == Hinweise zum Betrieb mit FHEM == | ||
=== Direkter Betrieb === | === Direkter Betrieb === | ||
Für den direkten Betrieb benötigt man | 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) | |||
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. ( | 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.<BR> | |||
[[Datei:GPIO.png|mini|Anschlussbelegung / Schaltung]] | [[Datei:GPIO.png|mini|Anschlussbelegung / Schaltung]] | ||
Anschließend werden diese Impulse mittels des Moduls RPI_GPIO in fhem eingebunden. | |||
(Notwendiges Modul: RPI_GPIO) | |||
<BR> | |||
<BR> | |||
'''''Definition des GPIOs :''''' | '''''Definition des GPIOs :''''' | ||
<pre>defmod GPIO26 RPI_GPIO 26 | <pre>defmod GPIO26 RPI_GPIO 26 | ||
Zeile 31: | Zeile 41: | ||
attr GPIO26 interrupt falling | attr GPIO26 interrupt falling | ||
</pre> | </pre> | ||
Wichtig sind hierbei die Attribute "event-on-update-reading .*" sowie "event-on-change-reading .*" da ansonsten das ElectricityCalculator - Modul nicht reagiert. | |||
=== Indirekter Betrieb === | === 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|HM-ES-TX-WM Zählersensor für Strom- und Gaszähler]]. | |||
<BR> | |||
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 === | === Allgemeine Moduldefinition === | ||
Zeile 39: | Zeile 53: | ||
:<code>defmod WPVerbrauch ElectricityCalculator GPIO26.Counter.*</code> | :<code>defmod WPVerbrauch ElectricityCalculator GPIO26.Counter.*</code> | ||
(bei mir funktioniert auch GPIO26.*) | (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. | |||
<code>defmod WPVerbrauch ElectricityCalculator GPIO26.Counter:.*</code> | |||
Sofern das Modul korrekt angelegt wurde, sollte man die Attribute (attr) | Sofern das Modul korrekt angelegt wurde, sollte man die Attribute (attr) | ||
Zeile 51: | Zeile 84: | ||
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: | 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>_CounterDay1st,<BR> | ||
<DestinationDevice>_<SourceCounterReading>_CounterMonth1st, | <DestinationDevice>_<SourceCounterReading>_CounterMonth1st,<BR> | ||
<DestinationDevice>_<SourceCounterReading>_CounterYear1st und | <DestinationDevice>_<SourceCounterReading>_CounterYear1st und<BR> | ||
<DestinationDevice>_<SourceCounterReading>_CounterMeter1st | <DestinationDevice>_<SourceCounterReading>_CounterMeter1st<BR> | ||
<BR> | |||
<code>setreading <Device> <Reading> <WERT></code> | |||
Beispiel: | |||
<code>setreading <Device> <DestinationDevice>_<SourceCounterReading>_CounterDay1st 12506142</code> | |||
== 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 <code>MonthOfAnnualReading</code> 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 == | == Bekannte Probleme == | ||
===Keine Funktion / Berechnung=== | |||
<u>'''Beschreibung / Ursache:'''</u> | |||
Der ElectricityCalculator führt keine Berechnung durch bzw. funktioniert nicht obwohl der Counter definiert ist und auch zählt. | |||
<u>'''Lösung:'''</u> | |||
Die Readings des Counters sind bei der Verarbeitung fundamental. Sollten diese nicht korrekt definiert bzw. übergeben werden, kann das Modul keine Berechnungen durchführen. | Die Readings des Counters sind bei der Verarbeitung fundamental. Sollten diese nicht korrekt definiert bzw. übergeben werden, kann das Modul keine Berechnungen durchführen. | ||
===Falsche Werte=== | |||
<u>'''Beschreibung / Ursache:'''</u> | |||
Die Werte passen nicht zu der Änderung, die unmittelbar per set-Befehl vorgenommen wurde. | |||
<u>'''Lösung:'''</u> | |||
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). | 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). | ||
===Die Grafik mit den Werten oszilliert=== | |||
<u>'''Beschreibung / Ursache:'''</u> | |||
Wenn man sich den Graphen der aufgezeichneten Werten anschaut, dann stellt man fest, dass diese um den vermeintlich realen Wert oszilliert. Der Grund ist das Problem der Digitalisierung analoger Werte. Siehe https://de.wikipedia.org/wiki/Digitale_Messtechnik<nowiki/>Dieser Fehler tritt inbesondere bei Zählern mit einer niedrigen Impulsrate wie bei Analogen Drehstromzählen mit 75 Umdrehungen je kWh in Kombination mit kurzen Messintervallen und/oder kleinen Leistungswerten auf. | |||
<u>'''Lösung:'''</u> | |||
Um den Fehler der digitalen Messung möglichst klein zu halten, müssen pro Messintervall insbesondere bei kleinen Leistungen möglichst viele Impulse "eingesammelt" werden. Dies kann nur erfolgen, wenn das Countermodul (nicht der ElectricityCalculator) entsprechend geduldiger eingestellt wird. Sollte am CounterModul kein Zeitintervall einzustellen sein, so muß man die Counterwerte über ein "at" an einen "dummy" mit einem entsprechen großen Zeitraum liefern und auf diesen dummy dann den ElectricityCalculator definieren. | |||
== Weblinks == | == Weblinks == | ||
* | * {{Link2Forum|Topic=57106|LinkText=Diskussionsthread zum Modul}} | ||
* [https://www.eltako.com/fileadmin/downloads/de/Prospekte/Drehstrom-und-Wechselstromzaehler-Katalog_high-res.pdf Drehstromzähler eltako mit S0 Ausgang] | * [https://www.eltako.com/fileadmin/downloads/de/Prospekte/Drehstrom-und-Wechselstromzaehler-Katalog_high-res.pdf Drehstromzähler eltako mit S0 Ausgang] | ||
Mit nachfolgendem Produkt ist Vorsicht geboten, denn es handelt sich nicht um den DALLAS 1 Wire Standard! | Mit nachfolgendem Produkt ist Vorsicht geboten, denn es handelt sich nicht um den DALLAS 1 Wire Standard! | ||
* [https://www.tm3d.de/elektronik-projekte/1-wire-sim-beispiele/ds2423-counter DualCounter von tm3d.de mit Anschluss am USB <> 1Wire] | * [https://www.tm3d.de/elektronik-projekte/1-wire-sim-beispiele/ds2423-counter DualCounter von tm3d.de mit Anschluss am USB <> 1Wire] | ||
* [https://wiki.fhem.de/wiki/Interfaces_für_1-Wire | * [https://wiki.fhem.de/wiki/Interfaces_für_1-Wire 1 Wire Interfacesammlung] | ||
* [https://www.amazon.de/MOD-36-Z-USB-1-wire-converter-DS2480B-FT231XS/dp/B01BTV52YC/ref=sr_1_fkmr1_2?ie=UTF8&qid=1538745242&sr=8-2-fkmr1&keywords=1wire+USB+master Bezugsquelle 1 Wire USB-Bus Master ] | * [https://www.amazon.de/MOD-36-Z-USB-1-wire-converter-DS2480B-FT231XS/dp/B01BTV52YC/ref=sr_1_fkmr1_2?ie=UTF8&qid=1538745242&sr=8-2-fkmr1&keywords=1wire+USB+master Bezugsquelle 1 Wire USB-Bus Master] | ||
[[Kategorie:Energieverbrauchsmessung]] |
Aktuelle Version vom 17. November 2023, 18:01 Uhr
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).
Für Gas gibt es nun ein eigenes Modul, den GasCalculator.
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) oder IR Lesekopf eingebunden über OBIS Modul
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
Keine Funktion / Berechnung
Beschreibung / Ursache:
Der ElectricityCalculator führt keine Berechnung durch bzw. funktioniert nicht obwohl der Counter definiert ist und auch zählt.
Lösung:
Die Readings des Counters sind bei der Verarbeitung fundamental. Sollten diese nicht korrekt definiert bzw. übergeben werden, kann das Modul keine Berechnungen durchführen.
Falsche Werte
Beschreibung / Ursache:
Die Werte passen nicht zu der Änderung, die unmittelbar per set-Befehl vorgenommen wurde.
Lösung:
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).
Die Grafik mit den Werten oszilliert
Beschreibung / Ursache:
Wenn man sich den Graphen der aufgezeichneten Werten anschaut, dann stellt man fest, dass diese um den vermeintlich realen Wert oszilliert. Der Grund ist das Problem der Digitalisierung analoger Werte. Siehe https://de.wikipedia.org/wiki/Digitale_MesstechnikDieser Fehler tritt inbesondere bei Zählern mit einer niedrigen Impulsrate wie bei Analogen Drehstromzählen mit 75 Umdrehungen je kWh in Kombination mit kurzen Messintervallen und/oder kleinen Leistungswerten auf.
Lösung:
Um den Fehler der digitalen Messung möglichst klein zu halten, müssen pro Messintervall insbesondere bei kleinen Leistungen möglichst viele Impulse "eingesammelt" werden. Dies kann nur erfolgen, wenn das Countermodul (nicht der ElectricityCalculator) entsprechend geduldiger eingestellt wird. Sollte am CounterModul kein Zeitintervall einzustellen sein, so muß man die Counterwerte über ein "at" an einen "dummy" mit einem entsprechen großen Zeitraum liefern und auf diesen dummy dann den ElectricityCalculator definieren.
Weblinks
Mit nachfolgendem Produkt ist Vorsicht geboten, denn es handelt sich nicht um den DALLAS 1 Wire Standard!