[gelöst] Bräuchte Perl-Hilfe für 70_TechniSat.pm - 0 wird nicht gesendet

Begonnen von dadoc, 28 März 2021, 00:32:28

Vorheriges Thema - Nächstes Thema

dadoc

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
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

Christoph Morrison

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.

dadoc

Vielen Dank Christoph!
Zitat von: Christoph Morrison 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.
Ich werde es mal mit

$code >= 0

versuchen.
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 auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

Christoph Morrison

Zitat von: dadoc am 28 März 2021, 14:02:51
Vielen Dank Christoph!Ich werde es mal mit

$code >= 0

versuchen.

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

Zitat von: dadoc am 28 März 2021, 14:02:51
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.

dadoc

Zitat von: Christoph Morrison am 28 März 2021, 20:19:50
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...

ZitatIch 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 auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

dadoc

Zitat von: Christoph Morrison am 28 März 2021, 20:19:50
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 auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

Christoph Morrison

Zitat von: dadoc am 28 März 2021, 23:43:02
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.

Fakenius

Hallo,

bin als "Betreiber" eines alten TechniSat-Receivers auf diesen (ebenfalls) alten Thread gestoßen (Ori-Thread) und habe den Code mit meinen bescheidenen Kenntnissen privat schon etwas angepasst.
Weiß jemand wie hier der Stand ist? Besteht von anderer Seite noch Interesse und "darf" man diesen Code überhaupt weiter entwickeln? Der ursprüngliche Entwickler ist ja wohl ausgestiegen!?

So wie ich das sehe, ist aus dem RC-Protokoll nicht mehr viel rauszuholen, eventuell aber über UPnP und dann XML ...

Joachim
FS20, Homematic (RaspberryMatic), Zigbee (deCONZ), LaCrosse, selbstgebaute Sensoren und Aktoren via MQTT
 (CUL, HB-RF-USB-2, Jeelink, SIGNALDuino)

dadoc

Ich habe mir mittlerweile wieder einen Enigma2-Receiver geholt (Uclan Ustym Twin 4K) und den Technisat meinen Eltern geschenkt - für die ist er ideal, da sie keine Einbindung brauchen.
Viele Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods