FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hasenhirn am 05 Januar 2020, 19:10:06

Titel: Iconfarbe mit mehreren Bedingungen
Beitrag von: hasenhirn am 05 Januar 2020, 19:10:06
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 (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
Titel: Antw:Iconfarbe mit mehreren Bedingungen
Beitrag von: KernSani am 05 Januar 2020, 21:32:51
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
Titel: Antw:Iconfarbe mit mehreren Bedingungen
Beitrag von: hasenhirn am 05 Januar 2020, 22:26:29
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
Titel: Antw:Iconfarbe mit mehreren Bedingungen
Beitrag von: hasenhirn am 08 Januar 2020, 17:30:57
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
Titel: Antw:Iconfarbe mit mehreren Bedingungen
Beitrag von: MadMax-FHEM am 08 Januar 2020, 18:22:56
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
Titel: Antw:Iconfarbe mit mehreren Bedingungen
Beitrag von: OdfFhem am 08 Januar 2020, 18:50:25
@hasenhirn

Noch ein (einfachereres) Beispiel:


{ 'presence.absent' => '{(($DEVICE eq "G5D")?"RPi\@green":"RPi\@red")}',
  'presence.present' => 'RPi@blue' }
Titel: Antw:Iconfarbe mit mehreren Bedingungen
Beitrag von: hasenhirn am 18 März 2020, 15:04:20
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"}}'}