Dummy bei update von readings neu berechnen

Begonnen von Tom0711, 29 Oktober 2020, 10:36:12

Vorheriges Thema - Nächstes Thema

Tom0711

Hallo,

ich berechne mir Momentan meinen Eigenstromverbrauch als Differenz von PV-Leistung und Stromzaehler-Leistung mittels:

define upd_EV at +*00:00:30 {my $val = ReadingsVal("PV","SPOT_PACTOT","") + ReadingsVal("SZ","Momentanleistung","");;fhem("set Verbrauch $val");;}

"Verbrauch" ist ein dummy.

Das führt dazu, dass alle 30 Sekunden die Kombination aus den 3 Werten plausibel ist, dazwischen aber bei starken Änderungen auch mal blödsinnig. Ich würde die Berechnung gerne durch updates der readings (müsste ein event sein, richtig?) auslösen, dann passen die 3 Werte zumindest immer zusammen.

Sorry, wahrscheinlich ließe sich das durch RTFM auch selber lösen, aber darum poste ich es ja in Anfängerfragen ;)

Thomas

betateilchen

Zitat von: Tom0711 am 29 Oktober 2020, 10:36:12
Sorry, wahrscheinlich ließe sich das durch RTFM auch selber lösen,

Stimmt. Insbesondere die Beschreibung zum Theme userReading.

Zitat von: Tom0711 am 29 Oktober 2020, 10:36:12
aber darum poste ich es ja in Anfängerfragen

Der Bereich Anfängerfragen ist aber nicht für solche unverschämten Versuche, die eigene Faulheit Bequemlichkeit unterstützen zu lassen, gedacht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tom0711

Zitat von: betateilchen am 29 Oktober 2020, 10:45:10
Stimmt. Insbesondere die Beschreibung zum Theme userReading.

Vielen Dank, das hilft mir weiter.

Zitat von: betateilchen am 29 Oktober 2020, 10:45:10
Der Bereich Anfängerfragen ist aber nicht für solche unverschämten Versuche, die eigene Faulheit Bequemlichkeit unterstützen zu lassen, gedacht.

Das nicht. Kein weiterer Kommentar.

Thomas

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

#4
Bzgl. userReadings: du hast 2 Devices aus denen du die Werte holst? PV und SZ?

Da werden sich die Werte aber (nie) nicht "synchron" ändern, oder? ;)

UND: userReadings braucht (wie auch notify etc.) einen Trigger. Den gibt es bei einem dummy erst mal nicht. Also das userReadings an den dummy "pappen" ist "sinnlos"... D.h. userReadings macht nur Sinn an einem der beiden Devices (PV/SR), wo sich auch "automatisch was tut"...

UND: der dummy ist (vermutlich) unnötig. Du kannst/könntest dir auch ein vorhandenes Device (PV oder SR) nehmen und dort per "setreading DeviceName NeuerReadingName Wert" einen Wert setzen. Also "setreading PV Verbrauch $val" mal als Beispiel. Dann hättest du beim (bereits vorhandenen) Device PV ein neues Reading namens "Verbrauch" mit dem gewünschten/berechneten Wert.

Ob du nun userReadings (bei einem der vorhandenen Devices nutzt: entscheide dich welches) oder ein notify was auf eine Änderung reagiert (eines der Devices: entscheide welches ;) ) ist "egal" (wobei ein notify nichts anderes macht wie das userReadings außer: du sparst dir ein weiteres Device, das notify ;)  )

ABER (wie schon ausgeführt): ich bin nicht sicher, ob jeweils der Wert des EINEN DEVICES zu DEM ZEITPUNKT wo sich DORT was ändert auch der Wert des ANDEREN DEVICES passt...

Was sind das überhaupt für Devices?
Warum sind das 2?

