Startphase von SmartHomeNG

Für das tiefere Verständnis und Fehlersuche ist es unter Umständen wichtig zu wissen, wie der Start von SmartHomeNG abläuft. Prinzipiell gibt es 8 Bereiche die man betrachten kann:

  • Der Kern mit Basisfunktionalitäten
  • Zeitplanung von Ereignissen (Scheduler)
  • Verbindungen über Netzwerke
  • Module
  • Plugins
  • Items
  • Logiken
  • Szenen

Folgende Schritte werden beim Start von SmartHomeNG durchlaufen:

Zunächst Initialisierungen und Vorbereitungen für den Kern:

  • Logging initialisieren aus etc/logging.yaml
  • Startzeit überprüfen: Ist Echtzeit für Raspi vorhanden?
  • Laden von etc/smarthome.yaml (bzw. smarthome.conf)
  • Aktuelle Zeitzone prüfen
  • Versionsinformationen ausgeben
  • Zeichensatz UTF-8 im System voreingestellt?
  • Objekte für Sonne und Mond erstellen (dazu wird Länge, Breitengrad und Höhe benötigt)

Dann der Hauptthread der nacheinander folgende Aufgaben ausführt und dann in einer Schleife weiterarbeitet

  1. Init Scheduler
  2. Start Scheduler
  3. Init Connections
  4. Laden von etc/module.yaml
  • Init Modules z.B. http, dummy –> cherrypy wird gestartet (wird für das Backend benötigt)
  • Start Modules
  1. Laden von etc/plugin.yaml
  • Init Plugins z.B. backend, database, knx, …
  • Laden von plugins/pluginname/plugin.yaml
  • Laden von plugins fertig: sh.plugin_load_complete == True
  1. Start initialization of items
  • Laden von items/*.yaml bzw. *.conf
  • Laden von Items fertig sh.item_load_complete == True Achtung: Änderung zu erwarten, wenn Items dynamisch erstellt/verändert/gelöscht werden
  1. Init logics
  • Laden von Logiken aus etc/logics.yaml bzw. etc/logics.conf
  • Laden von Logiken fertig wird nicht signalisiert, da es ab Version 1.4 während der Laufzeit neue Logiken geben kann
  1. Init Scenes
  2. Scheduler für Connections hinzufügen
  3. Plugins starten
  • plugin_start_complete == True Achtung: Änderung zu erwarten, wenn Plugins zur Laufzeit eingebunden/aktiviert/deaktiviert/entfernt werden
  1. Scheduler für Garbage Collection hinzufügen
  2. Hauptschleife
  • Verbindungen auf anliegende Daten prüfen
  • läuft bis ein Signal zum Beenden empfangen wird
Kategorien: Core

0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.