Z-Uno als Klimazentrale

Hallo Homees

Endlich habe ich es geschafft eine lange gehegte Idee umzusetzten und den Z-Uno als universelles Z-Wave Gerät einzusetzen.

Zum Hintergrund, ich verwende eine handvoll Funkthermometer um Temperaturen und Feuchtigkeiten auf einem Arduino UNO zu sammeln und weiterzuverarbeiten. Das Sammeln der Daten aus dem 433MHz Funkkanal der Thermometer ist ein eigenes Thema. Hier will ich nur von der Einbindung in z-wave Mesh berichten.

Der Z-Uno ist ein programmierbarer MIkroprozessor mit z-wave stack.
Will sagen, er ist ein frei programmierbares z-wave Geräte. Er kann also Schalter, Aktor, Sensor oder alles gleichzeitig sein. Bis zu 10 separate Kanäle sind verfügbar.

In meinem Fall ist der Z-Uno ein 8-kanaliges Thermometer.

EInbindung
Die Einbindung in homee erfolgt als z-Wave ‘Anderes Gerät’ wie gewohnt über einen Schalter auf der Platine.
Je nachdem, welche Funktionen man dem Z-Uno einprogrammiert hat erscheint er als Gerät mit mehreren Schaltern, Dimmern, oder Sensoren.

Anzeige
Das sieht bei mir so aus:

und so:

Abgesehen von der etwas unschönen Warnung ‘kein Geräteprofil’ ist alles da wo es ein sollte.

Nutzung
Was soll ich sagen, es werden halt die Temperaturen angezeigt.
Da ich alle Freiheiten bei der Datenübetragung an homee habe und die Arduino-Zentrale per Netzteil versorgt wird, kann ich mit beliebiger Frequenz Temperaturwerte übermitteln.
Derzeit tue ich dass alle 5 Minuten oder bei mehr als 0.3°C Änderung.

Sinn und Zweck
Nun, abgesehen von der Herausforderung, was ist der Sinn und Zweck all der Arbeit anstelle eines kommerziellen z-Wave Thermometers.

Acht z-Wave Thermometer (potenziell auch mehr) würden mich im Laden 300-500€ kosten.
Meine Funkthermometer kosten 12€ und halten 2-3 Jahre mit 2xAAA. Sie liefern dabei Werte im Minutentakt. Da kommt kein z-Wave Gerät mit.

Ich kann die Daten vor der Übermittlung an homee manipulieren, z.B. die absolute Feuchte anstatt der relativen Feuchte übermitteln. Ich kann die Daten korrigieren/kalibrieren.

Ich kann weitere virtuelle Messwerte hinzufügen, z.B. gleitende Mittelwerte oder Temperaturdifferenzen, die ich wiederum als Trigger in homee verwenden kann.

Ich habe alle Temperaturdaten an einem zentralen Gerät. Ich finde das übersichtlich, aber das ist Geschmackssache.

Ich kann (und werde) einen 10-Kanal Schalter für meine Gartenbewässerung programmieren.
Auch hier wieder alles in einem z-Wave Gerät. Die Alternative wären 5 Stück 2-Kanal Relais z.B. von Fibaro.

Nachteile
Es war es eine Menge Arbeit.
Der Z-Uno ist keine völlig ausgereifte Plattform für Programmierer. Der Compiler nervt in vielerlei Hinsicht.

Das betrifft gar nicht so sehr den z-Wave Teil - der ist kinderleicht.
Ich hatte meinen ersten 4-Kanal Schalter nach 10 Minuten inkludiert. Natürlich rein virtuell, da wurde nichts wirklich geschaltet, sondern nur Dioden auf dem Z-Uno an und ausgeschaltet.

Nein, schwierig wurde es erst als ich anfing ernsthaften C++ Code zu hinterlegen.
Aber es hat geklappt und ich bin happy.

