Reboots/Fehler - was kann man tun?!
Gerne um eigene Erfahrungen ergänzen/korrigieren. Hier sollen möglichst alle Gründe aufgeführt werden, die zu ungeplanten Restarts führen können, so dass jeder mit solchen Reboots hier eine potentielle Lösung für sein Problem finden kann.
Mögliche Ursachen und potentielle Lösungen
Miniserver ist von außen ohne VPN erreichbar
Miniserver nur über VPN von außen erreichbar machen
SD Karte überlastet / defekt
SD-Karten Test <IP-Miniserver/dev/sys/sdtest> - Klärung der Ergebnisse mit Loxone oder im Forum, neuere Miniserver Versionen schicken bei Problemen mit der SD Karte Pushnachrichten & Mails
z.B. Statistiken tw. oder ganz deaktivieren
neue SD Karte - am besten Original Loxone SD Karte oder empfohlene aus dem Wiki
Anfragen an IPs die es nicht mehr gibt oder die nur noch Fehler zurückgeben oder langsam antworten
Ping Bausteine, HTTP-Verbinder etc. checken
Umwandlung in Virtuellen Eingang: Pushen zum Miniserver nur bei Änderung statt Pollen (notfalls über ioBroker, FHEM, node-red, ... als Vermittler)
Zu viele Objekte im Loxone Config Projektfile -> Info Anzahl Objekte erkennen
keine festen Grenzen bekannt, alle Werte sind nur Anhaltspunkte
Programmierung reduzieren, nicht benötigte Teile entfernen, ...
Bug im Miniserver bzw. der Firmware von Loxone
vor ab bekannte Fehler sichten: Erste Hilfe - Aktuelle Fehler - Known Issues
Support Ticket bei Loxone
Probleme Loxbus, Stromversorgung, …
Analyse in Loxone Config
Spannung nachmessen, ...
Abfrageintervalle von Virtuellen HTTP-Eingängen
Die abgefragte Webseite prüfen - ist die sehr groß (Speicherbedarf am Miniserver!) ? Alternativen suchen.
Kurz eingestellte Intervalle vergrößern
Befehlserkennungen auf das Notwendigste reduzieren (jede einzelne Befehlserkennung sucht im gesamten HTTP-Response nach dem Text)
Umwandlung in Virtuellen Eingang: Pushen zum Miniserver nur bei Änderung statt Pollen (notfalls über ioBroker, FHEM, node-red, ... als Vermittler)
UDP-Pakete
Befehlserkennungen auf das Notwendigste reduzieren (jede einzelne Befehlserkennung sucht im UDP-Eingang nach dem Text)
(insbesondere wenn UDP-Befehle aus Templates geladen wurden, sind oft viele Eingänge dabei, die man garnicht braucht)
Wenn möglich, in der UDP-Quelle Caching verwenden, damit nur Änderungen per UDP übertragen werden
Testweise die UDP-Übermittlung komplett deaktivieren
Zu viele Log ausgaben im def.log = zu hohe Schreiblast
Logger deaktivieren
Virtuelle Ausgänge prüfen
Das Speichern der Antwort soll deaktiviert sein (Schreibzugriff auf der SD)
PicoC Programme: Dabei gab es von Loxone bereits Memory Leaks in deren Interpreter, diese kann man aber auch selbst ganz leicht im Code produzieren!
Testweise alle Pico-C Programme entfernen
Merker
Alle Merker überprüfen, ob dort eine Verzögerung eingestellt ist
Eine Verzögerung von 1 belegt einen Speicherplatz
Eine Verzögerung von 100 belegt 100 Speicherplätze
Hohe Verzögerung im Merker erhöht den Speicherverbrauch im RAM des Miniservers
Gleitender Mittelwert
Viele Zyklen erhöhen den RAM-Speicherverbrauch des Miniservers
Impulsgeber
Durchgehend laufende Impulsgeber mit sehr kleinen Intervallen belasten die CPU des Miniservers stark
Verwendung Loxone HTTP/Websocket API prüfen, also Fremdsysteme, die per HTTP Requests in Loxone Befehle ausführen oder Werte pushen
Viele Aufrufe von außen belasten den Miniserver
Externe Systeme: iobroker, node-red, ...
Was kann man noch tun
def.log nach Fehlermeldungen zum besagten Zeitpunkt des Reboots anschauen
http://<miniserver_ip>/dev/fsget/log/def.log
Systemnachrichten aktivieren, damit man Reboot direkt mitbekommt
Bei Loxone anfragen, ob deren Crashlog-Service etwas mitbekommen hat (dafür muss die Crashlog Funktion aktiviert sein -> Screenshot wo Einstellung)
SD-Karte austauschen
Loxforum nach aktuellen Fehlermeldungen von anderen Usern durchsuchen
Eigene, externe Scripte
Die Antworten von http-Requests so kurz wie möglich halten
UDP-Übertragungen nur mit echten Daten (keine unnützen Daten/Texte usw. mitschicken)
Daten per UDP zusammenfassen, statt vieler einzelner Requests
Nur geänderte Daten übermitteln (selbst irgendwo cachen)
Miniserver in Verbindung mit einem LoxBerry
Die Menge an Daten, die an den Miniserver übertragen, oder vom Miniserver abgeholt werden, ist vom jeweiligen Plugin abhängig.
Wenn das Plugin wahlweise eine Übertragung zum Miniserver per HTTP oder UDP erlaubt, wähle nur einen dieser Übertragungswege aus. Beide Varianten gleichzeitig verdoppeln die Last am Miniserver.
Die Übertragung per HTTP vom Plugin zu Miniserver ist ressourcenschonender als per UDP, da bei HTTP die Daten direkt gesetzt werden, und dadurch die Befehlserkennungen am Miniserver wegfallen. Das gilt nur, wenn das Plugin Werte direkt im Baustein setzen kann! Wird ein Virtueller HTTP Eingang benutzt, ist die Last am Miniserver gleich hoch wie bei einem UDP-Eingang.
Wenn ein Plugin eine Webseite/JSON oder dergleichen anbietet, um dies am Miniserver per Virtuellem HTTP-Eingang abzurufen, dann das Intervall auf den größtmöglichen Wert stellen, der für deinen Anwendungsfall sinnvoll ist.
Wenn das Plugin ein Übertragungsintervall anbietet, verwende den größten Zeitabstand, der für deinen Anwendungsfall möglich ist. Beispielsweise macht es keinen Sinn, die Feuchtigkeit des Pflanzensensors alle fünf Sekunden zu übertragen.
LoxBerry verwendet eine eigene, cachende Library zum Übertragen von Daten per HTTP und UDP an den Miniserver. Damit werden ausschließlich Wertänderungen übertragen. Die Library erkennt auch Miniserver-Neustarts, um automatisch alle Daten neu zu übertragen. Jedoch liegt es beim Plugin-Entwickler, diese Library einzusetzen. Du solltest jedenfalls alle Plugins auf den aktuellen Stand bringen.
Das LoxBerry-Grundsystem selbst führt nur bei Interaktion durch dich Anfragen gegen den Miniserver aus (z.B. bei der Authentifizierungsprüfung beim Einrichten der Miniserver). Alle Funktionen und bereitstehenden Libraries von LoxBerry sind darauf entwickelt, möglichst wenig Netzwerkverkehr am Miniserver zu erzeugen.
In der Situation, dass du Miniserverausfälle hast: Schalte deinen LoxBerry für eine aussagekräftige Zeit lang aus, um zu erkennen, ob der LoxBerry mit deinem Problem zu tun hat. Bestätigt sich das, prüfe - wie oben angegeben - die Einstellungen durch. Du kannst im loxforum auch einen Thread erstellen, um deine Probleme zu schildern. Nenne auf jeden Fall alle installierten Plugins.
Wie kann man vorsorgen
Einzelne Tipps:
Regelmäßig Backups erstellen
z.B. mit Hilfe eines Loxberry's (Miniserverbackup)
SD-Karte als Ersatz bereithalten
def.log immer mal wieder anschauen (sehr einfach aus dem LoxBerry "Miniserver"-Widget möglich)
Umfangreiche Sammlung auf separater Wiki-Seite: Betriebssicherheit
Die Größenordnungen ("viel" oder "wenig") immer in Anbetracht der eingesetzten Hardware sehen. Ein Raspberry Pi 1 hat etwa 10x mehr Leistung als ein Miniserver - die Miniserver-Hardware ist am technischen Stand von vor über 10 Jahren. Der alte Herr schlägt sich gut, ist aber nunmal nicht mehr der Jüngste.