360 Grad IR WLAN Gateway

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

Vorheriges Thema - Nächstes Thema

gloob

Aktuelle Firmware:
https://forum.fhem.de/index.php/topic,72950.msg907507.html#msg907507



Hallo,

Um selbst ein wenig den Überblick zu behalten würde ich euch gerne ein neues 360° IR-WLAN-Gateway vorstellen.

Die Platine besitzt 7 IR LEDs die kreisförmig angeordnet sind. Dadurch muss nicht mehr genau auf den Empfänger "gezielt" werden.
Als Processor wird ein Wemos D1 verbaut.

Für das Einbinden ins WLAN wird der WiFiManager (https://github.com/tzapu/WiFiManager) benutzt und bietet so eine einfache GUI zum Einstellen der Parameter.

Für das Empfangen von IR Codes muss nur eine serielle Console mit der Arduino IDE geöffnet werden. Ein umfashen der Firmware ist notwendig.

*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 3
*WM: IP Address:
*WM: 192.168.1.9
WiFi manager setup finished
WLAN-IR-Gateway connected. IP Address: 192.168.1.9
MDNS responder started
HTTP server started
Setup finished
Encoding  : SAMSUNG
Code      : E0E0E01F (32 bits)
Timing[67]:
     +4600, -4450     + 650, -1650     + 650, -1650     + 650, -1650
     + 650, - 550     + 650, - 500     + 650, - 550     + 650, - 500
     + 650, - 550     + 650, -1650     + 650, -1650     + 650, -1650
     + 650, - 550     + 650, - 550     + 650, - 550     + 650, - 550
     + 650, - 550     + 650, -1650     + 650, -1650     + 650, -1650
     + 650, - 550     + 650, - 550     + 650, - 550     + 600, - 550
     + 600, - 550     + 600, - 550     + 600, - 550     + 600, - 550
     + 600, -1650     + 650, -1650     + 650, -1650     + 650, -1650
     + 650, -1650     + 650
unsigned int  rawData[67] = {4600,4450, 650,1650, 650,1650, 650,1650, 650,550, 650,500, 650,550, 650,500, 650,550, 650,1650, 650,1650, 650,1650, 650,550, 650,550, 650,550, 650,550, 650,550, 650,1650, 650,1650, 650,1650, 650,550, 650,550, 650,550, 600,550, 600,550, 600,550, 600,550, 600,550, 600,1650, 650,1650, 650,1650, 650,1650, 650,1650, 650};  // SAMSUNG E0E0E01F
unsigned int  data = 0xE0E0E01F;

Encoding  : SAMSUNG
Code      : E0E0D02F (32 bits)
Timing[67]:
     +4600, -4500     + 650, -1650     + 650, -1650     + 600, -1650
     + 600, - 550     + 600, - 550     + 600, - 550     + 600, - 550
     + 600, - 550     + 650, -1650     + 650, -1650     + 650, -1650
     + 650, - 550     + 650, - 550     + 650, - 550     + 600, - 550
     + 600, - 550     + 600, -1650     + 650, -1650     + 650, - 500
     + 600, -1650     + 650, - 550     + 650, - 550     + 650, - 500
     + 650, - 550     + 650, - 550     + 600, - 550     + 600, -1650
     + 650, - 550     + 600, -1650     + 650, -1650     + 650, -1650
     + 650, -1650     + 650
unsigned int  rawData[67] = {4600,4500, 650,1650, 650,1650, 600,1650, 600,550, 600,550, 600,550, 600,550, 600,550, 650,1650, 650,1650, 650,1650, 650,550, 650,550, 650,550, 600,550, 600,550, 600,1650, 650,1650, 650,500, 600,1650, 650,550, 650,550, 650,500, 650,550, 650,550, 600,550, 600,1650, 650,550, 600,1650, 650,1650, 650,1650, 650,1650, 650};  // SAMSUNG E0E0D02F
unsigned int  data = 0xE0E0D02F;


Die Ergebnisse des Empfängers können direkt für das Senden genutzt werden:

http://192.168.1.9/ir?code=E0E040BF&bits=32&protocol=Samsung
http://192.168.1.9/ir?raw=4600,4500,650,1650,650,1650,600,1650,600,550,600,550,600,550,600,550,600,550,650,1650,650,1650,650,1650,650,550,650,550,650,550,600,550,600,550,600,1650,650,1650,650,500,600,1650,650,550,650,550,650,500,650,550,650,550,600,550,600,1650,650,550,600,1650,650,1650,650,1650,650,1650,650


Der Code wird als HEX Wert gesetzt, so wie es der Empfänger Output ausgibt.

Die aktuelle Firmware werde ich hier immer als zip-Datei anhängen.




Integration in FHEM:
define IR_COMMAND dummy
attr IR_COMMAND group IR
attr IR_COMMAND setList RADIO_POWER TV_POWER RAW_POWER

define DOIF_IR_COMMANDS DOIF ([IR_COMMAND] eq "RADIO_POWER") ({GetHttpFile("http://192.168.112.232","/ir?code=FF08F7&bits=32&protocol=NEC")})\
DOELSEIF ([IR_COMMAND] eq "TV_POWER") ({GetHttpFile("192.168.112.232","/ir?code=FF08F7&bits=32&protocol=NEC")})
DOELSEIF ([IR_COMMAND] eq "RAW_POWER") ({GetHttpFile("192.168.112.232","/ir?raw=600,3700,650,3700,650,3700,650,3700,650,3700,650,3700,600,3700,600,3700,650,3700,650,3700,650,3700,650,3700,650,3700,600,3700,600,3700,650,3700,650,3700,650")})
attr DOIF_IR_COMMANDS do always
attr DOIF_IR_COMMANDS group IR
attr DOIF_IR_COMMANDS verbose 0


oder hier: https://forum.fhem.de/index.php/topic,72950.msg658213.html#msg658213



Changelog:

V1.1

  • Update auf neueste IR Bibliothek
V1.2

  • Senden von Raw Messages implementiert
V1.3

  • Bugfix: Rückkanal beim senden einer Raw Message implementiert
V1.4
V1.4.1

  • Ausgabe der aktuell verwendeten IP Adresse in der Konsole beim Dekodieren
V2.2

  • Neues Web Interface
  • Support für IR Sequenzen
  • "Over the air" Update
  • Dekodierte IR Signale über KeyValueProtocol in FHEM
V2.3

  • cdelay = Zeit zwischen 2 Commands in ms
V2.4

  • Anzeige der Update und Reset-URL in FHEM über KVP
V2.5

  • Support für negative RAW Werte

Beschreibung der neuesten Firmware: https://forum.fhem.de/index.php/topic,72950.msg661265.html#msg661265
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

gloob

Genauere Infos zur Hardware folgen am Wochenende, wenn Bedarf besteht.
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

CarstenF

Eine kleine Frage hätte ich da schon mal.....:-).  Ist die IR Bibliothek eigentlich "begrenzt" , oder kann der CUL auch bislang unbekannte Geräte entschlüsseln? Ok, es sind zwei Fragen... Wenn man neue Geräte über die serielle Konsole angelernt hat, muß man dann die Firmware neu flashen, damit die Befehle auch vom CUL gesendet werden können? Gruß C.


