Neues Modul: GasCalculator

Begonnen von Sailor, 21 Januar 2016, 12:48:11

Vorheriges Thema - Nächstes Thema

Sailor

Ein herzerfrischendes "Moin" vom "hintern-Deich" vorweg!

Ich möchte gerne mein neues Modul vorstellen was es (hoffentlich) morgen über die Update - Funktion zur Verfügung gestellt wird

Das GasCalculator Modul berechnet den Gas - Verbrauch und den verbundenen Kosten von einem oder mehreren Gas-Zählern.
Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit dem kontinuierlich wachsendem Zählerstand von einem oder mehreren Gaszählern zu finden.

Sobald das Modul in der fhem.cfg definiert wurde, reagiert das Modul auf jedes durch das regex definierte event wie beispielsweise ein OWDEVICE etc.
Das GasCalculator Modul berechnet augenblickliche, historische statistische und vorhersehbare Werte von einem oder mehreren Gas-Zählern und erstellt die entsprechenden Readings.
Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings Vol1stDay, Vol1stMonth, Vol1stYear und Vol1stMeter entsprechend mit dem setreading - Befehl korrigiert werden.

Diese Werte findet man unter Umständen auf der letzten Gas-Rechnung.
Andernfalls dauert es bis zu 24h für die täglichen, 30 Tage für die monatlichen und bis zu 12 Monate für die jährlichen Werte bis diese der Realität entsprechen.


Sobald das Device in der Lage war mindestens 2 Werte des Zählers einzulesen, werden automatisch die entsprechenden Readings erzeugt:
Der Platzhalter DestinationDevice steht für das Device, welches man in dem Attribut ReadingDestination oben festgelegt hat. Dieser Platzhalter bleibt leer, sobald man dort CalculatorDevice ausgewählt hat.
Der Platzhalter SourceCounterReading steht für das Reading welches mit der Regular Expression definiert wurde.


Die generierten Readings lauten:

Sobald das Device in der Lage war mindestens 2 Werte des Zählers einzulesen, werden automatisch die entsprechenden Readings erzeugt:
Der Platzhalter DestinationDevice steht für das Device, welches man in dem Attribut ReadingDestination oben festgelegt hat. Dieser Platzhalter bleibt leer, sobald man dort CalculatorDevice ausgewählt hat.
Der Platzhalter SourceCounterReading steht für das Reading welches mit der Regular Expression definiert wurde.

EnergyCostMeter : Energiekosten in der gewählten Währung seit Anfang des Monats wo der Gas-Versorger den Zähler abliest.
EnergyCostMonth : Energiekosten in der gewählten Währung seit Anfang des Monats.
EnergyCostYear : Energiekosten in der gewählten Währung seit Anfang des Jahres.
EnergyDay : Energieverbrauch in kWh seit Mitternacht.
EnergyMeter : Energieverbrauch in kWh seit Anfang seit Anfang des Monats wo der Gas-Versorger den Zähler abliest.
EnergyMonth : Energieverbrauch in kWh seit Anfang seit Anfang des Monats (Mitternacht des 01.).
EnergyYear : Energieverbrauch in kWh seit Anfang seit Anfang des Jahres (Mitternacht des 01. Januar).
FinanceReserve : Finanzielle Reserve basierend auf den Abschlagszahlungen die jeden Monat an den Gas-Versorger gezahlt werden. Bei negativen Werten ist von einer Nachzahlung auszugehen.
LastDV : Volumenunterschied in der gewählten Volumeneinheit zwischen den augenblicklichen und vorherigen Messwert (ΔV).
LastDt : Zeitunterschied in Sekunden zwischen den augenblicklichen und vorherigen Messwert (Δt).
Meter : Zählerstand am Gaszähler. Bei Differenzen muss das Offset-Attribut korrigiert werden.
PowerCurrent : Aktuelle Heizleistung. (Mittelwert zwischen aktueller und letzter Messung)
PowerDayAver : Mittlere Heitzleistung seit Mitternacht.
PowerDayCount : Anzahl der Leistungsmessungen seit Mittenacht. (Wird für Errechnung des t&aumlglichen Mittelwert benötigt)
PowerDaySum : Summe aller Leistungsmessungen seit Mitternacht. (Wird für Errechnung des t&aumlglichen Mittelwert benötigt)
PowerDayMax : Maximale Leistungsaufnahme seit Mitternacht.
PowerDayMin : Minimale Leistungsaufnahme seit Mitternacht.
PrevRead : Reading der vorherigen Messung (Wird für die Berechnung des ΔV und Δt benötigt)
Vol1stDay : Erster Volumenmesswert des Tages (Mitternacht).
Vol1stMonth : Erster Volumenmesswert des Monats (Mitternacht des 01.).
Vol1stYear : Erster Volumenmesswert des Jahres (Mitternacht des 01. Januar).
Vol1stMeter : Erster Volumenmesswert des Zeitraums seit Anfang des Monats wo der Gas-Versorger den Zähler abliest.

