Autor Thema: String mit mehreren Leerzeichen publishen  (Gelesen 1934 mal)

Offline roedert

  • Sr. Member
  • ****
  • Beiträge: 863
String mit mehreren Leerzeichen publishen
« am: 17 Dezember 2017, 04:20:32 »
Ich sende per MQTT Daten an ein 20x4-LCD-Display und will eigentlich immer eine komplette Zeile mit 20 Stellen senden.
set <MQTT-Device> LINE1=a b c dklappt auch bestens, allerdings werden bei
set <MQTT-Device> LINE1=     a  b  c  dalle mehrfach auftretenden Leerzeichen durch nur ein Leerzeichen ersetzt.
Hochkomme oder Anführungszeichen helfen auch nicht, diese werden per MQQT auch mit gesendet.

Gibt es irgendeine Möglichkeit den String formatiert ohne Veränderung zu senden?

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4699
    • tech_LogBuch
Antw:String mit mehreren Leerzeichen publishen
« Antwort #1 am: 17 Dezember 2017, 20:06:51 »
Das Problem ist, dass FHEM-set-Befehl die Daten bereits zerlegt in einem Array weitergibt. Bei der Zerlegung gehen alle Leerzeichen erstmal verloren ( my @a = split("[ \t][ \t]*", $param); ). In dem MQTT-DEVICE-Modul werden diese dann mit Leerzeichen dazwischen zusammengesetzt (my $value = join " ",@values;).
Einzige Möglichkeit, die ich sehe, wäre das MQTT-DEVICE-Modul so umzubauen, dass dieser ein eigenes Publish-Befehl und/oder eine Methode anbietet, die man direkt aufrufen kann.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21267
Antw:String mit mehreren Leerzeichen publishen
« Antwort #2 am: 17 Dezember 2017, 20:38:59 »
es gibt eine parseParams routine die ein modul verwenden kann um im define in “ eingeschlossene parameter mit leerzeichen  zu verstehen. doku im wiki.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, …

https://github.com/sponsors/justme-1968

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4699
    • tech_LogBuch
Antw:String mit mehreren Leerzeichen publishen
« Antwort #3 am: 17 Dezember 2017, 22:45:26 »
Ah! Danke, gut zu wissen (ist an mich irgendwie vorbeigegangen ??? ).
Die Änderung dürfte also recht einfach sein. Jetzt muss nur noch jemand mal einen Patch für den Modul-Maintainer erstellen. Kann ich auch machen, wird aber etwas dauern...


Edit: wenn ich Quelle in fhem.pl ansehe, irgendwie denke ich, das wird eben die Leerzeichen speziell für 'set' (auch in Anführungszeichzen versteckt) auch nicht retten.  :(
« Letzte Änderung: 17 Dezember 2017, 23:10:36 von hexenmeister »
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21267
Antw:String mit mehreren Leerzeichen publishen
« Antwort #4 am: 18 Dezember 2017, 06:45:49 »
mehrere einzelne leerzeichen wie im beispiel ganz oben die z.b. die wörter eines satzes trennen gehen.

nur strings mit mehreren direkt aufeinander folgenden leerzeichen gehen (noch) nicht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, …

https://github.com/sponsors/justme-1968

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4699
    • tech_LogBuch
Antw:String mit mehreren Leerzeichen publishen
« Antwort #5 am: 18 Dezember 2017, 06:52:18 »
Ja, so habe ich das gemeint. Im Sinne der Erstanfrage wird das leider nichts bringen.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy