Kopp Free Control und NanoCUL

Begonnen von stoffel, 20 Januar 2016, 10:12:35

Vorheriges Thema - Nächstes Thema

Kanumouse

Auf dem Oszi sieht das wirklich nicht gut aus!
Ich habe jetzt noch einmal mit deiner neuen Version und dem Taster getestet.
Auf den Taster 3x die Taste 2 und 3x die Taste 1 gedrückt.

RaspII

Ich kann nicht glauben was ich sehe.
Bei die ist die k0B1... extrem konstant, und das ohne "High-Time nach Sync (zur Kurz!)"

Das kann so eigentlich nicht sein, es muss einen Bug in meiner Software geben.

Ich habe bei mir inzwischen bessere HF Parameter gefunden (trial and Error, mit Theorie komme ich gerade nicht weiter).
Vielleicht kannst Du auch das noch testen.

Was mir bei Deinen Messungen auffällt ist, dass diese viel stabilier laufen als bei mir


RaspII

Kanumouse

Getestet 3x Taste1 und 3x Taste 2 vom Taster betätigt.

RaspII

Ich denke ich habe das Problem gefunden. 8)

Die Ausgabe der Testinformationen an die Konsole scheinen das Programm um 500usec zu verzögern (habs nachgemessen). Das ist exakt das eine Bit das verloren geht. Ich hätte das nicht erwartet, hatte mir das aber noch nie angeschaut.

Hab nochmal eine Version gebaut (auf die Schnelle), d.h. ich denke jetzt sollte es funktionieren.
RaspII

Kanumouse

Scheint zu funktionieren!
3x Taste 1 und 3x Taste 2 gedrückt.

RaspII

ok passt.
Das war echt ne schwere Geburt, und scheint recht stabil zu laufen.

Ich räume die SW noch etwas auf und melde mich dann wieder.
(kann etwas dauern)
RaspII

Kanumouse

Ok, awr aber eine tolle Leistung!

dieter114

Hallo RaspII

geht das Modul auch für die Rolladensteuerung Gen.3
also die Nachfolger vom 8080.02 ?
Hintergrund: Ich will meine 10 Fenster um die fehlenden 2 erweitern
aber die "alten" Gen2 8080.02 gibt es nur noch für "Apothekerpreise".

Gruß Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

RaspII

Hallo Wolfdieter,

leider nein,
Das Protokoll scheint hier wieder komplett geändert zu sein, mir wird das langsam zu zeitintensiv.
Ich werde im lauf des Jahres noch das V1 Protokoll fertigmachen, danach ist erst mal Schluss.

Aber wie der Zufall so will habe ich noch zwei Rolladenmodule (8080.02) hier die ich vermutlich nie benutzen werde.
Wenn Du Interesse hast schick mir ne private Mail mit Deinen Preisvorstellungen (müssen keine Apothekerpreise sein).

Ich kann Dir allerdings nicht viel über den Zustand sagen, ich hatte mir gebrauchte und neue Module gekauft, kann heute nicht mehr sagen welches welche sind.

Viele Grüße
RaspII

Haykonus

Liebe FHEM- und Kopp-Fans,

ich habe hier viele sehr nützliche Informationen gefunden. Vielen Dank an RaspII, Kanumouse und Papa Felice !!!
Mein nanoCUL-Versuchsaufbau konnte nur von einem meiner Kopp-Wand-Taster Daten empfangen und keine Aktoren schalten (8080.02 Rollladenschalter).

Nach einigen Tests mit der FREQ[0-2]-Einstellung in der ,,kopp-fc.c" bin ich auf den SPI-Trace von ,,Papa Felice"gestoßen. Die Frequenz muss scheinbar sehr genau eingestellt sein.

Freq = 0x2165ca = 2188746 -> 868,33795166 MHz

Damit hat alles sofort funktioniert. Ich habe noch einige andere Kopp-Original-Einstellungen aus dem SPI-Trace übernommen, aber keine Verbesserungen festgestellt. Vielleicht hilft diese Info ja noch jemandem weiter.

Beste Grüße

Gemikro