Ein Wort zum Einstieg in die Z-Uno Programmierung
Nicht alle Arduino IDEs funktionieren. Ich verwende jetzt 1.8.5.
Wenn mann sie installiert hat, sollte man diesem Tutorial folgen:

16 „Gefällt mir“

Interessant, aber möchstest du uns nicht mit genaueren Fakten füttern?

Was für Themometer? Wie hast du den Arduino an den Z-UNO verknüpft? Wie sieht der Code aus?

Das hilft sicherlich anderen sich genauere Gedanken zu machen, ob eine Z-UNO für sie (mit ihren Kentnissen) was passendes ist.

Ich habe die Planung nicht aufgegeben, aber mangels Zeit aufgeschoben. Ich habe vor, die Temperaturesensoren direkt an den Z-UNO anzuschliessen, da ich genug Sensoren habe und ich einen Z-UNO günstig für 3 Räume positionieren könnte. 433MHz-Thermometer sind aber auch ein Gedanke wert.

Dies hier die Thermometer

Die Zentralstation habe ich zerlegt und ihr den RF-Empfänger geraubt, weil der besser funktionierte als die sonst so erhältlichen Module für den Arduino.

Die Verbindung zw. Arduino und z-uno ist per serieller Schnittstelle.
Und zwar über die vorhandene Klasse SoftwareSerial, die ich eine eine eigene Klasse verpackt habe.

SoftwareSerial verwendet 2 beliebige Pins (Tx, Rx) je Board.
In meinem Fall sogar nur ein Pin weil uniderektionale Kommunikation vom Arduino -> Z-uno.

DIe Verkabelung ist minimal zwischen Boards A und Z:
A: gnd --> Z: gnd
A: pin11 --> Z: pin12 (TX --> RX)

Wie gesagt wollte ich vor allem die Funktion des Z-Uno bestätigen.
Bei größerem Interesse kann ich auch sketche posten. Aber die würde ich vorher noch mehr aufräumen :slight_smile:

Ich bin übrigens alles andere als Elektronik-affin. Mir war wichtig, dass ich nicht groß verkabeln muss. Leider musste ich die Idee verwerfen, alles auf dem Z-Uno zu implementieren, weil der Compiler das nicht hergab.

Hinweis von meiner Seite. Nicht nur bzgl. des Compilers ist der Uno etwas beschränkt. Wenn der Uno mit der S2 Security Einstellung betrieben werden soll, ist der vorhandene Speicher seht schnell aufgebraucht, da der Code, welcher für S2 benötigt wird, im selben Speicher abgelegt wird.

1 „Gefällt mir“

Bedeutet das, der Z-Uno sendet was an den Homee, wenn über den Pin pin11 --> Z: pin12 (TX --> RX) etwas vom Arduino an den Z-Uno gesendet wird?

Ich hätte schon Interesse an den Sketchen.

Kann man so programmieren. Ist dann eine Kommunikation per serielle Schnittstelle. Auf dem zuno musst du das dann verarbeiten und per z wave an homee schicken.

1 „Gefällt mir“

@TheDamned

Ich kann Dir die Sketche schicken, aber nachdem ich sie mir gerade durchgesehen habe, scheint mir das auf den ersten Blick zu unübersichtlich.

Deswegen skizziere ich das erstmal. Bei Bedarf einfach noch mal nachfragen.

Auf dem Arduino läuft Sketch-A, das die Aufgabe hat RF-Signale von Funktermometern zu empfangen, zwischenzuspeichern und über eine serielle Schnittstelle zu senden.

Auf dem Z-Uno läuft Sketch-Z, dass:

  • 16 z-Wave Sensoren implementiert.
  • auf Daten von der o.g. seriellen Schnittstelle wartet, diese Daten interpretiert und dem richtigen Z-Wave Sensor #xyz zuordnet.
  • Dem Z-Wave Netzwerk mitteilt, dass Sensor #xyz neue Werte hat

