Hi,
ich habe eine RG in der ich mir alle Batteriewerte anzeigen lasse:
.*:battery
Passt...
jetzt möchte ich mir zu diesen Devices auch noch das Reading reachable anzeigen (wenn vorhanden) lassen.
(Laut Commandrev. Zweites Reading durch Komma getrennt.)
Also so: .*:battery,reachable
Nun werden mir aber alle Geräte angezeigt die das reading battery oder reachable haben ...
Hab ich was Überlesen oder geht das nicht... :)
Grüßle
Pascal
Handelt es sich nicht an der Stelle um eine devspec?
Dann sollte es - wie üblich - so gehen:
.*:(battery|reachable)
Hallo Beta-User,
leider nein jetzt erscheinen die Geräte mehrfach untereinander :-)
Grüßle
Pascal
Ah, ok, da war doch was...
Da gab es das "!", falls man eventuell nicht vorhandene Readings anzeigen lassen will. Versuch's mal so:
.*:battery,!reachable
:o jetzt zeigt die RG ALLE Geräte an... ich meine wirklich ALLE :-)
Grüßle
Hmm, ist ja eigentlich logisch, wenn vorne die regex entsprechend großzügig ist. Dann kann ich leider im Moment auch nicht weiter helfen :( .
Holla,
bin zwar kein readingsgroup Experte, aber imho hast Du es schon richtig gehabt: .*:battery,reachable findet alle Geräte die das Reading battery haben ... zusätzlich nimmt er das Reading reachable dazu.
valueColumn { battery => 1, reachable=> 2}
fehlt dann noch, dann sollte er die Devices mit beiden Readings in eine Spalte batterie und andere reachable anzeigen. Wenn beides nicht vorhanden ist, dann nur das battery, das reachable sollte dann nicht angezeigt werden.
Aber wie Beta-User schon schrieb, musst Du auf die Auswahl der Devices achten. Wenn diese ".*:battery,reachable" lautet, findet er alle geräte die ein battery Reading haben. Ein Battery Reading findet er z.B. nicht ;)
Vielleicht interessiert Dich meine Readingsgroup dazu, die eine ähnliche Funktion hat:
Alle Geräte mit Netzwerk (Geräte die Activity,LWT oder ein timestamp Reading haben) werden aufgelistet, darin werden dann Geräte mit linkquality oder Wifi_RSSI in die zweite Spalte geschoben (falls vorhanden) und battery oder Battery readings (falls vorhanden) in die dritte Spalte. Funktioniert soweit ganz gut :)
<Gerät>,<Netzwerk>,<Verbindung>,<Batterie> .*:(Activity|LWT|timestamp),(linkquality|Wifi_RSSI),[Bb]attery
Die entsprechenden Icons und Anzeigen kommen dann später dazu, aber erstmal willst Du sicher die Anzeige so haben wie sie sein soll... vielleicht hiflt das ja :)
Grüße
Andreas
Hallo Andreas,
Danke für deine ausführliche Erläuterung!
Die Spaltenzuordung hab ich eingefügt Klasse!
Trotzdem werden noch Geräte angezeigt die kein Reading battery haben sonder nur reachable...
Ich kenne die ,,[B][b]attery"
Schreibweise...
Komisch...
Dankeschön und ein schönes Wochenende...
Hier mal mein raw Export
defmod rg_battery_prz_no readingsGroup *.:battery,reachable
attr rg_battery_prz_no DbLogExclude .*
attr rg_battery_prz_no alias Batteriestatus
attr rg_battery_prz_no group Batteriestatus
attr rg_battery_prz_no mapping %ALIAS
attr rg_battery_prz_no noheading 1
attr rg_battery_prz_no notime 1
attr rg_battery_prz_no room FHEM->Systemstatus
attr rg_battery_prz_no sortDevices 1
attr rg_battery_prz_no valueColumn { battery => 1, reachable=> 2}
attr rg_battery_prz_no valueFormat {return "0" if( $VALUE eq "0" );; return "1" if( $VALUE eq "1" );;return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );;return "100" if( $VALUE > "50");; return "50" if( $VALUE > "30");; return "0" if( $VALUE < "20" )}
attr rg_battery_prz_no valueIcon {'reachable.0' => 'security@red','reachable.1' => 'security@green','battery.0' => 'measure_battery_0@red','batteryPercent.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','batteryPercent.100' => 'measure_battery_100@green','batteryPercent.50' => 'measure_battery_50@orange',,'battery.50' => 'measure_battery_50@orange'}
Bitte Gern :) .... Schön wenn es geholfen hat ... aber der Rest ist dennoch merkwürdig, wobei:
wie gesagt, kein Experte, eher laienhafter Versuch zu helfen ;)
Zitat von: raiderxxl am 16 Mai 2020, 10:02:57
attr rg_battery_prz_no valueFormat {return "0" if( $VALUE eq "0" );; return "1" if( $VALUE eq "1" );;return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );;return "100" if( $VALUE > "50");; return "50" if( $VALUE > "30");; return "0" if( $VALUE < "20" )}
Hier könnte imho der Grund liegen. Wenn Du return "0" if( $VALUE eq "0" ) machst, könnte er ein Gerät anzeigen, dessen battery Wert 0 ist (ist ja nicht da also 0).
Wenn Du es richtig haben willst, würde ich an Deiner Stelle einmal Value Icon und Format löschen, dann siehst Du die Ausgabe der RG und somit auch welche Readings bei reachable gelesen werden, so dass er dann das Gerät anzeigt. Danach kannst Du Dich dann Schritt für Schritt an die Anzeigen rantasten
Abgesehen dasvon kannst Du den Teil:
return "0" if( $VALUE eq "0" );; return "1" if( $VALUE eq "1" );;
weglassen weil die Routine keine 0 ausgeben muss, wenn der Wert 0 ist und 1 bei Wert 1 --> Denn das
ist ja bereits der Wert.
Zudem als Tipp von mir (weil ich mir damit selbst schon mal n Beinchen gestellt hab):
nimm lieber eindeutige Dinge in der Definition also lieber
{return "batt_low" if( $VALUE eq "0" );; return "batt_high" if( $VALUE eq "1" );;.......
Oder auch
{return "batt_0" if( $VALUE eq "0" );; return "batt_1" if( $VALUE eq "1" );;.......
statt 1 und 0. Das erleichtert bei der Fehlersuche schon ungemein. Weiter hinten auch
return "batt_high(1)" if( $VALUE >= 50);;
dann brauchst Du in Valueicon nur ein Icon für Batterie > 50 und musst nur dieses zuordnen, die restlichen machst Du dann separat.
VG
Andreas
Hi
Die Attribute hab ich natürlich auch schon gelöscht... kein unterschied.
Grüße
Pascal
Hier mal zum nachstellen:
RG
defmod rg_battery_prz_no readingsGroup *.:battery,reachable
attr rg_battery_prz_no DbLogExclude .*
Testgeräte
defmod test dummy
attr test DbLogExclude .*
attr test alias Rauchmelder Test
attr test icon secur_smoke_detector
setstate test 2020-05-16 12:31:56 battery 100
setstate test 2020-05-16 12:33:32 reachable 1
defmod test1 dummy
attr test1 DbLogExclude .*
attr test1 alias Rauchmelder Test1
attr test1 icon secur_smoke_detector
setstate test1 2020-05-16 12:31:56 battery 100
defmod test2 dummy
attr test2 DbLogExclude .*
attr test2 alias Rauchmelder Test2
attr test2 icon secur_smoke_detector
setstate test2 2020-05-16 12:31:56 battery 100
defmod test3 dummy
attr test3 DbLogExclude .*
attr test3 alias Rauchmelder Test3
attr test3 icon secur_smoke_detector
setstate test3 2020-05-16 12:34:30 reachable 1
Das kann doch nun wirklich nicht so schwer sein...
Oder ist es ein bug? Den so wie es in der Bibel (Commandref)steht funktioniert es nicht...
Schönen Vatertag euch allen...
Grüßle
Pascal
Dein "zum nachstellen" hat imho nen fehler.
Setstate..... setzt das Internal STATE, nicht ein reading.
https://fhem.de/commandref_DE.html#setstate
Was du willst ist setreading.
https://fhem.de/commandref_DE.html#setreading
Gesendet von meinem S68Pro mit Tapatalk
Hallo Frank,
das sind raw Exporte die mir FHEM vorgibt also können die nicht falsch sein! ;)
Und nein es werden die Reading gesetzt!
Die können auch weggelassen werden dann müssen die readingswerte von Hand mit setreading gesetzt werden....
Das tut aber eigentlich nichts zur Sache...
Liebe Grüße
Pascal
Ach so,
Dann passt es.
Dachte weil du "zum nachstellen" geschrieben hast wäre das komplett zum Fehler reproduzieren. Inkl der befehle zum readings setzen.
Gesendet von meinem S68Pro mit Tapatalk
Wenn du die so importierst werden die Readings gesetzt und nicht internals
Grüßle
Pascal
ok dann sehe ich das so, das es ein Bug ist, oder der Entwickler es so gewollt hat :)
Dann müsste einer noch die commandrev ändern!
Grüßle
Pascal