Daher (neben einlesen in TFM ;)  ) auch mal die angepinnten Infos lesen: bzgl. Fragestellung, Infos die zu liefern wären (Stichwort: lists der beteiligten Devices / Auszüge aus dem Eventmonitor / ...)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Tom0711

#5
Zitat von: MadMax-FHEM am 29 Oktober 2020, 11:27:35
Bzgl. userReadings: du hast 2 Devices aus denen du die Werte holst? PV und SZ?

Da werden sich die Werte aber (nie) nicht "synchron" ändern, oder? ;)
Ja und ja.

Zitat von: MadMax-FHEM am 29 Oktober 2020, 11:27:35
UND: userReadings braucht (wie auch notify etc.) einen Trigger. Den gibt es bei einem dummy erst mal nicht. Also das userReadings an den dummy "pappen" ist "sinnlos"... D.h. userReadings macht nur Sinn an einem der beiden Devices (PV/SR), wo sich auch "automatisch was tut"...

Habe momentan folgendes laufen:
attr SZ userReadings Eigenverbrauch  {ReadingsVal("PV","SPOT_PACTOT","") + ReadingsVal("SZ","Momentanleistung","")}

Das wird jetzt auch schön synchron zu den updates des StromZählers berechnet. Das heißt, solange sich das Reading SPOT_PACTOT (P AC TOTAL, also Wechselstromleistung alle 3 Phasen) vom PhotoVoltaik-Wechselrichter nicht ändert, passt alles. Das UserReading wird aber bei einem update dieses Readings nicht neu berechnet. Bis zur Idee eines

define Update_Eigenverbrauch notify PV:SPOT_PACTOT .......

bin ich gekommen, was ich dann für ein command ausführen könnte, um das UserReading neu zu berechnen, weiss ich nicht.


Zitat von: MadMax-FHEM am 29 Oktober 2020, 11:27:35
UND: der dummy ist (vermutlich) unnötig. Du kannst/könntest dir auch ein vorhandenes Device

ABER (wie schon ausgeführt): ich bin nicht sicher, ob jeweils der Wert des EINEN DEVICES zu DEM ZEITPUNKT wo sich DORT was ändert auch der Wert des ANDEREN DEVICES passt...

Nein, leider nicht. Da sich die Werte des Stromzaehlers deutlich öfter updaten, passt das jetzt erstmal einigermaßen, aber eine gewisse Totzeit bis alles wieder stimmt ist trotzdem noch drin, wenn sich der PV-Wert ändert.

Generell würde ich gerne verstehen, wie ich zum triggern meiner Berechnung die Events beider Devices berücksichtigen kann. Momentan passiert dies wie gesagt nicht und so entstehen immer wieder kurze, nciht plausible Kombinationen. Da ich nur die PV-Leistung und die Stromzählerleistung, also die originären Werte zum triggern von irgendwelchen Aktionen nutze ist das ncht so schlimm, aber man ist ja trotzdem unzufrieden ;)

Zitat von: MadMax-FHEM am 29 Oktober 2020, 11:27:35
Was sind das überhaupt für Devices?
Warum sind das 2?
Das eine ist ein SMA-PV-Wechselrichter, das andere ist mein 2-Richtungsstromzähler, der per IR-Tastkopf ausgelesen wird.

Danke für deine Hilfe!

Thomas


Zitat von: MadMax-FHEM am 29 Oktober 2020, 11:27:35
Daher (neben einlesen in TFM ;)  ) auch mal die angepinnten Infos lesen: bzgl. Fragestellung, Infos die zu liefern wären (Stichwort: lists der beteiligten Devices / Auszüge aus dem Eventmonitor / ...)

Ok, befürchte, dass das in dem Fall wenig aufschlußreich ist. Der Vollständigkeit halber aber:



[b]list SZ[/b]