Da sich Dein Frage auf die serielle Kommunikation bezog, hier die Code-Snippets zur Initialisierung in Sketch-A und Sketch-Z.

(Beachte die vertauschte Reihenfolge der Argumente im Konstruktor von SoftwareSerial. Dass ist extrem unglücklich implementiert auf dem Z-Uno)

Sketch-A:

SoftwareSerial SR(11, 12);   // Arduino library: RX,TX
simplySerial   SerialOut(&SR, '#', 4800);

SerialOut.begin();

Sketch-Z:

SoftwareSerial SR(11, 12);   // Z-uno library:   TX,RX
simplySerial   SerialIn(&SR, '#', 4800);

SerialIn.begin();

Obiger Code defininiert (entgegen meinem Post von Dez. 2018)
Arduino TX-Port: 12 —> Z-Uno RX-Port: 12
Arduino RX-Port: 11 <— Z-Uno TX-Port: 11

Die untere Verbindung wird aber nicht genutzt, weil nur der Arduino sendet.

1 „Gefällt mir“

@TheDamned

Ich habe gerade Deine urpsrüngliche Frage in einem andern Thread gelesen.
Dazu kann ich Folgendes sagen:

Der Z-Uno implementiert einen oder mehrere Z-Wave Geräte.
Man legt das im Kopf des Z-Uno Sketches mit Makros fest.

ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE,       SENSOR_MULTILEVEL_SCALE_CELSIUS,          SENSOR_MULTILEVEL_SIZE_TWO_BYTES, SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL, getTemp1),

Zu jedem Z-wave Gerät muss im Z-Uno Sketch eine Callback Funktion (oben: getTemp1()) implementiert werden, die automatisch (vom Z-Uno Framework) aufgerufen wird, wenn die Z.-Wave Zentrale nach Werten für Gerät 1…N fragt.

Außerdem kann man der Z.Wave Zentrale (sozusagen proaktiv) mitteilen, dass Gerät 1…N neue Daten hat. Dazu dient Funktion zunoSendReport(1…N)

Ich hoffe das hilft Dir weiter.

1 „Gefällt mir“

Ja, ich denke schon.

Ich glaube, ich werde mich damit mal ausführlich beschäftigen. Mit dem Arduino kann man ja einen Haufen von Sensoren bedienen. Wenn man die alle Z-Wave kompatibel gestalten könnte, wäre das wunderbar. Im Netz gibt es dazu ja tausende Artikel.

Alleine der Preis von ca 50-60 EUR lässt mich da noch etwas abschrecken. Ich vermute, das liegt an den Z-Wave-Lizenzgebühren (oder den geringen Stückzahlen).

Wenn mir etwas gelungen ist, werde ich auf jeden Fall berichten.

Oder du gehst gleich auf hih Simulation mit nem pi. Da ist der Initialaufwand ähnlich würde ich sagen. Was sagst du @Micha?

1 „Gefällt mir“

Wenn die Werte in einem ESP sind und diese dann per Wlan weitergereicht werden ist das eine sehr gute Alternative.

Da fällt mir gleich mqtt ein. Für die ESP gibt es nen MQTT Client. Der Pi wäre dann nen MQTT Server und per Nodered können die Daten dann über hih dann an den homee gegeben werden.

Ja so habe ich meine Esp eingebunden :blush::+1:

Zwar schon was älter, aber die Frage ist (noch) aktuell :slight_smile:
→ Kann homee denn derzeit überhaupt mit S2 Security umgehen?
Oder geht das aktuell nur mit S0 Security?

Aktuell unterstützt homee S2 nicht.
S2 ist aber für eine Z-Wave Zertifizierung notwendig. Somit mit den neuen Z-Wave Stack bzw. Cube der für dieses Jahr angekündigt wurde verfügbar.

Danke.

Noch eine ergänzende Frage:

Unterstützt homee den aktuell „S0 Security“?
Oder gar nix? :slight_smile:

Ja.

Danke :+1: