Projekt

Changelog

Alle nennenswerten Änderungen je Version. Die Versionsnummern folgen der Firmware, Server und Oberfläche werden gemeinsam mit ihr ausgeliefert.

0.10.0

Firmware, Server und Oberfläche 0.10.0: Sensormodule statt Sammelmodulen. Reihenfolge beim Aktualisieren: erst der Server, dann der Hub, dann die Module, dann die Anzeigen. Modul-Firmware 0.10.0 spielt der Server nur über einen Hub mit 0.10.0 ein.

Neu

  • Sensormodule: neue Modultypen 13 bis 24, je eine Sensorart: Temperatur/Feuchte (SHT4x), CO₂ (SCD4x), Lichtsensor (VEML7700), BME280, Bodenfeuchte (Modbus-Bodenfühler und SMT100, misst auch die Bodentemperatur), Temperatur, Bodentemperatur und Wassertemperatur (DS18B20), Füllstand (A02YYUW), Regensensor (RG-15), Durchfluss und „Typ offen“. Das Nachfüllventil hängt an einem Leistungsmodul DC je Tank.
  • Erkennung am Chip, nicht an der Adresse: Ein Modul prüft beim Start, welche Chips an I²C, 1-Wire und UART hängen, an ihrer Kennung. Häufige falsche Chips haben einen Namen (BMP280, SHT3x, AHT20, SCD30 …).
  • Den Modultyp schlägt die Erkennung vor, bestätigt wird beim Übernehmen, zusammen mit dem Ort der Sensoren. Das Modul speichert seinen Typ nie selbst; der Hub setzt ihn aus seiner Konfiguration. Einen Typ mit Ausgängen schlägt die Erkennung nie vor.
  • Falscher oder fehlender Sensor ist ein eigener Fehler: „Falscher Sensor angeschlossen“ bzw. „Kein Sensor angeschlossen“, ohne Neustart, Fehlversuch und Sperre. Die Meldung endet von selbst, sobald der richtige Chip antwortet.
  • Anlage aus Sensormodulen: Das Hochbeet hat 22 Module statt 13, der Garten 13 statt 9. Höchstens 64 Module je Hub.
  • Erwartete Versorgung je Hub: 24 V (Bus) oder 5 V (Steckbrett). Werte unter 3 V an einem Modul gelten als „nicht gemessen“, ohne Warnung.
  • Statuslicht des Hubs: Die RGB-LED des ESP32-S3-DevKitC-1 zeigt den Zustand und blinkt zum Finden; GPIO 48, GPIO 38 oder keine, „LED testen“.
  • Schnellerer Start des Hubs: gemerkte Adresse und MQTT-Port gehen sofort an MQTT, das WLAN startet mit Kanal und Access Point der letzten Verbindung.

Geändert

  • Klima, Boden, Wasser und Außen heißen „(alt)“ und laufen weiter, werden aber für neue Module nicht mehr angeboten.
  • Das Einrichtungs-WLAN des Hubs ist offen, ohne Passwort. Ein Passwort-Aufkleber gilt nicht mehr.
  • Nur noch der ESP32-C3 SuperMini als Modul-Board, das ESP32-C3-DevKitM-1 entfällt.
  • MQTT-Keepalive 10 s statt 30 s: Ein Hub ohne Strom ist nach höchstens etwa 15 s offline.
  • Versorgung der Module: 24 V vom Bus über Sicherung und Verpolschutz auf einen Abwärtswandler, 5 V an den 5-V-Pin des SuperMini.

Bekannte Grenzen

  • Nichts davon lief auf echter Hardware: Erkennung der einzelnen Chips, falscher Sensor, RGB-LED, Keepalive über nginx, Zeiten beim Start.

0.9.1

Firmware 0.9.1 für Anzeige (WLAN) und Antriebsmodul; die übrigen Änderungen betreffen nur Server und Oberfläche.

Geändert

  • Blinken läuft 5 Minuten und lässt sich mit „Blinken beenden“ vorher beenden.
  • Geräte bleiben eingeklappt; Probleme zeigt der Kopf der Karte mit „Braucht Aufmerksamkeit“.

