Infrarot Deckenventilator mit CUNO V2

Begonnen von somebuddy, 29 Juli 2014, 23:46:14

Vorheriges Thema - Nächstes Thema

somebuddy

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


kaihs

Protokoll 0D ist Nubert:


#define IRMP_NUBERT_PROTOCOL                    13              // Nubert


Hast du das auch in der irsndconfig.h aktiviert?
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

somebuddy

#2
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.

somebuddy

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

Puschel74

Hallo,

auf Wunsch des TE verschoben.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

somebuddy

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".




somebuddy

Und hier noch einmal mit einer Alternativ Sofware die Aufzeichnung der Taste "Licht an/aus"   beim ersten und beim zweiten Betätigen


kaihs

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.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

somebuddy

Ja. Das habe ich bereits getestet.

Ohne Erfolg.

Ich denke immernoch, dass das NUBERT Protokoll nicht das passende ist.

kaihs

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.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

somebuddy

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 !?

somebuddy

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.

Roaster

#12
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

somebuddy

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

Roaster