#340
Hallo Leute,

ich bin nach langer Zeit auch wieder mal am Kopp Interface programmieren.
Allerdings bau ich mir gerade einen Gateway von Kopp 868 auf MQTT über einen ESP8266 und ein CC1101 Funkmodul https://www.amazon.de/-/en/Laqiya-CC1101-Transmission-Antenna-Transceiver/dp/B075PFQ57G
Das ganze soll dann über den Mosquitto Broker in openHAB eingebunden werden.

Hier gibt es in zwischen eine sehr gute Library: ELECHOUSE_CC1101, ein paar Leute haben hier drum auch ein Modul RF_Switch programmiert hauptsächlich für 433 MHz Geräte, Kopp ist da leider nicht dabei.
Ich habe gestern gerade einen Pro Micro mit dem CC1101 Modul zusammengeschlossen und alle Einstellungen für die Kopp Sender eingegeben.

Was ich inzwischen rausgefunden habe ist folgendes:
Kopp sendet auf 868 MHz, allerdings mit einem Channel Spacing von 300kHz und auf Kanal 1 womit sich die 868.3 MHz ergeben.

In der Elechouse Library kann ich folgende Parameter setzen die bei mir am besten funktionieren:
#include <ELECHOUSE_CC1101_SRC_DRV.h>

    ELECHOUSE_cc1101.Init();                // must be set to initialize the cc1101!
    ELECHOUSE_cc1101.setCCMode(1);          // set config for internal transmission mode.
    ELECHOUSE_cc1101.setModulation(1);      // set modulation mode. 0 = 2-FSK, 1 = GFSK, 2 = ASK/OOK, 3 = 4-FSK, 4 = MSK.
    ELECHOUSE_cc1101.setMHZ(868.000);         // Here you can set your basic frequency. The lib calculates the frequency automatically (default = 433.92).The cc1101 can: 300-348 MHZ, 387-464MHZ and 779-928MHZ. Read More info from datasheet.
    ELECHOUSE_cc1101.setDeviation(47.60);   // Set the Frequency deviation in kHz. Value from 1.58 to 380.85. Default is 47.60 kHz.
    ELECHOUSE_cc1101.setChannel(1);         // Set the Channelnumber from 0 to 255. Default is cahnnel 0.
    ELECHOUSE_cc1101.setChsp(300);          // The channel spacing is multiplied by the channel number CHAN and added to the base frequency in kHz. Value from 25.39 to 405.45. Default is 199.95 kHz.
    ELECHOUSE_cc1101.setRxBW(162.5);        // Set the Receive Bandwidth in kHz. Value from 58.03 to 812.50. Default is 812.50 kHz.
    ELECHOUSE_cc1101.setDRate(4.785);       // Set the Data Rate in kBaud. Value from 0.02 to 1621.83. Default is 99.97 kBaud!
    ELECHOUSE_cc1101.setPA(10);             // Set TxPower. The following settings are possible depending on the frequency band.  (-30  -20  -15  -10  -6    0    5    7    10   11   12) Default is max!
    ELECHOUSE_cc1101.setSyncMode(1);        // Combined sync-word qualifier mode. 0 = No preamble/sync. 1 = 16 sync word bits detected. 2 = 16/16 sync word bits detected. 3 = 30/32 sync word bits detected. 4 = No preamble/sync, carrier-sense above threshold. 5 = 15/16 + carrier-sense above threshold. 6 = 16/16 + carrier-sense above threshold. 7 = 30/32 + carrier-sense above threshold.
    ELECHOUSE_cc1101.setSyncWord(170, 84);  // Set sync word. Must be the same for the transmitter and receiver. (Syncword high, Syncword low)
    ELECHOUSE_cc1101.setAdrChk(0);          // Controls address check configuration of received packages. 0 = No address check. 1 = Address check, no broadcast. 2 = Address check and 0 (0x00) broadcast. 3 = Address check and 0 (0x00) and 255 (0xFF) broadcast.
    ELECHOUSE_cc1101.setAddr(0);            // Address used for packet filtration. Optional broadcast addresses are 0 (0x00) and 255 (0xFF).
    ELECHOUSE_cc1101.setWhiteData(0);       // Turn data whitening on / off. 0 = Whitening off. 1 = Whitening on.
    ELECHOUSE_cc1101.setPktFormat(0);       // Format of RX and TX data. 0 = Normal mode, use FIFOs for RX and TX. 1 = Synchronous serial mode, Data in on GDO0 and data out on either of the GDOx pins. 2 = Random TX mode; sends random data using PN9 generator. Used for test. Works as normal mode, setting 0 (00), in RX. 3 = Asynchronous serial mode, Data in on GDO0 and data out on either of the GDOx pins.
    ELECHOUSE_cc1101.setLengthConfig(0);    // 0 = Fixed packet length mode. 1 = Variable packet length mode. 2 = Infinite packet length mode. 3 = Reserved
    ELECHOUSE_cc1101.setPacketLength(7);   // Indicates the packet length when fixed packet length mode is enabled. If variable packet length mode is used, this value indicates the maximum packet length allowed.
    ELECHOUSE_cc1101.setCrc(0);             // 1 = CRC calculation in TX and CRC check in RX enabled. 0 = CRC disabled for TX and RX.
    ELECHOUSE_cc1101.setCRC_AF(0);          // Enable automatic flush of RX FIFO when CRC is not OK. This requires that only one packet is in the RXIFIFO and that packet length is limited to the RX FIFO size.
    ELECHOUSE_cc1101.setDcFilterOff(0);     // Disable digital DC blocking filter before demodulator. Only for data rates ≤ 250 kBaud The recommended IF frequency changes when the DC blocking is disabled. 1 = Disable (current optimized). 0 = Enable (better sensitivity).
    ELECHOUSE_cc1101.setManchester(0);      // Enables Manchester encoding/decoding. 0 = Disable. 1 = Enable.
    ELECHOUSE_cc1101.setFEC(0);             // Enable Forward Error Correction (FEC) with interleaving for packet payload (Only supported for fixed packet length mode. 0 = Disable. 1 = Enable.
    ELECHOUSE_cc1101.setPQT(4);             // Preamble quality estimator threshold. The preamble quality estimator increases an internal counter by one each time a bit is received that is different from the previous bit, and decreases the counter by 8 each time a bit is received that is the same as the last bit. A threshold of 4∙PQT for this counter is used to gate sync word detection. When PQT=0 a sync word is always accepted.
    ELECHOUSE_cc1101.setAppendStatus(1);    // When enabled, two status bytes will be appended to the payload of the packet. The status bytes contain RSSI and LQI values, as well as CRC OK.
   


