Broadlink als IR + HF gateway

Begonnen von palicaj, 17 Juni 2015, 15:42:39

Vorheriges Thema - Nächstes Thema

n4rrOx

#75
Hallo Daniel,

Könnte das Modul ebenfalls am Wochenende testen.
Habe einen RMPro.

Was steckt den hinter dem Modul?
Sind das im wesentlichen die hier beschriebenen Wiki-Scripte?

Sequenzen mit definierbaren Abständen zwischen den Codes wären interessant.

daniel2311

Hi n4rrOx,

aktuell ist es tatsächlich nichts weiter als Lernen von Codes, Abspielen eines einzelnen aufgenommen Codes, löschen und Umbennen von Codes.

Aber weiteres ist bestimmt auch noch sinnvoll erweiterbar. Ich denke, die Sequenzen werden kein Problem sein, auch wenn man das mit einem kleinen Skript bzw. einem virtuellen Schalter bestimmt problemlos auch machen kann ;) Mal schauen, was da einfacher ist.

daniel2311

#77
Also dann nun hier das Modul...

Grundlage für die Nutzung des Moduls sind folgende Perl-Libaries, die nicht im Standard mit drin ist.
Ich konnte sie allerdings problemlos mit folgenden Befehlen installieren

ppm install Crypt-CBC
ppm install Crypt-OpenSSL-AES



Das define sieht wie folgt aus:
define <name> Broadlink <ip> <mac> <typ>
Bei mir also konkret so:
define testBroadlink Broadlink 10.23.11.92 34:EA:34:F4:3F:7B rmpro

Die Mac-Adresse muss mit Doppelpunkten definiert sein. Aktuell steht im Typen immer "rmpro". Für das den Mini bitte "r3mini". Aktuell mache ich mit dem Typen allerdings noch nicht.

Das war es dann eigentlich schon. Im Anschluss solltet ihr in dem Gerät 4 Befehle sehen. Wichtig ist der recordNewCommand, den ihr mit:
set <device> recordNewCommand <commandoname>
aufnehmen könnt, beispielsweise also für die Mute-Taste des TV
set testBroadlink recordNewCommand TV_WZ_Mute
Wenn ihr den Befehl absetzt, leuchtet das RMPro orange und ihr könnt die Taste auf der Fernbedienung drücken. Das Kommando ist aufgezeichnet, wenn es nicht mehr orange blinkt.

Abspielen könnt ihr dann den aufgenommenen Befehl mit dem commandSend Kommando.
set <device> commandSend <commandoname>
Beispiel:
set testBroadlink commandSend TV_WZ_Mute

Der sollte euch auch in der Liste angezeigt werden.

Für Vorschläge bin ich offen und wenn etwas nicht funktioniert, sagt einfach Bescheid, aber ich hoffe, es klappt grob.

Wenn ihr mehrere Geräte habt, ist die Datenbank der aufgenommen Kommandos für alle Geräte verfügbar. So sollte es zumindest sein ;)

PS: Der erste Test von Stefan hat scheinbar funktioniert. Den habe ich den Code gestern schon geschickt. Wenn noch mehr Leute erfolgreich getestet haben, werde ich einen eigenen Thread aufmachen und auch schauen, ob ich das ganze direkt in den FHEM-SVN einfüge. Was noch zu tun ist, ist ein wenig Errorhandling, eine deutsche Doku und vllt. dann noch ein wenig mehr Komfort. Theoretisch lässt sich aus dem RMPro zumindest wohl auch eine Temperatur auslesen, aber keine Ahnung, ob das wirklich jemand benötigt.

edit: Modul im SVN

fstefan1960

Hallo,

ich kann bestätigen, dass das bei mir so klappt. Die Definitionen funktionieren, die Geräte tun es.
Ich habe je einen Rm3 pro und einen R3 mini. Habe das Ganze an dem einen Gerät aufgenommen. Codes stehen an beiden Geräten zur Verfügung und werden gesendet.

Also: Klappt mit beiden Typen.

Vielen Dank.
FHEM auf PC: CUL868, CUL 443, HM_LAN, JeeLink
FHEM auf Raspi: CUL868
div. LaCrosse Temp/Hum-Sensoren, HM-Heizkörperventile, Schaltaktoren, etc.

daniel2311

