Forum: Haus & Smart Home MQTT broker auf Teensy4


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Horst S. (h3aau)


Lesenswert?

moin, bei mir schlägt demnächst ein HM-1500 mit openDTU auf.
da dieser dann daten an einen MQTT-broker senden kann würde ich diese 
gern auf meinem hauseigenen datenlogger sammeln. dieses ist ein 
teensy4.1 der bereits alles über meine heizung und allen sonstigen kram 
mit schreibt und diese als dateien und im browser bereit stellt.
hat schon mal einer sowas gemacht?
wie ist so ein mqtt-paket aufgebaut?
den kompletten brocker muss ich hoffentlich nicht in den teensy stopfen.

von Rainer W. (rawi)


Lesenswert?

Horst S. schrieb:
> wie ist so ein mqtt-paket aufgebaut?

Was meinst du mit "mqtt-paket" - irgendeine Sammlung von Quellcodes oder 
das Übertragungsformat der Daten?

von Horst S. (h3aau)


Lesenswert?

moin rainer.
ich würde am liebsten das was der openDTU an den MQTT-broker sendet mit 
dem teensy auswerten.

von J. S. (jojos)


Lesenswert?

soll jetzt der broker oder ein Client auf dem Teensy laufen? Client ist 
kein Problem, dafür gibt es Libs die Topics publishen/subsriben können. 
Der Broker gehört eher auf einen Server, so mindestens Raspberry Pi 
Klasse.
Was nicht heißt das es das vielleicht doch für µC gibt.

von Horst S. (h3aau)


Lesenswert?

der teensy soll die daten vom opendtu entgegen nehmen und abspeichern.
ich brauche aber keinen vollständigen broker auf dem tennsy.
hat wer ein hexdump von dem was der opendtu da so sendet?

von J. S. (jojos)


Lesenswert?

das MQTT Protokoll ist öffentlich dokumentiert. Aber für eine Punkt zu 
Punkt Verbindung würde ich eher eine einfache TCP connection in openDTU 
einbauen. Bzw nein, meinen mosquitto nutzen. Das MQTT ist so praktisch 
einfach und gut, da braucht man einfach einen (kleinen) Rechner als 
Broker. Und auf dem Rechner macht die Auswertung und Ablage in DB mehr 
Spaß. Der Teensy wäre dann ein Client der die Daten schön auf einem 
Display anzeigen könnte. Aber jeder wie er mag.

https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

Der Charme liegt in den m:n Verbindungen. Du kannst die Daten nicht nur 
von openDTU empfangen, sondern z.B. auch von einem Programm das die 
Daten simuliert. Der Teensy abonniert ein Topic und bekommt die Daten, 
egal von wem. Eben von jedem der auf dieses Topic schreibt. Und dafür 
braucht es die Zentrale, den Broker.
Damit ist das gut zu debuggen, es gibt universelle Clients die alle oder 
gewünschte Topics anzeigen, sogar auf dem Smartphone/Tablet.

: Bearbeitet durch User
von Sebastian W. (wangnick)


Lesenswert?

Bei mir läuft mosquitto auf dem zentralen OpenWRT-Router als Broker. Ein 
Teensy ist Gateway zwischen MQTT und CAN-Bus, dort benutze ich die 
pubsubclient Bibliothek (von mir leicht aufgebohrt um darüber auch neue 
Software verteilen zu können).

LG, Sebastian

von Horst S. (h3aau)


Lesenswert?

moin, danke für die infos.
da das mqtt-packet wirklich nicht so wild ausschaut werde ich dann doch 
einen mini-broker in den teensy progen. daten empfangen auf dem port 
1883 geht schon mal. nun muss ich die nur noch zerlegen und meine werte 
rausholen. der opendtu sendet mir eine status information. hatt wer 
zufällig einen hm-1500 laufen und kann mir mal zeigen wie der 
datenaufbau im orginal ist? mein  hm-1500 befindet sich noch auf der 
reise.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

Die Daten kommen von openDTU, damit musst du kommunizieren. Für den HM 
gibt es auch einen Simulator, Link ist im openDTU Repo.
Wenn man keinen Broker nutzen möchte kann man ja das nRF Modul auch 
direkt an den Teensy hängen.
Im openDTU Quellcode kann man ja auch die Topics sehen über die 
kommuniziert wird, das kann man mit Broker und Testclient auch 
simulieren.

: Bearbeitet durch User
von Horst S. (h3aau)


Lesenswert?

von dem opendtu kommen folgende daten:
MQTT>|
:_MQTT214__OpenDTU-9635288_solar/dtu/status_offline____
10 3A 5F 4 4D 51 54 54 4 D6 5F F 5F F 4F 70 65 6E 44 54 55 2D 39 36 33 
35 32 38 38 5F 10 73 6F 6C 61 72 2F 64 74 75 2F 73 74 61 74 75 73 5F 7 
6F 66 66 6C 69 6E 65 5F 5F 5F 5F
|<MQTT
weiss irgend wer wie das bei einem vorhandenem hm-1500 ausschaut?
das zu zerlegen ist ja kein problem.

die 5F sind 0x00
und die 214 hinter "MQTT" sind in dezimal dargestellt.

: Bearbeitet durch User
von Horst S. (h3aau)


Lesenswert?

mal ein kleiner zwischen bericht:
die openDTU sendet an meinen teensy ihre mqtt-sachen.
verbndung zwischen beiden ist stabil.
auswerten der daten recht einfach (es lebe mqtt).
der teensy stellt sie im minutentakt als chart und tägliche csv-datei 
bereit.
nun fehlt nur noch der hm-1500.

