Autor Thema: Perl in myUtils  (Gelesen 447 mal)

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 815
Perl in myUtils
« am: 09 Juni 2021, 23:38:24 »
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.

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 12723
  • NIVEAu ist keine Creme...
Antw:Perl in myUtils
« Antwort #1 am: 09 Juni 2021, 23:55:35 »
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)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19326
Antw:Perl in myUtils
« Antwort #2 am: 17 August 2022, 17:52:58 »
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-T620@Debian 11, 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