From 2248ba7141380db2c16fe200ee70598b5bb40ea2 Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 16 Mar 2026 20:41:55 +0100 Subject: [PATCH] =?UTF-8?q?NodeOperatingSystem=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NodeOperatingSystem.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 NodeOperatingSystem.md diff --git a/NodeOperatingSystem.md b/NodeOperatingSystem.md new file mode 100644 index 0000000..3e9659a --- /dev/null +++ b/NodeOperatingSystem.md @@ -0,0 +1,25 @@ +# Betriebssystem der Mikrocontroller + +Der Anwender ist frei in der Wahl des Betriebssystem für die Jede Mikrocontroller-Platine, solange einige Grundregeln eingehalten werden: +- muß als erstes eine im Netz eindeutige UID (64 Bit) generieren +- muß das oben skizzierte einfache Nachrichten-Protokoll implementieren und sich eine Adresse zwischen 1-251 zuweisen +- muß von Zeit zu Zeit ein Discovery-Paket senden, mit dem es sich bemerkbar macht +- kann in beliebigen Abständen Pakete mit gemessenen Sensordaten versenden (dafür gibt es spezielle Nachrichten) +- kann auf eingehende Pakete reagieren (z.B. reagiert bei mir ein LED-Strip-Controller-Node auf Nachrichten eines Bewegunsmelder-Nodes) + +AqHome liefert für meine eigenen Nodes ein einfaches Betriebssystem mit, das diese Aufgaben alle erfüllt und leicht erweiterbar ist. Dabei benötigt es nur vergleichsweise wenig FLASH und selbst kaum RAM. + +Das System unterscheidet zwischen Modulen (Treiber) und Anwendungen, wobei jeweils mehrere aktiv sein koennen. + +Module sind lowlevel-Code und in erster Linie Treiber für Hardware-Geräte (z.B. den Umweltsensor SI7021) oder für Protokolle. +Anwendungen hingegen liegen auf höherer Ebene und verwenden z.B. die Module. Beispielsweise gibt es Anwendungen für den Netzwerk-Stack, für Bewegungsmelder-aktiviertes Licht, zum Berichten von Statistiken und von Sensordaten. + +Zur Kommunikation mit Modulen und Anwendungen kennt das Betriebssystem verschiedene Funktionen: +- INIT: Initialisiert eine Modul oder eine Anwendung +- RUN: Wird einmal pro MainLoop aufgerufen +- EVERY100MS: wird einmal alle 100ms aufgerufen (system timer tick) +- EVERY1S: wird einmal pro Sekunde aufgerufen +- EVERY1M: wird einmal pro Minute aufgerufen +- EVERY1D: wird einmal pro Tag aufgerufen + +