Autor Thema: fhem.pl: Dispatch einzelnes LF  (Gelesen 664 mal)

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4768
  • Are we just self-replicating DNA?
fhem.pl: Dispatch einzelnes LF
« am: 24 Juni 2020, 20:35:37 »
Hallo,

ECMDDevice hat

$hash->{Match}     = ".+";
ECMD schickt Zeichenfolgen per Dispatch() an ECMDDevice. Dabei wird allerdings ein einzelnes \n (LF) nicht gematcht, ein einzelnes druckbares Zeichen aber schon.

Woran liegt das? Habe mir sub Dispatch() in fhem.pl angesehen aber keinen Grund gefunden. Mir ist aber aufgefallen, dass in Zeile 3981 der i-Modifier gesetzt ist. Der gehört dort m.E. nicht hin.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3434
    • HMCCU
Antw:fhem.pl: Dispatch einzelnes LF
« Antwort #1 am: 25 Juni 2020, 07:45:02 »
Bei der Regex muss s angehängt werden (single line modifier), damit Newlines von . gemached werden.

Aus https://mojolicious.org/perldoc/perlrecharclass

"\n" =~ /./s
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22832
Antw:fhem.pl: Dispatch einzelnes LF
« Antwort #2 am: 25 Juni 2020, 10:26:21 »
Eigentlich sollten Raw-Messages (analog zu Events) weder Newline, noch Nicht-Druckbare Zeichen enthalten, und ich habe deswegen Raw-Messages in meinen IO-Modulen schon umgebaut.
Da mir aber z.Zt. keine Begruendung gegen NL einfaellt, habe ich den s Modifier hinzugefuegt.

Den i Modifier habe vor (gefuehlt) 10+ Jahren eingefuehrt, um eine Kompatibiitaet zwischen FHZ und CUL zu erreichen, da einer der beiden den Hex-String mit Klein-, der andere mit Grossbuchstabe formatiert hatte.
Ich habe keinen Ueberblick, wer sich darauf verlaesst, deswegen bleibt der Modifier erstmal drin.

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4768
  • Are we just self-replicating DNA?
Antw:fhem.pl: Dispatch einzelnes LF
« Antwort #3 am: 27 Juni 2020, 19:23:25 »
Danke, Rudi, damit ist das Problem in Verbindung mit ECMD gelöst.

Der Anwender empfängt über eine serielle Schnittstelle zeilenweise Texte von einem Gerät, die auf \n enden. Diese werden per Dispatch an ECMDDevice verteilt. Das Vorkommen eines \n in einer Raw-Message halte ich für völlig legitim, nicht nur in diesem Fall sondern grundsätzlich sollte es möglich sein, dass ein Server an Clients Nachrichten sendet, die ein \n enthalten.

Hoffentlich denken wir noch an diesen i-Modifier, wenn das erste Modul nur auf quark matchen will und ein Quark bekommt.  :-\

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3653
Antw:fhem.pl: Dispatch einzelnes LF
« Antwort #4 am: 18 Juli 2020, 09:20:55 »
Hoffentlich denken wir noch an diesen i-Modifier, wenn das erste Modul nur auf quark matchen will und ein Quark bekommt.  :-\

Deswegen steht im Wiki zur Match-Liste so eine fette grüne Info-Box daneben: https://wiki.fhem.de/wiki/DevelopmentModuleIntro#Die_Match-Liste

VG
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

 

decade-submarginal