Das Modul wird (hoffentlich) ab morgen über den Update Befehl zur Verfügung stehen.

Gruss
    Sailor


Da das Repository wieder neue Anforderungen beim hochladen stellt, anbei der Code vorübergehend im Anhang.
Aktuelle Version: 10590
Datei: Per update Modul verfügbar
******************************
Man wird immer besser...

deltaac

Das hört sich echt interessant an! Aktuell les ich meinen Zähler über einen Reed Schalter am GPIO 22 aus. Hast du evtl. ein Beispiel für die Implementierung?

netbus


deltaac

Zitat von: netbus am 22 Januar 2016, 08:30:23
Doku, Wiki?
Das Wiki findet nichts dazu. Wo finde ich die Doku?

Sailor

Moin deltaac

Zitat von: deltaac am 22 Januar 2016, 08:33:47
Das Wiki findet nichts dazu. Wo finde ich die Doku?

Wiki gibst zur Zeit noch nicht und Doku findest Du in der obigen Datei als =pod commandref.

Einfach mal definieren und laufen lassen.

Gruß
    Sailor
******************************
Man wird immer besser...

no_Legend

Eigentlich kann man das Modul doch nicht nur für Gas nutzen oder seh ich das falsch?
Also Strom und auch Wasser sollten möglich sein?

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Sailor

Hallo Robert

Zitat von: no_Legend am 22 Januar 2016, 09:46:09
Eigentlich kann man das Modul doch nicht nur für Gas nutzen oder seh ich das falsch?
Also Strom und auch Wasser sollten möglich sein?

Hmmm

Eigentlich ja...

Aber ich denke ich werde hier ein gesondertes Modul schreiben müssen, da bei Wasser noch zusätzliche Attribute wie Abwasserkosten, Gartenwasseranteil etc. beachtet werden müssen.

Probiers mal aus!

Ich bin über jede Rückmeldung dankbar.

Gruss
    Sailor
******************************
Man wird immer besser...

no_Legend

Zitat von: Sailor am 22 Januar 2016, 11:00:49
Hallo Robert

Hmmm

Eigentlich ja...

Aber ich denke ich werde hier ein gesondertes Modul schreiben müssen, da bei Wasser noch zusätzliche Attribute wie Abwasserkosten, Gartenwasseranteil etc. beachtet werden müssen.

Probiers mal aus!

Ich bin über jede Rückmeldung dankbar.

Gruss
    Sailor

So genau betrachte ich die Wasserwerte garnicht.
Dann müsste ich ja an jede Rinne und auch am Gartenhahn einen Wasserzählen hängen.  ;D ;D

So genau brauch ich es dann doch nciht.

Ich hab mir jetzt erst mal einen in-z65 bestellt.
Werde wenn der da ist Probieren per Firmata die Daten einzulesen.
Dann schau ich mal wie ich meinen Ferraris Zähler und meinen Wasserzähler angebunden bekomme.
Reflex Lichtschranke usw.

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Sailor

#8
Hallo Robert

Zitat von: no_Legend am 22 Januar 2016, 11:30:46
Dann schau ich mal wie ich meinen Ferraris Zähler und meinen Wasserzähler angebunden bekomme.
Reflex Lichtschranke usw.

Wenn Du schon auf Homematic bist, dann würde ich dabei bleiben und am besten Folgendes nehmen:

Für den Stromzähler:
Den ES-Fer in Verbindung mit dem HM-ES-TX-WM
oder
Den ES-LED in Verbindung mit dem HM-ES-TX-WM


Für den Gaszähler:
Den in-z65 in Verbindung mit dem HM-ES-TX-WM

Gruß
    Sailor
******************************
Man wird immer besser...

no_Legend

Zitat von: Sailor am 22 Januar 2016, 12:10:33
Hallo Robert

Wenn Du schon auf Homematic bist, dann würde ich dabei bleiben und am besten Folgendes nehmen:

Für den Stromzähler:
Den ES-Fer in Verbindung mit dem HM-ES-TX-WM
oder
Den ES-LED in Verbindung mit dem HM-ES-TX-WM


Für den Gaszähler:
Den in-z65 in Verbindung mit dem HM-ES-TX-WM

Gruß
    Sailor

Die Homematic komponeten kenn ich.
Aber ehrlich für einen IN-Z62 60€ zu verlangen + noch die 50€ für nen Bausatz. Sorry da haben die Echt einen Rennen.
Ein Arduino bekommt an für unter 5€ + den Sensor für knapp 28€.
Da sind dann immer noch knapp 70€ differnez.
Hierfür kann man schon mal ne bissel basteln.

Mal schauen wie weit ich komm.

Ansonten bestell ich halt doch noch ne Bausatz LOL
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Sailor

Hallo Robert