Behoben

  • Jeder Hub, der online ist, hört spätestens alle 40 s etwas vom Server: Ging 30 s nichts an ihn, bekommt er seine Alarmliste erneut. Bleibt er trotzdem autonom, meldet der Server „Hub empfängt nichts vom Server“.
  • Werte eines Hubs, der offline oder autonom ist, sind sofort als stillstehend markiert. Geht ein Hub offline, gelten auch seine Module als offline.
  • Alarme zu Kanälen und Ausgängen gibt es nur noch, solange sie in Gebrauch sind.
  • Anzeige (WLAN): Das Bild rutscht nicht mehr nach oben.

0.9.0

Firmware, Server und Oberfläche 0.9.0: Die Einrichtung eines Antriebs ist Pflicht. Vor dem Update alle Klappen schließen. Nach dem Update stehen alle Antriebe, bis ihre Motordaten eingetragen sind; die Kalibrierung bleibt erhalten.

Neu

  • Zustand „Einrichtung ausstehend“: Ohne vollständige, vom Modul bestätigte Motordaten bewegt sich ein Antrieb nicht, auch nicht zum Schließen bei Regen, Wind oder Frost. Die Reihenfolge ist immer: Motordaten, Kalibrierung, Betrieb.
  • Reiter „Motordaten“: Nennspannung, Nennstrom, Abschaltgrenze, eingebaute Endschalter, Einschaltdauer oder ausdrücklich „Keine Grenze“. Nichts ist vorausgewählt. Vorgabe für den JS-TGZ-U2 (12 V).
  • Grenzen aus den Motordaten statt aus der Sicherung des Moduls. Liegt die Lastversorgung mehr als 25 % über der Nennspannung, schaltet das Modul den Antrieb nicht ein.

Geändert

  • Keine Voreinstellungen mehr für Antriebe.

0.8.0

Firmware, Server und Oberfläche 0.8.0. Reihenfolge beim Aktualisieren: erst der Server. Eine Anzeige (WLAN) mit Firmware bis 0.7.3 einmal per USB flashen.

Neu

  • Anzeige (WLAN): Das Waveshare ESP32-S3-Touch-LCD-4.3B läuft mit eigener Firmware als Anzeige ohne Hub, verbindet sich per WLAN direkt mit dem Server und zeigt Werte aller Hubs des Standorts.
  • Einrichten wie einen Hub über das offene WLAN „SmartBeet-Anzeige-…“, Update über HTTPS, automatische Ansichten, Neustart aus der Oberfläche, Bildschirm „Keine Verbindung“.

0.6.0

Neu

  • Anzeige lesbar: Kacheln mit Namen, ruhiger Kopf, Uhrzeit auf jeder Seite, hell und dunkel.
  • Live-Bild: Das Fenster der Anzeige im Live-Modell zeigt genau den Bildschirm, der gerade an der Anzeige zu sehen ist, nie die PIN.

0.5.0

Firmware 0.5.0. Netzwerk immer verschlüsselt. Beim Aktualisieren erst den Server, dann jeden Hub einmal per USB flashen und den vollständigen Einrichtungscode im Einrichtungs-WLAN eintragen.

Neu

  • TLS-Endpunkt im Stack für Oberfläche und API (HTTPS 8443), MQTT der Hubs (8883) und Push (8091). Der Broker hat keinen Port mehr nach außen.
  • Eigene CA: Der Dienst certs legt CA und Serverzertifikat an und erneuert es. Der Einrichtungscode trägt den Server-Schlüssel, daran erkennt der Hub die CA.
  • Hub 0.5.0: MQTT über TLS, Firmware über HTTPS vom verbundenen Server.
  • Mail nur mit TLS.

0.4.0

Firmware, Server und Oberfläche 0.4.0. Reihenfolge beim Aktualisieren: erst der Hub, dann Module und Anzeigen. Hubs mit 0.3.0 einmal per USB flashen (neue Partitionstabelle, gespeicherte Daten bleiben erhalten); über die Oberfläche aktualisiert laufen sie auch, verteilen aber nur Abbilder bis 1 MB.

Anzeige am Beet

  • Neuer Modultyp „Anzeige“: 4,3"-Touchdisplay (800 × 480) als normales Modul am CAN-Bus, Index 12, eigene Firmware für ESP32-S3 mit PSRAM und LVGL, Update über den Hub wie bei Modulen. Fällt eine Anzeige aus, ist das eine Warnung, kein Alarm.
  • Anzeige einrichten: bis zu 8 Ansichten (Kammer, Anlage oder frei) mit bis zu 12 Kacheln aus Messwerten, Reglern, Ausgängen, Tanks und Kammern, sortierbar, mit eigener Beschriftung; gesperrtes Startbild mit oder ohne Werte, Abmelden nach, Helligkeit, Dimmen, Nachtzeit; Vorschau 800 × 480 mit den aktuellen Werten.
  • PIN für die Anzeigen: Jeder setzt im Konto seine eigene PIN, gespeichert wird nur ein Hash. Admins legen fest, wer sich an den Anzeigen anmelden darf. Anmeldung: Name wählen, dann PIN. Die PIN prüft der Hub, auch ohne Server; nach 5 falschen PINs ist die Anzeige 5 Minuten gesperrt.
  • Alarme an der Anzeige: Der Server schickt jedem Hub die offenen Alarme seiner Anzeigen. Die Kopfzeile zählt sie, die Seite „Alarme“ listet sie. Quittieren an der Anzeige mit dem neuen Recht „Quittieren“; ohne Server quittiert der Hub vorläufig und liefert nach.
  • Bedienen vor Ort: Antippen einer Kachel öffnet ein Bedienfeld: Ausgänge schalten oder stellen, Deckel Zu/Stopp/Auf, Automatik, gestörte oder gesperrte Ausgänge freigeben. Der Hub prüft Sitzung, Recht und Kammer; Sicherung, Störungssperre, Kalibrierpflicht, Windschutz und Verriegelungen gelten unverändert, die Anzeige nennt den Grund einer Ablehnung.
  • Sollwert und Betriebsart vor Ort: Sollwert für 1, 4 oder 12 h ändern, „Zurück zum Plan“; Kammer in den Frostschutz oder zurück. Gilt im Hub sofort, der Server übernimmt es und bestätigt.
  • Verlauf: neue Seite mit den letzten 24 h je Messwert, Regler und Tank der Ansicht, mit Bändern, wann der Regler lief und wann Alarme offen waren. Der Hub rechnet 48 Punkte zu 30 min.
  • Nichts geht verloren: Sollwerte und Betriebsarten vor Ort überstehen den Neustart von Server und Hub. Der neueste Befehl gilt, nicht der zuletzt angekommene.
  • Jeder Befehl an der Anzeige steht im Protokoll mit Benutzer und Anzeige. Mitglieder bekommen die Rechte „Schalten“, „Sollwerte“, „Freigeben“ und „Betriebsart“, auf Kammern beschränkbar.
  • Der Hub speichert seine Konfiguration mit den PIN-Hashes verschlüsselt (AES-256-GCM, Schlüssel in den eFuses), die Anzeige ihre zuletzt empfangene Konfiguration.

Hub auf echter Hardware

  • Der Hub startete seit den Anzeige-Phasen auf dem echten ESP32-S3 nicht mehr (Stapelüberlauf in der Hauptschleife). Große Nachrichten entstehen nicht mehr auf dem Stapel, die Hauptschleife hat 16 KB, der Hub-Kern liegt im PSRAM. Jeder Build bricht ab, wenn eine Funktion mehr als 1536 Byte Stapel braucht.
  • Hub, Module und Anzeige melden ihre Speicherreserve; die Einstellungen des Hubs zeigen sie.
  • Hub startet auf echter Hardware (ESP32-S3 N16R8): Partitionstabelle mit Standard-Adressen, Oktal-PSRAM eingeschaltet, Einrichtungs-WLAN heißt SmartBeet-Hub-XXXX.
  • Puffer für Updates 2 MB statt 1 MB. Bestehende Hubs einmal per USB flashen, damit die neue Partitionstabelle ankommt; dabei bleibt alles erhalten.
  • Der Hub speichert WLAN-Passwort, Einrichtungscode und Broker-Zugangsdaten verschlüsselt. Der Schlüssel entsteht beim ersten Start und wird in die eFuses gebrannt.
  • Einrichtungs-WLAN: Die Seite sieht aus wie die SmartBeet-Oberfläche, Pflichtfelder sind markiert, das WLAN öffnet sich wieder, wenn das Heim-WLAN drei Minuten nicht klappt oder die Taste drei Sekunden gedrückt wird. Die Netzsuche erkennt den Server auch hinter nginx.