: Bearbeitet durch User
von Horst S. (h3aau)


Lesenswert?

moin,
mein HM1500 ist endlich eingetrudelt. ich habe die pv mit einem panel 
aufgebaut und am laufen. nun hat sich gezeigt das der hm1500 nach 
sonnenuntergang die verbindung zum dtu kappt und morgens leider nicht 
von selbst wieder aufbaut. hat da wer erfahrung mit?

von Horst S. (h3aau)


Angehängte Dateien:

Lesenswert?

mal ein bericht nach odentlich laufzeit.
die pv werkelt munter vor sich hin und hatt bisher c.a. 1,5Mwatt/h 
geliefert.
sie sendet ihre daten per OpenDTU (RaBa64). von hier aus geht es dann 
mit MQTT weiter. die OenDTU connected und bedient meinen 
miniMQTT-brocker.
das läuft auf einem Teensy4.1. dieser sammelt die ankommen daten und 
speichert sie tagesweise als csv datei auf der sd-karte. über das 
http-interface habe nun zugrief darauf und kann die daten mit meinen 
anderen z.b. der heizung auswerten.
der minibroker ist teil meiner wetterdatenerfassung auf dem teensy 
(temp-sensoren, BME280 u.s.w. ). da ich gern mit diagrammen arbeite ist 
das csv-format für mich am einfachsten in der nachbearbeitung.
der aufbau der dateinamen besteht aus jahr,monat,tag also 20240921.csv. 
so kann man sie leichter sortiert anzeigen lassen. die daten werden 
einmal pro minute erfasst und im stundentakt abgespeichert ( zu 
verlängerung der lebenszeit der SD).
Datum     Ertrag     Summe    Panel1  Panel2  Panel3  Panel4
06:48:01  0  0  0,8  0,6  0,6  0,5
06:49:02  0  0  0,9  0,5  0,6  0,5
06:50:00  0  0  0,9  0,5  0,6  0,5
06:51:05  0  0  0,9  0,4  0,6  0,5
06:52:00  0  0  1  0,4  0,6  0,5
06:53:01  0  0  1  0,4  0,6  0,5
06:54:00  0  0  1  0,4  0,6  0,5
06:55:04  0  0  1  0,4  0,6  0,5
06:56:00  0  0  1,1  0,4  0,6  0,5
06:57:03  0  0  1,1  0,4  0,6  0,5
06:58:00  0  3,7  1,3  0,9  0,9  0,8
06:59:00  0  0  1,2  0,5  0,7  0,6
07:00:00  0  0  1,3  0,5  0,7  0,5
07:01:04  0  0  1,3  0,5  0,7  0,5
07:02:02  0  0  1,4  0,4  0,7  0,5
07:03:08  0  0  1,4  0,4  0,7  0,5
07:04:01  0  0  1,5  0,4  0,7  0,5
07:05:04  0  0  1,6  0,4  0,7  0,5
07:06:03  0  0  1,6  0,3  0,7  0,4
07:07:00  0  0  1,7  0,3  0,7  0,4
07:08:08  0  0  1,8  0,3  0,7  0,4
07:09:01  0  0  1,9  0,3  0,7  0,4
07:10:01  0  0  1,9  0,3  0,7  0,4
07:11:01  0  0  2  0,3  0,7  0,3
07:12:09  0  0  2,1  0,3  0,7  0,3
07:13:05  0  0  2,2  0,3  0,7  0,3
07:14:00  0  8,7  3,5  2,1  1,9  1,7
07:15:08  0  9,2  3,7  2,2  2  1,7
07:16:02  0  9,5  3,8  2,3  2,1  1,8
07:17:00  0  10,1  4  2,4  2,2  1,9
07:18:00  0  11,4  5  2,8  2,3  2
07:19:00  0  12,1  5,3  2,9  2,4  2,1
07:20:01  0  12,6  5,6  3  2,5  2,1
07:21:00  0  13,2  5,9  3,2  2,6  2,2
07:22:00  0  13,7  6,2  3,3  2,7  2,3
07:23:04  0  14,4  6,6  3,4  2,8  2,4
07:24:00  0  15  6,9  3,5  2,9  2,5
07:25:00  0  15,8  7,3  3,8  3  2,6
07:26:00  1  16,5  7,7  3,9  3,1  2,7
07:27:01  1  17,4  8,1  4,1  3,2  2,8
07:28:06  1  18,4  8,7  4,3  3,5  2,9
07:29:00  1  21,1  11,1  4,4  3,7  3,1

alles in allem bin ich recht zufrieden mit meiner lösung.
ich habe nun 420 dateien mit je 1440 datenzeile von meiner PV.
also reichlich zahlen zum spielen.

hat noch wer was in der art?

: Bearbeitet durch User
von Stephan S. (uxdx)


Lesenswert?

Horst S. schrieb:
> temp-sensoren, BME280 u.s.w.

Du weisst aber schon, dass der BME280 bezüglich Temperatur nur ein 
Schätzeisen ist, er wird im Datenblatt auch nur als "Combined humidity 
and pressure sensor" bezeichnet.

Auf S. 3 des Datenblattes steht "The integrated temperature sensor has 
been optimized for lowest noise and highest resolution. Its output is 
used for temperature compensation of the pressure and humidity sensors 
and can also be used for estimation of the ambient temperature."

Estimation = Schätzung

Auf S.12 des Datenblattes werden nur "typische" Angaben zu Genauigkeit 
gemacht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.