Readings verschiedener devices addieren

Begonnen von The-Holgi, 18 März 2023, 11:01:14

Vorheriges Thema - Nächstes Thema

The-Holgi

Hallo,
ich habe 2 Wechselrichter und möchte nun die Daten wie Gesamtertrag und aktuelle Stromproduktion addieren.
Zur Erfassung der Daten habe ich an einem Wechselrichter einen Fritz dect Zwischenstecker und an dem anderen (Hoymiles) eine openDTU die per mqtt die Daten an fhem schickt.
Meine Idee wäre nun ein dummy zu erstellen und alle 10min die readings der beiden devices abzurufen und zu addieren.
Leider stehe ich da völlig auf dem ,,Schlauch" wie ich das umsetzen kann.
Vielleicht hat Jemand Lust zu helfen.

Gruß Holger
Raspberry Pi 5

Per

Warum "aller 10 Minuten"? In welchen Intervallen liefen die beiden Aktoren?

betateilchen

Zitat von: The-Holgi am 18 März 2023, 11:01:14
Meine Idee wäre nun ein dummy zu erstellen und alle 10min die readings der beiden devices abzurufen und zu addieren.
Leider stehe ich da völlig auf dem ,,Schlauch" wie

Ein at definieren, das alle 10 Minuten läuft, mit ReadingsNum() die beiden Werte holt und addiert und das Ergebnis dann mit setreading irgendwohin schreibt. Ob man dafür tatsächlich ein dummy braucht, wage ich zu bezweifeln.

Ebenso glaube ich, dass sich die Aufgabe auch anders (einfacher) lösen lässt. Aber dazu hast Du zu wenige Informationen geliefert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

The-Holgi

Hallo,
alle 10min weil mir das reichen würde.
Ein dummy device weil mir sonst nichts eingefallen ist wo man die Werte schreiben/abrufen könnte.
Eine einfachere Lœsung wäre natürlich wünschenswert.
Hier mal ein list von den devices, wobei der Wechselrichter bei der openDTU noch nicht in Betrieb ist.
Internals:
   DEF        Fritzbox:11657_0358133 microphone,powerMeter,tempSensor,switch
   FUUID      5f2d7d47-f33f-6571-e72a-cb1c51e7024f3847
   Fritzbox_MSGCNT 6645
   Fritzbox_TIME 2023-03-19 13:18:46
   IODev      Fritzbox
   LASTInputDev Fritzbox
   MSGCNT     6645
   NAME       FBDECT_Fritzbox_11657_0358133
   NR         361
   STATE      Temperatur: 14.5 C (measured) <br> KWH: 163.081 <br> Power: 498.76 W

   TYPE       FBDECT
   eventCount 6644
   id         11657_0358133
   props      microphone,switch,powerMeter,tempSensor,switch
   Helper:
     DBLOG:
       energy:
         myDbLog:
           TIME       1679228326.95317
           VALUE      163081
       power:
         myDbLog:
           TIME       1679228326.95317
           VALUE      498.76
   READINGS:
     2023-03-19 13:18:46   AIN             11657 0358133
     2023-03-19 13:18:46   FBNAME          Balkonkraftwerk
     2023-03-19 13:18:46   FBPROP          microphone,switch,powerMeter,tempSensor,switch
     2023-03-19 13:18:46   FBTYPE          FRITZ!DECT 210
     2023-02-24 19:21:13   Gesamt          140.845
     2023-03-19 13:18:46   ID              17
     2023-02-24 11:21:05   IODev           Fritzbox
     2023-03-19 13:18:46   KWh             163.081
     2023-03-19 13:18:46   devicelock      yes
     2023-03-19 13:18:46   energy          163081 Wh
     2023-03-19 13:18:46   fwversion       04.25
     2023-03-19 13:18:46   locked          no
     2023-03-19 13:18:46   mode            manuell
     2023-03-19 13:18:46   power           498.76 W
     2023-03-19 13:18:46   present         yes
     2023-03-19 13:18:46   state           on
     2023-03-19 13:18:46   tempadjust      0.0 C
     2023-03-19 13:18:46   temperature     14.5 C (measured)
     2023-03-19 13:18:46   voltage         238.990 V
   hmccu:
