Autor Thema: [gelöst] Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet  (Gelesen 672 mal)

Offline dadoc

  • Sr. Member
  • ****
  • Beiträge: 847
Hallo zusammen,
ich meinte ja schonmal das Problem zu haben, dass es mit dem Technisat-Modul aus https://forum.fhem.de/index.php/topic,104655.msg1035548.html#msg1035548 nicht möglich war, zweistellige Programmplätze des Receivers aufzurufen. Jetzt weiß ich auch wieder, was mich zu der Annahme brachte:
Während mehrstellige Programmplätze generell funktionieren, indem man die einzelnen Zahlen als separate Befehle nacheinander abschickt (z.b. für 19: set technisat send 1; set technisat send 9), so funktioniert das mit Programmplätzen, die auf 0 enden (10, 20, 30...) nicht. Hier wird jeweils nur 1, 2, 3... gesendet.
Wenn ich aus fhem die 0 alleine sende, meldet das Modul:
receipt of '0' (code 0) not confirmed by device.Verwendet man dagegen die Technisat Connect App als Fernbedienung (hier: iOS), so funktioniert das Nacheinander-Senden ( z.B. 1 + 0 für Kanal 10) problemlos.
Ich habe mal über Wireshark nachgeschaut, die (UDP-)Befehle sehen völlig normal aus, d.h. so wie andere konsekutiv gesendete Befehle auch:
<rcuButtonRequest code="1" state="pressed" />
<rcuButtonRequest code="1" state="released" />
<rcuButtonRequest code="0" state="pressed" />
<rcuButtonRequest code="0" state="released" />

Daher habe ich den Verdacht, dass das Null-Problem eher im fhem-Modul seinen Ursprung hat. Leider übersteigt dessen Analyse meine rudimentären Programmierkenntnisse im Allgemeinen und mein Perl-Wissen im Besonderen.
Daher meine Bitte, ob vielleicht mal ein Kenner einen Blick auf den Code werfen könnte, da der Modulautor wohl nicht mehr aktiv ist?
Ich denke, das Problem müsste entweder in der sub RcuButtonRequest oder in der sub TechniSat_Set($$$@) entstehen.
Vielen Dank & viele Grüße
Martin
« Letzte Änderung: 29 März 2021, 00:44:24 von dadoc »
Standort 1: FS20 mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1797
Antw:Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet
« Antwort #1 am: 28 März 2021, 12:21:45 »
Der Fehler ist in Zeile 411:

if ( $code and &CreateSocket($hash) ) { # authentification needed
$code ist bei 0 eben 0 und das wird in der Prüfung als unwahr intepretiert - ergo wird der Block nicht ausgeführt. Allgemein finde ich die Logik in dem Teil (den ich mir angeguckt habe) auch nicht besonders geschickt gelöst.

nb: Es wäre viel einfacher für mich gewesen, wenn ich das Modul nicht erst hätte suchen müssen. Auf Github hättet ihr auch gleich einen Änderungsvorschlag / Patch bekommen.

Offline dadoc

  • Sr. Member
  • ****
  • Beiträge: 847
Antw:Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet
« Antwort #2 am: 28 März 2021, 14:02:51 »
Vielen Dank Christoph!
Der Fehler ist in Zeile 411:

if ( $code and &CreateSocket($hash) ) { # authentification needed
$code ist bei 0 eben 0 und das wird in der Prüfung als unwahr intepretiert - ergo wird der Block nicht ausgeführt.
Ich werde es mal mit
$code >= 0versuchen.
Zitat
Allgemein finde ich die Logik in dem Teil (den ich mir angeguckt habe) auch nicht besonders geschickt gelöst.
Dazu kann ich wenig sagen, außer dass ich insgesamt recht enttäuscht bin, wie wenig „zugänglich“ die TechniSat-Receiver sind, etwa im Vergleich zu meiner vorherigen uralten Kathrein UFS mit dem Enigma-Modul.
Bin aber trotzdem dankbar, dass jemand sich die Mühe gemacht hat, auch für TechniSat ein fhem Modul zu schreiben, auch wenn dieses jetzt „herrenlos“ erscheint.
Zitat
nb: Es wäre viel einfacher für mich gewesen, wenn ich das Modul nicht erst hätte suchen müssen. Auf Github hättet ihr auch gleich einen Änderungsvorschlag / Patch bekommen.
Das kann ich verstehen, ist aber wie gesagt nicht „mein“ Modul, und der Autor hat es nicht auf Github afaik. Vielleicht hast Du ja Lust, es zu adoptieren ;)
Werde das >= heute Abend mal testen und berichten.
Nochmals vielen Dank & schönen Rest-Sonntag
Martin
Standort 1: FS20 mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1797
Antw:Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet
« Antwort #3 am: 28 März 2021, 20:19:50 »
Vielen Dank Christoph!Ich werde es mal mit
$code >= 0versuchen.

Versuch es doch eher mit not defined $code anstatt von numerischen Vergleichen auf ggf. undef.

Bin aber trotzdem dankbar, dass jemand sich die Mühe gemacht hat, auch für TechniSat ein fhem Modul zu schreiben, auch wenn dieses jetzt „herrenlos“ erscheint.Das kann ich verstehen, ist aber wie gesagt nicht „mein“ Modul, und der Autor hat es nicht auf Github afaik. Vielleicht hast Du ja Lust, es zu adoptieren ;)

