Iconfarbe mit mehreren Bedingungen

Begonnen von hasenhirn, 05 Januar 2020, 19:10:06

Vorheriges Thema - Nächstes Thema

hasenhirn

Hallo,

ich habe jetzt schon einige Tage probiert und komme einfach nicht zur richtigen Lösung  :-[
Vermutlich ist die Lösung total einfach und ich stelle mich nur zu blöde an  :(
Bei meiner Wallbox habe ich den Status der Verbindung über ein Steckersymbol dargestellt.
Wenn das Kabel an der Wand hängt und nicht eingesteckt ist, ist das Symbol rot -> funktioniert.
Wenn das Kabel im Auto eingesteckt ist, ist das Symbol blau -> funktioniert
Ist das Kabel eingesteckt und das Laden freigeschaltet soll es grün sein -> funktionier leider nicht  :'(
Ich habe eine Keba Wallbox mit dem Modul von marcus42 https://forum.fhem.de/index.php/topic,44869.0.html

So habe ich versucht das zu lösen:
defmod Status_Verbindung readingsGroup Autorisierung:Plug
attr Status_Verbindung alias <br>
attr Status_Verbindung mapping {'Plug' => 'Verbindungsstatus'}
attr Status_Verbindung nolinks 1
attr Status_Verbindung notime 1
attr Status_Verbindung room Wallbox
attr Status_Verbindung valueIcon { 'Plug.plugged_on_wallbox_and_locked' => 'Typ_2_Stecker@red', 'Plug.plugged_on_wallbox_ev_and_locked' => 'Typ_2_Stecker@blue', ReadingsVal("Autorisierung","Plug",0) eq "plugged_on_wallbox_ev_and_locked" &&  ReadingsVal("Autorisierung","Authreq",0) eq "1"  => 'Typ_2_Stecker@green' }\


und das ist die Definition der Wallbox:
defmod Autorisierung KEBA 192.168.1.34 7090
attr Autorisierung devStateIcon disabled:ios_off_fill@red:freischalten enabled:ios_on_fill
attr Autorisierung eventMap /start 8dc5cdde00000000 00000000000000000000:freischalten/
attr Autorisierung icon schluessel
attr Autorisierung room Wallbox
attr Autorisierung stateFormat Enablesys
attr Autorisierung userReadings Autorisierung.VerbrauchGesamt {ReadingsVal("Autorisierung","Etotal",0)/10000}

setstate Autorisierung disabled
setstate Autorisierung 2019-12-02 00:00:39 AuthON 1
setstate Autorisierung 2019-12-02 00:00:39 Authreq 0
setstate Autorisierung 2020-01-04 18:10:22 Autorisierung.VerbrauchGesamt 567.2054
setstate Autorisierung 2019-11-27 17:24:47 Backend 0
setstate Autorisierung 2019-11-27 17:24:47 COM-module 0
setstate Autorisierung 2019-12-02 00:00:39 CurrFS 0
setstate Autorisierung 2019-12-02 00:00:39 CurrHW 32000
setstate Autorisierung 2019-12-02 00:00:39 Currtimer 0
setstate Autorisierung 2019-12-02 00:00:39 Curruser 63000
setstate Autorisierung 2019-11-27 17:24:47 DIP-Sw1 0x25
setstate Autorisierung 2019-11-27 17:24:47 DIP-Sw2 0x00
setstate Autorisierung 2020-01-04 18:10:22 Enablesys disabled
setstate Autorisierung 2019-12-02 00:00:39 Enableuser enabled
setstate Autorisierung 2020-01-04 18:09:48 Epres 54578
setstate Autorisierung 2019-12-02 00:00:39 Error1 0
setstate Autorisierung 2019-12-02 00:00:39 Error2 0
setstate Autorisierung 2019-11-26 19:32:47 Etotal 5672054
setstate Autorisierung 2019-11-27 17:24:47 Firmware P30 v 3.9.24 (190308-122403)
setstate Autorisierung 2019-11-26 19:32:47 I1 16114
setstate Autorisierung 2019-11-26 19:32:47 I2 16146
setstate Autorisierung 2019-11-26 19:32:47 I3 16207
setstate Autorisierung 2019-12-02 00:00:39 ID 2
setstate Autorisierung 2019-12-02 00:00:39 Input 0
setstate Autorisierung 2020-01-04 18:10:21 Maxcurr 0
setstate Autorisierung 2019-12-02 00:00:39 Maxcurr-Percent 1000
setstate Autorisierung 2019-12-02 00:00:39 Output open
setstate Autorisierung 2019-11-26 19:32:47 P 11191765
setstate Autorisierung 2019-11-26 19:32:47 PF 999
setstate Autorisierung 2020-01-04 18:10:21 Plug plugged_on_wallbox_and_locked
setstate Autorisierung 2019-11-27 17:24:47 Product KC-P30-EC240422-M0R
setstate Autorisierung 2019-12-02 00:00:39 Sec 2504971
setstate Autorisierung 2019-12-02 00:00:39 Serial 19257922
setstate Autorisierung 2019-12-02 00:00:39 Setenergy 0
setstate Autorisierung 2020-01-04 18:10:22 State not ready for charging
setstate Autorisierung 2019-12-02 00:00:39 TmoCT 0
setstate Autorisierung 2019-12-02 00:00:39 TmoFS 0
setstate Autorisierung 2019-11-26 19:32:47 U1 231
setstate Autorisierung 2019-11-26 19:32:47 U2 230
setstate Autorisierung 2019-11-26 19:32:47 U3 231
setstate Autorisierung 2019-11-27 17:24:47 timeQ 2


Wäre toll wenn mir da jemand einen guten Tipp geben könnte  :)

LG
hasenhirn

KernSani

Ich müsste die Readingsgroup-Doku nochmal bemühen, aber ich glaube, du musst dir alle Bedingungen als Perl zusammenbasteln, Perl im Hash funktioniert auf jeden Fall nicht...


Kurz, weil mobil
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

hasenhirn

Vielen Dank für die schnelle Antwort.
Ich habe zwar nicht so genau verstanden was das heißt mit dem Hash, aber jetzt habe ich ein neues Schlagwort nach dem ich googeln kann. :o
Vielleicht komme ich so weiter.
LG
hasenhirn

hasenhirn

Ich schon wieder  :o

leider habe ich nichts hilfreiches gefunden was mich bei meinem Problem weiter gebracht hätte  :'(
Hat jemand noch einen Tipp für mich ::)

LG
hasenhirn

MadMax-FHEM

#4
Ich kann dir ein Beispiel geben wie ich das gemacht habe:

Sub in myUtils (kann aber theoretisch auch direkt in valueIcon:


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

#  Log3(undef, 1, "my_SetBatteryIcon      Value: $Value");

    if($Value > 75)
    {
      $Icon = $Icon . "\@green"; # between 75% and 100%
    }
    elsif($Value > 25)
    {
      $Icon = $Icon . "\@orange"; # between 25% and 75%
    }
    else
    {
      $Icon = $Icon . "\@red"; # below 25%
    }

  return $Icon;
}


und dann eben bei (in meinem Beispiel) valueIcon die Sub aufrufen:


attr DeviceName valueIcon {my_SetBatteryIcon($VALUE)}


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)

OdfFhem

@hasenhirn

Noch ein (einfachereres) Beispiel:


{ 'presence.absent' => '{(($DEVICE eq "G5D")?"RPi\@green":"RPi\@red")}',
  'presence.present' => 'RPi@blue' }

hasenhirn

Nachdem heute das Wetter etwas besser war und ich wieder etwas Zeit hatte, habe ich mich dem Problem noch mal angenommen.
Nach mehreren Stunden dumm anstellen und viel im Forum lesen habe ich es dann doch noch hin bekomen.
Danke noch mal für die Hilfe zur Selbsthilfe.

Für alle die es interessiert hier meine Lösung:

{'Plug.plugged_on_wallbox_and_locked' => 'Typ_2_Stecker@red', 'Plug.plugged_on_wallbox_ev_and_locked' => '{if (ReadingsVal("Autorisierung","Authreq" ,0) eq "1"){"Typ_2_Stecker\@blue"}else{"Typ_2_Stecker\@green"}}'}