[Gelöst] ReadingsGroup: Link mit Perl-Aufruf

Begonnen von Bastel-Frank, 01 Oktober 2018, 14:44:49

Vorheriges Thema - Nächstes Thema

Bastel-Frank

Hallo zusammen,

ich versuche in einer ReadingsGroup einen Link mit dem Perl-Aufruf "Rolllade_Hoch($DEVICE)" zu definieren. Ich bekomme die Syntax aber nicht hin. Mein aktuelle Variante lautet:
$link = "{Rolllade_Hoch($DEVICE)}";

Was macht man es richtig?

[Edit:Lösung]
Es funktioniert dann, wenn man den Perl-Code im link der ReadingsGroup URL-Codiert. Ich habe dieses Tool genommen https://www.url-encode-decode.com/
Beispiel: Aus "{Rolllade_Hoch($Device)}" wird dann "%7BRolllade_Hoch%28" . $DEVICE . "%27%29%7D"

Viele Grüße
Frank

MadMax-FHEM

Äh: was willst du erreichen!?

Vielleicht kann man dann besser 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)

Bastel-Frank

Ich möchte, dass in einer ReadingsGruppe nach einem Click auf ein Icon die zugehörige Perl-Funktion aufgerufen wird. Vergleichbar wie in diesem Beispiel im Wiki https://wiki.fhem.de/wiki/ReadingsGroup, Abschnitt "Heizungswerte, Status und Regelmöglichkeit". Nur hier wird ein fhem-Aufruf initiert. Ich möchte aber Perl aufrufen und dieses funktioniert bei mir leider nicht.

MadMax-FHEM

Ok, dachte ich mir...

Ich hab das (glaube ich) anders gelöst.

Bin grad nicht zuhause aber wenn dann poste ich mal was ich gemacht habe...

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)

Bastel-Frank


MadMax-FHEM

#5
Here it comes:

die readingsGroup (DEF):


<Raum>,<Ist>,<Soll>,<>,<>,<Luft>,<Taupunkt>,<> NAME=Thermometer_Heizung_T1:temperature,temperature@Thermometer_Heizung_T2,<>,<>,<>,<>,<> NAME=dmActualHeatingProfile:state,<>,<>,<>,<>,<>,<> NAME=Aussenthermometer:temperature,<>,<>,<>,humidity,dewpoint,<> NAME=Wand.*_Climate:measured-temp,desired-temp,<{my_HeatingUpDown($DEVICE,"up")}@desired-temp>,<{my_HeatingUpDown($DEVICE,"down")}@desired-temp>,humidity,dewpoint,<{my_SetHeatingModeIcon($DEVICE)}@controlMode>


sieht dann aus wie im Anhang zu sehen...

Das sind die "interessanten" Teile der DEF (ein Beispiel wo auch die Sub dazu da ist, die anderen rufen halt andere/ähnliche Subs auf):


<{my_HeatingUpDown($DEVICE,"up")}@desired-temp>,<{my_HeatingUpDown($DEVICE,"down")}@desired-temp>


Wenn ich beispielsweise auf das "Pfeil-Icon" klicke (hoch/runter), dann wird die Temperatur hoch/runter gestellt durch Aufruf folgender Sub in myUtils:


##################################################
# Helper for readingsGroup ClimateStatus:
# sets the up/down arrow and function
sub my_HeatingUpDown($$)
{
  my ($Channel, $UpDown)  = @_;
  my $Value = ReadingsNum($Channel, "desired-temp", 0.0);
  my $ret = "%control_arrow_upward\@red";

  if($UpDown eq "up")
  {
    $ret = "%control_arrow_upward\@red";
    if($Value < 24)
    {
      $Value += 0.5;
      $ret .= "%set $Channel desired-temp $Value";
    }
  }
  elsif($UpDown eq "down")
  {
    $ret = "%control_arrow_downward\@blue";
    if($Value > 16)
    {
      $Value -= 0.5;
      $ret .= "%set $Channel desired-temp $Value";
    }
  }

#  Log3(undef, 1, "my_HeatingUpDown Channel: $Channel      UpDown: $UpDown    return: $ret");

  return $ret;
}


Wenn noch Fragen, einfach fragen ;)

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)

Bastel-Frank

Hallo Joachim,

vielen Dank für dein Beispiel. Ich schaue es mir morgen früh in Ruhe an.

Viele Grüße
Frank

Bastel-Frank

#7
Hallo Joachim,

Du hast in der DEF von deinem Beispiel einmal ... <{sub()@desired-temp> ... und einmal ... <sub()@controlMode> drin stehen.

Wie hängt das zusammen, das Du einmal @desired-Temp und einmal @controlMode genutzt hast? Was hat dies für eine Bedeutung?

Und: Du hast kein link im Code genutzt. Wie werden die Icons dann anclickbar?

Viele Grüße
Frank

Bastel-Frank

Ich habe eine Lösung gefunden, indem man den link URL-Codiert (siehe 1.Post).

MadMax-FHEM

Hi Frank,

wo hast du das mit dem Link stehen?
Musstest du da html anpassen!?

Ja genau ich habe verschiedene Subs die ich aufrufe, je nachdem was ich eben "schalten" will.

Ich muss gestehen, dass es schon zu lange her ist, dass ich das umgesetzt habe...
Hatte zuerst auch irgendwas mit Command oder so versucht, ging aber nicht.

Letztendlich habe ich ein Beispiel aus dem readingsGroup-Wiki auf meine Bedürfnisse angepasst.
Ich glaube, dass das was da mit @ angefügt ist das ist worauf es sich "auswirkt" oder so.
Dadurch dass ich das so definiert habe wird das icon anklickbar und die entsprechende Sub aufgerufen...
Die macht neben der Funktionalität, also was soll das Drücken bewirken auch das icon welches angezeigt werden soll.

Hier ist es immer das selbe, bei der Sub ControlMode wird auch abhängig vom aktuellen ControlMode auch ein anderes icon angezeigt (von der Sub geliefert)...

Aber wenn du es gelöst hast ist es ja ok...

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)

Bastel-Frank

Hallo Joachim,

den link habe ich in der myUtils-Sub stehen, die auch die Icons festlegt. Der Link muss dabei URL-codiert sein (siehe https://www.url-encode-decode.com/) ... und "schon" geht es :-).

Mit den "commands" habe ich auch experimentiert, ist aber eigentlich das gleiche, wie in der myUtil-Sub. Auch hier muss man URL-codieren, damit der Perl-Aufruf klappt.

Man "sieht" sich
Frank

MadMax-FHEM

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)