CUL: Unterschied zwischen den Versionen

Aus FHEMWiki
(Anpassung von <source>-Tags nach <syntaxhighlight>)
Zeile 82: Zeile 82:
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]
Hier kann man sich z.B. mit
Hier kann man sich z.B. mit
<source lang=bash>
<syntaxhighlight lang=bash>
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw
</source>
</syntaxhighlight>
die aktuelle Version laden.
die aktuelle Version laden.
Zusätzlich gibt es eine für InterTechno angepasste Version:
Zusätzlich gibt es eine für InterTechno angepasste Version:

Version vom 26. Juli 2017, 18:57 Uhr

CUL (CC1101 USB Lite) ist ein RF-Gerät im Formfaktor eines USB-Dongles mit externer Antenne. Die über das ISM/SRD Band empfangenen Daten werden durch einen Onboard 8 bit Atmel Prozessor vorverarbeitet. Mit verfügbarer quelloffener Firmware kann das CUL verschiedene 868MHz Protokolle empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS sowie durch kurzfristiges Umschaltung auf 433 MHz Intertechno (z. B. viele Baumarkt Funksteckdosen) Protokolle.

Im Umfeld von FS20/FHT/EM/S300/HMS ("rfmode - SlowRF") wird die Dekodierung der per AM in 1 kHz übertragenen Signale per culfw auf dem Atmel Prozessor direkt erledigt und dann per USB an den Hostrechner weitergegeben.

Das CUL kann mittels des CULModuls von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.

Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem HMLAN Konfigurator betrieben werden. Bei CULs älter als Version 3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim Flashen der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich.

Ebenso gibt es ein Modul zur Ansteuerung der MAX! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z. B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich nicht angeraten.

Ferner ist der Einsatz eines CUL als RFR CUL für den SlowRF Mode (jedoch nicht für den HomeMatic Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.

Alle diese Modi sind in der Original-culfw enthalten und werden z.B. durch die Wahl des rfmode eingestellt.

Obwohl die eigentliche Betriebsfrequenz der FHT und FS20-Komponenten 868,35 MHz ist, ist bei den aktuellen CUL Firmwareversionen zum Betrieb mit FHEM die Frequenz auf 868,30 MHz eingestellt. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, obwohl diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten SlowRF Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.

Frequenz und Bandbreite können daher im SlowRF Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.

Hinweise zum Betrieb mit FHEM

Anmerkung: Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per <Taste>Enter</Taste> abzuschicken (nicht "save" klicken); myCUL ist dabei nur ein Platzhalter und durch den Namen Ihres CUL zu ersetzen. Da diese Funktionen durch die culfw (Firmware) bereitgestellt werden, funktionieren sie auf allen Geräten, die die culfw verwenden (CUNO, COC, CSM:

  • Ist Empfang eingeschaltet ?
    get myCUL raw C35 (13 = ja, z. b.: C35 = 0D / 13)
  • Auslesen der culfw Version:
    get myCUL raw V
  • LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)
    set myCUL raw l00
  • LED einschalten
    set myCUL raw l01 Blinkt bei Senden oder Empfangen von Paketen
  • LED soll blinken (einmal in der Sekunde)
    set myCUL raw l02
  • Reboot / Reset des CUL:
    set myCUL raw B00 Andere Werte als 00 starten das CUL im Bootloader-Modus (=> neue Firmware)
  • Freie CUL Sendezeit (1% Regel):
    get myCUL raw X 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch get myCUL credit10ms ergibt Sendezeit in 10ms Slots
  • Freie Kapazität des FHT Buffers
    get myCUL raw T03 Ergebniss bytes in HEX. Leer = 4a
  • Inhalt des FHT Buffers
    get myCUL raw T02 (CUL V2 Buffer ist 74 Bytes gross, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer
  • Eingestellte FHT-ID
    get myCUL raw T01
  • Eingestellte Frequenz, Bandbreite etc. Ausgeben
    get myCUL ccconf.
    Rückgabe z. B.:
    myCUL ccconf => freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB
  • eingestelle Bandbreite erhöhen (z.b. auf 464 kHz, mehr hat meist keinen Sinn):
    set myCUL bWidth 464
  • Einstellen der Sendestärke:
    set myCUL raw x09 Einstellen der Sendeleistung.

Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen -10/-5/0/5/10 Sendeleistung in db. Default ist x08 = +5db. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. Siehe auch Diskussion unter GoogleGroups-CUL-Fans

Werte x00-x04 sind mit Ramping und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z. B. RFR CUL.

Hinweis: Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter nicht verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung (Quelle).

Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit :

  • set CUL1 raw X61 Communication wird im Detail angezeigt
  • set CUL1 raw X25 auch checksum Fehler / unerkannte Protokolle werden gemeldet
  • set CUL1 raw X2F alle empfangenen Flanken werden gemeldet
  • set CUL1 raw X80 RSSI / Signalstaerke jeder Flanke wird gemeldet
  • set CUL1 raw X21 normal Modus

Achtung: Auf Gross- und Kleinschreibung des "x,X" achten!

Die kompletten Kommandos mit Erklärung für CUL sind in der commandref zu finden.

Versionen

Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.

  • CUL V1 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.
  • CUL V2 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für SlowRF Geräte und zugleich HomeMatic Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi zeitgleich betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.
  • CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kByte EEPROM). Voll einsatzfähig.
  • CUL V4 - ATMega32U2 Prozessor, 1 kB RAM 32 kB Flashmemory, 1 kByte EEPROM. Voll einsatzfähig. Genau genommen ein "Sparmodell" des V3, um Lieferengpässe des atmega32u4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.

Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.

Firmware

Die für den CUL und verwandte Hardware wie CUN und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware findet sich auf der

Dort kann die jeweils aktuelle Version nachgesehen und herunter geladen werden. Alten Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der

Hier kann man sich z.B. mit

svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw

die aktuelle Version laden. Zusätzlich gibt es eine für InterTechno angepasste Version:

Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe Forum) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem MAX Cube betrieben werden kann.

Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weg lassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.

Sendefrequenz

Das CUL gibt es in Ausführungen für 868 und 433 MHz. Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im SlowRF Mode auch durch direkte Befehle aus FHEM (im HomeMatic Mode derzeit nicht unterstützt). Der wesentliche Unterschied der 868 und 433 MHz CULs ist ein auf die Frequenz richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.

Es ist es durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.

Antenne

Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar. Funktional besteht kein Unterschied: auch die "richtige" Antenne ist (in diesem Fall) nur ein Draht, jedoch gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.

Wichtig ist nur die Länge. Diese muss vorteilhafterweise so groß sein wie ein Viertel der Wellenlänge der Frequenz ("Lambda/4"). Die sind bei 868 Mhz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Leistung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.

Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die "Lambda/2" oder gar ("Lambda") lang sind (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen"gewinn"). Das hat auch Nachteile, speziell wenn man auch "nach oben" funken will. Speziell wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht Empfangen wird.

Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. "Mehr db" und speziell "länger" ist also nicht automatisch besser.

Zu beachten, ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.

Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4 GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.

Antennenlänge

Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.b. Durchführung der Antenne durch eine Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur eine Kompromiss.

Exact berechnet ohne Störeinflüsse wären folgende Antennelängen nutzbar:

868,35 Mhz (z.B. HM, FS20, FHT …)
1/4 Lambda = 8,63 Zentimeter 
1/2 Lambda = 17,26 Zentimeter 
1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)

433,92 Mhz (z.B. Intertechno …)

1/4 Lambda = 17,27 Zentimeter 
1/2 Lambda = 34,54 Zentimeter 

Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:

8,6 Zentimeter als 1/4 Lambda für 868,35 Mhz
17,2 Zentimeter als 1/2 Lambda für 868,35 Mhz und zugleich 1/4 Lambda für 433,92 Mhz
34,5 Zentimeter als Lambda für 868,35 Mhz und zugleich 1/2 Lambda für 433,92 Mhz

Bekannte Probleme

Im Gegensatz zu den original FHZ Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z. B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern z. B. der FHT Raumregler zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.

Bei Empfangsproblemen von z. B. HEM-Sensoren oder dem S300TH kann man folgendes testen:

  • Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.
    set CUL freq 868.350
  • Es ist möglich die "decision boundary" zu vergrößern, frei beschrieben: die "Entscheidungsgrenze" ob die empfangene Signalflanke digital "0" oder "1" darstellte (siehe Diskussion hier). Möglich sind die Werte "4", "8" und "16". Default-Einstellung ist hier "4". Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier "8" einzustellen. Mitunter bringt jedoch erst die Einstellung auf "16" signifikante Verbesserungen beim Empfang von S300TH-Sensoren.
    set CUL sens 8
  • Oft hilft auch, die Bandbreite auf z. B. 464 kHz aufzuweiten.
    set CUL bWidth 464

Selbstbau-/Bastelprojekte

Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:

Links