Attributes:
   IODev      Fritzbox
   alias      Fritzdect210
   event-min-interval power:120
   event-on-update-reading energy,power,voltage
   genericDeviceType switch
   room       FBDECT,Laube,Steckdosen
   stateFormat Temperatur: temperature <br> KWH: KWh <br> Power: power

   userReadings KWh {ReadingsNum("FBDECT_Fritzbox_11657_0358133","energy",0)/1000}

Internals:
   CID        OpenDTU_10258016
   DEF        OpenDTU_10258016
   FUUID      63ef976a-f33f-6571-62b7-451a040b984aad95
   IODev      myBroker2
   LASTInputDev myBroker2
   MSGCNT     123019
   NAME       MQTT2_OpenDTU_10258016
   NR         505
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 25411
   myBroker2_CONN myBroker2_192.168.178.150_50806
   myBroker2_MSGCNT 123019
   myBroker2_TIME 2023-03-05 13:38:58
   READINGS:
     2023-02-24 11:21:05   IODev           myBroker2
     2023-02-17 16:06:43   attrTemplateVersion 20221215
     2023-03-05 13:38:31   hostname        OpenDTU
     2023-03-05 13:38:31   ip              192.168.178.150
     2023-03-05 13:38:31   last_update     0
     2023-03-05 13:38:31   producing       0
     2023-03-05 13:38:31   reachable       0
     2023-03-05 13:38:31   rssi            -61
     2023-03-05 13:38:31   solar_114183722234_name HoymilesHM600
     2023-03-05 13:38:58   status          offline
     2023-03-05 13:38:30   uptime          8435
Attributes:
   event-on-change-reading .*
   icon       solar
   model      hoymiles_opendtu_microinverter
   readingList 114183722234/0/powerdc:.* powerdc
  114183722234/0/yieldday:.* yieldday
  114183722234/0/yieldtotal:.* yieldtotal
  114183722234/0/voltage:.* voltage
  114183722234/0/current:.* current
  114183722234/0/power:.* power
  114183722234/0/frequency:.* frequency
  114183722234/0/temperature:.* temperature
  114183722234/0/powerfactor:.* powerfactor
  114183722234/0/efficiency:.* efficiency
  114183722234/0/reactivepower:.* reactivepower
  114183722234/1/voltage:.* voltage1
  114183722234/1/current:.* current1
  114183722234/1/power:.* power1
  114183722234/1/irradiation:.* irradiation1
  114183722234/1/yieldday:.* yieldday1
  114183722234/1/yieldtotal:.* yieldtotal1
  114183722234/2/voltage:.* voltage2
  114183722234/2/current:.* current2
  114183722234/2/power:.* power2
  114183722234/2/irradiation:.* irradiation2
  114183722234/2/yieldday:.* yieldday2
  114183722234/2/yieldtotal:.* yieldtotal2
  114183722234/name:.* name
  114183722234/status/reachable:.* reachable
  114183722234/status/producing:.* producing
  114183722234/status/last_update:.* last_update
OpenDTU_10258016:solar/dtu/uptime:.* uptime
OpenDTU_10258016:solar/dtu/ip:.* ip
OpenDTU_10258016:solar/dtu/hostname:.* hostname
OpenDTU_10258016:solar/dtu/rssi:.* rssi
OpenDTU_10258016:solar/114183722234/name:.* solar_114183722234_name
OpenDTU_10258016:solar/114183722234/status/reachable:.* reachable
OpenDTU_10258016:solar/114183722234/status/producing:.* producing
OpenDTU_10258016:solar/114183722234/status/last_update:.* last_update
OpenDTU_10258016:solar/dtu/status:.* status
   room       MQTT2_DEVICE
   setList    on:noArg 114183722234/cmd/power 1
  off:noArg 114183722234/cmd/power 0
  reboot:noArg 114183722234/cmd/restart 1
  limit_non_persistent_abs 114183722234/cmd/limit_persistent_absolute $EVTPART1
  limit_non_persistent_pct:slider,2,1,100 114183722234/cmd/limit_persistent_relative $EVTPART1
  limit_persistent_abs 114183722234/cmd/limit_nonpersistent_absolute $EVTPART1
  limit_persistent_pct:slider,2,1,100 114183722234/cmd/limit_nonpersistent_relative $EVTPART1
   setStateList on off

Gruß Holger
Raspberry Pi 5

Per

Ich frage, weil die beiden Devices ja Events beim Update erzeugen und Fhem Event basiert arbeitet. Insofern kann man einfach ein DOIF nehmen, was auf beide Events reagiert und das Ergebnis als sein Status nimmt.
Ob Fhem oder Perl Mode ist dabei egal, Perl würde hier weniger Attribute benötigen.

The-Holgi

Kannst du das vielleicht näher beschreiben ? Hab jetzt so gar keine Vorstellung wie so ein DOIF aussehen könnte.
Raspberry Pi 5

Per

DOIF {set_State([dev1:readingA] + [dev2:readingB])}

The-Holgi

Hm, irgendwie werde ich immer noch nicht so richtig schlau daraus. Der Befehl sollte ja den state vom DOIF auf die addition der beiden Werte setzen. Nur wie oder wodurch wird das DOIF getriggert?
Raspberry Pi 5

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

The-Holgi

Ok, das sieht ja schonmal gut aus. Besten Dank für eure Hilfe. Allerdings mit der Meldung: condition c01: Argument "0.89 W" isn't numeric in additionVermutlich weil beim reading das "W" mitgeliefert wird.
Raspberry Pi 5

betateilchen

Zitat von: The-Holgi am 19 März 2023, 13:27:25alle 10min weil mir das reichen würde.
Ein dummy device weil mir sonst nichts eingefallen ist wo man die Werte schreiben/abrufen könnte.
Eine einfachere Lœsung wäre natürlich wünschenswert.

Ich würde einfach ein notify definieren, das auf die beiden gewünschten readings triggert und das immer dann, wenn sich eines der readings ändert, die Summe neu berechnet und in ein Summen-reading schreibt. Dieses reading kann sogar ganz einfach im notify selbst abgelegt werden, dann braucht man keinen dummy. Einem reading-Wert sieht man in einem ReadingsNum() später nicht an, aus welchem devicetype er stammt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Per

Zitat von: The-Holgi
Vermutlich weil beim reading das "W" mitgeliefert wird.
/quote]
Zitat von: The-Holgi am 21 März 2023, 18:22:50Vermutlich weil beim reading das "W" mitgeliefert wird.
Genau. Wie solche Werte formatiert werden können, steht ja in der CommandRef.

The-Holgi


[/quote]
Genau. Wie solche Werte formatiert werden können, steht ja in der CommandRef.
[/quote]
Ok mit $number sollte ja im DOIF nach Zahlen gefiltert werden. Nur wie sieht die syntax dazu aus?
{set_State([FBDECT_Fritzbox_11657_0358133:power $number] + [MQTT2_solar_114183722234:power])}Klappt leider nicht, finde auch keine näheren Infos dazu.
Raspberry Pi 5

Damian

Du hast etwas bei Aggregationsfunktionen gefunden, das benutzt du aber nicht.

Was du willst, findest du hier: https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

The-Holgi

Hm, OK das hatte ich garnicht gefunden.
Habe es nun so probiert:
{set_State([FBDECT_Fritzbox_11657_0358133:power:d] + [MQTT2_solar_114183722234:power])}Bringt jedoch die gleiche Warnung. Habe ich da etwas falsch verstanden?
Raspberry Pi 5