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) {

daniel2311

Oder wahrscheinlich noch besser, wenn es nicht klappt


if (unpack("C*", substr($decodedData, 4, 1)) eq 0) {

roedert

if (substr($decodedData, 4, 1) eq 0)  { funktioniert nicht ....
if (substr($decodedData, 4, 1) eq "\0")  { funktioniert....
if (unpack("C*", substr($decodedData, 4, 1)) eq 0) { funktioniert auch :-)

daniel2311

#17
Das hört sich gut an. Ich habe jetzt noch eingebaut, dass beim Starten vom FHEM einmal der Status vom Gerät geholt wird. Was ich mir auch noch vorstellen könnte, dass ich etwas baue, womit er regelmäßig einstellbar den Status neu vom Gerät holt, damit man sieht, ob es an oder aus ist ;)

edit: Modul im SVN

roedert

Habe noch einen "Bug" gefunden:
Bei der Definition - und noch viel schlimmer, bei jedem Neustart von FHEM werden die definierten SP3's eingeschaltet.
Wäre prima, wenn du das noch abstellen kannst.

Und spricht eigentlich was gegen die "Veröffentlichung" des Modul ins normale FHEM-Repository?

daniel2311

Tja, habe ich Unsinn gebaut. Warum keine Ahnung.
Ich wollte, eigentlich nicht den Power einschalten, sondern den Status vom Gerät holen, damit beim Start vom FHEM der richtige Status angezeigt wird, falls man sie so schaltet. Zeile 72 mit Broadlink_sp3_getStatus($hash); ersetzen. Habe ich das falsche kopiert gehabt.

Naja, eigentlich spricht da aus meiner Sicht nichts mehr gegen. Ich hatte noch einen Hinweis bekommen, ich soll das über DevIo machen, aber das habe ich mir noch nicht angeschaut und deshalb noch nicht gemacht. Letztlich habe ich aber auch schon ein SVN-User. Also eigentlich spricht nichts dagegen;)

daniel2311


Jojocra

Cool, hört sich super an! Es gibt anscheinend eine neue Version, die sp3s. Soweit ich das sehen kann, hat sie ein "power meter"
https://www.amazon.de/Broadlink-Überwachung-intelligente-Stromverbrauch-Automation/dp/B074X9KY33

Ich habe mir die Steckdose auf aliexpress.com bestellt. Hast du eine Idee, wie die Abfrage nach dem Stromverbrauch laufen könnte und kann ich dich um Hilfe bitten, sobald sie da ist?

daniel2311

Hi Jojocra,

ich habe auch eine, aber bisher noch nichts weiter gemacht. An und aus geht sie über das Modul, aber der Powermeter schien mir erst einmal nur über die "cloud" ansprechbar zu sein... aber mal gucken;)

LG
Daniel

Jojocra

Cool, meine ist jetzt auch da. Ich schau mal, was man da so auslesen kann...

Stoanze01

Hallo,

hat sich im Bezug auf die sp3s und deren Abfrage nach dem Stromverbrauch schon was herausfinden lassen?

Würde mich auch sehr interessieren diese als "Powermeter" einzusetzen!

Gruß
Stefan

daniel2311

Hi Stefan,

nein, leider nicht. Ich habe den Herrsteller angeschrieben, aber da kam nichts. Abgesehen vom aktuellen Verbrauch gibt es da leider nichts. Sonst müsste man wohl die Cloud auslesen, vermute ich.

LG
Daniel