Bekomme Readingsgroup nicht zum Laufen

Begonnen von aski71, 15 Mai 2016, 23:57:08

Vorheriges Thema - Nächstes Thema

aski71

Liebe Community,

irgendwie drehe ich bald durch, weil ich die scheinbar einfachsten Sachen nicht zum Laufen bekomme.

Ich wollte mir eine Readingsgroup zum Batteriestatus anlegen und habe dabei folgendes Beispiel gefunden:

#Batteriestatus aller Devices im Raum Zentral anzeigen
define ZE.Batterie readingsGroup .*:[Bb]attery\
.*:[Bb]atteryLevel
attr ZE.Batterie notime 1
attr ZE.Batterie room Zentral
attr ZE.Batterie valueFormat {return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );; return "25" if( $VALUE < 2.1 );; return "50" if( $VALUE < 2.3 );; return "75" if( $VALUE < 2.5 );; return "100"}
attr ZE.Batterie valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}


Nun stellte ich fest, dass meine HM-Geräte gar kein Battery oder BatteryLevel Reading haben, sondern bestenfalls eine LOWBAT.
Dies wird im jeweiligen Device mittels "substitute" auf "no" oder "yes" gesetzt. So wird es im Device als reading auch angezeigt.

Also änderte ich obiges Beispiel wie folgt ab:

#Batteriestatus aller Devices im Raum Zentral anzeigen
define ZE.Batterie readingsGroup .*:LOWBAT
attr ZE.Batterie notime 1
attr ZE.Batterie room Zentral
attr ZE.Batterie valueFormat {return "0" if( $VALUE eq "yes" );; return "100" if( $VALUE eq "no" );;}
attr ZE.Batterie valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green'}


Ergebnis ist nun:
Ich bekomme im Raum Zentral die Überschrift "ZE.Batterie" und das war's.
Keine Readings, keine Batterie-Icons, keine Zeilen mit Devices, nix. Nur die Überschrift.
Ich hab schon alles mögliche gewälzt, aber ohne Erfolg.
Wie funktioniert das?!

VG Alex

MadMax-FHEM

Also meine HM Geräte liefern alle 'battery' und die Wand-/Heizkörperthermostate zusätzlich 'batteryLevel'

Mach doch mal ein list eines deiner HM-Geräte...

Und schau mal im EventMonitor (Filter auf dein[e] HM-Gerät[e] gesetzt wg. Übersichtlichkeit) was da so kommt...
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)

aski71

Ich bin jetzt auf folgendes gekommen.

Die Readings zu den HM Geräten werden alle mit <channelname>.<reading> abgelegt.

Das heißt: Heißt der CCU-Channel "Fenster_links", dann heißt das Reading Fenster_links.LOWBAT

Das führt dazu, dass man die Readinggroup wiefolgt definieren muss:

define ZE.Batterie readingsGroup .*:*.LOWBAT

Damit werden alle Geräte erkannt, die LOWBAT haben und dann aber etwas unschön dargestellt (um beim Beispiel zu bleiben):

FensterLinks:Fenster_links.LOWBAT  no

Damit könnte ich im Zweifel noch leben. Jetzt will ich aber das "no" oder "yes" mit einem Icon ersetzen.

Und da falle ich dann mit
attr ZE.Batterie valueIcon {'*.LOWBAT.yes' => 'measure_battery_0@red','*.LOWBAT.no' => 'measure_battery_100@green'}
auf die Nase, weil fhem im valueIcon Attribut die Wildcard *.LOWBAT.yes nicht unterstützt. Und LOWBAT.yes folgerichtig aus obiger Herleitung nicht funktioniert.

Das heißt: Ich müsste jedes Gerät einzeln vollständig eingeben:
attr ZE.Batterie valueIcon {'Fenster_links.LOWBAT.yes' => 'measure_battery_0@red','Fenster_links.LOWBAT.no' => 'measure_battery_100@green', 'Fenster_rechts.LOWBAT.yes' => 'measure_battery_0@red','Fenster_rechts.LOWBAT.no' => 'measure_battery_100@green',  <.....usw....usw......>}

Das kann ja eigentlich nicht der Sinn sein.
Wohin kann man das als Fehler melden?

VG Alex

MadMax-FHEM

Ich bin jetzt bei ValueIcon auch kein Spezialist.

Ich habe es etwas umständlich gelöst, indem ich eine Sub in meiner 99_myUtils aufrufe und je nach übergebenen Werten einfach das entsprechende Icon zurückgebe...

Hast du schon mal im Wiki geschaut?
Habe alles was ich so brauche (inkl. Batteriestatus etc.) dort gefunden und anpassen können:

http://www.fhemwiki.de/wiki/ReadingsGroup

Oder vielleicht auch hier mal:

http://www.meintechblog.de/2015/08/fhem-rechtzeitige-benachrichtigung-bei-leeren-batterien/

Ich habe ja auch so einiges an Homematic aber LOWBAT ist mir noch nicht untergekommen.
Wie gesagt meine Fensterkontakte melden nur "battery:ok" (oder halt nicht ok) und die Thermostate zusätzlich auch batteryLevel und da halt (wie ebenfalls geschrieben) den aktuellen Batteriezustand (also aktuelle Spannung).

Was für HM-Geräte hast du??
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)

aski71

Ja, das sind die Quellen, die ich auch befragt habe.

Aber das Problem bleibt leider das von mir beschriebene.
Vielleicht liegt das daran, dass ich nicht mit einer HMLAN Bridge arbeite, sondern die Devices alle mit der CCU2 verbunden sind und per HMCCUDEV und HMCCUCHN in fhem eingebunden sind.
Auch bei iobroker werden die Readings genau so angezeigt, wie in fhem über HMCCUCHN/HMCCUDEV.

Darum nochmal die Frage:
Wohin kann man ein Fehlerticket für fhem melden?

valueIcon müsste lernen, Wildcards zu verstehen:

attr ZE.Batterie valueIcon {'*.LOWBAT.yes' => 'measure_battery_0@red','*.LOWBAT.no' => 'measure_battery_100@green'}


MadMax-FHEM

Ah, ok.
Ich habe sie direkt (HM-CFG-USB) an fhem und auch die Beispiele...

Bei mir funktioniert es daher wie beschrieben bzw. habe ich mir dort meine Ideen abgeschaut...

Icons, Formatierung, etc. mache ich immer durch den Aufruf einer Funktion in myUtils und der Rückgabewert ist dann entsprechend.
D.h. bei attr valueIcon rufe ich eine Sub, übergebe was ich dort brauche, z.B. $EVENT und entscheide dann welches icon es sein soll und gebe das dort dann als return zurück...

Ist (manchmal) schon etwas "übertrieben" aber ich hab mal so begonnen bzw. bei anderen Dingen (Heizungsübersicht/-steuerung) durchaus (sehr) praktisch.

Daher nutze ich kaum die Möglichkeiten die direkt in der fhem.cfg gehen...

Kann also bei dem icon-Problem so leider nicht helfen...

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)

justme1968

man kann um key (das ist das links vom =>) nur strings verwenden. keine regex.

du kannst die perl code varainte {...} verwenden und so das icon bestimmen.

ich meine aber du kannst sogar den device Namen einfach weg lassen und nur  reading.wert verwenden. kann aber gerade nicht nachschauen.

gruss
  andre 
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

MadMax-FHEM

Perl code Variante ist was ich mache...
...ausgelagert in eine Sub in myUtils weil bei manchen Dingen die Auswertung etwas länglich werden kann/ist und das wird (mir) dann in der fhem.cfg zu unübersichtlich... ;-)

Wie ob das was andre noch geschrieben hat direkt und einfacher funktioniert kann ich leider (auch) nicht sagen...

Aber lässt sich ja (bei dir/durch dich) leicht testen...

Gruß und viel Erfolg, 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)

aski71

Danke, justme1968.
Wie müsste das aussehen, wenn ich den Device Namen weglasse?
Hab ich nämlich auch schon probiert, hat aber nicht funktioniert. Vielleicht habe ich was falsch gemacht.

MadMax:
Wie sieht diese Perl code Variante aus?

MadMax-FHEM

attr BatteryStatus valueIcon {my_SetBatteryIcon($READING, $VALUE)}


in my_SetBatteryIcon werte ich dan $READING und $VALUE aus und "setze" dann das entsprechende icon, indem ich beispielsweise folgendes tue:

Sub my_SetBatteryIcon($$)
{
  my ($Device, $Value)  = @_;
  my $Icon = "measure_battery_" . "$Value"; # here the matching icon is "set"

...

    if($Value > 75)
    {
      $Icon = $Icon . "\@green"; # between 75% and 100%
    }

...

return $Icon;

}

somit bekomme ich je nach "Füllstand" der Batterie das entsprechende Batterie-Icon und die Farbe...

Ist allerdings nur als Beispiel für dich zu sehen, da ich die Werte battery bzw. batteryLevel bekomme und mit batteryLevel vorher anhand des R-battLimit (oder so / gibt an bei welcher Spannung der Batterien "Schluss" ist) einen prozentualen "Füllstand" berechne und in einem Dummy speichere.

Die Readingsgroup bei mir geht dann auf die Werte des Dummy...

Was ich in eine Sub ausgelagert habe kannst du aber auch direkt in die geschweiften Klammern tun.
Ist direkt Perl-Code. Das Ergebnis der dortigen Auswertung muss halt dann das Icon sein...

Ich habe es halt ausgelagert, damit die fhem.cfg (für mich) "übersichtlicher" wird und ich (soweit es geht) "Konfiguration" von "Programmierung" trenne...

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)

aski71

Danke für Deine Hilfe, Joachim!
Ich habe es jetzt als Inline-Perl realisiert. So klappt es.  :D

Letzte Frage:
Wenn ich das auch als Sub auslagern möchte, damit es nicht in die fhem.cfg geht: Wo muss dann die Subroutine hin? Wie muss sie definiert werden?

MadMax-FHEM

Hier ist es beschrieben:

http://www.fhemwiki.de/wiki/99_myUtils_anlegen

Dort habe ich die erwähnte my_SetBatteryIcon drin...

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)

aski71