Fehlersignalisierung bei Datenakquise (Backend)

Wenn Fehler bei der Datenakquise auftreten, kann man dies als Benutzer bislang nur sehr schlecht debuggen. Wir brauchen irgendeine Form von globaler oder Kanal-korrelierter Fehlersignalisierung über MQTT, HTTP und WWW.

Beispiel: Eine Benutzerin überträgt Meßwerte versehentlich als String und stellt dann auf Float um. Da das entsprechende Feld dann bereits als String in der Datenbank steht, schlagen folgende Speicherungen fehl, über die die Benutzerin bisher leider nicht informiert wird (black box). Das muss verbessert werden.

The best canonical example just came up from @gtuveri, see:


Proposal for error signalling

So let’s nail down a proposal for signalling back error messages using MQTT:

  1. If an error occurs anywhere inside process_message
  2. Publish the error message to the topic hiveeyes/{network}/{gateway}/{node}/error.json, obviously formatted as JSON object.

Example

  • Node transmits invalid JSON object like
{"weight":100.00
  • Backend answers with a JSON object like
{"errors": [
    {
        "name": "mqtt-message",
        "location": "kotori.daq.services.mig.process_message",
        "description": "Error processing MQTT message: <type 'exceptions.ValueError'>: Expecting object: line 1 column 16 (char 15)",
    }
]}

Okay. I will try it asap

Please be aware this is just a proposal and unfortunately not implemented yet. We will try to get around doing it as soon as possible, so stay tuned.

Please have a look at Error signalling — Kotori 0.22.7 documentation to get an idea about error signalling on data acquisition.