Support für Broadlink SP3 WLAN-Steckdose

Begonnen von roedert, 04 Mai 2017, 10:40:20

Vorheriges Thema - Nächstes Thema

roedert

Hab mit mal testweise günstig so ein Teil besorgt - Einbindung ins WLAN und Steuerung per Handy-App klappte problemlos.
Nun die Suche danach, wie man die Steckdose evtl. aus FHEM heraus ansprechen könnte. Doch das Internet liefert da ziemlich wenig Ergebnisse - alles was es zu Broadlink und evtl. FHEM gab, bezog sich auf die Bridge bzw. IR-Sender/Empfänger.
Daher hier nochmal die Frage ob wer Erfahrung bzgl. der SP3-Steckdose hat?
Webinterface oder ssh hat das Teil nicht - ein tcp-Portscan lieferte mir lediglich Port 7681 als offen.

JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

daniel2311

Zitat von: roedert am 04 Mai 2017, 10:40:20
Hab mit mal testweise günstig so ein Teil besorgt - Einbindung ins WLAN und Steuerung per Handy-App klappte problemlos.
Nun die Suche danach, wie man die Steckdose evtl. aus FHEM heraus ansprechen könnte. Doch das Internet liefert da ziemlich wenig Ergebnisse - alles was es zu Broadlink und evtl. FHEM gab, bezog sich auf die Bridge bzw. IR-Sender/Empfänger.
Daher hier nochmal die Frage ob wer Erfahrung bzgl. der SP3-Steckdose hat?
Webinterface oder ssh hat das Teil nicht - ein tcp-Portscan lieferte mir lediglich Port 7681 als offen.

Ich habe ja für das Broadlink RM Pro ein Modul geschrieben. Das ursprüngliche Python Skript hatte eine Implementierung für die Steckdosen. Wenn du magst, kann ich da mal reinschauen und etwas implementieren. Nur testen kann ich es leider nicht.

roedert

gerne  :)
Hab mir mal die genannten Dokus durchgelesen ... das ist ja schon ganz schön wüst was die da als "Protokoll" einsetzen

daniel2311

und ganz fies ist die AES Verschlüsselung für das Dingen, aber das liegt eher an Perl ;)

daniel2311

So habe etwas programmiert, kann es aber leider natürlich nicht wirklich testen. Kann ich dir das Modul mal so zukommen lassen?

roedert

Gerne doch ... kannst das Modul doch einfach hier anhängen :-)

daniel2311

#7
ich wollte eh noch einen neuen Thread aufmachen, wo offiziell das Modul drin ist und es gibt hier schon einiges zu:
https://forum.fhem.de/index.php/topic,38231.135
nicht, dass ich überall verschiedene Versionen dranhänge...
Aber ich habe es mal angehangen

edit: Modul im SVN

roedert

Erstmal großes Danke!
Habs getestet ... on und off funktioniert schonmal prima.
Alerding stürtzt FHEM beim Aufruf des "getStatus" sofort ab (WebGUI ist nicht mehr erreichbar.)

Im Logfile steht dazu
When using no padding, plaintext size must be a multiple of 16 at /opt/fhem/FHEM/38_Broadlink.pm line 278.

daniel2311

Kannst du mal Zeile 274 und 275 auf folgendes ändern:

my $msg = "sp3 receiving status - data length: " . length($data);
Log3 $hash->{NAME}, 1, $msg;


Mich würde interessieren, wie lange die Antwort ist. Letztlich sagt er, er möchte nicht die Daten entschlüsseln, weil zu wenig Daten zurück übertragen wurden. Leider kann ich das gerade ja nur schwer testen... laut Python Skript sollte es aber laufen und so entschlüssel ich eigentlich auch die anderen Daten vom RMPro... seltsam.

roedert

2017.05.14 13:03:58 1: sp3 receiving status - data length: 512
When using no padding, plaintext size must be a multiple of 16 at /opt/fhem/FHEM/38_Broadlink.pm line 278.

daniel2311

Gibt jetzt mehrere Dinge, die wir tun können. Wäre super, wenn du mir sagen könntest, was zum Erfolg geführt hat.

1. Zeile 500: Könntest du da mal die 512 auf 1024 setzen.

Ggf. hilft das schon und erledigt das Problem, denn im Original steht hier auch eine 1024, warum auch immer ich das runter gesetzt habe.

2. Zeile 405:
Hier steht aktuell: -padding => 'none'
Bitte ändern in : -padding => 'null'

Bin gespannt ob es klappt. Leider muss ich dich da ein wenig testen lassen, weil ich das Gerät leider (noch) nicht habe. Sorry

roedert

Zitat von: daniel2311 am 14 Mai 2017, 13:52:52
Leider muss ich dich da ein wenig testen lassen, weil ich das Gerät leider (noch) nicht habe. Sorry

Wenn du schon für mich arbeitest, kann ich auch für dich testen  ;D
Probiere es nachher aus und melde mich.

Danke nochmal für die schnelle Umsetzung.

roedert

Nach den Änderungen stürzt FHEM beim getStatus zumindest nicht mehr ab  :)
Allerdings wird der Status auch nicht wirklich gelesen, es kommt immer noch ein Fehler:

2017.05.14 15:58:28 1: sp3 receiving status - data length: 568
Argument "^A" isn't numeric in integer eq (==) at /opt/fhem/FHEM/38_Broadlink.pm line 279.

oder auch

Argument "\0" isn't numeric in integer eq (==) at /opt/fhem/FHEM/38_Broadlink.pm line 279.

daniel2311

dann bitte mal in Zeile 279 ein "eq" anstatt == machen...

if (substr($decodedData, 4, 1) eq 0) {