DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

N1d45
Beiträge: 121
Registriert: 5. Jan 2020 14:26
Answers: 2

DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von N1d45 »

Ziel: Das Raumklima erfassen, in openHAB verarbeiten und in Übersichten anzeigen zu lassen.

Was ich bisher geschaft habe. Für die Zimmer habe ich einen Temperatur, Luftfeuchte, Druck (Ist einfach dabei ^^) Sensor. Die Daten werden mit einem Wemos D1 Mini (ESP8266) ausgewertet und per MQTT zum Raspberry übermittelt.

Was ich gerne noch schaffen möchte, die Daten in einer Datenbank speichern, und mir auf der Sitemap oder HABpanel ein Diagramverlauf anzeigen zu lassen. Und ich glaube hier im Forum finde ich gute Hilfe.

------------------------------------------------------------

Viel Text zudem was bisher geschah:
Zur Raumklima Erfassung nutze ich den BME280. Dieser lässt sich gut per I²C an Mikrocontroller anschließen. Da ich die Daten übers WLAN an den Raspberry Pi zu openHAB senden will, sind Boards mit integrierten ESP8266 gut dafür geeignet. Ich habe noch ein paar Wemos D1 mini rumliegen.

Auf einem Bread-Board zusammen gesteckt, und durch die Beispielsketche durchgearbeitet. Und siehe da, die Daten über Temperatur, Luftfeuchte und Luftdruck purzeln über den Seriellen Monitor der Arduino IDE.

Jetzt dem Wemos D1 mini MQTT beibringen. Dies hat auch gut funktioniert. Die Daten kommen gut beim MQTT Broker auf dem Raspberry Pi an, zusehen in MQTT.fx

Der Wemos D1 mini sollte mit Batterien versorgt werden, und da begannen dann auch die ersten Probleme. Entweder einen Akku oder StandartBatterien ala AA oder AAA. Es gibt Akkus (LiFePo4) die halten über ihren ganzen Ladezustand eine passende Spannung für den ESP8266. Aber auch erfuhr ich dann, das der Wemos D1 mini nicht der beste ist, wenn man ihn mit Batterien betreiben will. Der integrierte USB-Wandler und Spannungsregler, verbrauchen so viel Strom, das man dann aller paar Tage die Batterien wechseln/laden kann.

Jetzt kann man zwar den ESP8266 in den Tiefschlaf versetzen (DeepSleep), aber auch da saugt der Spannungsregler und USB-Wandler die Batterien immernoch mit knapp 1mA leer. Mein Messgerät zeigte zwar 334µA, aber das ist eher ein billiges Gerät. Da traue ich doch eher Aussagen von vielen anderen. Hier Nachzulesen

Der Gedanke ging dann hin zum ESP-01, da dieser keinen Spannungsregler und USBwandler on Board hat. Da müsste ich aber entweder auf den teuren Akku zurückgreifen oder die Spannung extern mit einem Spannungsregler regeln der einen niedrigen Ruhestrom hat. Das alles wäre dann aber nicht mehr so kompakt wie beim Wemos D1 mini.

Pünktlich dazu kam von Florian ein neues Video, wie man den Stromverbrauch der ESP Boards mit Spannungreglern und USB-Wandlern massiv reduzieren kann :D Dort (Youtube) wird auch erklärt, wie, was, wo und warum soviel Strom verbraucht. Vielleicht interessiert es jemanden.

Ziel gesetzt, ein Shield für den Wemos D1 mini zu basteln, womit sich der Stromverbrauch auf ~10µA senken lässt. Diese wird dann einfach auf den Wemos aufgesteckt und somit ist es alles wieder kompakt. Platine ist erstellt und wartet nun darauf aus China im Postkasten anzukommen :)

Auch machte mir der DeepSleep des ESP8266 zu schafen. MQTT funktioniert nicht mehr. Es hat ein paar Tage gedauert herrauszufinden warum. Der ESP8266 ging zu schnell schlafen wodurch die MQTT Nachrichten nicht zuverlässig am Raspberry ankamen. Aber auch das wurde gelöst :)

------------------------------------------------------------


Nun zu dem was ich noch erreichen will, und ich denk ihr könnt mir da viel helfen.

Eingerichtet habe ich damals openHABian nach diesem Tutorial (Youtube) Diesem Video und gefolgt von Teil 2 bis 4 habe ich openHAB eingerichtet. Auch wurde im 3. Teil eine Persistence erstellt und das ganze so eingestellt, das nicht ständig auf die SD-Karte geschrieben wird.

