Notify: Frage zum Bestücken von Dummy für userReadings

Begonnen von Schorsch, 20 Februar 2013, 14:08:15

Vorheriges Thema - Nächstes Thema

Schorsch

Moin,

notify zum Schalten von Aktoren nutze ich und habe das grob verstanden. Ich würde mich aber über Hilfe zu folgendem Problem freuen:

Dummy kann mit userReadings umgehen, eines meiner Stromzählermodule nicht (weiß noch nicht, wie ich das ergänze). Als Workaround wollte ich also gern die Readings für die Zählerstände Strombezug ("StromKaufGes") und Einspeisung ("StromVerkGes") des Zweirichtungszählers "eMH_BuySell" über ein notify in ein Dummy "Stromwaage" schreiben und dann userReadings zur Ratenberechnung machen.

Der Code für das notify dafür sieht so aus:define n_Stromwaage notify eMH_BuySell:Strom.* set Stromwaage %

Problem: Telnet meldet dann ein State mit vielen Events gleichzeitig:dummy Stromwaage StromKaufGes: 004806.8316 StromVerkGes: 003651.6901 eMHstatus: 82 eMHowner: [Nrgelöscht] eMHfactory: [Nrgelöscht]

Ich habe in der commandref gesehen, dass ich wohl %EVTPART0 als "StromKaufGes" und %EVTPART1 als "StromVerkGes" ins Dummy schreiben müsste, um getrennte Readings zu bekommen - aber wie mache ich das? Bei @@myArgs etc. bin ich gerade etwas verloren und %EVTPARTn habe ich bislang in der Doku immer nur zum direkten Auswerten (< oder >) als Schaltbedingung gefunden, nicht zum Übertragen in andere Readings...

Wen's interessiert, Dummy sieht dann übrigens so aus:define Stromwaage dummy
attr Stromwaage room Strom
attr Stromwaage userReadings aktEinsp differential {sprintf("%.0f",(ReadingsVal("Stromwaage","StromVerkGes",0) *1000) *3600)}, aktBezug differential {sprintf("%.0f",(ReadingsVal("Stromwaage","StromKaufGes",0) *1000) *3600)}
attr Stromwaage stateFormat {sprintf ("StromPlus: %.0fW | StromMinus: %.0fW", ReadingsVal("Stromwaage","aktEinsp",0), ReadingsVal("Stromwaage","aktBezug",0))}


Der Dummy / userReadings-Teil funktioniert an sich auch. Testweise habe ich die userReadings nämlich mal nicht aus dem Dummy "Stromwaage", sondern direkt aus den Readings vom Zähler "eMH_BuySell" befüllt und es kamen prima Raten für StromPlus und StromMinus - aber das ist ja Quälerei für fhem).

Ich weiß, dass die eigentlich saubere Lösung über eine Implementierung der userFnReadings in das Stromzählermodul ginge, habe aber im Forum von Problemen mit falschen Aufrufen gelesen und weiß nicht, wie das umzusetzen ist bzw. wonach ich im Modul wegen Aufrufen suchen müsste um die fhem Standardaufrufe zu verifizieren (das Attr steht logischerweise nicht drin). Kommt später...

Vielen Dank für die Hilfe!
Georg

MisterEltako

ZitatIch habe in der commandref gesehen, dass ich wohl %EVTPART0 als "StromKaufGes" und %EVTPART1 als "StromVerkGes" ins Dummy schreiben müsste, um getrennte Readings zu bekommen - aber wie mache ich das? Bei @@myArgs etc. bin ich gerade etwas verloren und %EVTPARTn habe ich bislang in der Doku immer nur zum direkten Auswerten (< oder >) als Schaltbedingung gefunden, nicht zum Übertragen in andere Readings...

so bekommst du z.B. eigene Readings ins Dummy eingetragen:
define Stromwaage dummy
attr Stromwaage room Strom

define n_Stromwaage notify eMH_BuySell:Strom.*:.* {\
  readingsBeginUpdate($main::defs{Stromwaage});;\
  readingsBulkUpdate($main::defs{Stromwaage},'StromKaufGes',ReadingsVal('Temp','%EVTPART0',''));;\
  readingsBulkUpdate($main::defs{Stromwaage}, 'StromVerkGes', ReadingsVal('Temp', '%EVTPART1', ''));;\
  readingsEndUpdate($main::defs{Stromwaage},1);;\
}

...musst du auf deine genauen Bedürfnisse einfach anpassen.

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Schorsch

Vielen Dank! Prinzip verstanden, das probiere ich heute Abend gleich mal aus.

Schönen Tag!
Georg