Antriebe

  • Antriebsmodul mit eigener Lastversorgung, 12 oder 24 V über eine eigene Zuleitung. Antriebe zählen nicht mehr zur Summenprüfung am Bus.
  • Motortreiber DRV8874 statt L298. Strom und Spannung misst der INA226, nFAULT löst die Sicherung aus.
  • Einschaltdauer je Antrieb: Prozent, Bezugszeit und längste Fahrt am Stück, mit Vorgabe für die JS-TGZ-U2 (25 % in 10 min, 60 s). Schließen bei Regen, Wind oder Frost fährt trotzdem. Ein Neustart gibt kein Budget frei.
  • Busgrenze: Richtwert höchstens 2 A Dauer bei 0,34 mm² bis 10 m.
  • Ist ein Modul oder Hub für etwas Eingestelltes zu alt, meldet der Server eine Warnung mit der nötigen Firmware.

Behoben

  • Die Oberfläche zeigte eine Änderung manchmal nicht, die genau beim Öffnen einer Seite eintraf; die Seite lädt jetzt noch einmal, sobald die erste Antwort da ist.
  • Mehrere Nachrichten eines Hubs zur selben Zeit konnten den Gerätebestand im Arbeitsspeicher auf einen älteren Stand zurücksetzen. Übernommene Hubs erscheinen nicht mehr unter „Neue Geräte“, Hubs ohne Meldung seit einer Stunde verschwinden dort.
  • Ein Schaltbefehl vom Server mit Wert 1 galt im Hub als 1 % und schaltete nicht ein.

Dokumentation und Entwicklung

  • Installation auf Debian 13 mit eigenem Benutzer deploy, deploy.sh mit Menü, automatisches Aktualisieren über einen selbst gehosteten GitHub-Actions-Runner, Abschnitt „HTTPS und Reverse-Proxy“.
  • firmware/UNGETESTET.md ist eine Prüfliste je Gerät mit „Tun“ und „Erwarten“.
  • dev.bat: „Starten ohne Simulator“ für einen echten Hub. flash.bat: Board komplett löschen.
  • Tests räumen am Ende ihre Hubs, Zugangsdaten und Kandidaten auf.

0.3.0

Code, Kennungen, MQTT-Topics und Routen sind jetzt englisch. Oberfläche, Mails und Unterlagen bleiben deutsch. Bus- und MQTT-Protokoll ändern sich: zuerst den Hub, danach die Module auf 0.3.0 aktualisieren. Gespeicherte Daten werden beim ersten Start übersetzt.

Hinzugefügt

  • Kalibrierpflicht: Füllstand und Bodenfeuchte haben keine Voreinstellung. Ohne Kalibrierung melden sie „Kalibrierung ausstehend“ und steuern nichts. Pumpen, Nachfüllventile, Tankheizung, Auffüllen und Bewässerung bleiben so lange gesperrt.
  • Antriebe ohne Stellungsrückmeldung: getrennte Laufzeiten für Auf und Zu, Endlage über den Motorstrom bei jeder Fahrt. Ohne Kalibrierung ist der Antrieb gesperrt. Kalibrier-Assistent, automatisch mit erkennbaren Endlagen, sonst mit „Jetzt offen“ und „Jetzt zu“. Nachkalibrieren nach 30 Tagen oder wiederholter Abweichung, auf Wunsch selbstständig zu einer ruhigen Zeit. Nennspannung 12 oder 24 V je Antrieb.
  • Frostschutz je Kammer: keine Bewässerung, kein Licht, Heizung nur gegen Frost, Deckel zu bis zur Hitzegrenze. Der Tank bleibt frostfrei und wird nur bis 30 % gefüllt, wenn alle seine Kammern im Frostschutz sind.
  • Relaismodule: „Relais 4-fach“ mit vier potentialfreien, frei zuweisbaren Relais und Leistungsmessung je Ausgang, dazu der neue Typ „Relais 8-fach“. Ein Regler schaltet ein Relais frühestens nach 30 Sekunden wieder um. Hand, Regeln, Verriegelung und Sicherheit schalten sofort.
  • Leistungsmodul DC: eigene Lastversorgung mit 12 oder 24 V, Nennspannung je Ausgang. Seine Ausgänge zählen nicht mehr in Summenprüfung und Lastabwurf am 24-V-Bus.
  • Windmodul und Windschutz: Schalenanemometer mit optionaler Windfahne. Der Windschutz schließt alle Deckel ab 5 m/s, mit 1,5 m/s Hysterese und 10 Minuten Haltezeit. Fällt der Windsensor aus, bleiben sie zu. Ohne Windmodul nutzt der Hub die Böen der Wettervorhersage.
  • Vorlage „Garten mit offenen Beeten“: Rahmenbeete ohne Aufsatz und Deckel frei auf dem Rasen, Luft wie außen, Bewässerung über Pumpe oder Ventil, Regelvorlage „Frostwarnung für offene Beete“.
  • Module laufen auch auf dem ESP32-C3 SuperMini, weiter mit einem Image für alle Modultypen und Boards. Das Board steht im Speicher des Moduls.
  • „Blinken“ wirkt jetzt auch auf Modulen: blaue LED am SuperMini.
  • flash.bat: Firmware per USB auf Hub oder Modul spielen und Logs ansehen, mit Menü.
  • Ein fahrender Antrieb meldet seine geschätzte Stellung jede Sekunde. Der Deckel läuft im Modell gleichmäßig.
  • Simulator: Windmodul, Wetter mit Böen, Antriebe mit unterschiedlicher Laufzeit auf und zu, „Anlage umbauen“ mit Vorlage, Ventilen je Kammer und Verbraucherspannungen.
  • Arbeitsregeln für das Repository, Changelog, Glossar mit der Übersetzungsliste zwischen Oberfläche und Code.
  • Plan: eigene Modul-Platinen später mit STM32G0B1. Erklärung von CAN-Controller und Transceiver.

Geändert

  • Englische Kennungen: Modultypen (climate, soil, power_dc, relay4, drive, water, outdoor, supply), Vorlagen, Betriebsmodi, Kennungen aus der Vorlage, MQTT-Topics (controller, resource) und Routen der Oberfläche. Alte Adressen leiten auf die neuen um.
  • Hochbeet-Vorlage nach der echten Anlage: zwei Kammern von 0,80 × 0,80 m, Aufsatz vorn 30 cm, hinten 60 cm. Tankheizung und beide 230-V-Heizmatten am Relais 4-fach, Pumpen, Lüfter und Licht mit 12 V am Leistungsmodul DC, Windmodul an. Der Deckel öffnet bis etwa 40°.
  • Relais-Ausgänge schalten schon bei einem Stellwert über 0 ein statt ab 50 %.
  • Vorhandene Füllstand- und Bodenfeuchtesensoren ohne Kalibrierung und Antriebe ohne beide Laufzeiten stehen nach dem Update auf „Kalibrierung ausstehend“.
  • Der Betriebsmodus Frostschutz stellt die Regler nicht mehr ab, der Hub hält die Kammern selbst sicher. „Einlernen“ an einem Antrieb ist jetzt der Kalibrierlauf.
  • Ausgänge neu übernommener Module sind erst „in Gebrauch“, wenn sie eine Rolle bekommen.
  • Kein Container läuft mehr als root: nginx als nginx-unprivileged auf Port 8080 im Container, alle anderen Dienste mit festem Benutzer.
  • Pinbelegung der Module: Schaltausgänge liegen nur noch auf Pins, die beim Booten ruhig bleiben, oder am Portexpander.

Behoben

  • Der Alarm „Kalibrierung ausstehend“ endet, wenn der Kanal oder Antrieb aus dem Gebrauch genommen wird.
  • Möglicher Deadlock beim Schreiben der letzten Messwerte.
  • Nach dem Einrichtungsassistenten zeigte die Seite „Neue Geräte“ den gemeldeten Hub erst nach einem Neuladen.

0.2.0

Hinzugefügt

  • Fehlerbehandlung für Ausgänge und Sensoren: bei einer Störung abschalten, nach einer Pause bis zu dreimal neu versuchen, danach sperren bis zur Freigabe. Sperren überleben Neustart und Stromausfall.
  • Tank-voll-Stopp: Nachfüllventile schließen ab 98 %, auch im Handbetrieb. Ohne gültigen Füllstand bleiben sie zu.
  • „Auffüllen bis X %“ als Handbefehl an den Tank. Der Hub füllt selbstständig mit allen Schutzgrenzen.
  • Sensor-Kalibrierung im Hub: Zwei-Punkt für Füllstand und Bodenfeuchte, Versatz für Temperatur, Feuchte und CO₂, mit Assistent. Rohwert und kalibrierter Wert im Detail. Admin und Bediener dürfen kalibrieren.
  • Sensor zurücksetzen nach Prüfung oder Tausch.
  • Schaltkasten-Klima: Heizmatte gegen Frost und Feuchte, Lüfter gegen Hitze und Feuchte, beides optional und standardmäßig an.
  • Der Hub findet den Server selbst: Ansage per mDNS und Netzsuche. Kurzer Einrichtungscode im Einrichtungs-WLAN.
  • Live-Modell: Deko (Klappe, Blende, Griffleiste, Schild, Lüftungsschlitze), Rahmen, Deckel als Platte, flüssige Deckelbewegung, Blinken in Blau, Störungsmarken, verständliche Fehler beim Speichern.
  • Simulator: „Anlage umbauen“ kommt im Server an. Werte allmählich oder als Sprung setzen. Rohwert-Fehler zum Testen der Kalibrierung.
  • Neues Logo in hell und dunkel, Favicon und App-Symbole.
  • Ein Licht je Kammer in der Hochbeet-Vorlage.

Geändert

  • Alarme derselben Ursache werden zu einem Alarm zusammengefasst. Eine Sperre behält den Titel.
  • Der Rohwert des Ultraschallsensors wird nicht mehr auf 0 bis 100 % gekappt, erst der kalibrierte Wert.
  • Die Regler des Schaltkastens reagieren nicht auf Frostwarnung, Urlaub und Hitze.
  • Abgelehnte Zugangsdaten führen erst nach 60 Sekunden zum Rückfall in die Einrichtung.

Behoben

  • Wettlauf bei gleichzeitigen Alarmen, durch den eine Sperre als Warnung stehen blieb.
  • Zweite Zugangsdaten während der Übernahme eines Hubs, die der Broker dann ablehnte.
  • Handbetrieb des Nachfüllventils lief bei vollem Tank weiter.
  • Die Detailseite zeigte „In Ordnung“ trotz offener Störung.
  • Das Rate-Limit warf bei abgebrochenen Anfragen einen Fehler.

0.1.0

Hinzugefügt

  • Protokoll-Vertrag für MQTT und CAN, Anlagenbeschreibung.
  • Backend: Datenbank mit TimescaleDB, MQTT mit eigenen Zugangsdaten je Hub, Geräteverwaltung und Übernahme, Alarme, Mail, Push über ntfy, Mehrbenutzer mit Einladungen, Passwort-Reset, Zwei-Faktor-Anmeldung und Audit-Log.
  • Regel-Engine mit Graph, Ausdruckssprache, Auswertung und Testlauf.
  • Oberfläche mit Live-Modell der Anlage, Editor und Werkbank.
  • Simulator für Hub und Module mit Physik, Elektrik und Fehlereinspielung.
  • Firmware-Kern für Hub (ESP32-S3) und Module (ESP32-C3), Updates der Module über den Hub, mitgelieferte Firmware im Image.
  • Sicherung und Wiederherstellung.
  • End-to-End-Tests über die Oberfläche.
  • dev.bat für die Entwicklung unter Windows. Compose getrennt in Betrieb und Entwicklung.

Ab Version 0.5.0 stehen hier die wichtigsten Punkte je Version; der vollständige Changelog liegt im Repository des Projekts. Der Aufbau folgt „Keep a Changelog“. Was als Nächstes kommt, steht in der Roadmap.

    Durchsucht alle Seiten. Die Suche läuft im Browser, nichts wird übertragen.