Verketten von FHEM Befehlen - in "at" & "notify" korrektes Verhalten?

Begonnen von RalfRog, 11 Dezember 2025, 23:39:16

Vorheriges Thema - Nächstes Thema

RalfRog

Hallo
Ich habe zur Verkettung eine Frage/unerklärliches Verhalten. Bei mir funktioniert zwar alles (zufällig?) seit Langem, aber ich bin über leicht merkwürdige Logeinträge gestolpert.

Ich habe versucht es in einen einfachen Testfall herunterzubrechen, bei dem nur die Reihenfolge der Verkettung geändert wird.

  • In der Befehlszeile von FHEMWEB funktionieren folgende Kommandos (Perl-Modus) erwartungsgemäß und ohne Auffälligkeiten.
Befehlszeile:
{fhem("msg push Logtest;;set LampeHighboard off")}

Log:
2025.12.11 22:40:08.913 3: msg globalMsg: ID=1765489208.90265.1 TYPE=push ROUTE=telegram STATUS=OK PRIORITY=0 TITLE='' MSG='Logtest'
2025.12.11 22:40:08.915 3: cubeCUL_stk2 IT_set: LampeHighboard off
  Ebenfalls wenn die Reihenfolge der Kommandos gedreht wird:
Befehlszeile:
{fhem("set LampeHighboard on;;msg push Logtest")}

Log:
2025.12.11 22:39:46.093 3: cubeCUL_stk2 IT_set: LampeHighboard on
2025.12.11 22:39:46.432 3: msg globalMsg: ID=1765489186.42412.1 TYPE=push ROUTE=telegram STATUS=OK PRIORITY=0 TITLE='' MSG='Logtest'



  • In einem "at" oder "notify" funktioniert aber nur die obere Reihenfolge   (komplette Lists der Devices am Ende).
das at:     DEF   *03:00 {fhem("msg push Logtest;;set LampeHighboard off")}
oder
das notify: DEF   LampeTerasseStand:on {fhem("msg push Logtest;;set LampeHighboard off")}

Log:
2025.12.11 23:02:40.074 3: cubeCUL_stk2 IT_set: LampeHighboard off
2025.12.11 23:02:40.404 3: msg globalMsg: ID=1765490560.06424.1 TYPE=push ROUTE=telegram STATUS=OK PRIORITY=0 TITLE='' MSG='Logtest;set LampeHighboard off'
=> Besonderheit (und das war mir aufgefallen) ist im Log:   MSG='Logtest;set LampeHighboard off'

   anderherum gibt es eine Fehlermeldug im Log
das at:     DEF   *03:00 {fhem("set LampeHighboard off;;msg push Logtest")}

Log:
2025.12.11 23:13:25.295 3: set LampeHighboard off;;msg push Logtest : Unknown argument off;msg, choose one of off:noArg on:noArg  toggle off-till off-for-timer on-till-overnight intervals off-till-overnight on-for-timer on-till blink
2025.12.11 23:13:25.296 3: SaveDB_test: Unknown argument off;msg, choose one of off:noArg on:noArg  toggle off-till off-for-timer on-till-overnight intervals off-till-overnight on-for-timer on-till blink
das notify:  LampeTerasseStand:on {fhem("set LampeHighboard off;;msg push Logtest")}

Log:
2025.12.11 23:18:48.611 3: set LampeHighboard off;;msg push Logtest : Unknown argument off;msg, choose one of off:noArg on:noArg  blink off-till-overnight intervals on-till on-for-timer toggle off-for-timer off-till on-till-overnight
2025.12.11 23:18:48.612 3: LampeHighboard_notify_1 return value: Unknown argument off;msg, choose one of off:noArg on:noArg  blink off-till-overnight intervals on-till on-for-timer toggle off-for-timer off-till on-till-overnight




