FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: raiderxxl am 15 Mai 2020, 13:02:38

Titel: Einfache Frage (Vermutlich doch nicht, oder doch ein Bug? ....) ;)
Beitrag von: raiderxxl am 15 Mai 2020, 13:02:38
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
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: Beta-User am 15 Mai 2020, 13:14:33
Handelt es sich nicht an der Stelle um eine devspec?

Dann sollte es - wie üblich - so gehen:
.*:(battery|reachable)

Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: raiderxxl am 15 Mai 2020, 13:25:09
Hallo Beta-User,
leider nein jetzt erscheinen die Geräte mehrfach untereinander :-)

Grüßle

Pascal
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: Beta-User am 15 Mai 2020, 14:05:42
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
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: raiderxxl am 15 Mai 2020, 14:16:20
 :o jetzt zeigt die RG ALLE Geräte an... ich meine wirklich ALLE :-)

Grüßle

Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: Beta-User am 15 Mai 2020, 14:20:40
Hmm, ist ja eigentlich logisch, wenn vorne die regex entsprechend großzügig ist. Dann kann ich leider im Moment auch nicht weiter helfen :( .
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: flummy1978 am 16 Mai 2020, 01:07:29
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
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: raiderxxl am 16 Mai 2020, 10:02:57
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'}
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: flummy1978 am 16 Mai 2020, 12:00:46
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
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: raiderxxl am 16 Mai 2020, 12:28:47
Hi

Die Attribute hab ich natürlich auch schon gelöscht... kein unterschied.

Grüße

Pascal
Titel: Antw:Einfache Frage (Vermutlich) ;)
Beitrag von: raiderxxl am 16 Mai 2020, 12:41:52
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

Titel: Antw:Einfache Frage (Vermutlich doch nicht....) ;)
Beitrag von: raiderxxl am 21 Mai 2020, 09:07:15
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
Titel: Antw:Einfache Frage (Vermutlich doch nicht, oder doch ein Bug? ....) ;)
Beitrag von: Frank_Huber am 21 Mai 2020, 09:25:40
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

Titel: Antw:Einfache Frage (Vermutlich doch nicht, oder doch ein Bug? ....) ;)
Beitrag von: raiderxxl am 21 Mai 2020, 10:18:31
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


Titel: Antw:Einfache Frage (Vermutlich doch nicht, oder doch ein Bug? ....) ;)
Beitrag von: Frank_Huber am 21 Mai 2020, 10:20:37
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

Titel: Antw:Einfache Frage (Vermutlich doch nicht, oder doch ein Bug? ....) ;)
Beitrag von: raiderxxl am 21 Mai 2020, 10:23:18
Wenn du die so importierst werden die Readings gesetzt und nicht internals



Grüßle

Pascal

Titel: Antw:Einfache Frage (Vermutlich doch nicht, oder doch ein Bug? ....) ;)
Beitrag von: raiderxxl am 28 Mai 2020, 08:44:55
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