Zitat von: no_Legend am 22 Januar 2016, 12:45:58
Aber ehrlich für einen IN-Z62 60€ zu verlangen + noch die 50€ für nen Bausatz. Sorry da haben die Echt einen Rennen.
Ansonten bestell ich halt doch noch ne Bausatz LOL

Den IN-Z62 sollste ja auch nicht von ELV nehmen. Der ist mit deinem IN-Z65 ja auch identisch, abgesehen von dem schönen Grimp-Schuh.
Deshalb: Kauf dir deinen IN-Z65 für 23€ in Verbindung mit dem HM-ES-TX-WM für 45€.

Die Homematic - Schnittstelle erspart dir 'ne Menge Arbeit hinsichtlich Anbindung des Arduino.

Gruß
    Sailor

******************************
Man wird immer besser...

Intruder1956

Hallo,
hab das Modul nicht gefunden, weder in deinem obigen Anhang noch ist es heute beim Update dabei gewesen

Gruß Werner
Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

no_Legend

Zitat von: Sailor am 22 Januar 2016, 13:01:34
Hallo Robert

Den IN-Z62 sollste ja auch nicht von ELV nehmen. Der ist mit deinem IN-Z65 ja auch identisch, abgesehen von dem schönen Grimp-Schuh.
Deshalb: Kauf dir deinen IN-Z65 für 23€ in Verbindung mit dem HM-ES-TX-WM für 45€.

Die Homematic - Schnittstelle erspart dir 'ne Menge Arbeit hinsichtlich Anbindung des Arduino.

Gruß
    Sailor

Ach so ne paar Arduinos hab ich immer zuhause.
Viel aufwand ist das auch nicht. Die Firmata kann ja schon alles.
Nur den Sensor/Reed Kontakt mit 5V versorgen und
Muss ja nicht wirklich was dazu Programmieren.

Da der Gaszähler ganz in der nähe des FHEM Server ist, kann ich den Arduino direkt ohne umwege per USB anschließen.
Brauch kein Ethernetshield oder so.
Leider ist es kein Raspi, sondern ein Cubitruck.

Ich könnte zwar auch die GPIO vom Cubie nehmen, wo bei ich nicht wies wie lange ich den Cubie noch benutzen will.

Das sind gemessen grad mal ca. 2,5m Abstand zwischen Server und Gas/wasserzähler.
Da find ich ein Homematic device echt oversized.
Wenn ich doch keine Lust hab hol ich mir den ELV Bausatz.

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

deltaac

Hi,

hab dein Modul mal eingebunden, aber es verändert sich nichts:

Zitat
Internals
CFGFN
   
/opt/fhem/mycfg/41_gas.cfg
DEF    
gpio_pin22:Pinlevel:.high.*
NAME
   
myGasCalculator
NR
   
201
NTFY_ORDER
   
10-myGasCalculator
REGEXP
   
gpio_pin22:Pinlevel:.high.*
STATE
   
active
TYPE
   
GasCalculator
VERSION
   
0007
Readings
gpio_pin22_Counter_EnergyCostMeter
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_EnergyCostMonth
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_EnergyCostYear
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_EnergyDay
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_EnergyMeter
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_EnergyMonth
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_EnergyYear
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_FinanceReserve
   
0.00
   
2016-01-22 15:38:49
gpio_pin22_Counter_LastDV
   
0.01
   
2016-01-22 15:38:49
gpio_pin22_Counter_LastDt
   
209
   
2016-01-22 15:38:49
gpio_pin22_Counter_Meter
   
217.92
   
2016-01-22 15:38:49
gpio_pin22_Counter_PowerCurrent
   
1.72
   
2016-01-22 15:38:49
gpio_pin22_Counter_PowerDayAver
   
1.72
   
2016-01-22 15:38:49
gpio_pin22_Counter_PowerDayCount
   
1
   
2016-01-22 15:38:49
gpio_pin22_Counter_PowerDayMax
   
1.72
   
2016-01-22 15:38:49
gpio_pin22_Counter_PowerDayMin
   
0
   
2016-01-22 15:38:49
gpio_pin22_Counter_PowerDaySum
   
1.72
   
2016-01-22 15:38:49
gpio_pin22_Counter_PrevRead
   
217.92
   
2016-01-22 15:38:49
gpio_pin22_Counter_Vol1stDay
   
217.92
   
2016-01-22 15:38:49
gpio_pin22_Counter_Vol1stMeter
   
217.92
   
2016-01-22 15:38:49
gpio_pin22_Counter_Vol1stMonth
   
217.92
   
2016-01-22 15:38:49
gpio_pin22_Counter_Vol1stYear
   
217.92
   
2016-01-22 15:38:49

Was mach ich falsch?=??

no_Legend

Kann es sein, dass das Modul erst morgen verfügbar ist?
oder kann mir mal kurz einer zeigen wie ich das Modul einbinde?

Wird es auch ein commandref Eintrag geben?

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.