Batteriestatus mit Dummy anzeigen

Begonnen von igelkotze, 07 November 2014, 12:13:21

Vorheriges Thema - Nächstes Thema

igelkotze

Hi...

ich probiere es jetzt schon eine weile aber ich komme nicht dahinter...

ich habe jetzt folgendes gemacht:

1. Dummy anlegen
define WZ_Battery dummy

2. Notify anlegen
define WZ_Battery_Val notify WZ_Battery:batteryLevel {fhem "set WZ_Battery ".readingsVal("WZ_Heizung","batteryLevel",0)}

auch mit readingsGroup habe ich es probiert:
define WZ_Battery_Val notify WZ_Battery:batteryLevel {fhem "set WZ_Battery ".readingsGroup("WZ_Heizung","batteryLevel",0)}

Folgendes habe ich auch schon getestet:
define WZ_Battery_Val notify WZ_Battery {fhem "set WZ_Battery ".readingsVal("WZ_Heizung","batteryLevel",0)}
define WZ_Battery_Val notify WZ_Battery {fhem "set WZ_Battery ".readingsGroup("WZ_Heizung","batteryLevel",0)}

Doch aus irgend einem Grund bleibt der status des Dummys auf "??"...

Muss ich noch irgend ein attr setzten? oder irgendie die Übertragung "erzwingen"?

Bei "define Bat_Test readingsgroup SZ_Heizung:batteryLevel" bekomme ich den Wert angezeigt aber würde ich einen Dummy brauchen...

Lg Clemens

chris1284

#1
warum willst du unbedingt einen dummy erzeugen nur um den Batteriestatus anzuzeigen. mach das doch direkt über eine Readingsgroup

define battery_view readingsGroup WZ_Battery:batteryLevel

ansonsten kannst im dummy ein userreading per setreading setzen oder direkt per set WZ_Battery [wert]

Lesestoff
http://fhem.de/commandref.html#readingsGroup
http://www.fhemwiki.de/wiki/ReadingsGroup
http://fhem.de/commandref.html#dummy

maxritti

Ich bin mir jetzt nicht sicher, ob ein Blick ins Log von Fhem hier hilfreich sein könnte.  ;)

Auffällig ist allerdings, dass in sämtlichen Beispielen die ich finde, der Befehl zu ReadingsVal anders geschrieben wird als in Deinem Code.

igelkotze

Der Sinn hinter dem Dummy ist, dass ich je nach batterylevel im Floorplan nur ein kleines Icon anzeigen möchte.. ich habe es mit readingsgroup probiert aber nicht geschafft...

bei einem wert über 3 soll icon_battery4,  bei 2,9-2,6 soll icon_battery3, bei 2,5-2,2 icon_battery2 und bei kleinergleich 2,1 icon_battery1 angezeigt werden.
dabei bin ich gescheitert... ich dachte mir dass es eventuell einfacher ist, wenn ich das per Dummy mache...

Auch mit ReadingVal funktioniert es nicht...


marvin78

Du musst dir einige Grundlagen ansehen. ReadingsGroup ist keine FHEM Funktion, sondern ein eigenes Modul (siehe Commandref).

Die Funktion um ein Reading auszulesen, heißt tatsächlich ReadingsVal().  Du machst oben ein notify auf deinen dummy um demselben ein Reading zu verpassen. Das kann nicht funktionieren. Das notify muss auf das eigentliche Device WZ_Heizung lauten. Und dann benötigst du auch die Funktion ReadingsVal() nicht, da du den Wert mit der Variablen $EVENT bzw. $EVTPARTx erhälst. Ich will hier nicht ins Detail gehen, aber schau dir (nochmal) die Commandref zum Thema notify an. Da steht alles, was du brauchst.

chris1284

die Änderung der Icons in der Readingsgroup je nach Wert machst du über

valueIcon

Beispiele gibts im Wiki-Link

igelkotze

Zitat von: marvin78 am 07 November 2014, 12:50:10
Du musst dir einige Grundlagen ansehen. ReadingsGroup ist keine FHEM Funktion, sondern ein eigenes Modul (siehe Commandref).

Die Funktion um ein Reading auszulesen, heißt tatsächlich ReadingsVal().  Du machst oben ein notify auf deinen dummy um demselben ein Reading zu verpassen. Das kann nicht funktionieren. Das notify muss auf das eigentliche Device WZ_Heizung lauten. Und dann benötigst du auch die Funktion ReadingsVal() nicht, da du den Wert mit der Variablen $EVENT bzw. $EVTPARTx erhälst. Ich will hier nicht ins Detail gehen, aber schau dir (nochmal) die Commandref zum Thema notify an. Da steht alles, was du brauchst.

Ich habe es versucht... aber der Dummy gibt mir einfach nichts aus... wenn ich es richtig versanden habe müsst es doch so passen:
define WZ_Battery_Val notify WZ_Heizung:batterylevel {fhem "set WZ_Battery $EVTPART1"}

Das müsste doch dem Dummy den Wert geben oder? Also State 3,1

Das ist aber leider nicht der Fall...

Lg Clemens

marvin78

Ob das so funktionieren kann, kann man ohne genauere Angaben zu den Devices und den Events nicht sagen. Wie das Event, das WZ_Heizung ausgibt wirklich lautet, siehst du im Event-Monitor. Was sagt denn das Log? Wird überhaupt ein Event erzeugt? Hast du event-on-change-reading im Device WZ_Heizung gesetzt? Ist $EVTPART1 wirklich gefüllt? Hast du das zum Testen mal geloggt (per Log 1,$EVTPART1)? batteryLevel wird, wenn es sich hier um Homematic handeln sollte, sicher nicht ständig gesendet.

Mein Tipp bleibt: Beschäftige dich mit den Grundlagen, bevor du an sowas gehst. Schaue dir genau an, wie so ein notify funktioniert, informiere dich allgemein und hier im speziellen über Events und wie sie aussehen können. Beschäftige dich damit, wie du notifys und andere Konstrukte testen kannst (Stichwort Log) etc. Zu allem findest du hier im Forum, im Wiki und in der commandref massig zu lesen. Ich kann dir hier keinen fertigen Code liefern (und ich will das auch nicht). Mir fehlen die benötigten Daten. Du hast sie aber.

Ob der Dummy dann wirklich nötig ist, ist dann wieder eine andere Sache.