Und jetzt mal ein vereinfachtes Beispiel für einen Dummy-Schalter, der etwas auslösen kann. Mit der Alexa-Anbindung kann man dann einfach sagen Kino an und es funktioniert. Er schaltet den Beamer ein, macht die Playsi an (aber nur weil mein Verstärker das kann) usw.

Nachteil, die Geräte müssen natürlich den richtigen Status haben. Anbei mal ein Beispiel, bei dem ich mir noch unsicher bin, ob das FS20 Modul das richtige ist - aber so habe ich es schon mal gemacht und war ganz zufrieden. Hier ist auch eine pause mal eingebaut.


#definiert den schalter neuen Schalter WZ_Kinomodus:
define WZ_Kinomodus FS20 9999 99
#Alexa versteht "modus" wohl nicht so gut, also nur Kino
attr WZ_Kinomodus alexaName Kino
#Raum für Alexa
attr WZ_Kinomodus alexaRoom Wohnzimmer
#Dummy Attribut, um mitzuteilen, dass es sich nicht um einen echten FS20 Schalter handelt
attr WZ_Kinomodus dummy 1
#Keine Ahnung, wofür das benötigt wird.
attr WZ_Kinomodus group aax
#Räume
attr WZ_Kinomodus room Licht,alexa
#Wichtiger Schritt. Definieren des Notifys, welches auf alle Events des Schalters hört
define WZ_Kinomodus_Notify notify WZ_Kinomodus:.* {\
#Eigentliches Kommando, welches ausgeführt wird:
#Wenn das Event nicht off ist - also wenn der Schalter an geht.
if ("$EVENT" ne "off") {\
#Führe die FHEM Befehle aus: set WZ_Broadlink commandSend Leinwand_ab usw...
  fhem("set WZ_Broadlink commandSend Leinwand_ab;; set WZ_Broadlink commandSend Beamer_Power;; set WZ_Broadlink commandSend Teac_Playstation;; set WZ_Broadlink commandSend Teac_Playstation_Power;;");;\
# sonst - also wenn der Schalter ausgeschaltet wird
} else {\
#Führe die FHEM Befehle aus: set WZ_Broadlink commandSend Leinwand_rauf usw... und auch 2.5 Sekunden schlafen dabei mit sleep 2.5
  fhem("set WZ_Broadlink commandSend Leinwand_rauf;; set WZ_Broadlink commandSend Beamer_Power;; set WZ_Broadlink commandSend Teac_Playstation;; set WZ_Broadlink commandSend Teac_Playstation_Power;; sleep 2.5;; set WZ_Broadlink commandSend Beamer_Power;;" );;\
}\
}


Ich war jetzt selbst erstaunt, dass es so gut funktioniert.

tklein

#80
@daniel2311

das klingt doch alles ziemlich gut/logisch. Werde das am WE auch mal testen. Das mit der Temperatur würde mich interessieren. Ist der Fühler in jedem Broadlink verbaut?
Aber wenn die "Genauigkeit" wie beim DHT11 ist, dann doch eher nicht. :-)
Der Pro kann auch RF oder? 433 MHz oder auch 868 MHz?

EDIT:

Zitatif ("$EVENT" ne "off")
--> von "ne" habe ich noch nichts gehört. Ist das soetwas wie eq?

Zitatund auch 2.5 Sekunden schlafen dabei mit sleep 2.5
--> blockiert das nicht fhem in der Zeit? Ich habe solche Sleeps immer in separate Scripte ausgelagert.

EDIT2:

Zitatppm install Crypt-CBC
ppm install Crypt-OpenSSL-AES
--> Muss ich dafür actvice pearl installieren?
Bei mir kam die Meldung:
pi@pi:~ $ sudo ppm install Crypt-CBC
sudo: ppm: Kommando nicht gefunden



Gruß
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

LotruS4606

Hallo

Das Klingt ja mal nach einem großen Schritt nach vorne!
Lieder musste ich die Einrichtung der Geschichte unterbrechen.
Werde das heute Abend mal weiter ausprobieren.

Danke Daniel!

@tklein
868 MHz kann der Pro leider nicht.
"ne" müsste doch "not equal" sein oder?
Das "ppm: Kommando nicht gefunden" hatte ich auch heute Morgen. Vermutlich liegt das an meinem Synology, auf dem das FHEM läuft. Internet sagt, dass man es mit cpan testen soll...

Was ich heut Abend teste:

/usr/bin/perl -MCPAN -e shell
install Crypt-CBC-2.33.tar.gz
install Crypt-OpenSSL-AES-0.02.tar.gz

Wirklich spannende Sache, die hier gerade entsteht.

tklein

#82
Danke für die Infos, werde ich mal ausprobieren.

Komme beim installieren von Active Pearl auf meinem Raspi nicht weiter:


pi@pi:~/ActivePerl-5.22.3.2204-x86_64-linux-glibc-2.15-401614 $ sudo ./install.sh
perl/bin/perl: 1: perl/bin/perl:ELF: not found
perl/bin/perl: 2: perl/bin/perl: Syntax error: "(" unexpected




EDIT: Deine Version klappt bei mir leider auch nicht.


Fetching with LWP:
http://www.cpan.org/modules/03modlist.data.gz
Reading '/home/pi/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /home/pi/.cpan/Metadata
Warning: Cannot install Crypt-CBC-2.33.tar.gz, don't know what it is.
Try the command

    i /Crypt-CBC-2.33.tar.gz/

to find objects with matching identifiers.

cpan[2]> install Crypt-OpenSSL-AES-0.02.tar.gz
Warning: Cannot install Crypt-OpenSSL-AES-0.02.tar.gz, don't know what it is.
Try the command

    i /Crypt-OpenSSL-AES-0.02.tar.gz/

to find objects with matching identifiers.

cpan[3]> i /Crypt-CBC-2.33.tar.gz/
Distribution id = L/LD/LDS/Crypt-CBC-2.33.tar.gz
    CPAN_USERID  LDS (Lincoln D. Stein <lincoln.stein@gmail.com>)
    CONTAINSMODS Crypt::CBC

cpan[4]> install Crypt-CBC-2.33.tar.gz
Warning: Cannot install Crypt-CBC-2.33.tar.gz, don't know what it is.
Try the command

    i /Crypt-CBC-2.33.tar.gz/

to find objects with matching identifiers.
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

daniel2311

Hast du denn Active-Perl auf deinem Raspi mit FHEM überhaupt laufen?

Probiere mal folgendes:
cpan install Crypt::CBC
cpan install Crypt::OpenSSL::AES

bzw. die Variante von LotruS4606 ohne die Versionierung
install Crypt-CBC

tklein

nee beim Installieren von Active Pearl gab es ja diese Meldung:

Zitat
pi@pi:~/ActivePerl-5.22.3.2204-x86_64-linux-glibc-2.15-401614 $ sudo ./install.sh
perl/bin/perl: 1: perl/bin/perl:ELF: not found
perl/bin/perl: 2: perl/bin/perl: Syntax error: "(" unexpected
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

daniel2311

Warum willst du überhaupt ActivePerl installieren?

Du hast doch FHEM schon laufen, oder?

sudo apt-get install libcrypt-cbc-perl
sudo apt-get install libcrypt-rijndael-perl

Im zweiten Modul müsste auch aes bei sein.
Wenn nicht probiere mal:
apt-get install libcrypt-openssl-perl


tklein

ich dachte dass ich nur damit ppm installiert kriege.

Habe deine ersten Befehle erfolgreich ausgeführ. Beim define des Devices in FHEM kam folgdende Meldung:

install Crypt::OpenSSL::AES to use Broadlink

Dann habe ich beim Aufruf von "sudo apt-get install libcrypt-openssl-perl" eine Fehlermeldung bekommen und auf "sudo apt-get install libcrypt-openssl-rsa-perl" hoffenlich korrekt abgeändert.
Die Fehlermeldung wie oben beim Definieren des Device bleibt aber auch nach einem FHEM-Neustart bestehen.

Sorry in Linux kenne ich mich (noch) nicht so gut aus..
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

daniel2311

Was bekommst du denn für eine Fehlermeldung bei
"sudo apt-get install libcrypt-openssl-perl"

tklein

 sudo apt-get install libcrypt-openssl-perl
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
E: Paket libcrypt-openssl-perl kann nicht gefunden werden.
pi@pi:/opt/fhem/alexa-fhem/bin $
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

daniel2311

https://serverfault.com/questions/305953/how-to-install-perl-module-cryptopensslaes

sudo aptitude install libssl-dev
sudo cpan Crypt/OpenSSL/AES.pm

Klappt das? Ich kann auch mal später auf nem Rasperry so was ausprobieren... aber da habe ich aktuell kein FHEM drauf.