====== Fehlersuche ======
===== Prinzipielles =====
Daten nehmen bei Volkszähler einen klar definierten Weg durch das System. Dieser führt vom Zähler über Lesekopf, vzlogger und Middleware zum Frontend. \\
Wenn irgendwo am Ende nichts, oder nicht das Erwartete ankommt, gilt es den Weg der Daten zurück zu verfolgen und die Stelle zu finden ab der das Verhalten unerwartet ist. \\
Fehlersuche ist ein strukturierter Prozess- kein Rätselraten!
===== Schrittweise Fehlersuche =====
Verlauf in Reihenfolge der Daten am Beispiel eines Zählers mit Infrarotschnittstelle.
* Zähler
* werden Daten überhaupt gesendet (Digitalkamera, vorher mit Fernbedienung testen ob diese IR-Impulse sichtbar machen kann)
* IR-Kopf
* werden Daten empfangen (Einfacher Test: IR-Kopf 1-2 cm über eine weiße Fläche halten, mit HTerm Daten senden, diese sollten sofort wieder empfangen werden da reflektiert)
* serielle Schnittstelle
* werden Daten empfangen (Terminal-Programm)
* sind die Daten gültige Daten für ein bekanntes Protokoll?
* Port-Parameter korrekt? Baudrate, Frameformat (SML, Binär, beginnt mit ''1b1b1b1b'') (D0, Ascii-Text mit Obis-IDs).
* Braucht der Zähler evtl. einen Stubs um Daten zu senden (pullseq)?
* Im Wiki nach Zähler und Konfiguration recherchieren.
* vzlogger
* welche Version ist installiert (''vzlogger -V'')
* läuft er überhaupt (z.B. mit ''systemctl status vzlogger'' oder ''top'' oder ''ps aux | grep vzlogger'' überprüfen), welcher [[software:controller:vzlogger#exit-codes|Exit-Code]] wird ausgegeben?
* ist die Konfiguration korrekt (''/etc/vzlogger.conf'')
* sind- im Fall von SML Zählern- die Identifier korrekt (z.B. "1-0:1.8.0" und nicht "1-0:1.8.255*255")
* stimmen die UUID von Frondend und vzlogger.conf überein?
* was steht im logfile (''/var/log/vzlogger/vzlogger.log'', bei älteren Images ''/var/log/vzlogger.log'' bzw. ''/tmp/vzlogger.log'')
* ist das Logging überhaupt eingeschaltet (''"verbosity": 15'' für die Fehlersuche)
* werden die Daten korrekt dekodiert? ("Got new readings from meter")
* werden die Werte Kanälen zugeordnet? ("Reading: id=... value=... ts=...")
* werden die Werte zur middleware gesendet? ("CURL: *" im logfile)
* Middleware
* welche Version ist installiert (''git log -n 1'' im Ordner ''/var/www/volkszaehler.org'' ausführen)
* kommen die Requests an (Webserver access_log)
* werden die Werte in die Datenbank geschrieben (MySQL-Client)
* Frontend
* ist die richtige UUID ausgewählt (gleiche UUID wie in der vzlogger.conf)
* ist der Kanal richtig konfiguriert (Typ und Auflösung)
* werden überhaupt Daten angezeigt
* welche Requests werden an die middleware gestellt und wie sieht die JSON Antwort aus? (firebug, 'network' tab)
* gibt es Fehlermeldungen im Webserver Log? (''tail -f /var/log/apache2/error.log'') {{ :howto:webconsole.png?linkonly|}}
* werden korrekte Daten angezeigt
* wenn Daten inkorrekt angezeigt werden: wie sehen die Rohdaten aus (gleiche URL wie zur Abfrage der Daten mit &options=raw angehängt)
===== Weitere Hilfe =====
Wenn das alles nicht hilft bitte eine konkrete Fehlermeldung an die [[/contact#mailing-listen|User Mailingliste]] schicken oder im [[/contact#foren|Forum]] posten (statt "hilfe! es funktioniet nicht!" bitte Betreff wie zB.: "Middleware schreibt nichts in die Datenbank").
Folgende Angaben sind für die weitere Unterstützung Pflicht:
* Zählertyp
* Plattform (welche Hardware (Raspi? Version?), welche Software- offizielles VZ Image oder Selbstbau)
* vzlogger Version
* ''vzlogger.conf''
* ''vzlogger.log'' mit höchstem Loglevel ''"verbosity": 15''
* Middleware/ Frontend Version (''git log -n 1'' im Ordner ''/var/www/volkszaehler.org'')
Im Fall von Crashes, v.a. des vzloggers, bitte auch folgende Informationen ergänzen:
* wann/wie wurden die letzten Updates gefahren
* was ist alles (am Raspi) angeschlossen, v.a. welche Erweiterungen, wie erfolgt die Stromversorgung (wieviel Ampere)
* wie sieht die ''rc.local'' aus