Autor Thema: Hilfe bei Shellaufruf in einem Modul (umstellen auf Non Blocking)  (Gelesen 751 mal)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 11669
Antw:Hilfe bei Shellaufruf in einem Modul (umstellen auf Non Blocking)
« Antwort #15 am: 12 November 2017, 10:32:47 »
Zu meist befindet sich dann ein Zeilenumbruch in der Rückgabe. Da die Rückgabe über telnet geht darf kein Zeilenumbruch drin sein. Entweder base64 codieren oder JSON encodieren und dann in der finishFn decodieren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Online DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3382
  • Wer anderen eine Bratwurst brät...
Antw:Hilfe bei Shellaufruf in einem Modul (umstellen auf Non Blocking)
« Antwort #16 am: 12 November 2017, 13:53:59 »
Mit ein Wenig RegEx Zauberei konnte ich das Problem nun lösen.
Problematisch waren scheinbar tatsächlich noch enthaltene Tabulatoren.

Merkwürdig ist nur dass die Fehlerrückgabe als base64 nicht funktioniert, das ein Weile gedauert bis das aufgefallen ist.

Das geht:
$err .= join " ",@ret;
return "$name|$err";

Das geht nicht:
$err .= encode_base64(join " ",@ret);
return "$name|$err";
natürlich mit entsprechendem decode in der FinishFn:
my ($string) = @_;
my @a = split /\|/,$string;
my $name = $a[0];
my $error = decode_base64($a[1]);

Gruß
Dan
FHEM 5.8, Brix, VIVO mini, RPi3, Debian Jessie, ZME_UZB1
HM-CFG-LAN, HM-MOD-UART-WIFI, HUE, HarmonyHub, JeeLink, CO20
Hyperion auf RPi Zero W, Sonos, viel Z-Wave und HM
alles per HomeKit steuerbar
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert
Gefällt mir Gefällt mir x 1 Liste anzeigen

 

decade-submarginal