Z-Uno

Hi, schon eine ganze Weile passiv mitgelesen, wollte ich heute auch mal was zum besten geben.

Mein Z-Uno ist heute angekommen und das ausprobieren hat schon begonnen :slight_smile:

Nachdem ich im Vorfeld schon eine ganze Weile mit diversen Arduino Boards und ESP8266 Erfahrungen sammeln durfte, war das der fehlende Baustein in meinem SmartHome.
Evtl. sind ja auch noch andere Nutzer von dem guten Stück hier vertreten, damit man sich mal austauschen kann.

Gruß Robert

WP_20160721_14_55_22_Pro_LI2.jpg

Meiner ist zZt. nicht lagernd aber bestellt.
Kann es kaum erwarten.
Ich habe Fibaro HC2, welche Zentrale hast du im Einsatz?

Ich habe auch das HC2 bei mir im Einsatz.

Wen es interessiert - erster Test hier:
http://www.zwave-review.com/tests/Z-Uno.php

Michael

Bezüglich der Bibliotheken scheint es (noch) Probleme mit dem gern genutzten DHT22 zu geben. Ich werde also erstmal auf einen LM35 ausweichen, der sollte keine Probleme machen. Ist im übrigen auch der Temperatursensor der von Fibaro für den Universalsensor verwendet wird, ein Baustein im Cent Bereich :wink:

Entgegen dem Testbericht, kann ich aber sagen das das Beispielscript bei mir wunderbar läuft.

10sensors.jpg

Interessant…
Version 2.0.2 der Z-Uno Board Library? (also die letzte, die empfohlen wird zu installieren?)

Mit einer älteren Version lief es bei uns auch schon mal - aber da fehlten noch ein paar “C++ features”.

Michael

Da bin ich ehrlich gesagt überfragt, im Boardmanager zeigt er mir die 0.6.7 an, im Library Manager hingegen sagt er Version unknown.
Da ich es aber heute erst bekommen und installiert habe, gehe ich mal davon aus das ich die aktuellste Version habe.

Achja, bei der Arduino IDE musste ich auch auf 1.6.5 zurück gehen.

Wenn das heute bekommene Original verwendet wurde - dann ist es die 0.6.7

Wir haben uns beim Test “brav” an die Anleitung gehalten und alles so gemacht, wie beschrieben :wink:
Und da erhält man die aktuelle Lib - die 2.0.2 (die übrigens wirklich viel besser ist als die 0.6.7) :wink:

Michael

Dann hatte ich dich missverstanden, ich habe wie oben beschrieben tatsächlich die 0.6.7 im Einsatz. Evtl. liegt da auch der Hund begraben das es mit dem Beispielscript bei eurem Test nicht klappen wollte.

Wo liegen denn die Verbesserungen in der 2.0.2, ist irgendwo ein verständliches Changelog einsehbar?

Und ja, ich weiß es ist sehr verfrüht ein Fazit zu ziehen, aber erste Ernüchterungen haben sich schon breitgemacht. Ich war gedanklich schon voller Hoffnung meine ganzen Sketche die auch auf Arduino und ESP8266 Plattformen nutze dort weiter zu verwenden. Leider sieht es aber so aus, das der einzige Zusammenhang die selbe IDE ist. Vorhandene Sketche müssen komplett umgeschrieben werden.
Was der ganzen Sache natürlich keinen Abbruch tut wenn man bedenkt das man simple Z-Wave Aktoren wie Schalter usw. äußerst einfach nachbauen kann. Ich benötige bsp. für meine Gartenbewässerung 4-5 Relais die ich schalten kann, mit Fibaro Adaptern wären das locker 100 Euro gewesen! Ich komme also bei Speziallösungen deutlich günstiger weg und bin dabei flexibler.

Was muss also definitiv noch kommen?

Einbindung von brauchbaren Temepratursensoren wie z.B. DHT22 <- mit dem TMP36 erreiche ich bei mir im Büro Schwankungen von 17-26 Grad Celsius. Wenn ich zumindest eine Glättung einbauen könnte um die Werte zu mitteln, dann hätte ich alle 60 Sekunden ein halbwegs brauchbaren Wert.

Aktivierung der SPI Schnittstelle inkl. Einbinden von LCD bzw. Touchscreen Librarys. Wäre doch super ein günstiges Statusdisplay in jedem Raum zu haben, gekoppelt mit Temperaturfühler und zentralisierter Schalter Anordnung für Jalousien, Licht usw.

Anwender die richtig Plan von der Sache haben und Leuten wie mir weiter helfen können :smiley:

EDIT:

Es wäre auch denkbar über die Serielle Schnittstelle ein ESP8266 ranzuhängen. Damit hätte man auf günstige Weise einen WLan Repeater geschaffen um das Z-Wave Signal bsp. in den Garten zu verlängern.

