COC und 1-wire

Aus FHEMWiki
Zur Navigation springen Zur Suche springen

Einleitung

COC ist eine Erweiterung zum Raspberry Pi von busware.de, mit der dem Raspberry Pi eine 868 MHz Funkschnittstelle und eine Echtzeituhr zur Verfügung gestellt werden. Zusätzlich ist beim COC der Anschluss von 1-Wire-Komponenten möglich. Im COC ist ein DS2482 Busmaster-Chip verbaut, der über den internen I2C-Bus des COC angesteuert wird.

Dafür gibt es zwei Möglichkeiten:

  • In der Firmware des COC ist eine Möglichkeit enthalten, die 1-Wire-Temperatursensoren DS18S20 in das Homematic-Protokoll zu mappen. 1-Wire Temperatursensoren am COC werden dann von FHEM automatisch als HMS-T eingebunden. Andere 1-Wire Sensoren oder Aktoren werden von der Firmware nicht ausgewertet.
  • Das Modul 00_OWX.pm (unter contrib/1-Wire) kann mit dem COC kommunizieren und ermöglicht dadurch die Verwendung von allen anderen 1-Wire Devices am COC. Achtung: Derzeit erzeugt die Abfrage des COC durch das Modul 00_OWX.pm so viel Overhead, dass bei mehr als vier gleichzeitig betriebenen 1-Wire Devices Instabilitäten auftreten können. Außerdem treten weitere Instabilitäten auf, die bis zum Totalabsturz des Raspberry Pi führen können. Dies ist nicht auf die Programmierung des OWX-Moduls zurückzuführen, sondern lässt sich auch durch manuelle Abfrage des COC erreichen. Nach bisheriger Erkenntnis ist das darauf zurückzuführen, dass auf dem internen i2c-Bus des Raspberry noch andere Hardware aktiv ist, die ab und zu das Timing des ebenfalls an diesen internen i2c-Bus angeschlossenen 1-Wire-Interface stört.

In der Standardversion der COC-Firmware ist außerdem eine Einschränkung enthalten, die die Erkennung von 1-Wire-Devices durch die Firmware auf 10 beschränkt, s. unten.

Software

Der 1-Wire-Bus wird durch eine Anzahl von Kommandos gesteuert, die in der Beschreibung der COC-Firmware nachzulesen sind (siehe [1]).

In dieser Firmware ist sowohl der 1-Wire Suchalgorithmus implementiert, als auch das Lesen und Schreiben von einzelnen Bits und Bytes auf den 1-Wire Bus. Mit diesen Low-Level Kommunikationsfunktionen lassen sich bei Verwendung des Modul 00_OWX.pm (siehe contrib/1-Wire) alle 1-Wire Komponenten ansteuern.

In der Firmware ist auch noch eine High-Level Komponente eingebaut, die die Signale von Temperatursensoren (und nur diese!) auf das HomeMatic-System abbildet.

In der Standardversion der COC-Firmware ist eine Einschränkung enthalten, die die Erkennung von 1-Wire-Devices auf 10 beschränkt. Will man dies erhöhen, muss in der Datei board.h die folgende Zeile auf einen Wert > 10 geändert und die Firmware neu übersetzt und geflasht werden.

'#define HAS_ONEWIRE 10 // OneWire Device Buffer, RAM: 10 * 8 Byte'

Allerdings ist eine beliebige Erhöhung nicht möglich, da der COC relativ wenig Speicherplatz hat. Berichtet wurde, dass schon ab einem Wert von 30 Schwierigkeiten auftreten, indem die 1-Wire Devices nicht alle erkannt werden.