Habe ich das richtig verstanden, das die Persistence die Datenbank an sich ist? Wie bekomme ich meine MQTT Daten in die Datenbank? Wird da ein Zeitstempel gleich mit reingeschrieben? Wie kann ich die Daten wieder auslesen und in einem Diagram anzeigen lassen? Gibt es dafür ein gutes Tutorial (am besten Deutsch, English ist nicht wirklich meine Welt). Will vielleicht jemand mich an die Hand nehmen und mir alles zeigen? Oder gibt es hier Forum vielleicht schon ein Thread, wo dies bereits getan wurde?


Ich hoffe auf reichliche Antworten, damit ich das Projekt beenden kann. Gern beantworte ich auch Fragen zu dem ESP-Gebastel.

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von Darkwin101 »

Ich würde sagen gib bei YouTube Grafana openHAB ein dann bist du genau bei dem was du wissen willst


Gesendet von iPad mit Tapatalk

ingo@hubaer.de
Beiträge: 7
Registriert: 5. Mär 2020 20:51

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von ingo@hubaer.de »

Ich nutze ganz einfach persistenz mit RRD4J

https://www.openhab.org/addons/persistence/rrd4j/

Funktioniert einfach und schnell. Darstellung in allen openHAB UIs möglich

Grüße Ingo

N1d45
Beiträge: 121
Registriert: 5. Jan 2020 14:26
Answers: 2

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von N1d45 »

Ich habe mich mal darin versucht ein Chart für die Sitemap zu erstellen.

Zuerst ein neues MQTT Thing erstellt für den BME280

Code: Alles auswählen

Bridge mqtt:broker:MQTTBroker "MQTTBroker" [ host="192.168.178.32", port=1883, secure=false, username="", password="", clientID="openHAB2", qos="1" ] 
{ 
...
	Thing mqtt:topic:Klima_Wohnzimmer "Klima Wohnzimmer" {
		Channels:
			Type number : Temperatur	"Temperatur"		[ stateTopic="wemos/wz/sensor/temperature"]
			Type number : Humidity		"Luftfeuchte"		[ stateTopic="wemos/wz/sensor/humidity"]
			Type number : Pressure		"Luftdruck"			[ stateTopic="wemos/wz/sensor/pressure"]
			Type number : Voltage		"Battery"			[ stateTopic="wemos/wz/sensor/voltage"]
	}
}
Die MQTT Werte den Items zugewiesen, zwei Gruppen hinzugefügt, und ein Item für den Chart Intervall

Code: Alles auswählen

// Gruppen
Group RRD4J (All)
Group BME280 (All)

...

