Hallo fhem Gemeine,
Ich betreibe schon eine ganze Weile einen FHEM Server mit CUL, Cuno, MaxCube usw.
Bin also mit der Materie "bedingt" vertraut.
Nun habe ich einen Infrarotgesteuerten Deckenventilator installiert. Das Protokoll der Original Fernbedienung ist mir nicht bekannt.
Ich habe die neueste CULFW ( 1.61 ) entsprechend angepasst.
- ALLE Protokolle aktiviert ( gibt es hier Konflikte ? )
- in der board.h undef HAS_IRRX und TX entfernt
Wenn ich nun mein IRDEV codes lernen lasse, legt er mir für "Ventilator an" folgende Buttons an:
ButtonA000 I0D0000020000
ButtonA001 I0D0000020400
Der Empfang hat also funktionier. Doch welches Protokoll ist "0D" ?
Mein Problem liegt nun am "Senden" des IR Befehls.
mit folgendem Befehl habe ich versucht den IR Befehl zu senden:
set IRDEV irSend 0D0000020000 oder eben 0D0000020400
Beide Befehle bringen die IR_TX Diode nicht zum Blinken ( mit Kamera überprüft ). Ändere ich nun das Protokoll ( Testweise ) von 0D auf 0A, sende also 0A0000020000 , dann blinkt die Sende-LED , was dem Ventilator aber natürlich völlig egal ist ( falsches Protokoll).
Wie kann ich nun dem "Fehler" weiter auf die Schliche kommen ? Hat jemand einen Tipp für mich ?
Vielen Dank
Grüße
Dennis
Protokoll 0D ist Nubert:
#define IRMP_NUBERT_PROTOCOL 13 // Nubert
Hast du das auch in der irsndconfig.h aktiviert?
Schon einmal vielen Dank.
In der irsndconfig.h war das Protokoll wirklich noch nicht aktiviert. Lediglich in der Header Datei für den Empfang.
Nun blinkt die IR Led zwar, der Ventilator ist allerdings immer noch nicht sonderlich beeindruckt.
Ich habe nun durch etwas googeln folgende Seite gefunden:
http://mistakeengine.com/m/project/23
Hierbei handelt es sich um den gleichen Ventilator + Fernbedienung.
Der Autor hat es geschafft den Ventilator mit Hilfe eines Arduinos anzusteuern.
In seinem Text schreibt er ,dass der Ventilator einen "40Khz Filter am IR Sensor" hat und nicht wie üblich einen 38Khz Filter.
Ich habe nun "einfach" in der irsnd.c folgende Zeile verändert:
#if IRSND_SUPPORT_NUBERT_PROTOCOL == 1
case IRMP_NUBERT_PROTOCOL:
{
startbit_pulse_len = NUBERT_START_BIT_PULSE_LEN;
startbit_pause_len = NUBERT_START_BIT_PAUSE_LEN - 1;
pulse_1_len = NUBERT_1_PULSE_LEN;
pause_1_len = NUBERT_1_PAUSE_LEN - 1;
pulse_0_len = NUBERT_0_PULSE_LEN;
pause_0_len = NUBERT_0_PAUSE_LEN - 1;
has_stop_bit = NUBERT_STOP_BIT;
complete_data_len = NUBERT_COMPLETE_DATA_LEN;
n_auto_repetitions = NUBERT_FRAMES; // 2 frames
auto_repetition_pause_len = NUBERT_AUTO_REPETITION_PAUSE_LEN; // 35 ms pause
repeat_frame_pause_len = NUBERT_FRAME_REPEAT_PAUSE_LEN;
irsnd_set_freq (IRSND_FREQ_40_KHZ);
break;
}
#endif
irsnd_set_freq (IRSND_FREQ_36_KHZ); zu irsnd_set_freq (IRSND_FREQ_40_KHZ);
Aber auch das blieb ohne Erfolg. An der Sendeleistung kann es nicht liegen. Der Cuno sendet über eine IR / Verlängerung / Funkstrecke. Die original Fernbedienung funktioniert über die Funk Verlängerung tadellos.
Vielleicht hat noch jemand einen Tipp bzgl. des Protokolls oder kann sich evtl. den Link des Arduino Projektes kurz anschauen. Auch wenn NUBERT detektiert wurde, sind die Timings vielleicht doch nicht ganz passend ?
Vielen Dank !
Edit:
Ich habe nun den Entwickler des Arduino Projektes gebeten seine Timings zu veröffentlichen. Leider fehlt die entsprechende Header Datei in seinem Upload. Sobald ich die Timings habe, werde ich Versuchen das Nubert Protokoll entsprechend anzupassen.
Ich habe leider keine Antwort von dem Autor des Arduino Programmes bekommen.
Ich habe folgende Aufzeichnung gefunden, welche passen "könnte".
Westinghouse ceiling fan infrared control hack (UC7130T)
We have no header or "wake-up" pulse here. Logic "0" is a pause of 840us followed by a pulse of 420us of 38KHZ and logic "1" is a pause of 430us followed by a pulse of 820us of 38KHZ. After last bit we must wait for 15ms to send same sequence again. Each sequence must be send at least 3 times. Infrared sender must have a powerful output (multiple leds and/or high voltage (9V) on collector - darlington driver).
{0,1,0,0,0,0,0,0,0,0,0,1,0} FAN OFF
{0,1,0,0,0,0,0,0,0,1,0,0,0} FAN SPEED 1 (MIN)
{0,1,0,0,0,0,0,0,1,0,0,0,0} FAN SPEED 2 (MED)
{0,1,0,0,0,0,0,1,0,0,0,0,0} FAN SPEED 3 (MAX)
{0,1,0,0,0,0,0,0,0,0,0,0,1} LIGHT ON/OFF
{0,1,0,0,0,0,0,0,0,0,1,0,0} LIGHT SLEEP
Wie kann ich diese nun in die culfw einbauen ?
Ein Versuch wäre es wert.
Bin um jede Hilfestellung dankbar.
Grüße
Dennis
Hallo,
auf Wunsch des TE verschoben.
Grüße
Ich habe mir nun mittels folgender Software :
http://wiki.nethome.nu/doku.php/analyzer/start
und einem Fototransistor am Mikrofon Eingang einen Protokoll-analyzer gebaut.
Wenn ich nun an der Ventilator Fernbedienung die Taste für Licht an/aus Drücke kommt folgendes: ( Siehe Anhang )
2c5 und 2c2 tauchen immer wieder auf. Wenn ich eine Taste der Geschwindigkeits Änderung drücke ( egal ob high / med / low oder off ) sind es 2c6 und 2c2.
Bringt mir als Protokoll Laien allerdings auch leider noch nicht den gewünschten "Durchbruch".
Und hier noch einmal mit einer Alternativ Sofware die Aufzeichnung der Taste "Licht an/aus" beim ersten und beim zweiten Betätigen
Hast du schon mal versucht dir die Wiederholungen des gesendeten Signals auf mindestens 3 zu erhöhen? Die andere Software sendet dreimal, IRMP beim Nubert Protokoll wohl per Default nur 2 mal. Die Anzahl Wiederholungen kannst du mit den letzten beiden Ziffern des IR Codes steuern.
Ja. Das habe ich bereits getestet.
Ohne Erfolg.
Ich denke immernoch, dass das NUBERT Protokoll nicht das passende ist.
Man kann mit IRMP auch im Debug Modus eine Aufzeichnung der Rohsignale machen. Wenn du die dem Autor zur Verfügung stellst ist der meist sehr hilfsbereit und baut das ein. Schau mal im IRMP Thread unter Mikrocontroller im Bereich Projekte.
Kann ich das im FHEM direkt machen ? Also in der culfw oder geht das nur mit dem "original" IRMP in Verbindung mit einem IR Empfänger + Atmega !?
Habe nun eine Antwort von dem Autor der Arduino Lösung bekommen.
Nun sollten die Timings vollständig sein. Ich poste einfach mal seine Antwort.
Zitatvoid IRsend::sendFAN(unsigned long data, int nbits, int freq, int endnote)
{
enableIROut(freq);
mark(FAN_ZERO_SPACE);
space(FAN_ONE_SPACE);
for (int i = 0; i < nbits; i++) {
if (data & 1<<9) {
mark(FAN_ONE_SPACE);
space(FAN_ZERO_SPACE);
}
else {
mark(FAN_ZERO_SPACE);
space(FAN_ONE_SPACE);
}
data <<= 1;
}
mark(endnote);
space(0);
}
This function sends data out. There are others for reading in. This one shows mostly how the protocol works however.
What makes this protocol different is that there is an extra pulse on the end that is unlike the other pulses. This function produces the pulses and then at the end a pulse of a different length. I found that the end pulse has to be either 1250 or 450 depending on the data being sent. I don't know why this is.
As for the normal part of the data, a 1 is sent using a pulse of length FAN_ONE_SPACE followed by a gap of length FAN_ZERO_SPACE while a 0 is sent using a pulse of length FAN_ZERO_SPACE followed by a gap of length FAN_ONE_SPACE.
#define FAN_HDR_MARK 1250
#define FAN_ONE_SPACE 450
#define FAN_ZERO_SPACE 1250
In dem Arduino Sketch sendet er dann folgendes:
void superSend(int data, int endnote)
{
time = millis();
irsend.sendFAN(data, 10, 40, endnote);
delay(10);
irsend.sendFAN(data, 10, 40, endnote);
delay(10);
irsend.sendFAN(data, 10, 40, endnote);
}
superSend(0x1ff, 1250); // Lüfter schnell
superSend(0x1de, 1250); // Langsam
superSend(0x1f7, 450); // Aus
Ich weiß ja nicht mal sicher ob das nun den von mir gemessen Daten entspricht. Oder vielleicht doch ein anderes Protokoll ist.
Zitat von: somebuddy am 29 Juli 2014, 23:46:14
Nun habe ich einen Infrarotgesteuerten Deckenventilator installiert. Das Protokoll der Original Fernbedienung ist mir nicht bekannt.
...
Wenn ich nun mein IRDEV codes lernen lasse, legt er mir für "Ventilator an" folgende Buttons an:
Verrätst du mit vielleicht welchen Infrarotsender/-empfänger du hier am Raspberry Pi verwendest?
Edit: Oh, ich denke ich weiß es bereits der CUNO V2 kann das. Das würde aber bedeuten, dass der immer in der Nähe des zu schaltenden Geräts stehen muss. Was aber, wenn ich meine Dachfenster, die per IR Fernbedienung geschaltet werden, steuern möchte, mein Raspberry im EG ist und die Fenster im OG?
Gibt es da auch eine Funk/IR Kombination?
Michael
Zitat von: Roaster am 08 August 2014, 12:52:38
Verrätst du mit vielleicht welchen Infrarotsender/-empfänger du hier am Raspberry Pi verwendest?
Michael
http://busware.de/tiki-index.php?page=CUNO
Zitat von: somebuddy am 08 August 2014, 12:54:08
http://busware.de/tiki-index.php?page=CUNO
Schande über mich habe den Betreff des Postings nicht genau gelesen ???
Jetzt wird es so langsam wieder warm und ich habe leider noch immer keine Lösung :(
Vielleicht hat in der Zwischenzeit jemand ein ähnliches Problem behandelt ?
Grüße !