Homebridge mqttthing AM2301

  • Hi, ich komme gerade nicht weiter. Habe, wie schon öfter, an einen ESP noch einen DHT22 geklemmt und die Daten via mqtt an den Raspi geschickt. Dort will ich das ganze mit mqtthing der Homebridge zugänglich machen. Hat bisher immer geklappt.


    Sieht in der Konfiguration so aus. Syntax sollte passen.

    Homekit gibt bei dem Sensor aber 0° und 0% aus. Im Homebridge-Protokoll sagt er immer:

    Code
    [11.4.2021, 18:23:39] [Temperatur Keller] Received MQTT: tele/Tasmota_SmartMeter/SENSOR = {"Time":"2021-04-11T18:23:39","Switch1":"ON","AM2301":{"Temperature":12.3,"Humidity":56.6,"DewPoint":3.9},"SML":{"Total_in":234.5124,"Power_curr":52.6,"Meter_number":"0a01445a4700039954f6","Curr_p1":0.000,"TempUnit":"C"}
    [11.4.2021, 18:23:39] [Temperatur Keller] Decode function apply( message) { return JSON.parse(message).AM2301.Temperature; } failed for topic tele/Tasmota_SmartMeter/SENSOR with message {"Time":"2021-04-11T18:23:39","Switch1":"ON","AM2301":{"Temperature":12.3,"Humidity":56.6,"DewPoint":3.9},"SML":{"Total_in":234.5124,"Power_curr":52.6,"Meter_number":"0a01445a4700039954f6","Curr_p1":0.000,"TempUnit":"C"} - SyntaxError: Unexpected end of JSON input
    [11.4.2021, 18:23:39] [Temperatur Keller] Decode function apply( message) { return JSON.parse(message).AM2301.Temperature; } failed for topic tele/Tasmota_SmartMeter/SENSOR with message {"Time":"2021-04-11T18:23:39","Switch1":"ON","AM2301":{"Temperature":12.3,"Humidity":56.6,"DewPoint":3.9},"SML":{"Total_in":234.5124,"Power_curr":52.6,"Meter_number":"0a01445a4700039954f6","Curr_p1":0.000,"TempUnit":"C"} - SyntaxError: Unexpected end of JSON input
    [11.4.2021, 18:23:39] [Luftfeuchte Keller] Received MQTT: tele/Tasmota_SmartMeter/SENSOR = {"Time":"2021-04-11T18:23:39","Switch1":"ON","AM2301":{"Temperature":12.3,"Humidity":56.6,"DewPoint":3.9},"SML":{"Total_in":234.5124,"Power_curr":52.6,"Meter_number":"0a01445a4700039954f6","Curr_p1":0.000,"TempUnit":"C"}
    [11.4.2021, 18:23:39] [Luftfeuchte Keller] Decode function apply( message) { return JSON.parse(message).AM2301.Humidity; } failed for topic tele/Tasmota_SmartMeter/SENSOR with message {"Time":"2021-04-11T18:23:39","Switch1":"ON","AM2301":{"Temperature":12.3,"Humidity":56.6,"DewPoint":3.9},"SML":{"Total_in":234.5124,"Power_curr":52.6,"Meter_number":"0a01445a4700039954f6","Curr_p1":0.000,"TempUnit":"C"} - SyntaxError: Unexpected end of JSON input
    [11.4.2021, 18:23:39] [Luftfeuchte Keller] Decode function apply( message) { return JSON.parse(message).AM2301.Humidity; } failed for topic tele/Tasmota_SmartMeter/SENSOR with message {"Time":"2021-04-11T18:23:39","Switch1":"ON","AM2301":{"Temperature":12.3,"Humidity":56.6,"DewPoint":3.9},"SML":{"Total_in":234.5124,"Power_curr":52.6,"Meter_number":"0a01445a4700039954f6","Curr_p1":0.000,"TempUnit":"C"} - SyntaxError: Unexpected end of JSON input

    Ich weiß nicht, was er mit SyntaxError: Unexpected end of JSON Input. An dem ESP hängt, wie man sehen kann, ein Lesekopf fürs Smartmeter, das die Daten auch übergibt. Jemand eine Idee, wieso er den mqtt-string nicht interpretieren kann?

    Danke.

  • Anleitung


    Code
    "apply": "return JSON.parse(message)[\"AM2301\"].Temperature;"
  • {

    "Time": "2021-04-11T18:23:39",

    "Switch1": "ON",

    "AM2301": {

    "Temperature": 12.3,

    "Humidity": 56.6,

    "DewPoint": 3.9

    },

    "SML": {

    "Total_in": 234.5124,

    "Power_curr": 52.6,

    "Meter_number": "0a01445a4700039954f6",

    "Curr_p1": 0.000,

    "TempUnit": "C"

    }

    }


    Am Ende des JSON-Strings, den du da auswerten willst, fehlt eine schließende Klammer, die ich jetzt mal in rot dazu gesetzt habe. Der JSON-String ist also nicht vollständig und das führt zu SyntaxError: Unexpected end of JSON input.

  • Ach, super. Vielen Dank.

    Allerdings ist das ja das, was mir Tasmota vom ESP vor den Latz knallt. Ich wüsste nicht, wie ich ihn dazu bringen kann, das zu korrigieren und woher der Fehler überhaupt kommt. Eine Idee?

  • Ich wüsste nicht, wie ich ihn dazu bringen kann, das zu korrigieren und woher der Fehler überhaupt kommt. Eine Idee?

    Leider nicht. Damit kenne ich mich überhaupt nicht aus. Ich weiß nicht, ob es hilfreich ist, aber die Klammer kann ja an den verschiedensten Stellen verloren gehen. Für mein MQTT verwende ich MQTT.fx, damit kann man ganz bequem den MQTT-Server beobachten.


    Oh. Ich sehe gerade, dass das inzwischen Geld kostet. Aber immerhin kann man es drei Monate testen.


    Da ist es: http://www.jensd.de/apps/mqttfx/1.7.1/

    Einmal editiert, zuletzt von sschuste ()