// BME280 MQTT
Number          BME280_Wohnzimmer_Temperatur                    "BME280 Wohnzimmer Temperatur"                  (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Temperatur"}
Number          BME280_Wohnzimemr_Humidity                      "BME280 Wohnzimmer Luftfeuchte"                 (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Humidity"}
Number          BME280_Wohnzimmer_Pressure                      "BME280 Wohnzimmer Luftdruck"                   (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Pressure"}
Number          BME280_Wohnzimmer_Voltage                       "BME280 Wohnzimmer Batterie"                    (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Voltage"}

// Chart Items
Number          gChartIntervall                                 "Chart Intervall"
Eine Persistence Datei erstellt

Code: Alles auswählen

Strategies {
    everyMinute     :   "0 * * * * ?"
    everyHour       :   "0 0 * * * ?"
    everyDay        :   "0 0 0 * * ?"
    default = everyChange
}

Items {
    Shelly_Flur_Licht_MeterCurrentWatts             : strategy = everyMinute
    Shelly_WZ_Stehlampe_MeterCurrentWatts           : strategy = everyMinute
    Shelly_Kueche_Licht_Decke_MeterCurrentWatts     : strategy = everyMinute
    Shelly_Schlafzimmer_Licht_MeterCurrentWatts     : strategy = everyMinute
    Shelly_Kinderzimmer_Licht_MeterCurrentWatts     : strategy = everyMinute
    Shelly_Bad_Licht_MeterCurrentWatts              : strategy = everyMinute
    Shelly_Bad_Steckdose_MeterCurrentWatts          : strategy = everyMinute
    Shelly_Wohnzimmer_Licht_MeterCurrentWatts       : strategy = everyMinute
    Shelly_Wohnzimmer_Lowboard_MeterCurrentWatts    : strategy = everyMinute

    BME280_Wohnzimmer_Temperatur                    : strategy = everyChange
    BME280_Wohnzimemr_Humidity                      : strategy = everyChange
    BME280_Wohnzimmer_Pressure                      : strategy = everyChange
    BME280_Wohnzimmer_Voltage                       : strategy = everyChange
}
Auf der Sitemap 2 Charts Erstellt. Eine für den Verbrauch der Shellys. Eine für die Klima Daten des BME280

Code: Alles auswählen

sitemap HomeSweetHome_admin label="HomeSweetHome" {
    Frame label="Chart" icon="chart" {
        Switch item=gChartIntervall mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Monat", 4="Jahr"]
            Chart item=RRD4J period=h refresh=10000 visibility=[gChartIntervall==0, gChartIntervall=="Uninitialized"]
            Chart item=RRD4J period=D refresh=10000 visibility=[gChartIntervall==1]
            Chart item=RRD4J period=W refresh=10000 visibility=[gChartIntervall==2]
            Chart item=RRD4J period=M refresh=10000 visibility=[gChartIntervall==3]
            Chart item=RRD4J period=Y refresh=10000 visibility=[gChartIntervall==4]    
    }

    Frame label="BME280 Wohnzimmer" {
        Switch item=gChartIntervall mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Monat", 4="Jahr"]
            Chart item=BME280 period=h refresh=10000 visibility=[gChartIntervall==0, gChartIntervall=="Uninitialized"]
            Chart item=BME280 period=D refresh=10000 visibility=[gChartIntervall==1]
            Chart item=BME280 period=W refresh=10000 visibility=[gChartIntervall==2]
            Chart item=BME280 period=M refresh=10000 visibility=[gChartIntervall==3]
            Chart item=BME280 period=Y refresh=10000 visibility=[gChartIntervall==4] 
    }
}
Damit sich nicht gleich irgendwelche Fehler verfestigen. Was sollte man anders aufbauen, und warum?

Was mir gefällt:
* Es funktioniert :D

Was mir nicht gefällt:
* Wenn ich über den Chart Switch auf der Sitemap die Zeitspanne ändere, muss man immer die Seite aktualisieren. In dem Tutorial geschieht das automatisch. Woran liegt das? Kann man das irgendwo einstellen?
* Die MQTT Daten liegen vom Zahlenwert weit auseinander. Z.B. Temperatur 23,5, Luftfeuchte 43,6, Luftdruck 998, Batteriespannung 3,3
Jetzt sieht das in dem Chart nicht wirklich toll aus, ganz oben eine Linie vom Luftdruck. Ganz unten die anderen 3 Linien. Ausschläge der 4 Linien sind kaum zu erkennen, durch den Großen Skalenbereich. Kann man den Skalenbereich anpassen (min, max). Kann man z.B. den Luftdruck einfach umrechnen, ala 998/100=9,98. Dadurch würde der Skalenbereich ja automatisch kleiner werden. Kann man mehrere Skalen auf einer Achse machen?
* Das Chartfenster ist sehr klein auf der Sitemap, kann man die Größe anpassen?

Noch was, was nicht mit dem Chart zu tun hat. Ich würde gern das Dynamische Item für das Batterie Level nutzen. Aber ich denke dazu mache ich mal einen extra Thread auf.

Als nächstes werde ich mir mal Graphana anschauen. Vielleicht erübrigen sich dann schon die Sachen mit den Skalen ^^. Würde mich dennoch interesieren was es für Möglichkeiten bei Chart gibt.

Danke für die Hilfe bisher.

ingo@hubaer.de
Beiträge: 7
Registriert: 5. Mär 2020 20:51

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von ingo@hubaer.de »

Du musst ja nicht alle Werte in ein Chart packen.
Ich gruppiere grundsätzlich, also z.b. alle Temperaturen in ein Chart. Ich steuere das über Gruppen

Grüße

Benutzeravatar
udo1toni
Beiträge: 13944
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von udo1toni »

Was das automatische Aktualisieren betrifft, so musst Du nach Änderungen an der Sitemap openHAB neu starten, damit der Browser Cache korrekt angesprochen wird.

In einem Chart solltest Du nur Items mit ähnlichen Werten gruppieren, z.B. alle Raumtemperaturen, oder Solltemperatur und Isttemperatur eines Raums.

Du kannst auch Grafana einbinden und für die Graphen verwenden, Grafana kann zwei Skalen für die Y-Achse verwenden (links und rechts), dann kann man zwei unterschiedliche Eigenschaften sinnvoll in einen Graphen packen (z.B. Temperatur und Luftfeuchte wären dafür Kandidaten).
Allerdings ist die Einbindung von Grafana in die UI etwas aufwändiger.
Ich lasse Grafana komplett getrennt laufen und öffne die Graphen als eigenen Tab im Browser.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

N1d45
Beiträge: 121
Registriert: 5. Jan 2020 14:26
Answers: 2

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von N1d45 »

udo1toni hat geschrieben: 7. Mär 2020 00:59 ... Was das automatische Aktualisieren betrifft, so musst Du nach Änderungen an der Sitemap openHAB neu starten, damit der Browser Cache korrekt angesprochen wird.
...
Raspberry neu gestartet, Browser Cache geleert. Leider keine Verbesserung. Beim Druck auf eine andere "Schaltfläche" des Switches ändert sich der chart erst nach drücken von F5.

Kann es am Browser liegen? Ich nutze imo Opera. Auf dem Iphone im Safarie lassen sich die Tasten nichtmal drücken. :shock:
Ist ist doch irgendwo der Wurm im Code?

------------------------------

Ja, man muss sich nicht alles in einem Chart anzeigen lassen. Da ich aber auf der Sitemap die "Räume" auswählen kann, wollte ich mir für den Raum das "Klima" in einem Chart anzeigen lassen. Und dafür 4 Charts mit je einem Graph erstellen. Ne, das gefällt mir nicht wirklich.

Auf den Luftdruck werde ich in den Räumen wahrscheinlich verzichten, ist eh überall gleich. Und das Batterielevel werde ich wahrscheinlich Anfangsweise mal 10 anzeigen lassen, und später wahrscheinlich auch entfernen, da der aktuelle Zustand auch angezeigt wird.

-----------------------------

Grafana, habe ich mir angeschaut. So wirklich gefällt mir das nicht. Vor allem der Aufwand, bis das einmal läuft. Wenn ich das richtig Verstanden habe, wie ein extra Programm. Wieder mehr Benutzernamen und PW. Wieder etwas was man nicht zentral verwalten kann. Wenn ich da irgendetwas mal in 1-2 Jahren ändern will, steh ich total auf dem Schlauch. Werde es wahrscheinlich bei dem Chart belassen. Die zweite Skala ist den Aufwand irgendwie nicht wert. (Aber vielleicht war das Tut auch nicht gerade das beste ^^. 20min ging es nur darum irgendetwas in die Konsole zu tippen um irgendwelche Einstellungen vorzunehmen. 3min dann das Endergebniss.)

-----------------------------

Ich habe in dem Chart mit den 4 Werten einen 5. Wert hinzugefügt. Der 5.Wert wird nicht angezeigt. :o

Bisher wurden Luftdruck, Luftfeuchte, Temperatur, Batterie in V angezeigt. Ich habe versucht Batterie in % hinzuzufügen. Dieser Wert wird aber nicht im Chart angezeigt. Auch in der Legende wird der Wert nicht aufgeführt.

Der Wert kommt per MQTT ordentlich an und ich kann den Wert an sich ordentlich auf der sitemap anzeigen lassen. Also hat das Item den Wert. Der Wert wird als reine Zahl übermittelt, also ohne irgendwelche Einheitszeichen.

Thing Datei:

Code: Alles auswählen

Bridge mqtt:broker:MQTTBroker "MQTTBroker" [ host="192.168.178.32", port=1883, secure=false, username="", password="", clientID="openHAB2", qos="1" ] 
{ 
	Thing mqtt:topic:Klima_Wohnzimmer "Klima Wohnzimmer" {
		Channels:
			Type number : Temperatur	"Temperatur"		[ stateTopic="wemos/wz/sensor/temperature"]
			Type number : Humidity		"Luftfeuchte"		[ stateTopic="wemos/wz/sensor/humidity"]
			Type number : Pressure		"Luftdruck"			[ stateTopic="wemos/wz/sensor/pressure"]
			Type number : Voltage		"Volt"				[ stateTopic="wemos/wz/sensor/voltage"]
			Type number : Battery		"Batterie"			[ stateTopic="wemos/wz/sensor/battery"]
	}
}
Items Datei

Code: Alles auswählen

// Gruppen
Group BME280 (All)

// BME280 MQTT
Number          BME280_Wohnzimmer_Temperatur                    "BME280 Wohnzimmer Temperatur"                  (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Temperatur"}
Number          BME280_Wohnzimemr_Humidity                      "BME280 Wohnzimmer Luftfeuchte"                 (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Humidity"}
Number          BME280_Wohnzimmer_Pressure                      "BME280 Wohnzimmer Luftdruck"                   (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Pressure"}
Number          BME280_Wohnzimmer_Voltage                       "BME280 Wohnzimmer Chip Spannung"               (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Voltage"}
Number          BME280_Wohnzimmer_Battery                       "BME280 Wohnzimmer Batterie %"                  (BME280)            {channel="mqtt:topic:Klima_Wohnzimmer:Battery"}

// Chart Items
Number          gChartIntervall                                 "Chart Intervall"
Persistence Datei:

Code: Alles auswählen

Strategies {
    everyMinute     :   "0 * * * * ?"
    everyHour       :   "0 0 * * * ?"
    everyDay        :   "0 0 0 * * ?"
    default = everyChange
}
Items {
    BME280_Wohnzimmer_Temperatur                    : strategy = everyChange
    BME280_Wohnzimemr_Humidity                      : strategy = everyChange
    BME280_Wohnzimmer_Pressure                      : strategy = everyChange
    BME280_Wohnzimmer_Voltage                       : strategy = everyChange
    BME280_Wohnzimmer_Battery                       : strategy = everyChange
}
Sitemap

Code: Alles auswählen

sitemap HomeSweetHome_admin label="HomeSweetHome" {
    Frame label="BME280 Wohnzimmer" {
        Switch item=gChartIntervall mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Monat", 4="Jahr"]
            Chart item=BME280 period=h refresh=10000 visibility=[gChartIntervall==0, gChartIntervall=="Uninitialized"]
            Chart item=BME280 period=D refresh=10000 visibility=[gChartIntervall==1]
            Chart item=BME280 period=W refresh=10000 visibility=[gChartIntervall==2]
            Chart item=BME280 period=M refresh=10000 visibility=[gChartIntervall==3]
            Chart item=BME280 period=Y refresh=10000 visibility=[gChartIntervall==4] 
    }
}
Jemand eine Idee warum der 5. Graph im Chart nicht angezeigt wird? openHAB wurde neugestartet.

Danke für eure Antworten :)

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von Darkwin101 »

Du musst bei Chart sicherstellen das du ein Wert pro Minute bekommst also lege bitte die Werte mit everyMinute an


Gesendet von iPhone mit Tapatalk

N1d45
Beiträge: 121
Registriert: 5. Jan 2020 14:26
Answers: 2

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von N1d45 »

Darkwin101 hat geschrieben: 7. Mär 2020 09:32 Du musst bei Chart sicherstellen das du ein Wert pro Minute bekommst also lege bitte die Werte mit everyMinute an


Gesendet von iPhone mit Tapatalk
Das war es, danke :)

Am Ende eigentlich klar. Wenn sich der Wert nicht ändert, dann wird nichts in die Datenbank geschrieben, und somit kann auch nichts angezeigt werden. Da der Wemos noch am USB 5V hängt kann da sich auch nichts ändern.

Danke für den Hinweis.

Benutzeravatar
udo1toni
Beiträge: 13944
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: DIY Temperatur, Luftfeuchte, Druck, openHAB, Datenbank

Beitrag von udo1toni »

Aber nochmal der Hinweis, dass man Messwerte, die nichts miteinander zu tun haben, nicht ein Chart packt. Nirgendwo auf der Welt.
Ich kann ja verstehen, dass Du keine 5 Charts mit jeweils einem Messwert haben möchtest, aber Du denkst an dieser Stelle einfach in die falsche Richtung.

Was Grafana betrifft, so ist die Inbetriebnahme eigentlich ganz einfach, aber zuerst wäre die Frage, wo läuft openHAB (bzw. wie hast Du es installiert?)
Wenn Du z.B. auf dem Raspberry mit openHABian installiert hast (gleich ob durch das Image oder mit einem Standard Image und anschließendem git clone der openHABian Scripte) gehst Du nach openhabian-config, setzt die Haken für influxdb und grafana und drückst execute.
Aber auch sonst ist das mit einigen Befehlen an der Konsole getan. im englischen Forum gibt es ein sehr gutes Howto: https://community.openhab.org/t/influxd ... hing/13761 welches sehr kleinteilig erklärt, was zu tun ist. 90% des Textes sind aber Erklärungen und Beschreibungen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten