Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:debug

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 aber 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, oder stürzt er wegen Bugs ab (z.B. mit top oder ps aux | grep vzlogger bzw. mit 'systemctl status vzlogger' überprüfen)
    • 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.conf bzw. /tmp/vzlogger.log)
    • ist das Logging überhaupt eingeschaltet („verbosity“: 15 für die Fehlersuche)
    • werden die Daten korrekt dekodiert? („Got <n> new readings from meter“)
    • werden die Werte Kanälen zugeordnet? („Reading: id=… value=… ts=…“)
    • werden die Werte zur middleware gesendet? („CURL: *“)
  • 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)

webconsole.png

  • 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 Mailingliste contact schicken (statt „hilfe! es funktioniet nicht!“ dann 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 Loglevel 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
howto/debug.txt · Zuletzt geändert: 2017/02/27 21:12 von jau