Hier die vollständigen Lists:
define SaveDB_test at *03:00 {\
fhem("set LampeHighboard off;;;;msg push Logtest")\
}
attr SaveDB_test room Dbase
#   CFGFN     
#   COMMAND    {
#fhem("set LampeHighboard off;;msg push Logtest")
#}
#   DEF        *03:00 {
#fhem("set LampeHighboard off;;msg push Logtest")
#}
#   FUUID      693b227f-f33f-76ac-2156-d46975aabc5fad3d
#   NAME       SaveDB_test
#   NR         332
#   PERIODIC   yes
#   RELATIVE   no
#   REP        -1
#   STATE      Next: 03:00:00
#   TIMESPEC   03:00
#   TRIGGERTIME 1765504800
#   TRIGGERTIME_FMT 2025-12-12 03:00:00
#   TYPE       at
#   eventCount 14
#   READINGS:
#     2025-12-11 23:11:51   state           Next: 03:00:00
#
setstate SaveDB_test Next: 03:00:00
setstate SaveDB_test 2025-12-11 23:11:51 state Next: 03:00:00
define LampeHighboard_notify_1 notify LampeTerasseStand:on {fhem("set LampeHighboard off;;;;msg push Logtest")}
#   CFGFN     
#   DEF        LampeTerasseStand:on {fhem("set LampeHighboard off;;msg push Logtest")}
#   FUUID      693b2a00-f33f-76ac-8025-e50583d743d45439
#   NAME       LampeHighboard_notify_1
#   NOTIFYDEV  LampeTerasseStand
#   NR         333
#   NTFY_ORDER 50-LampeHighboard_notify_1
#   REGEXP     LampeTerasseStand:on
#   STATE      2025-12-11 23:18:48
#   TRIGGERTIME 1765491528.60314
#   TYPE       notify
#   eventCount 6
#   READINGS:
#     2025-12-11 23:18:23   state           active
#     2025-12-11 23:18:48   triggeredByDev  LampeTerasseStand
#     2025-12-11 23:18:48   triggeredByEvent on
#
setstate LampeHighboard_notify_1 2025-12-11 23:18:48
setstate LampeHighboard_notify_1 2025-12-11 23:18:23 state active
setstate LampeHighboard_notify_1 2025-12-11 23:18:48 triggeredByDev LampeTerasseStand
setstate LampeHighboard_notify_1 2025-12-11 23:18:48 triggeredByEvent on

FHEM VM Debian13 (trixie) auf Proxmox VE9  (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

RalfRog

Addon
Wechselt man nicht mit {fhem("..")} nach Perl sondern bleibt auf FHEM-Ebene funktioniert es komplett und ohne die Merkwürdigkeit im Log.

Oft hat man aber den Wechsel in den Perl-Modus und ich hab das Verhalten so nicht erwartet.
Mache ich etwas falsch oder liegts am at/notify?

Gruß Ralf
FHEM VM Debian13 (trixie) auf Proxmox VE9  (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

RalfRog

...okeee
noch ein Test auf den ich erst jetzt gekommen bin

wenn man das Semikolon nicht doppelt {fhem("...;...")} gibts keine Fehler...  oh Mann
aber in der Kommandozeile müssen zwei sein...    bin verwirrt



FHEM VM Debian13 (trixie) auf Proxmox VE9  (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

Gisbert

Zitat von: RalfRog am 12 Dezember 2025, 00:28:28...okeee
noch ein Test auf den ich erst jetzt gekommen bin

wenn man das Semikolon nicht doppelt {fhem("...;...")} gibts keine Fehler...  oh Mann
aber in der Kommandozeile müssen zwei sein...    bin verwirrt

Hallo Ralf,
ich meine mich zu erinnern, dass im raw-Code (definitiv), aber auch in der Fhem-Kommandozeile Semikolon gedoppelt werden müssen, während es im Code/Definition nur einfach benutzt wird. Es gab kürzlich einen Forumsbeitrag bzw. mehrere dazu, nur finde ich den nicht mehr.
Ob eine Doppelung im Code/Definition immer schädlich ist, kann ich nicht sagen.

Viele Grüße Gisbert
Proxmox | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome | Panasonic Heishamon

frober

Richtig, im RAW und in der Befehlszeile müssen sie gedoppelt werden.
In der Def übernimmt das Fhem.

In MyUtils dagegen nur einfach.

Liegt daran, dass bei der "Übergabe" aus Fhem nach Perl Semikolons gelöscht werden. Darum müssen sie in Fhem geschützt (gedoppelt) werden.

Eine Besonderheit ist das at Watchdog, hier hat das doppelte Semikolon eine besondere Funktion.

Und zum eigentlichen Thema, wenn nach msg ein weiterer Befehl kommt wird dieser bei mir auch nicht ausgeführt. Ich vermute, das msg hier das Problem ist, hatte aber noch keine Zeit das zu überprüfen. Ich sende msg immer zuletzt.

Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

RalfRog

Danke ihr beiden. Werde das nochmal eruieren und hier hinterlassen.

Sichtbar in der Def der Device-Details sind zwei Semikolon und lt. List (copy for Forum) im Define sind es 4.

Wenn ich es auf ein Semikolon reduziere scheinen alle Probleme weg.
Scheint, dass ich wegen Missinterpretation eine "doppelte Verdopplung" hatte.


FHEM VM Debian13 (trixie) auf Proxmox VE9  (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

erwin

Um die Verwirrung noch zu ergänzen:  8)
Bei einem AT hat das doppelte semicolon noch eine zusätzliche Bedeutung, siehe: wiki , daher je nach dem auch 4 semicolons nötig....
l.g.erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

frober

Zitat von: erwin am 12 Dezember 2025, 13:50:20Um die Verwirrung noch zu ergänzen:  8)
Bei einem AT hat das doppelte semicolon noch eine zusätzliche Bedeutung, siehe: wiki , daher je nach dem auch 4 semicolons nötig....
l.g.erwin

Danke, mein Fehler. Es ist nicht der watchdog, sondern das at.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...