Internals:
   DEF        /dev/eMeter0@9600
   DeviceName /dev/eMeter0@9600
   FD         10
   FUUID      5f875601-f33f-c566-a324-8963a438ddebfc81
   NAME       SZ
   NR         38
   PARTIAL   
   STATE      opened
   TYPE       SMLUSB
   Helper:
     DBLOG:
       Momentanleistung:
         logdb:
           TIME       1603968730.61958
           VALUE      3576.40
   READINGS:
     2020-10-29 11:52:10   Eigenverbrauch  4178.4
     2020-10-29 11:52:10   Momentanleistung 3576.40
     2020-10-29 11:52:10   Zaehlerstand-Bezug-Total 22759.50
     2020-10-29 11:52:10   Zaehlerstand-Lieferung-Total 27994.64
     2020-10-21 21:56:59   state           opened
   helper:
     PARTIAL    1B1B010101017607000B0102DE2A620062007263010176010107000B0C834A0E0B06454D48010719821B6A0101635532007607000B0102DE2B620062007263070177010B06454D48010719821B6A070100620AFFFF726201650C83115D7A77078181C78203FF0101010104454D480177070100000009FF010101010B06454D48010719821B6A0177070100010800FF6401018201621E52FF56000D90D3050177070100020800FF6401018201621E52FF560010AFA4C60177070100010801FF0101621E52FF56000D90D3050177070100020801FF0101621E52FF560010AFA4C60177070100010802FF0101621E52FF5600000000000177070100020802FF0101621E52FF5600000000000177070100100700FF0101621B52FF5500008B850177078181C78205FF01726201650C83115D01018302D719EC7109DD22F6852757038303C93ED5EECCBB266594C6737A58C89ED48A20E28FCC21DC257B0F7FBA842D0CEBCABC01010163DFAD007607000B0102DE2E6200620072630201710163C4A800001B1B1B1B1A01E144
Attributes:
   DbLogInclude (Momentanleistung):300
   room       Technik
   userReadings Eigenverbrauch  {ReadingsVal("PV","SPOT_PACTOT","") + ReadingsVal("SZ","Momentanleistung","")}





[b]list PV[/b]


Internals:
   DEF        0000  192.168.1.63
   FUUID      5f87560a-f33f-c566-a6b6-41fcfad526e60f1f
   FVERSION   76_SMAInverter.pm:v2.14.0-s20399/2019-10-23
   HOST       192.168.1.63
   INTERVAL   60
   LASTUPDATE 29.10.2020 / 11:52:55
   NAME       PV
   NR         162
   PASS       0000
   STATE      591
   TYPE       SMAInverter
   HELPER:
     AVERAGEBUF 591,602,621,653,652,632,611,591,584,577,579,584,570,576,595,594,617
     DEFAULT_TARGET_SERIAL 4294967295
     DEFAULT_TARGET_SUSYID 65535
     FAULTEDCYCLES 8
     INTERVAL   60
     MAXBYTES   300
     MYSERIALNUMBER 123321123
     MYSUSYID   233
     PACKAGE    main
     PKT_ID     32769
     VERSION    2.14.0
   Helper:
     DBLOG:
       SPOT_PACTOT:
         logdb:
           TIME       1603968775.96725
           VALUE      591
   READINGS:
     2020-10-29 11:52:55   SPOT_ETODAY     2148
     2020-10-29 11:52:55   SPOT_ETOTAL     42301751
     2020-10-29 11:52:55   SPOT_PAC1       196
     2020-10-29 11:52:55   SPOT_PAC2       199
     2020-10-29 11:52:55   SPOT_PAC3       196
     2020-10-29 11:52:55   SPOT_PACTOT     591
     2020-10-29 11:52:55   SPOT_PDC1       275
     2020-10-29 11:52:55   SPOT_PDC2       287
     2020-10-29 11:52:55   avg_power_lastminutes_05 625
     2020-10-29 11:52:55   avg_power_lastminutes_10 608
     2020-10-29 11:52:55   avg_power_lastminutes_15 600
     2020-10-29 11:52:55   modulstate      normal
     2020-10-29 11:52:55   opertime_start  29.10.2020 06:37:52
     2020-10-29 11:52:55   opertime_stop   29.10.2020 17:39:30
     2020-10-29 11:52:55   state           591
