Broadlink Modul

Begonnen von daniel2311, 14 Mai 2017, 22:51:30

Vorheriges Thema - Nächstes Thema

daniel2311

Hallo zusammen,

ich möchte das Broadlink Modul vorstellen.
Ursprünglich ist das Modul aus folgendem Thread entstanden:
https://forum.fhem.de/index.php/topic,38231.0.html

Unterstütze Geräte:
BroadLink RMs (Mini 3, Pro und Plus) für Infrarot und bei Pro zusätzlich 433MHz Geräte
Broadlink SP3 zum Schalten der WLAN-Steckdose

Abhängigkeiten
Zur Verschlüsselung wird AES benötigt. Die Installation birgt manchmal einige Schwierigkeiten.
Mit Windows und Active-Perl ist lassen sich die Module so installieren:
ppm install Crypt-CBC
ppm install Crypt-OpenSSL-AES[code]
Linux und der Raspberry hat sich so überlisten lassen:
[code]
sudo apt-get install libcrypt-cbc-perl
sudo apt-get install libcrypt-rijndael-perl
sudo apt-get install libssl-dev
sudo cpan Crypt/OpenSSL/AES.pm


Definition von Geräten
define <name> Broadlink <ip/host> <mac> <type=rmpro oder sp3>

Die Mac-Adresse muss im Format xx:xx:xx:xx:xx eingegeben werden.

Was ist noch zu tun?

  • Ins SVN einchecken
  • RM Pro: Sequenzen von Befehlen mit Pausen dazwischen, die FHEM nicht blockieren.
  • RM Pro: Möglichkeit Subdevices von einem Broadlink Device zu erzeugen. Beispielsweise das man sagen kann:
    set Broadlink createNewDevice Leinwand
    und in dem Device dann die Tasten aufnehmen kann Auf und Ab, das was man jetzt im Hauptdevice macht. Datenbank bleibt allerdings immer noch für alle offnen.
    Zusätzlich könnte man dann noch ein Status-Tracking machen, denn beispielsweise mein Beamer und mein TV sollte man nicht ein Power-Signal schicken, wenn dieser schon an ist. Außerdem würde ich gerne eine Automatic einbauen, dass automatisch den Strom für den Beamer einschaltet, welcher an einer 433 MHZ Steckdose. Somit könnte man sein Subdevice auf bestimmte weise Konfigurieren und als IODev den eigentlich Broadlink nehmen. Da müsste man sich die ein oder andere Funktion für Ausdenken, was ganz sinnvoll ist.
  • RM Pro: Besteht wirklich Interesse an der Temperatur? Wenn ja, kann ich das Implementieren, aber wahrscheinlich nur in dem Pro verfügbar und auch zur Genauigkeit kann ich aktuell nichts sagen.

Kuzl

Hallo Daniel,

was kann denn an 433MHz-Geräten vom MroadLink RM Pro gesteuert werden?
Kann da RAW gesendet und empfangen werden und damit dann eigentlich alles?
Dann könnte das ja einen CUL/Signalduino ersetzen.

Gruß,
Kuzl

daniel2311

Hi Kuzl,

es geht dabei um eher Schalter und passende Steckdosen oder Geräte, die sich an und ausschalten. Man kann eine vorhandene Fernbedienung aufnehmen und hinterher den aufgenommenen Befehl wieder abspielen. Im RAW-Format ist da aber nichts möglich. Das Gerät kann nur vorher einmal erfragte Befehle, die man sich merkt selbst merken kann, wieder abspielen.

Ich habe damit Fernbedienungen von Funksteckdosen ersetzt, sowohl welche die mit RFX empfangen werden konnte, aber auch welche, die ich für wenig Geld vom OBI gekauft habe. Außerdem lässt sich damit ziemlich problemlos meine Beamerleinwand steuern.

Das Gerät kann also empfangen, aber es nimmt halt nur recht kurzfristig Signale auf und ist somit nicht zum dauerhaften Empfang gedacht.

LotruS4606

Hi! Habe das im alten Post auch schon verfolgt. Habe es zwei Wochen lang auf einer Synology DS 212j nicht zum Laufen gebracht, wegen fehlender AES und anderen Problemen.
Jetzt am Wochenende mit einem Pi probiert und es hat auf Anhieb funktioniert! Sehr nice!
Für die Alexa Anbindung habe ich einfach das hier gemacht: https://forum.fhem.de/index.php?topic=66920.0
Vielen Dank für das FHEM Modul!

"Computer, Kino an!"
- Leinwand runter
- Beamer Funksteckdose an
- Beamer IR Fernbedienung an
- Soundanlage an
- Soundanlage auf Channel 2
- Licht aus
- AppleTV aus dem stand-by wecken

prodigy7

Wer daran verzweifelt, dass sudo cpan Crypt/OpenSSL/AES.pm nicht durch läuft. Mit apt install libssl-dev davor ist es kein Problem mehr!

prodigy7

Deinen Featurevorschlag für Subdevices finde ich eine sehr gute Idee!

Wäre dann z.B. denkbar, dass man optional an ein Subdevice eine Funktion "binden" könnte, die triggert ob z.B. das Gerät eingeschaltet ist indem Sie einen Ping schickt.
Wenn man dann mehrere Befehle hintereinander, z.B. "Power on" und dann direkt "Mute" sendet, würde "Mute" dann so lange warten bis das Gerät erreichbar ist. Ggf. könnte man das auch mit dem PRESENCE-Modul kombinieren!?

Generell habe ich z.B. das Problem, das mein TV nach dem Einschalten ca. 7 Sekunden braucht, bis er ansprechbar ist für weitere Befehle. Entsprechend brauch ich ein Delay wie auch immer umgesetzt ...

daniel2311

Ja, über so etwas ähnliches habe ich auch schon nachgedacht, aber ein wenig anders. Die von dir genannten 7 Sekunden hätte ich ggf. im Device als Attribut abgespeichert und dann erst, wenn die 7 Sekunden um sind, weitere Befehle laufen lassen.
Ich bin auch am überlegen, wie ich es sinnvoll realisieren kann, einen Status von einem Gerät zu tracken. Mute ist da ja ein spannendes beispiel. Möchte ich Mute drücken oder möchte ich eigentlich wissen, wie mute steht, um den Ton an- oder auszuschalten. Ähnliches, sicherlich noch wichtiger, bei Power-Taste.

Aktuell komme ich aber gerade relativ wenig dazu, weil ich einen größeren Wasserschaden im Haus habe, der sicherlich noch einige Wochen Zeit in Anspruch nimmt.

LotruS4606

Zitat von: prodigy7 am 25 Mai 2017, 16:23:05
Generell habe ich z.B. das Problem, das mein TV nach dem Einschalten ca. 7 Sekunden braucht, bis er ansprechbar ist für weitere Befehle. Entsprechend brauch ich ein Delay wie auch immer umgesetzt ...

Das gleiche Problem habe ich z.B. beim Beamer ausschalten, der noch etwa 20sec. nachkühlen muss, bevor die Steckdose aus geht.
Gelößt habe ich das mit der HA-Bridge, in der man delays einstellen kann: https://forum.fhem.de/index.php/topic,66920.0.html
Ist von mir aber leider nur gebastelt.

coolheizer

Ich komme einfach nicht weiter, ich habe nun Fhem erfolgreich auf meinem Raspberry pi3 Installiert, Das Broadlink Modul ist auch bereits installiert.
Ich bekomme auch die Tasten von der Funksteckdose über das Modul angelernt, bisher für Versuche erst einmal 2, diese habe ich in "wz_Lampe_an" und "wz_Lampe_aus" benannt.
Über die Konsole von Fhem bekomme ich diese auch mit dem Befehl "set Broadlink commandSend wz_Lampe_an" sowie "set Broadlink commandSend wz_Lampe_aus" geschaltet, über das Modul selber geht das ganze natürlich auch.

Das ganze möchte ich dazu über die HaBridge (ebenfalls erfolgreich auf dem gleichen Raspberry installiert) und Alexa steuern, und hier liegt das Problem.

Woher bekomme ich das Command HTTP URL um damit zu schalten? Gelesen habe ich das mann dieses direkt aus Fhem per "Link Kopieren" machen könnte, ich kann allerdings nix finden.

Wenn ich es richtig verstanden habe, so kann ich mit dem Befehl direkt im Browser die Dosen schalten, dieses benötige ich damit die Habridge funktioniert.

Versucht habe ich schon etliche Befehle, keiner davon hat leider funktioniert, einer davon :
http://191.168.178.34:8083/fhem?cmd.wz_Lampe_an%20set%20wz_Lampe_an
(191.168.178.34:8083 : richtig, die IP und der Port auf dem Fhem bei mir Läuft)

Bevor ich nicht den richtigen Befehl habe brauche ich mich um die Habridge nicht weiter zu kümmern, ob ich es dann dort zum laufen bekomme wird sich zeigen.

Mit den Gelernten Befehlen des Broadlink Modules habe ich nichts weiter angestellt, also keinen Schalter oder der gleichen erstellt, wüsste auch nicht ob, und wenn, wie es funktioniert.

Ich bin neu auf dem Gebiet und hatte mit Linux noch nicht viel am Hut, will heißen bitte nicht zu kompliziert erklären.
Ich bin auch gewillt mir sachen  anzulesen, ansonsten wäre ich sicher nicht so weit gekommen.

