Werte aus einem anderen Device per userReadings

Begonnen von Alveole, 28 April 2023, 23:45:19

Vorheriges Thema - Nächstes Thema

Alveole

Hallo Leute,
ich steh gerade irgendwie auf dem Schlauch und komme nicht weiter. Trotz Forum und Hilfe.
Was möchte ich tun:
Ich möchte aus meinen MyObis Device (Strom_MyObis) die Totale Einspeisung (total_feed) in einem neuen Dummy-Device (Strom_MyObis_feed_format) in ein Reading (wert-get) übertragen. Das ganze noch geteilt durch 1000.

define Strom_MyObis_feed_format dummy
attr Strom_MyObis_feed_format alias Zählerstand Einspeisung gesamt (MyObis)
attr Strom_MyObis_feed_format event-on-change-reading .*
attr Strom_MyObis_feed_format readingList wert-get
attr Strom_MyObis_feed_format stateFormat wert-get kWh
attr Strom_MyObis_feed_format userReadings wert-get:Strom_MyObis:total_feed.* { ReadingsVal("Strom_MyObis","total_feed",0)/1000 }

Nur leider kommen keine Werte an.

Ich hatte das bei einem anderen Verbrauch schon einmal mit einem extra notify gelöst. Nur wollte ich dieses mal mir dies sparen. Geht es überhaupt so?

Hat jemand eine Idee, wie der Fehler im userReading liegt?

Danke!

binford6000

ZitatNur leider kommen keine Werte an.
Ich hatte das bei einem anderen Verbrauch schon einmal mit einem extra notify gelöst. Nur wollte ich dieses mal mir dies sparen. Geht es überhaupt so?
Hat jemand eine Idee, wie der Fehler im userReading liegt?
Hallo Alveole,
userReadings werden getriggert wenn in dem device zu dem sie gehören ein reading aktualisiert wird.
Daher kann das so nicht funktionieren. Ein notify mit setreading zum dummy dagegen schon.
Spricht denn etwas dagegen das userReading im originalen device zu erstellen?

VG Sebastian

Alveole

Hallo Sebastian,
Danke. Ich habe mir jetzt ein userReading im Devive gebaut.

wert_get_total_feed { ReadingsVal("Strom_MyObis","total_feed",0)/1000 },
Wie kann ich mir nun diesen Wert, und später einen Weiteren, in einer Group (Strom) anzeigen lassen? Bei einem einzelnen Device würde das ja einfach mit dem attr Group klappen.

Danke!

MadMax-FHEM

#3
Alles was du anzeigen willst in attr stateFormat "packen" und dann dem Device die passende group.
So würde ich das machen...

EDIT: https://wiki.fhem.de/wiki/DeviceOverview_anpassen

EDIT:
Zitat von: commandrefstateFormat
Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls nicht gesetzt, dann wird das state Reading übernommen. Sonst werden alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die Auswertung passiert bei jeder Änderung eines Readings.
Die hier beschriebene "set magic" wird auch angewendet.
Hinweis: Manche Module aktualisieren STATE ganz oder teilweise direkt. In diesen Fällen kann es zu abweichenden Anzeigen kommen.

EDIT: ich würde dem userReadings auch einen Trigger verpassen. Ansonsten wird es bei jedem Event im Device "ausgewertet"... Aber evtl. hast du das ja (und man sieht es im gezeigten Ausschnitt nur nicht)

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)

binford6000

ZitatWie kann ich mir nun diesen Wert, und später einen Weiteren, in einer Group (Strom) anzeigen lassen? Bei einem einzelnen Device würde das ja einfach mit dem attr Group klappen.
Wenn das Reading von einem anderen Device kommt dann könntest du es auch mal mit einer ReadingsGroup versuchen.

ZitatEDIT: ich würde dem userReadings auch einen Trigger verpassen. Ansonsten wird es bei jedem Event im Device "ausgewertet"... Aber evtl. hast du das ja (und man sieht es im gezeigten Ausschnitt nur nicht)
Im dummy war ein Trigger dabei. Schadet im original Device aber auch nicht... ;-)