FHEM Forum

FHEM => Sonstiges => Thema gestartet von: drhirn am 25 August 2020, 16:18:10

Titel: parseParams trennt nicht wie vorgesehen
Beitrag von: drhirn am 25 August 2020, 16:18:10
Ich baue gerade ein Modul um. Und sage ganz ehrlich: Ich weiß nicht, was genau ich tue.
Jetzt stehe ich vor dem Problem, dass mir
my($unnamedParams, $namedParams) = parseParams($cmd);
nach einem
set Rhasspy say siteId="test" text="test"
für $unnamedParams

$VAR1 = \[
            'siteId="test"',
            'text="10"'
          ];

und für $namedParams

$VAR1 = \{};

liefert. Was so eigentlich nicht geplant ist. Das sollte doch eigentlich in $namedParams stehen.

Irritierend ist, dass das Original-Modul (10_SNIPS.pm (https://github.com/Thyraz/Snips-Fhem/blob/master/FHEM/10_SNIPS.pm)) in meiner produktiven FHEM-Instanz (Debian, FHEM "installiert") genau das macht, was ich erwartet hätte. Aber in sämtlichen Test-Instanzen, die ich so am laufen habe (alle brandneu, aus dem offiziellen Docker-Image), funktioniert weder das original, noch mein umgebautes Modul 10_RHASSPY.pm (https://github.com/drhirn/fhem-rhasspy/blob/master/10_RHASSPY.pm).
Und ich habe nicht im entferntesten eine Ahnung, warum das so ist.

Vielen Dank!
Stefan

Hätte da jemand einen Verdacht? Bzw. - auch wenn's etwas viel verlangt ist - könnte sich jemand den Code durchsehen und sachdienliche Hinweise geben? In "meinem" Modul würde es ab Zeile 1019 (sub say) losgehen.
Titel: Antw:parseParams trennt nicht wie vorgesehen
Beitrag von: drhirn am 27 August 2020, 14:20:20
Ich sehe gerade, Laberlaib hatte genau das selbe Problem mit dem selben Modul: https://forum.fhem.de/index.php/topic,94653.msg873960.html#msg873960
Da steht nur leider keine Lösung.
Titel: Antw:parseParams trennt nicht wie vorgesehen
Beitrag von: rudolfkoenig am 27 August 2020, 15:38:21
Bei mir scheint es zu funktionieren:
fhem> { my ($a,$h)=parseParams('say siteId="test" text="test"');; "A: ".join(",",@{$a})."\nH: ".join(" ",map { "$_=>$h->{$_}" } keys %{$h}) }
A: say
H: text=>test siteId=>test
Titel: Antw:parseParams trennt nicht wie vorgesehen
Beitrag von: drhirn am 28 August 2020, 08:53:24
Eh bei mir auch. Wenn ich deinen Code in die FHEM-Kommandzeile eingebe.
Schreibe ich den selben Code aber in das Modul, wird daraus:

A: say,siteId="test",text="test"
H:

Das ist eben, was mich so irritiert. Es muss mit dem Modul zusammenhängen. Aber ich komme einfach nicht drauf, warum.

--edit
Musste auch gerade feststellen, es ist vollkommen egal, an welcher Stelle im Modul ich deinen Code platziere ("sub say", "define" oder ganz an den Anfang), das Ergebnis ist immer falsch.
Titel: Antw:parseParams trennt nicht wie vorgesehen
Beitrag von: laberlaib am 28 August 2020, 09:33:36
ich hatte die Funktion ja einfach in meiner 99_Utils verwendet und es hat nur "manchmal" funktioniert.

Also weder Kommandozeile noch SNIPS-Modul.


Ich hatte damals vermutet, dass die Funktion nicht verfügbar ist zu einem bestimmten Zeitpunkt. Aber dann müsste ja eine Fehlermeldung kommen und nicht eine falsche Ausgabe - also sollte das Unsinn.

Titel: Antw:parseParams trennt nicht wie vorgesehen
Beitrag von: drhirn am 28 August 2020, 09:36:23
Jup, wäre auch davon ausgegangen, dass ich einen Fehler bekomme, wenn ich den Code von Rudi ganz an den Anfang des Moduls schreibe. Dem war nicht so ;)
Titel: Antw:parseParams trennt nicht wie vorgesehen
Beitrag von: laberlaib am 28 August 2020, 09:42:54
Laienhaft (wenn ich jetzt Zugriff auf mein System hätte und mein RHASSPY funktionieren tät und mich dadurch motivieren würde):
Ich würde jetzt mal in die Funktion selbst mit Debugginginfos und Logeinträgen anreichern und schauen, ob diese überhaupt richtig aufgerufen wird?

Über "echte" Perl Werkzeuge fürs Debugging habe ich keine Ahnung.