Attributes:
   DbLogInclude (SPOT_PACTOT):300
   room       Technik
   suppressSleep 1
   target-serial 304953096
   target-susyid 181



[b]EVENT-Monitor
[/b]

2020-10-29 12:06:48 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:48 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:48 SMLUSB SZ Momentanleistung: 6086.60
2020-10-29 12:06:48 SMLUSB SZ Eigenverbrauch: 6525.6
2020-10-29 12:06:49 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:49 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:49 SMLUSB SZ Momentanleistung: 6087.70
2020-10-29 12:06:49 SMLUSB SZ Eigenverbrauch: 6526.7
2020-10-29 12:06:51 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:51 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:51 SMLUSB SZ Momentanleistung: 6039.20
2020-10-29 12:06:51 SMLUSB SZ Eigenverbrauch: 6478.2
2020-10-29 12:06:54 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:54 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:54 SMLUSB SZ Momentanleistung: 6040.50
2020-10-29 12:06:54 SMLUSB SZ Eigenverbrauch: 6479.5
2020-10-29 12:06:55 SMLUSB SZ Momentanleistung: 6026.80
2020-10-29 12:06:55 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.68
2020-10-29 12:06:55 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:55 SMLUSB SZ Momentanleistung: 6041.00
2020-10-29 12:06:55 SMLUSB SZ Eigenverbrauch: 6480
2020-10-29 12:06:56 SMAInverter PV modulstate: normal
2020-10-29 12:06:56 SMAInverter PV opertime_start: 29.10.2020 06:37:52
2020-10-29 12:06:56 SMAInverter PV opertime_stop: 29.10.2020 17:39:30
2020-10-29 12:06:56 SMAInverter PV avg_power_lastminutes_05: 450
2020-10-29 12:06:56 SMAInverter PV avg_power_lastminutes_10: 502
2020-10-29 12:06:56 SMAInverter PV avg_power_lastminutes_15: 530
2020-10-29 12:06:56 SMAInverter PV SPOT_ETOTAL: 42301874
2020-10-29 12:06:56 SMAInverter PV SPOT_ETODAY: 2271
2020-10-29 12:06:56 SMAInverter PV SPOT_PDC1: 205
2020-10-29 12:06:56 SMAInverter PV SPOT_PDC2: 210
2020-10-29 12:06:56 SMAInverter PV SPOT_PAC1: 146
2020-10-29 12:06:56 SMAInverter PV SPOT_PAC2: 149
2020-10-29 12:06:56 SMAInverter PV SPOT_PAC3: 147
2020-10-29 12:06:56 SMAInverter PV SPOT_PACTOT: 442
2020-10-29 12:06:56 SMAInverter PV 442
2020-10-29 12:06:57 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.68
2020-10-29 12:06:57 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:57 SMLUSB SZ Momentanleistung: 6014.20
2020-10-29 12:06:57 SMLUSB SZ Eigenverbrauch: 6456.2
2020-10-29 12:06:58 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.68
2020-10-29 12:06:58 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:58 SMLUSB SZ Momentanleistung: 6026.90
2020-10-29 12:06:58 SMLUSB SZ Eigenverbrauch: 6468.9
2020-10-29 12:06:59 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.69
2020-10-29 12:06:59 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:59 SMLUSB SZ Momentanleistung: 6029.10
2020-10-29 12:06:59 SMLUSB SZ Eigenverbrauch: 6471.1

MadMax-FHEM

#6
Hallo Thomas,

Zitat von: Thomas
Ok, befürchte, dass das in dem Fall wenig aufschlußreich ist. Der Vollständigkeit halber aber:

;) da hast du recht... ABER: war ja auch für die Zukunft ;) UND (trotzdem eine weitere Anmerkung): biite nächstes Mal "code-Tags" (das '#' im "Menü") für lists etc. verwenden (liest sich deutlich besser!)

So, dann "zurück":

Zitat von: Thomas
Habe momentan folgendes laufen:
attr SZ userReadings Eigenverbrauch  {ReadingsVal("PV","SPOT_PACTOT","") + ReadingsVal("SZ","Momentanleistung","")}

Das wird jetzt auch schön synchron zu den updates des StromZählers berechnet. Das heißt, solange sich das Reading SPOT_PACTOT (P AC TOTAL, also Wechselstromleistung alle 3 Phasen) vom PhotoVoltaik-Wechselrichter nicht ändert, passt alles.

Also hierfür würde ich einen Trigger angeben, also die Änderung WELCHEN Readings soll zu einer Berechnung des userReadings führen (weil aktuell wird es einige Male [unnötig] berechnet):

Zitat
2020-10-29 12:06:48 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:48 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:48 SMLUSB SZ Momentanleistung: 6086.60
2020-10-29 12:06:48 SMLUSB SZ Eigenverbrauch: 6525.6
2020-10-29 12:06:49 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:49 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:49 SMLUSB SZ Momentanleistung: 6087.70
2020-10-29 12:06:49 SMLUSB SZ Eigenverbrauch: 6526.7
2020-10-29 12:06:51 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:51 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:51 SMLUSB SZ Momentanleistung: 6039.20
2020-10-29 12:06:51 SMLUSB SZ Eigenverbrauch: 6478.2
2020-10-29 12:06:54 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.67
2020-10-29 12:06:54 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:54 SMLUSB SZ Momentanleistung: 6040.50
2020-10-29 12:06:54 SMLUSB SZ Eigenverbrauch: 6479.5
2020-10-29 12:06:55 SMLUSB SZ Momentanleistung: 6026.80
2020-10-29 12:06:55 SMLUSB SZ Zaehlerstand-Bezug-Total: 22760.68
2020-10-29 12:06:55 SMLUSB SZ Zaehlerstand-Lieferung-Total: 27994.64
2020-10-29 12:06:55 SMLUSB SZ Momentanleistung: 6041.00
2020-10-29 12:06:55 SMLUSB SZ Eigenverbrauch: 6480

attr Device userReadings ReadingName:TriggerRegEx {"Berechnung"}


Zitat von: Thomas
define Update_Eigenverbrauch notify PV:SPOT_PACTOT .......

bin ich gekommen, was ich dann für ein command ausführen könnte, um das UserReading neu zu berechnen, weiss ich nicht.

Naja hier das erwähnte setreading:


{my $val="Berechnung"; fhem("setreading SZ Eigenverbrauch $val")}


Bei "Berechnung" musst du halt anpassen wie du berechnet haben möchtest...

ABER: dann wird dein aktuelles userReadings (verm.) erneut ebenfalls getriggert und wieder berechnet (UNNÖTIG! ;)  )...

Statt dem notify ginge auch ein userReadings bei PV (BITTE TRIGGER BEACHTEN! Bzw.: gut wählen, entspr. deinem notify / evtl. da noch mal einlesen!!):


attr PV userReadings transfer:TRIGGER-REGEX {my $val="Berechnung"; fhem("setreading SZ Eigenverbrauch $val");return "done"}


Macht dasselbe wie ein entsprechend definiertes notify (spart halt ein Device ;)  ).
Das neue Reading "transfer" im Device PV zeigt dir dann an, wann eine "Übertragung" stattgefunden hat ;)

Gruß, Joachim

P.S.: war also zumindest der Eventmonitor-Auszug nicht ganz "unnütz" ;) (und auch die Device-Defs können helfen)
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Tom0711

Ok, danke an alle!

Funktioniert jetzt.

Gruß, Thomas