Gesendet von iPad mit Tapatalk
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

gloob

Folgende Protokolle sind im Moment in der Firmware implementiert:

if (protocol == "NEC")
if (protocol == "LG")
if (protocol == "Whynter")
if (protocol == "Sony")
if (protocol == "RC5")
if (protocol == "RC6")
if (protocol == "Panasonic")
if (protocol == "Samsung")
if (protocol == "SharpRaw")
if (protocol == "Sharp")
if (protocol == "DISH")
if (protocol == "JVC")
if (protocol == "COOLIX")
if (protocol == "DENON")
if (protocol == "Sherwood")
if (protocol == "RCMM")


Das heißt die Codes können gesendet und empfangen werden. Sollte eine Fernbedienung mit einem unbekannten Protokoll genutzt werden, wird das Ergebnis als "UNKNOWN" ausgegeben. Inwieweit solche Geräte unterstützt werden können muss ich noch testen und mir was für die Firmware überlegen.

Die Firmware muss nicht angepasst werden, wenn ein neues Gerät "angelernt" wird. Anlernen ist hier auch der falsche Begriff, die Firmware im Gateway sagt dir nur, welches Protokoll und welcher Code für den Aufruf von FHEM aus genutzt werden muss. Es werden keine Daten im Gateway über die Geräte gespeichert.
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

CarstenF

Danke schon mal für die Vorab-Info. Freue mich schon aufs experimentieren.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

locutus