Man kann auch schauen welche Kabellängen die Temperatursensoren erlauben, dann würde ich mir ein Modul in meinen 19" Schrank packen und die Sensoren mit RJ45 Steckern versehen. Schon kann ich für schlappe 50 Euro die Temperatur in 10 Räumen ermitteln. Evtl. mit einer Phantomspeisung oder POE arbeiten wegen dem Spannungsabfall.

Ihr seht, an Ideen mangelt es mir nicht.

Hallo,

ja, Ideen gibt es mit Sicherheit genug - ganau dafür ist der Z-Uno ja gemacht :wink:

Um Relais zu schalten brauchst Du zumindst noch einen Verstärkerbaustein (Darlington oder vergleichbar).
(Habe ich für eine Gartenbewässerung realisiert - mit der direkten Ansteuerung der Magnetventile)

10 Temperatursensoren - mit 1-Wire sollte das dann schon passen.
(geht aber auch mit dem ESP8266 :wink: - noch billiger… )

Vorteil ist aus meiner Sicht vor allem auch die Möglichkeit batteriebetriebene Geräte zu entwickeln.
Dafür ist der DHT22 nur bedingt geeignet, weil er mit seiner Messzeit von 2 Sekunden einfach zu viel Energie braucht (Z-Uno muss ja “wach” sein) - über einen langen Zeitraum.
Aber - wie gesagt, es gibt sicher hunderte interessante Projekte.

Michael

An dem Thema 1-Wire war ich auch schon dran, habe hier noch 5 DS18B20 liegen.

Aber 1. ist 1-Wire wohl noch nicht implementiert

und 2. gefällt mit beim DHT22 die Möglichkeit gleich die Luftfeuchte zu erfassen.

Für unseren Sohn habe ich z.B. mal einen Temepratur/- Luftfeuchtelogger gebaut um das lästige Thema lüften mal zu visualisieren.

