(gelöst) DOIF: Nachricht versenden mit Komma im Text

Begonnen von Nighthawk, 19 Januar 2022, 12:27:37

Vorheriges Thema - Nächstes Thema

Nighthawk

Hallo zusammen,

ich versuche seit Tagen einen Weg zu finden wie ich einen Link beispielsweise zu Google Maps mit Doif generieren und versenden kann, leider bekomme ich den Text nur bis zum Komma, alles weitere wird nicht mitgesendet.
Führe ich das DOIF manuell über cmd1 aus, so kommt alles wie gewollt an, also https://maps.google.com/maps?z=18&q=XX.XXXXXX,YY.YYYYYY"
nur wenn es automatisch ausgeführt wird (bei Änderung der Koordinaten) kommt es abgeschnitten an [code]https://maps.google.com/maps?z=18&q=XX.XXXXXX.


Hier mein DOIF
Internals:
   DEF        ([Position:latitude] or [Position:longitude])
      ((set Signal send "https://maps.google.com/maps?z=18&q=[Position:latitude],[Position:longitude]"))
DOELSE
   FUUID      61daf8ce-f33f-357a-4754-611129e0562df20d
   MODEL      FHEM
   NAME       di.Position
   NOTIFYDEV  Position,global
   NR         565
   NTFY_ORDER 50-di.Position
   STATE      cmd_1
   TYPE       DOIF
   VERSION    25386 2021-12-28 22:19:25
   READINGS:
     2022-01-15 18:43:08   Device          Position
     2022-01-15 18:43:08   cmd             1
     2022-01-15 18:43:08   cmd_event       Position
     2022-01-15 18:43:08   cmd_nr          1
     2022-01-15 18:43:08   e_Position_latitude XX.XXXXXX
     2022-01-15 18:43:08   e_Position_longitude YY.YYYYY
     2022-01-10 14:09:56   mode            enabled
     2022-01-15 18:43:08   state           cmd_1
   Regex:
     accu:
     collect:
     cond:
       Position:
         0:
           latitude   ^Position$:^latitude:
           longitude  ^Position$:^longitude:
   condition:
     0          ::ReadingValDoIf($hash,'Position','latitude') or ::ReadingValDoIf($hash,'Position','longitude')
   do:
     0:
       0          (set Signal send "https://maps.google.com/maps?z=18&q=[Position:latitude],[Position:longitude]")
     1:
       0         
   helper:
     DEVFILTER  ^global$|^Position$
     NOTIFYDEV  global|Position
     globalinit 1
     last_timer 0
     sleeptimer -1
   hmccu:
   perlblock:
   readings:
     all         Position:latitude Position:longitude
   uiState:
   uiTable:
Attributes:
   do         always
   group      Fahrzeugzustand
   icon       helper_doif
   room       06_Garage
   sortby     31

Otto123

Hi,

bei Kommas im set Befehl muss Du bei DOIF IMMER doppelt klammern, da DOIF das Komma als Befehlstrenner verarbeitet.
((set Device Befehl,mit,Komma))

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

Zitat von: Otto123 am 19 Januar 2022, 12:47:08
Hi,

bei Kommas im set Befehl muss Du bei DOIF IMMER doppelt klammern, da DOIF das Komma als Befehlstrenner verarbeitet.
((set Device Befehl,mit,Komma))

Gruß Otto

Das hat er laut list gemacht, hier scheint der set/send-Befehl noch etwas mit dem String zu machen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frank_Huber

was mich hier verwundert ist die Aussage dass es funktioniert wenn das cmd_1 manuell getriggert wird.
kann es evtl sein dass das Reading im gleichen Moment aktualisiert und dadurch nicht verfügbar ist?
Sollte man evtl einen 1 sec wait einbauen vor die Nachricht?

Otto123

Zitat von: Damian am 19 Januar 2022, 12:49:07
Das hat er laut list gemacht, hier scheint der set/send-Befehl noch etwas mit dem String zu machen.
Oh sorry, da habe ich doch in die Zeile mit dem do ... geguckt  ::) :-[
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Nighthawk

Hallo zusammen,

ich habe das Problem nach einigem weiteren Rumprobieren nun folgendermaßen gelöst:


([Position:latitude] or [Position:longitude])
      (set Signal send "https://maps.google.com/maps?z=18&q="[Position:latitude]","[Position:longitude])


Habe also das Komma "maskiert".