Man kann dann die Datenpakete mit den Codes der Fernsteuerungen einfach über  ELECHOUSE_cc1101.ReceiveData(buffer) aus einem Fifo auslesen bzw. mit dem entsprechenden TX Befehlen senden.

Inszwischen kann ich alle Handsender auslesen, da kommen immer 7 Bytes Nutzdaten mit jeweils drei Wiederholungen nach dem Schema:
12,0D,97,74,CC,0F,02  Handsender Schalter auf 5, Taste 8
12,0D,99,65,CC,0F,02  Handsender Schalter auf 5, Taste 7
usw...
Auch das Senden scheint problemlos zu funktionieren, da bin ich grad dran.

Kann Euch gern mehr Infos senden.

Haykonus

#341
Hallo Gemikro, liebes Forum,

interessantes Projekt. Wenn Du noch mehr Informationen über Deine Implementierung geben kannst, würde ich mich freuen.

Ich habe nun zwei Varianten getestet auf dem nanoCUL:

1.   culfw -> http://culfw.de/culfw.html
   - Mit dem KOPP-FHEM-Modul: https://wiki.fhem.de/wiki/Kopp_Allgemein

2.   SIGNALduino -> https://forum.fhem.de/index.php/topic,82379.msg1010643.html#msg1010643 (V 3.3.4-dev200914)
   - Mit angepasster Version des KOPP-FHEM-Moduls: https://forum.fhem.de/index.php?action=dlattach;topic=106594.0;attach=132318