Zitat von: CarstenF am 08 Juni 2017, 22:09:20
Eine kleine Frage hätte ich da schon mal.....:-).  Ist die IR Bibliothek eigentlich "begrenzt" , oder kann der CUL auch bislang unbekannte Geräte entschlüsseln? Ok, es sind zwei Fragen... Wenn man neue Geräte über die serielle Konsole angelernt hat, muß man dann die Firmware neu flashen, damit die Befehle auch vom CUL gesendet werden können? Gruß C.
Ich denke, du verwechselst zwei verschiedene Geräte.
Gloobs IR-WLAN-Gateway basiert auf ESP8266 und verwendet diese IR-Library:
https://github.com/markszabo/IRremoteESP8266

Ein CUL basiert auf einem AVR-Prozessor. Die dazugehörige IR-Library:
https://sourceforge.net/p/culfw/code/HEAD/tree/trunk/culfw/clib/irsndconfig.h
https://sourceforge.net/p/culfw/code/HEAD/tree/trunk/culfw/clib/irmpconfig.h

CarstenF

Danke für die Info locutus. Da kann man schnell mal was durcheinanderwürfeln. Sind ja mittlerweile doch einige Sender und Gateways im Umlauf.


Gesendet von iPad mit Tapatalk
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

CarstenF

Hi,

Gateway ist in Betrieb und läuft auch. Sehr geile Konstruktion. Jetzt gehts los mit den "Unknown" Protokollen.
@gloob: Siehst Du eine Möglichkeit wie man unbekannte Protokolle einbinden kann, oder hättest Du zumindest einen Tip für mich, wie man das macht?

Gruß Carsten
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

gloob

#8
Ich wollte mich irgendwann mal dran setzen und es ins Protokoll beim Aufruf mit Integrieren.
Mir schwebt etwas vor wie:

Zitathttp://192.168.1.9/ir?raw=32,321,32,32,432,54,65,675,76,32,54,65,432,453&bits=32&protocol=unknown

Man müsste nur schauen wie man es im Code parsen kann und in die richtige Struktur packt.

irsend.sendRaw(raw,100,38);

Ich plane auch noch die IR Lib auf die neue Version zu heben, allerdings hat sich das Interface etwas geändert. Vielleicht schaffe ich zumindest das Morgen.
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

CarstenF

Hört sich doch super an. Wollte aber keinen Streß erzeugen  :)
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

Frank_Huber

So, im Netzwerk ist dash Ding. Wie bekomm ich ihm denn jetzt in fhem zum Befehle senden?

Gesendet von meinem S3_32 mit Tapatalk


CarstenF

Erstmal mußt Du mal schauen, welche Befehle Deine Fernbedienung so abschickt. Wenn Du die Arduino Programmierumgebung aufrufst , das IR Gateway verbindest und dann einen seriellen Monitor mit 57600 Baud startest, solltest Du auslesen können, welche Kodierungen über das Gateway so ankommen. Dann kann man diese anhand des Beispiels von gloob und von Locutus als http Befehl über den Browser testen. In Fhem kann man das später über einen dummy / notify hinterlegen.
Sollte so klappen. Bin auch noch in der Probierphase.

C.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

gloob

Carsten hat eigentlich alles gesagt.

Ich habe gerade den Sketch auf die neue Version der IR Bibliothek angepasst und arbeite gerade an der Umsetzung für die Raw Daten Unterstützung.
Im Moment sieht es gut aus. Sollte nichts dagegen sprechen.
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

CarstenF

Da warst Du jetzt aber schnell....bin schon gespannt.
Raspberry Pi4
CUL 868, CUL 433, LaCrosse Gateway, Zigbeetomqtt2, HUE, Homematic
Max-Cube umgeflasht
MAX!, FhemtoFhem, Homebridge, FhemConnector, IR_Gateway und sonst auch noch allerlei Spielzeug....

Frank_Huber

Zitat von: CarstenF am 13 Juni 2017, 04:44:50
Erstmal mußt Du mal schauen, welche Befehle Deine Fernbedienung so abschickt. Wenn Du die Arduino Programmierumgebung aufrufst , das IR Gateway verbindest und dann einen seriellen Monitor mit 57600 Baud startest, solltest Du auslesen können, welche Kodierungen über das Gateway so ankommen. Dann kann man diese anhand des Beispiels von gloob und von Locutus als http Befehl über den Browser testen. In Fhem kann man das später über einen dummy / notify hinterlegen.
Sollte so klappen. Bin auch noch in der Probierphase.

Danke läuft! :)
kann einlesen und manuell abschicken.