Ich sehe dabei ein Lizenzproblem: Raymund hat in der Datei und auch in seinem Forumsbeitrag nirgendwo eine Lizenz festgelegt, ergo gilt: Er hat das alleinige Urheberrecht (sowieso) - aber auch das alleinige Rechte, Modifikationen zu veröffentlichen. D.h. du darfst den Code zwar verwenden, aber man darf keine Modifikationen davon veröffentlichen.

Offline dadoc

  • Sr. Member
  • ****
  • Beiträge: 847
Antw:Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet
« Antwort #4 am: 28 März 2021, 23:18:01 »
Versuch es doch eher mit not defined $code anstatt von numerischen Vergleichen auf ggf. undef.
Das werde ich mal versuchen. Das mit $code >= 0 funktioniert leidlich. Aber interessanterweise bei den Kombinationen mit Null nur dann, wenn ich ein sleep 1 zwischen die beiden Befehle setze. Bei anderen Kombinationen ist das nicht erforderlich, anscheinend braucht das processing mit der Null länger...

Zitat
Ich sehe dabei ein Lizenzproblem: Raymund hat in der Datei und auch in seinem Forumsbeitrag nirgendwo eine Lizenz festgelegt, ergo gilt: Er hat das alleinige Urheberrecht (sowieso) - aber auch das alleinige Rechte, Modifikationen zu veröffentlichen. D.h. du darfst den Code zwar verwenden, aber man darf keine Modifikationen davon veröffentlichen.
Ja, das ist wohl so; allerdings basiert Raymunds Code anscheinend auf https://github.com/feuster/TechniSatAPI/blob/master/TechniSatAPI.pas, zumindest verweist er darauf. Ich kenne mich in solchen Fällen aber nicht wirklich aus.
Danke & Grüße
Martin
Standort 1: FS20 mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)

Offline dadoc

  • Sr. Member
  • ****
  • Beiträge: 847
Antw:Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet
« Antwort #5 am: 28 März 2021, 23:43:02 »
Versuch es doch eher mit not defined $code
Mit
if ( defined $code and &CreateSocket($hash) )funktioniert es. Oder was meintest Du mit *not* defined?
Standort 1: FS20 mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1797
Antw:Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet
« Antwort #6 am: 29 März 2021, 00:03:28 »
Mit
if ( defined $code and &CreateSocket($hash) )funktioniert es. Oder was meintest Du mit *not* defined?

Ja, das not ist Unsinn. Hatte an der Funktion ein wenig rumgebastelt und die Logik geändert, deshalb versehentlich das not.

 

decade-submarginal