Neues Modul: ElectricityCalculator

Begonnen von Sailor, 26 August 2016, 21:05:35

Vorheriges Thema - Nächstes Thema

fini

Zitat von: Sailor am 01 März 2017, 11:07:08
Hallo fini

Gib den Text
set myElectricityCalculator Stromzaehler_1.ENERGY_COUNTER_CounterDay1st 123456.789
mal ganz oben in die Kommandozeile ein.

Gruß
    Sailor

myElectricityCalculator - Successfully set Stromzaehler_1.ENERGY_COUNTER_CounterDay1st with value: 123456.789

warum geht es nicht mit set Button?

Sailor

Hallo fini

Zitat von: fini am 01 März 2017, 12:21:54
myElectricityCalculator - Successfully set Stromzaehler_1.ENERGY_COUNTER_CounterDay1st with value: 123456.789
warum geht es nicht mit set Button?

Das erscheint auch bei mir seit der Umstellung auf fhem 5.8 auf fast allen Modulen.

Daher vermute ich den Fehler nicht bei mir.

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

fini

ok ... hat den Fehler schon einer gemeldet?

frankreed

Morgen!

Also irgendwie bin ich zu doof.
Meine Konstellation:

Ich habe einen Ferraris-Sensor, der mir über MQTT folgende Readings bereitstellt:

- Count: Anzahl der Impulse seit dem letzten übertragen. Da ich mir jeden Impuls vom Sensor schicken lasse ist das immer "1". Einen Delay habe ich nicht
- Time: Zeit zwischen dem aktuellen und dem letzten Impuls in Millisekunden
- Total: Anzahl der Gesamtimpulse seit dem letzten Start des Sensors

Name des Sensors in FHEM: Ferraris_Sensor

Wie muss ich denn jetzt den ElectricityCalculator definieren?????
Hat mir vielleicht jemand ein Beispiel?

Vielen Dank für die Hilfe.

Gruß Frank

majorshark

Versuche mal:
define <Name> ElectricityCalculator Ferraris_Sensor:Total:.*
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

KernSani

Meines Wissens berechnet electricityCalculator keinen Stromverbrauch aus Impulsen sondern erwartet ein Event, das den Stromverbrauch in KWh liefert...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

frankreed

Zitat von: majorshark am 22 April 2017, 11:18:32
Versuche mal:
define <Name> ElectricityCalculator Ferraris_Sensor:Total:.*

Habe ich gemacht, aber es tut sich nichts im Modul.
Hier mal die RAW-Definitionen:

Ferraris_Sensor:
defmod Ferraris_Sensor MQTT_DEVICE
attr Ferraris_Sensor IODev myBroker
attr Ferraris_Sensor event-on-change-reading .*
attr Ferraris_Sensor icon measure_power_meter
attr Ferraris_Sensor publishSet_Counter ferraris/Counter
attr Ferraris_Sensor publishSet_HighTrigger ferraris/HighTrigger
attr Ferraris_Sensor publishSet_LowTrigger ferraris/LowTrigger
attr Ferraris_Sensor room MQTT
attr Ferraris_Sensor stateFormat transmission-state
attr Ferraris_Sensor subscribeReading_Consumption ferraris/Consumption
attr Ferraris_Sensor subscribeReading_Count ferraris/Count
attr Ferraris_Sensor subscribeReading_CounterVal ferraris/CounterVal
attr Ferraris_Sensor subscribeReading_Time ferraris/Time
attr Ferraris_Sensor subscribeReading_Total ferraris/Total

setstate Ferraris_Sensor incoming publish received
setstate Ferraris_Sensor 2017-04-22 11:22:54 Consumption    224.30
setstate Ferraris_Sensor 2017-04-22 11:22:54 Count 1
setstate Ferraris_Sensor 2017-04-21 18:51:17 Counter 81776.9
setstate Ferraris_Sensor 2017-04-22 11:22:54 CounterVal      5.36
setstate Ferraris_Sensor 2017-04-16 19:14:55 HighTrigger 400
setstate Ferraris_Sensor 2017-04-16 19:14:29 LowTrigger 250
setstate Ferraris_Sensor 2017-04-22 11:22:54 Time    214682
setstate Ferraris_Sensor 2017-04-22 11:22:54 Total       402
setstate Ferraris_Sensor 2017-04-22 11:22:54 transmission-state incoming publish received


und vom ElectricityCounter:
defmod myElectricityCounter ElectricityCalculator Ferraris_Sensor:Total:.*
attr myElectricityCounter BasicPricePerAnnum 0
attr myElectricityCounter Currency €;
attr myElectricityCounter ElectricityCounterOffset 0
attr myElectricityCounter ElectricityKwhPerCounts 75
attr myElectricityCounter ElectricityPricePerKWh 0.2567
attr myElectricityCounter MonthOfAnnualReading 5
attr myElectricityCounter MonthlyPayment 0
attr myElectricityCounter ReadingDestination CalculatorDevice
attr myElectricityCounter SiPrefixPower W
attr myElectricityCounter room Electric Energy Counter

setstate myElectricityCounter active


Habe keinen blassen Schimmer.....

KernSani

Schau dir mal im Eventmonitor an, welche Events Ferraris_Sensor erzeugt (nicht die Readings) dann entsprechende Regex.

defmod myElectricityCounter ElectricityCalculator Ferraris_Sensor:Total
[/quote]
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

majorshark

Sieht so aus als ob der Ferraris Zähler den Zählerstand im Reading Counter bereitstellt.

Dann würde ich es so machen:
efine <Name> ElectricityCalculator Ferraris_Sensor:Counter:.*
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

frankreed

Beim Sensor sieht es so aus:
Zählerstand wird im Reading "CounterVal" bereitgestellt und auch brav hochgezählt.

Als event-on-change-reading habe ich ebenfalls CounterVal eingetragen. Somit müsste es doch bei einer Veränderung ein Ereignis auslösen, auf das der electricityCalculator reagieren könnte.

Den electricitycalculator habe ich wie folgt definiert:
define myElectricityCalculator ElectricityCalculator Ferraris_Sensor:CounterVal:.*

Trotzdem tut sich beim Calculator nichts....
Noch jemand eine Idee?

majorshark

Nimm doch das event-on-change-reading erst mal raus und beobachte mal, wie KernSani vorgeschlagen hat, was im Event Monitor so vom Ferraris_Sensor angezeigt wird.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

frankreed

#221
Sorry für die späte Antwort.

Ich habe jetzt den Ferraris-Sensor so mit dem ElectricityCounter "verkoppelt":

Jedesmal, wenn ein Impuls erfolgt, wird beim Ferraris-Reading das Reading "Pulses" um einen Wert erhöht:
efmod Ferraris_Sensor MQTT_DEVICE
attr Ferraris_Sensor IODev myBroker
attr Ferraris_Sensor publishSet_Counter ferraris/Counter
attr Ferraris_Sensor room MQTT
attr Ferraris_Sensor stateFormat transmission-state
attr Ferraris_Sensor subscribeReading_CounterVal ferraris/CounterVal
attr Ferraris_Sensor subscribeReading_CurrWatts ferraris/CurrWatts
attr Ferraris_Sensor subscribeReading_Delta_T ferraris/Delta_T
attr Ferraris_Sensor subscribeReading_Pulses ferraris/Pulses
attr Ferraris_Sensor subscribeReading_Pulses_1 ferraris/Pulses_1


Also bei jeder Umdrehung der Scheibe. Reading "Pulses" wird um eins erhöht. Dieses Reading habe ich nun genommen, um das Event beim ElectricityCounter auszulösen:

defmod myElectricityCalculator ElectricityCalculator Ferraris_Sensor:Pulses:.*
attr myElectricityCalculator BasicPricePerAnnum 0
attr myElectricityCalculator Currency €
attr myElectricityCalculator ElectricityCounterOffset 0
attr myElectricityCalculator ElectricityKwhPerCounts 75
attr myElectricityCalculator ElectricityPricePerKWh 0.2567
attr myElectricityCalculator MonthOfAnnualReading 5
attr myElectricityCalculator MonthlyPayment 0
attr myElectricityCalculator ReadingDestination CalculatorDevice
attr myElectricityCalculator SiPrefixPower W
attr myElectricityCalculator room Electric Energy Counter


Der Calculator bekommt eine Änderung jetzt auch mit und errechnet brav Werte:
setstate myElectricityCalculator active
setstate myElectricityCalculator 2017-04-23 11:00:17 .Ferraris_Sensor_Pulses_LastDV 75.000
setstate myElectricityCalculator 2017-04-23 11:00:17 .Ferraris_Sensor_Pulses_LastDt 20
setstate myElectricityCalculator 2017-04-23 11:00:17 .Ferraris_Sensor_Pulses_PowerDayCount 304
setstate myElectricityCalculator 2017-04-23 11:00:17 .Ferraris_Sensor_Pulses_PowerDaySum 1980420767.085
setstate myElectricityCalculator 2017-04-23 11:00:17 .Ferraris_Sensor_Pulses_PrevRead 42075.000
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_CounterCurrent 42075.000
setstate myElectricityCalculator 2017-04-23 00:01:23 Ferraris_Sensor_Pulses_CounterDay1st 19125.000
setstate myElectricityCalculator 2017-04-23 00:01:23 Ferraris_Sensor_Pulses_CounterDayLast 19050.000
setstate myElectricityCalculator 2017-04-22 19:09:30 Ferraris_Sensor_Pulses_CounterMeter1st 1050
setstate myElectricityCalculator 2017-04-22 19:09:30 Ferraris_Sensor_Pulses_CounterMeterLast 975.000
setstate myElectricityCalculator 2017-04-22 19:09:30 Ferraris_Sensor_Pulses_CounterMonth1st 1050
setstate myElectricityCalculator 2017-04-22 19:09:30 Ferraris_Sensor_Pulses_CounterMonthLast 975.000
setstate myElectricityCalculator 2017-04-22 19:09:30 Ferraris_Sensor_Pulses_CounterYear1st 1050
setstate myElectricityCalculator 2017-04-22 19:09:30 Ferraris_Sensor_Pulses_CounterYearLast 975.000
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyCostDay 5891.265
setstate myElectricityCalculator 2017-04-23 00:01:23 Ferraris_Sensor_Pulses_EnergyCostDayLast 4620.600
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyCostMeter 10531.117
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyCostMonth 10531.117
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyCostYear 10531.117
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyDay 22950.000
setstate myElectricityCalculator 2017-04-23 00:01:23 Ferraris_Sensor_Pulses_EnergyDayLast 18000.000
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyMeter 41025.000
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyMonth 41025.000
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_EnergyYear 41025.000
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_FinanceReserve -10531.117
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_MonthMeterReading 12
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_PowerCurrent 13500000.000
setstate myElectricityCalculator 2017-04-23 11:00:17 Ferraris_Sensor_Pulses_PowerDayAver 6514541.997
setstate myElectricityCalculator 2017-04-23 10:00:35 Ferraris_Sensor_Pulses_PowerDayMax 24545454.545
setstate myElectricityCalculator 2017-04-23 05:59:57 Ferraris_Sensor_Pulses_PowerDayMin 619266



Nur passen die irgendwie nicht....
An welcher Schraube muss ich jetzt noch drehen, dass die Werte passen?
Danke für die Antworten.

PS: Das Modul ist aber echt klasse!

UPDATE! GELÖST: Hatte bei ElectricityKwhPerCounts die Anzahl der Umdrehungen pro kWh statt dessen Kehrwert eingegeben, also 75 statt 1/75.

majorshark

#222
ZitatIch habe jetzt den Ferraris-Sensor so mit dem ElectricityCounter "verkoppelt":

Das ist doch schon mal was.

Was steht den auf dem Zähler drauf. Wie viele Umdrehungen pro kWh werden da angegeben?
Das muss dann noch bei kWhPerCounts angegeben werden. 75 scheint mir da nicht zu passen.
Und natürlich der Offset muss an den tatsächlichen Zählerstand angepasst werden.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

frankreed

#223
Hatte wie schon geschrieben beim Wert ElectricityKwhPerCounts die 75 Umdrehungen pro kWh angegeben und nicht den Kehrwert, also die kWh pro Impuls. Jetzt passt das schon mal.

Aber die Ersteinrichtung des Calculators ist schon ziemlich heftig!

Mal angenommen:
- Heute ist der 23.04.2017
- Der Sensorkopf ist heute montiert worden und liefert auch schön seine Impulse.
- Auf dem Zähler steht: 75 Umdrehungen pro kWh entpricht 0.01333... kWh pro Impuls
- Zählerstand auf dem Zähler bei der Montage: 8154.05 kWh
- Kosten pro kWh: 25 Cent
- Karte vom Energieversorger, der den Zählerstand gerne immer am 31.12. hätte

Das sind die Daten, die zur Verfügung stehen.

Wo muss ich jetzt welche Werte muss ich denn jetzt wo eintragen bzw. Attribute setzen auf Basis der o.g. Werte?
Was weiss ich denn wie die Werte CounterDay1st,, CounterMonth1st, CounterYear1st und CounterMeter1st sind?
Was muss ich denn jetzt machen, dass zumindest die Werte ab heute stimmen???

Lot of question from a stupid nerd.....
Ach ja: CommandRef habe ich gelesen aber nicht ganz kapiert.

majorshark

Du must in den Offset den aktuellen Zählerstand eintragen, nicht den vom 31.12.
Dann brauchst Du noch:
MonthOfAnnualReading: Der Monat an dem Deine Abrechnung erstellt ist.
Und
MonthlyPayment: was Du jeden Monat bezahlst
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch: