Hauptmenü

Perl in myUtils

Begonnen von Superposchi, 09 Juni 2021, 23:38:24

Vorheriges Thema - Nächstes Thema

Superposchi

Ich versuche mich in Perl einzuarbeiten.
Dazu habe ich als erstes eine kleine Funktion für meine myUtils erstellt um Pushover-Nachrichten zu versenden.
Aber leider bekomme ich es nicht hin, die einzelnen Elemente zu trennen. Es wird immer alles zum Nachrichtentext zusammengefasst.

Ich rufe die Funktion im Moment aus einem DOIF manuell per Set-Befehl auf:
Internals:
   CFGFN     
   DEF        (xxx)
{SentPush("Marko_S21Ultra", "Titel", "Text")}
   FUUID      60c126e0-f33f-793a-72a4-1f50edd32ecdcc96
   MODEL      FHEM
   NAME       PushBenachrichtigungen
   NOTIFYDEV  global
   NR         370390
   NTFY_ORDER 50-PushBenachrichtigungen
   STATE      cmd_1
   TYPE       DOIF
   VERSION    24330 2021-04-24 21:09:16
   .attraggr:
   .attrminint:
   READINGS:
     2021-06-09 23:23:54   cmd             1
     2021-06-09 23:23:54   cmd_event       set_cmd_1
     2021-06-09 23:23:54   cmd_nr          1
     2021-06-09 22:56:57   mode            enabled
     2021-06-09 23:23:54   state           cmd_1
   Regex:
     accu:
     collect:
   attr:
     cmdState:
   condition:
     0          xxx
   do:
     0:
       0          {SentPush("Marko_S21Ultra", "Titel", "Text")}
     1:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev
   uiState:
   uiTable:
Attributes:
   room       Benachrichtigungen,Test


Die Funktion soll die verschiedene Werte übernehmen und dann als Pushmeldung versenden:
sub SentPush($$$)
{
  my ($Device, $Titel, $Text)  = @_;

  fhem("set Pushmsg msg '$Titel' '$Text' '$Device' '2'");
  fhem("set Pushmsg msg $Titel $Text $Device 2");
  fhem("set Pushmsg msg \"$Titel\" \"$Text\" \"$Device\" \"2\"");
#     fhem("set Pushmsg msg '$Device' '$Titel' '$Text' '2'");
#   set <Pushover_device> msg [title] <msg> [<device> <priority> <sound> [<retry> <expire> [<url_title> <action>]]]
}


Wie man sieht habe ich es mit verschiedenen Schreibweisen probiert, auch mit einer Maskierung. Leider bekomme ich es nicht hin, dass die einzelnen Variablen für die Angabe von Titel, Device und Message ausgewertet und interpretiert werden.

MadMax-FHEM

Das sollte tun:


sub SentPush($$$)
{
  my ($Device, $Titel, $Text)  = @_;
          my $Message = $Device . $Titel . $Text . "2";
          # wenn Leerzeichen dazwischen sollen, dann:
          # my $Message = $Device . " " . $Titel . " " . $Text . " " . "2";


  fhem("set Pushmsg msg $Message");
          # bzw. so, falls der Nachrichtentext in Anführungszeichen sein muss (bei Telegram ja nicht nötig, da funktioniert "obiges")...
  # fhem("set Pushmsg msg \"$Message\"");

}


Es gibt aber (wie so oft) weitere Möglichkeiten: q() bzw. qq()

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)

Beta-User

Kannst du bitte diese Doppelposts lassen (https://forum.fhem.de/index.php/topic,121557.msg1231856.html#msg1231856)!

Wenn möglich: Beitrag dort LÖSCHEN!

Ansonsten gehören "define"-Anweisungen nicht (bzw. nicht in dieser Form) nach myUtils.

(und ggf. sollten Schlüssel anonymisiert werden)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files