Beide Firmware-Versionen funktionieren, jedoch immer noch nicht zuverlässig genug beim Senden. Man muss die Befehle teilweise 3 mal senden, bis der Empfänger (8080.02) sie versteht. Das jedoch nicht immer. Manchmal schalten die Empfänger auch zigmal sofort und richtig. Das Problem ist aber zu jeder Zeit reproduzierbar. Mit den Original-Funk-Tastern funktioniert es immer korrekt.

Ich bin momentan nicht sicher, ob das Problem an den Einstellungen der Parameter im CC1101, in der Aufbereitung der zu sendenden Daten (Counter, Prüfsummen, etc.) oder generell in ungünstigen HF-Bedingungen (Störsender, Antennenanpassung, Leistung) bei mir liegt.

Ich wäre daher sehr interessiert daran, wie Deine Erfahrungen beim Senden sind, wenn das bei Dir implementiert ist.

Viele Grüsse ...

Gemikro

Hallo Haykonus,

ich habe mittlerweile die Befürchtung dass der CC1101 auf den China Modulen sehr schlecht sendet.
Ich hab mir den Output von den Handsendern und dem Modul angesehen und der Vergleich ist eher grauenhaft.

Die CC1100 von den Kopp Schaltern bringen in meinem Testaufbau ca. -15 dB in die Antenne des SDR und die China Module nur ca. -50dB bei gleicher Entfernung.
Wenn man die TX Power voll aufdreht fangen die Dinger an Fehler zu machen, teilweise bricht die Übertragung ganz zusammen.

Ich habe heute die besten Ergebnisse bei 0 dB gemacht, da sieht man wenigstens eine Trennung der FSK Peaks, ansonsten ist das nur ein ziemlicher Matsch.
Das dürfte auch die Ursache für Deine Probleme sein, Du hast das gleiche Modul nach dem Foto.
Ich werd mal versuchen ein paar CC1101 zu bestellen und probeweise eines der Module damit umlöten.

Leider habe ich nur mehr wenige Kopp Empfänger die funktionieren, bei mir sterben die Dinger reihenweise an den Überspannungen der häufigen Gewitter bei uns.
Deswegen steige ich auch um auf Shelly 2.5 für meine Raffstores, da habe ich schon eine eigens compilierte Version von Tasmota drauf laufen.

Die Bastelei mit der Free Control mache ich eher weil ich mich über die Jahre an die Handsender gewöhnt habe.
Mit den 868-er Modulen kann ich die inzwischen perfekt auslesen, das Senden ist wegen dem Problem oben derzeit aber eher nicht zu realisieren.

Was ich in den nächsten Tagen machen werde ist ein Modul aus einem Kopp Wandsender mit meiner Testfirmware zu programmieren und überpürfen ob dort die CC1101 besser gehen.

lg, Gemikro

Ralf9

Hallo Haykonus,

wie viele Windungen hat die Antenne auf dem Steckbrettaufbau auf dem Foto?
Es kommt ab und zu vor, daß eine 433MHz Antenne mit ca 18 Windungen mitgeliefert wird.

Bei den SMA Antennen aus China ist es auch Glücksache was brauchbares zu bekommen.   

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Gemikro

Hallo Ralf,

das war auch eine meiner ersten Vermutungen, ich habe bei meinem baugleichen Modul auch eine Antenne bekommen mit 18 Windungen.
Hab die aber schon ausgetauscht gegen eine Antenne mit 9 Windungen von einem anderen 868Mhz Gerät aber das ändert an der Performance des China Chips nur wenig.

Bei meinem Modul schwankt die Leistung wenn ich ein identisches Signal mehrmals hintereinander übertrage sehr stark.
Manchmal verliert der Chip überhaupt die Frequenz und sendet ein paar Mhz daneben.

Ich hab heute ein Funkmodul aus einem alten Kopp Rolladenschalter ausgelötet und werd das mal damit vergleichen, zumindest wenn ich den ATmega48 darauf noch zum laufen bringe.

lg Gemikro