Sowas wie :
"Computer, Kino an!"
- Leinwand runter
- Beamer Funksteckdose an
- Beamer IR Fernbedienung an
- Soundanlage an
- Soundanlage auf Channel 2
- Licht aus
- AppleTV aus dem stand-by wecken

Wäre schon genial zu basteln, aber wie werden die gelernten Befehle von dem Broadlink Modul dazu genutzt/ verarbeitet?

Grüße aus der Lüneburger Heide.
Heizer
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

daniel2311

Hi Heizer,

schau dir mal dieses Tutorial an:

https://forum.fhem.de/index.php/topic,66920.0.html

Hier wird als erstes ein neues Modul FHEM definiert:
define WEBhabridge FHEMWEB 8088 global
attr WEBhabridge csrfToken none
attr WEBhabridge allowfrom 127.0.0.1|192.168.1.10


Und das nicht ohne Grund. Das wichtige ist nämlich die zweite Zeile: csrfToken none
Dann vermute ich, wird es bei dir auch mit der HABridge laufen und wie ich von LotruS4606 kann man in der HABridge auch Delays erzeugen.

Sonst hat auch folgendes bei mir funktioniert:
https://forum.fhem.de/index.php/topic,38231.msg623728.html#msg623728

coolheizer

#10
Danke Daniel das token war es  :)


Wo werden eigentlich die aufgenommenen Signale gespeichert zwecks sicherung?

Edit sagt:

Habe es gefunden: /opt/fhem/log die Datei broadlink.save
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Cyber

Hallo allerseits,

ersteinmalmal vielen Dank für dieses super Modul!

Ich habe aktuell noch ein kleines Problemchen: Ich habe mir mit einem notify einen kleinen Ablauf von Aktionen gebastelt, der Verschiedene Geräte schaltet. Das notify sieht so aus: YT_On:on {fhem("set StromTV on") ;; sleep(1) ;; fhem("set WzIR commandSend TV_pwr") ;; fhem("set WzIR commandSend Amp_pwr") ;; fhem("set WzIR commandSend Amp_aux") ;; sleep(14) ;; fhem("set WzIR commandSend TV_source") ;; sleep(1) ;; fhem("set WzIR commandSend TV_up") ;; fhem("set WzIR commandSend TV_Ok")}
Da mein Fernseher etwas Zeit benötigt um "hochzufahren" habe ich das Delay von 14 Sekunden eingebaut. Wenn ich jetzt dieses notify triggere funktioniert soweit auch alles. Aber am Ende läuft das notify in einer Endlosscheife die (vermutlich) FHEM zum absturz bringt, sodass ich FHEM über die Konsole neustarten muss. Im Log steht folgendes: 2017.07.13 19:00:21 3: CUL433 IT_set: StromTV on
2017.07.13 19:00:42 3: WzIR: Error Timout
2017.07.13 19:00:42 3: WzIR: Error: Eval corrupted: Timed Out at ./FHEM/38_Broadlink.pm line 488.

2017.07.13 19:00:46 3: WzIR: Error Timout
2017.07.13 19:00:46 3: WzIR: Error: Eval corrupted: Timed Out at ./FHEM/38_Broadlink.pm line 488.

2017.07.13 19:00:49 3: WzIR: Error Timout
2017.07.13 19:00:49 3: WzIR: Error: Eval corrupted: Timed Out at ./FHEM/38_Broadlink.pm line 488.

2017.07.13 19:00:53 3: CUL433 IT_set: StromTV on
2017.07.13 19:01:14 3: CUL433 IT_set: StromTV on
2017.07.13 19:01:44 3: CUL433 IT_set: StromTV on
2017.07.13 19:01:49 3: WzIR: Error Timout
2017.07.13 19:01:49 3: WzIR: Error: Eval corrupted: Timed Out at ./FHEM/38_Broadlink.pm line 488.

Weiß jemand woran das liegen könnte?

Gruß Cyber

mumpitzstuff

Versuch doch mal den Ablauf mit mehreren at zu machen und verzichte auf sleep. Ich vermute das blockiert.

daniel2311

Ohh, sorry, das habe ich überlesen. Also eigentlich kommt das Timeout nur, wenn das Gerät nicht erreichbar ist.

Nur mal vllt. eine dumme Vermutung, das Broadlink-Gerät hängt nicht zufällig an dem StromTV. Das Starten dauert nämlich ein klein wenig... Manuell kannst du aber die Befehle ausführen?

Cyber

Guten "Abend"  ;)!

Entschuldigung, dass ich mich jetzt erst wieder melde... Der Broadlink(RM Mini3) hängt nicht am StromTV. Das manuelle Ausführen von Befehlen klappt einwandfrei! @mumpitzstuff Danke für den Tipp, dass werde ich auf alle fälle mal versuchen und mich dann nochmal melden!

Gruß Cyber