360 Grad IR WLAN Gateway

Begonnen von gloob, 08 Juni 2017, 21:16:36

Vorheriges Thema - Nächstes Thema

Frank_Huber

Zitat von: Fixel2012 am 17 Juli 2017, 15:32:20
da ich leider keinen 3D Drucker besitze und die Investition für die geringe Nutzung sich nicht lohnen würde, bin ich auf der Suche nach jemanden, der mir zwei von den Hübschen Gehäusen Druckt.
Falls jemand mir so einen Service bieten kann (natürlich gegen Bezahlung) würde ich mich über eine PN freuen!

Da schließe ich mich an.
2 Gehäuse hätte ich gerne. Weis oder schwarz. :)

Per

Zitat von: mbrak am 29 Juni 2017, 10:31:04und die Klipse sind zu dünn.
Evtl. solltest du auch ein paar weniger dran machen. Da das Gehäuse ja unbelastet (ist ja keine Fernbedienung für die Hand) ist, sollte das reichen und die Kraft zum Öffnen ist geringer.

Zitat von: accessburn am 11 Juli 2017, 11:44:29
DOIF:
([IR_COMMAND] eq "TV_MUTE") ({GetHttpFile("192.168.178.55","/ir?code=290&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_POWER") ({GetHttpFile("192.168.178.55","/ir?code=A90&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_EPG") ({GetHttpFile("192.168.178.55","/ir?code=6D25&bits=15&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_RETURN") ({GetHttpFile("192.168.178.55","/ir?code=62E9&bits=15&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_OK") ({GetHttpFile("192.168.178.55","/ir?code=0a70&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_MUTE") ({GetHttpFile("192.168.178.55","/ir?code=290&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_INFO") ({GetHttpFile("192.168.178.55","/ir?code=5D0&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_JUSCHU") ({GetHttpFile("192.168.178.55","/ir?code=0410&bits=12&protocol=Sony");;GetHttpFile("192.168.178.55","/ir?code=0610&bits=12&protocol=Sony");;GetHttpFile("192.168.178.55","/ir?code=0e10&bits=12&protocol=Sony");;GetHttpFile("192.168.178.55","/ir?code=0110&bits=12&protocol=Sony");;GetHttpFile("192.168.178.55","/ir?code=0a70&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_1") ({GetHttpFile("192.168.178.55","/ir?code=010&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_2") ({GetHttpFile("192.168.178.55","/ir?code=0810&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_3") ({GetHttpFile("192.168.178.55","/ir?code=0410&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_4") ({GetHttpFile("192.168.178.55","/ir?code=0c10&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_5") ({GetHttpFile("192.168.178.55","/ir?code=0210&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_6") ({GetHttpFile("192.168.178.55","/ir?code=0a10&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_7") ({GetHttpFile("192.168.178.55","/ir?code=0610&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_8") ({GetHttpFile("192.168.178.55","/ir?code=0e10&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_9") ({GetHttpFile("192.168.178.55","/ir?code=0110&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_0") ({GetHttpFile("192.168.178.55","/ir?code=0910&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_VOL_DOWN") ({GetHttpFile("192.168.178.55","/ir?code=0c90&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_VOL_UP") ({GetHttpFile("192.168.178.55","/ir?code=0490&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_PRG_DOWN") ({GetHttpFile("192.168.178.55","/ir?code=0890&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "TV_PRG_UP") ({GetHttpFile("192.168.178.55","/ir?code=090&bits=12&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "SB_POWER") ({GetHttpFile("192.168.178.55","/ir?code=0540c&bits=15&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "SB_VOL_DOWN") ({GetHttpFile("192.168.178.55","/ir?code=0640c&bits=15&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "SB_VOL_UP") ({GetHttpFile("192.168.178.55","/ir?code=0240c&bits=15&protocol=Sony")})
DOELSEIF ([IR_COMMAND] eq "SB_MUTE") ({GetHttpFile("192.168.178.55","/ir?code=0140c&bits=15&protocol=Sony")})

Ich hätte das entweder auf eine Sub im 99_myUtils ausgelagert, der du nur den Code übergibst, oder eine Hilfsvariable gesetzt, wenn die sich ändert, sendet ein DOIF oder notify den gesamten String inkl. dem Code.
([IR_COMMAND] eq "TV_MUTE") (set IR_Dummy 290)
DOELSEIF ([IR_COMMAND] eq "TV_POWER") (set IR_Dummy A90)
DOELSEIF ([IR_COMMAND] eq "TV_EPG") (set IR_Dummy 6D25)
...
DOELSEIF ([IR_COMMAND] eq "TV_JUSCHU") (set IR_Dummy 0410,set IR_Dummy 0610,set IR_Dummy 0e10,set IR_Dummy 0110,set IR_Dummy 0a70)
...


([IR_Dummy]) ({GetHttpFile("192.168.178.55","/ir?code=[$EVENT]&bits=15&protocol=Sony")})
Mit der neuen Firmware halt die Syntax entsprechend angepasst.

Oder noch trixischer:
([IR_COMMAND] eq "TV_MUTE") ()
DOELSEIF ([IR_COMMAND] eq "TV_POWER") ()
DOELSEIF ([IR_COMMAND] eq "TV_EPG") ()
...
DOELSEIF ([IR_COMMAND] eq "TV_JUSCHU") ()()()()()
...
attr IR_DOIF cmdState 290|A90|6D25|...|0410,0610,0e10,0110,0a70|...
attr IR_DOIF wait ... (bei Bedarf für die Mehrfachbefehle)

([IR_DOIF]) ({GetHttpFile("192.168.178.55","/ir?code=[$EVENT]&bits=15&protocol=Sony")})


Frank_Huber

Per, wenn man es kann ist das bestimmt besser zu lösen. ;-)
Der DOIF so wie er ist hat zumindest auf Anhieb funktioniert und auch ein Beginner durchschaut es. *ggg* ;)


gloob

#183
Guten Morgen,

Es gibt jetzt eine neue Firmwareversion v2.2.
Die Daten für die Firmware sind im ersten Post.

Die Besonderheiten der Version sind:


  • Over-the-air Update
  • Reset über Web-Interface oder Konsole
  • Ausgabe der Dekodierten IR Signale über KeyValueProtocol in FHEM



Reset über Web-Interface oder Konsole

Webinterface: http://ip/reset
Konsole: reset

Ein Aufrufen der Reset-Page oder Eingabe von "reset" in der Konsole bewirkt ein Reset der WiFi Einstellungen.



Ausgabe der Dekodierten IR Signale über KeyValueProtocol in FHEM

Die Empfangenen IR Signale können über das KeyValueProtocol in FHEM eingebunden werden.
Hierfür sind folgende Schritte notwendig:

KVPUDP als Modul in FHEM installieren (leider noch nicht über Update verfügbar)
https://forum.fhem.de/index.php/topic,45545.0.html

Multicast Bibliothek installieren
sudo apt-get install libio-socket-multicast-perl

KVPUDP Device in FHEM anlegen:
define myKVPUDP KVPUDP
attr myKVPUDP verbose 4


Innerhalb von 2 Minuten müssen 2 Nachrichten eintreffen, damit per auto-create ein neues Device angelegt wird.
Hier sind dann die letzten 5 dekodierten Signale sichtbar.



Over-the-air Update

Webinterface: http://ip/upload

Über das Webinterface kann eine neue Firmware in Form einer ".bin" Datei hochgeladen werden.



Einbinden des Gateways in FHEM zum Senden von IR Codes

Dummy

define IR_Command dummy
attr IR_Command room IR_Remote
attr IR_Command setList TV_1 TV_2 TV_12 TV_Power
attr IR_Command webCmd TV_1:TV_2:TV_12:TV_Power

DOIF

define IR_Remote DOIF ([IR_Command] eq "TV_1") ({GetHttpFile("192.168.1.27","/json?plain=[{'data':'E0E020DF','type':'SAMSUNG','length':32}]")})\
DOELSEIF ([IR_Command] eq "TV_2") ({GetHttpFile("192.168.1.27","/json?plain=[{'data':'E0E0A05F','type':'SAMSUNG','length':32}]")})\
DOELSEIF ([IR_Command] eq "TV_12") ({GetHttpFile("192.168.1.27","/json?plain=[{'data':'E0E020DF','type':'SAMSUNG','length':32},{'data':'E0E0A05F','type':'SAMSUNG','length':32}]")})\
DOELSEIF ([IR_Command] eq "TV_Power") ({GetHttpFile("192.168.1.27","/json?plain=[{'data':'E0E040BF','type':'SAMSUNG','length':32}]")})
attr IR_Remote do always
attr IR_Remote room IR_Remote
attr IR_Remote verbose 0


Der JSON Part kann folgende Parameter enthalten:

data - IR code data, may be simple HEX code such as "A90" or an array of int values when transmitting a RAW sequence
type - Type of signal transmitted. Example "SONY", "RAW", "Delay" or "Roomba" (and many others)
length - (conditional) Bit length, example 12. Parameter does not need to be specified for RAW or Roomba signals
pulse - (optional) Repeat a signal rapidly. Default 1
pdelay - (optional) Delay between pulses in milliseconds. Default 100
repeat - (optional) Number of times to send the signal. Default 1. Useful for emulating multiple button presses for functions like large volume adjustments or sleep timer
rdelay - (optional) Delay between repeats in milliseconds. Default 1000
khz - (conditional) Transmission frequency in kilohertz. Default 38. Only required when transmitting RAW signal
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

accessburn

Suuuper, das mit dem Update und Reset ist ja richtig cool.

Aber entschuldige die Frage, für was ist dieses KeyValueProtocol gut? im commandref ist es für Jeelink drin und auch leider nicht auf Deutsch.
Kannst du mir kurz erklären was man damit macht?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

gloob

#185
Es gibt dann ein Device pro Gateway und dort entsprechende Readings.

Du musst dann für das Dekodieren von Signalen nicht mehr auf die Webseite vom Gateway gehen, sondern siehst es direkt in FHEM.
Siehe Anhang.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

accessburn

Respekt :-)
Gefällt mir. Dann kann man vielleicht mal schöne neue spielereien mit alten Fernbedienungen oder ungenutzten Tasten machen. Danke  :)
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

gloob

Großer Dank geht aber an Shojo für die Integration des KeyValueProtokolls und des Updates.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Frank_Huber

mit dem KVPUDP,

woher weis FHEM dass die Telegramme zu empfangen sind?
ich hab im Netzwerk 4 FHEM Instanzen. würden dann alle 4 das device anlegen?

gloob

Nur wenn du in alle 4 FHEM Instanzen ein KVPUDP Device anlegst.
Die Daten werden per UDP Broadkast gesendet und jeder der sich dafür interessiert, nimmt sie entgegen.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Frank_Huber

ah, OK. dann ists klar. :-) Danke für die Info!

gloob

Der Vorteil ist, dass das IR Gateway nicht wissen muss welche IP FHEM hat.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Frank_Huber

Ja das ist klar wenn es per broadcast geht.

könntest Du im ersten post ein zip der 2.2 anhängen anstatt der ino?
die IDE meckert es so an.

gloob

Was meckert die IDE denn? Du musst die Datei nur in einen Ordner "IR_Blaster_360_2.2" packen
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Sven9719

Hi gloob,

gibt es irgendwo eine genaue (Anfänger-freundliche) Anleitung zum Updaten der Firmware auf eine Aktuellere.

Habe in diesem Thread nur immer mal Fetzen von Anleitungen gesehen, eine komplette ausführliche Anleitung wäre Super!!

Oder habe ich irgendwo etwas übersehen?  :o

Danke und VG

Sven