COC und 1-wire

Aus FHEMWiki

Einleitung

COC ist eine Erweiterung zum Raspberry Pi von ">busware.de</a>, 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 <a href="/wiki/1-Wire" title="1-Wire 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, welche 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, welche die Signale von Temperatursensoren (und nur diese!) auf das HomeMatic-System abbildet.

In der Standardversion der COC-Firmware ist eine Einschränkung enthalten, welche 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.