Direkt am Gerät durch grüne und rote LED`s signalisiert ob es Zeit ist zu lüften, sowie mit einer MySQL DB und einem PHP Script einen anständigen Graphen der sehr gut verdeutlicht wie groß der Effekt von 2-3 Minuten Stoßlüften ist.

Gutes Projekt (Stoßlüften) :wink:

1-Wire für Z-Uno kommt wohl noch.

Alternativ würde ich für batteriebetriebene Sensoren einen I2C Sensor nehmen, das sollte jetzt ja gehen.
Hier gibt es auch Sensoren, die nur unwesentlich teurer sind als ein DHT, aber genauer (vor allem langzeitstabiler) und die Messung in weit kürzerer Zeit erledigen, was Batterie spart.
Z.B. HIH Serie (Honeywell), die gehen auch schon ab 2,3V…

We are releasing new C++ version of Z-Uno software. Release candidate version 2.0.4 is out!

Most of changes are very technical, but will make the Z-Uno more stable and make your life easier.

Wire (I2C) library now allows scanning of devices on the bus
DHT22 support added
Size of all sketches optimized by tuning the compiler
Fix compiler to understand struct/union/enum without typedef
Fixed initialization of static variables
Fixed bug with multiline macros
A lot of stability fixes (better stack and memory management)
Like before, this C++ release candidate is available under http://rus.z-wave.me/files/z-uno/test-ucxx/package_z-wave.me_index.json URL (please remove stable URL in Arduino IDE settings and put this instead)

In next versions we will add save to EEPROM and wakeup by key scanner to allow you make remote controls based on Z-Uno. We plan to finally release stable C++ version in mid August.

Na also, es geht weiter!

Hallo,

mit der 2.04 funktioniert der 10-channel-sketch nun auch (wieder) :wink:
Wir haben den Test aktualisiert.

Es gibt aber auch neue Erkenntnisse - was den FLiRS Mode angeht (noch nicht implementiert, und teilweise wegen Z-Wave Standard nicht so benutzbar, wie mach einer es möchte)

UND:
ACHTUNG: NIE eine Batterie UND USB-Stromversorgung gleichzeitig benutzen!
Der Batterie-Eingang (3.3V und 5V) ist nicht entkoppelt von der USB-Stromversorgung!

Weiterhin:
Die erzeugten MultiChannel-Sensoren können in OpenZwave nur eingeschränkt verwendet werden!
Ursache dafür ist, dass in OpenZwave die neue Multi-Channel-Association noch nicht umgesetzt wurde und damit nur der Sensor im ersten Kanal die Werte an das Gateway senden kann.
Das bedeutet, bei mehreren Sensoren, die man im Z-Uno abbilden will (Temperatur, Feuchte, Licht etc) muss man bei allen Lösungen, die OpenZwave verwenden, den Sensor abfragen (ein sog. polling einschalten), um die aktuellen Werte zu erhalten.

Michael

Mosche,

kurze Frage an die Z-Uno-Besitzer. Gibt es irgendwo eine Übersicht, für was ich den Z-Uno nutzen kann, sodass die Daten in Fibaro angezeigt werden?
Meine Idee wäre ein Z-Uno, welcher die Neigung des Garagentors anzeigt, einen Bewegungsmelder und ein Relais zum öffnen und schließen steuert. Geht sowas?

Danke im Voraus.

Am Besten mal die Beispiele auf: https://z-uno.z-wave.me/examples/
durchsehen.
Es kommt in kürze auch ein Z-UNO Shield auf den Markt welche den Aufbau eigener Lösungen vereinfacht:
http://z-uno.z-wave.me/shield/configurator/?pin3=NC&pin4=NC&pin5=NC&pin6=NC&pin13=NC&pin14=NC&pin15=NC&pin16=NC&pin3pwm=NC&pin7=NC&pin8=NC&pin11=NC&pin12=NC

Also was du vorhast sollte auf alle Fälle mit einem Z-UNO realisierbar sein.
Ich habe damit z.B. meine Wetterstation aufgebaut: https://www.siio.de/z-wave-wetterstation-diy-teil-1-z-uno-hw-sw/

Danke für die Links. Genau durch die ersten beiden sind meine Fragen entstanden, da ich nicht verstanden habe, ob Fibaro die Werte abbilden kann und wenn ja wie.
Ich dachte quasi, das Fibaro nur die Werte den Vorgaben wie Motion, Smoke usw. zuordnen kann.
Den Link deiner Wetterstation hatte ich irgendwie übersehen, vielleicht aber auch, da eine ähnliche bei mir über einen ESP32 als Webserver läuft.
Schau ich mir aber noch an. Vielleicht muss ich den Z-Uno wirklich mal bestellen und es einfach testen.

Fibaro bildet die Werte je nach Sensor Typ ab.

z.B.
ZUNO_SWITCH_MULTILEVEL für Neigungssensor (0-99 falls du einen Neigungswinkel bekommst)
ZUNO_SENSOR_BINARY_DOOR_WINDOW für Neigungssensor falls nur auf und zu angezeigt werden soll
ZUNO_SENSOR_BINARY_MOTION für den Bewegungssensor
ZUNO_SWITCH_BINARY um das Relais zu schalten

Mit dem Shield Konfigurator kannst recht leicht den Code erzeugen und dann manuell verfeinern (Brauchst keinen Shield dafür)
Mit dem Shield wird nur der Schaltungsaufbau um einiges einfacher da er Klemmen und Spannungsteiler an Bord hat.

So da ist der kleine Z-Uno angekommen und die ersten Sensoren hängen auch schon dran.
Als erstes habe ich mal BH1750 und BME280 verkabelt, da alles für den Garagensensor noch auf dem Weg aus Fernost ist.

@mdietinger: Was ich aber noch nicht ganz verstanden habe ist, muss ich bei jeder Sketchändeerung exkludieren und neu inkludieren?
Also zurzeit zeigt er mir 2,5 Grad anstelle der 25 Grad an.


#include "ZUNO_BME280.h"
#include "ZUNO_BH1750.h"

BME280 bme;
BH1750 bh1750;
#define BH1750_I2CADDR  BH1750_I2CADDR_L

word lightLux;
float temperature = 0.00;
float humidity = 0;
int pressure = 0;

// set up channel
ZUNO_SETUP_CHANNELS(
  ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_LUMINANCE,
                         SENSOR_MULTILEVEL_SCALE_LUX,
                         SENSOR_MULTILEVEL_SIZE_TWO_BYTES,
                         SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS,
                         getterLight),
    ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE,
                         SENSOR_MULTILEVEL_SCALE_CELSIUS,
                         SENSOR_MULTILEVEL_SIZE_TWO_BYTES,
                         SENSOR_MULTILEVEL_PRECISION_ZERO_DECIMALS,
                         getterTemperature),
                         
  ZUNO_SENSOR_MULTILEVEL_HUMIDITY(getterHumidity)

);
//*/
void setup()
{
  Serial.begin();

  bme.begin();
  bme.setOversampling(4);
  bh1750.begin(BH1750_CONTINUOUS_HIGH_RES_MODE, BH1750_I2CADDR);
}

void loop()
{
  char result = bme.startMeasurement();
  temperature = bme.getTemperature100() / 100.00;
  humidity = bme.getHum();
  pressure = ((bme.getPressure100() / pow( 1-( 84/44330.0 ),5.255 ) / 100 ));

  Serial.println("------BME 280------");
  Serial.print("Temperature ");
  Serial.print(temperature);
  Serial.println(" C");
  Serial.print("Pressure    ");
  Serial.print(pressure);
  Serial.println(" hPa");
  Serial.print("Humidity    ");
  Serial.print(humidity);
  Serial.println(" %");

  lightLux = bh1750.readLightLevel(BH1750_I2CADDR);
  Serial.println("------BH1750------");
  Serial.print("Helligkeit ");
  Serial.print(lightLux);
  Serial.println(" Lux");

  zunoSendReport(1);
  zunoSendReport(2);
  zunoSendReport(3);
  // send every 5 sec
  delay(5000);
}

word getterLight() {
  return lightLux;
}

dword getterTemperature() {
  return temperature;
}

word getterHumidity() {
  return humidity;
}