NodeOperatingSystem aktualisiert
@@ -1,11 +1,11 @@
|
||||
# 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)
|
||||
- **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.
|
||||
|
||||
@@ -15,11 +15,17 @@ Module sind lowlevel-Code und in erster Linie Treiber für Hardware-Geräte (z.B
|
||||
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
|
||||
|
||||
| Funktion | Beschreibung |
|
||||
| --- | --- |
|
||||
| INIT | Initialisiert eine Modul oder eine Anwendung |erforderlich|
|
||||
| RUN | Wird einmal pro MainLoop aufgerufen | optional |
|
||||
| EVERY100MS | wird einmal alle 100ms aufgerufen (system timer tick) | optional |
|
||||
| EVERY1S | wird einmal pro Sekunde aufgerufen | optional |
|
||||
| EVERY1M | wird einmal pro Minute aufgerufen | optional |
|
||||
| EVERY1H| wird einmal pro Stunde aufgerufen | optional |
|
||||
| EVERY1D | wird einmal pro Tag aufgerufen | optional |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user