Grundlegende Programmierungsfehler im Homebridge Konfigurations-Editor

  • Hallo,

    ich bin ein absoluter Neuling hier und begrüsse erst einmal alle.


    Die Installation und der Betrieb der Rolladen klappt auch super, es scheitert Jetzt an der Programmierung der Klimaanlage.

    Den Broadling rm habe ich, funktioniert mit der eigenen App auch.

    Die Programmierung für die Homebridge habe ich mir von dem Nutzer Marco Schmidt kopiert, der hat dazu ja einiges im Forum geschrieben.

    Die Anpassung dazu möchte ich später machen, ersteinmal habe ich die Programmierung im Editor mit JSONCompare überprüfen lassen.

    Da sie da schon Fehler aufweist und mir ein Verständnis in der Grundlagenprogrammierung fehlt, hier mein anliegen:

    In der Letzten Zeile ist ein Fehler: Parse error on line 79: ...178.43" }]} ---------------------^ Expecting ',', ']', got 'EOF

    Ich weiss nicht welchen Abschluss ich da setzten muss.


    Ich habe mal alles eingefügt, auch meine funktionierenden Befehle für Shelly, damit nichts fehlt.


    Für Eure Hilfe schon einmal schönen Dank im Voraus.


    VG Torsten






    {

    "bridge": {

    "name": "Homebridge",

    "username": "CC:22:3D:E3:CE:30",

    "port": 51826,

    "pin": "031-45-154"

    },

    "description": "Home Smart Home",

    "platforms": [{

    "platform": "config",

    "name": "Config",

    "port": 8080,

    "auth": "form",

    "theme": "red",

    "restart": "sudo -n systemctl restart homebridge",

    "temp": "/sys/class/thermal/thermal_zone0/temp",

    "sudo": true,

    "log": {

    "method": "custom",

    "command": "journalctl -o cat -n 500 -f -u homebridge"

    }

    },

    {

    "platform": "BroadlinkRM",

    "name": "Broadlink",

    "hideScanFrequencyButton": false,

    "hideLearnButton": false,

    "hideWelcomeMessage": false,

    "accessories": [

    {

    "name": "Lerntaste",

    "type": "learn-code",

    "host": "0d:xx:xx:xx:xx:c7",

    "enableAutoOff": true,

    "onDuration": 60,

    "scanFrequency": false

    },

    {

    "name": "Klimaanlage Schlafzimmer",

    "type": "air-conditioner",

    "host": "0d:xx:xx:xx:xx:xx",

    "replaceAutoMode": "cool",

    "defaultCoolTemperature": 20,

    "temperatureUpdateFrequency": 900,

    "data": {

    "off": "xxxxx",

    "temperature20": {

    "pseudo-mode": "cool",

    "data": "xxxxxxx"

    },

    "temperature21": {

    "pseudo-mode": "cool",

    "data": "xxxxx"

    }

    }

    }

    ],

    "accessories": [

    {

    "accessory": "shelly-shutter",

    "name": "Rolladen 1",

    "ip": "192.168.178.17"

    },

    {

    "accessory": "shelly-shutter",

    "name": "Rolladen 2",

    "ip": "192.168.178.18"

    },

    {

    "accessory": "shelly-shutter",

    "name": "Rolladen 3",

    "ip": "192.168.178.22"

    },

    {

    "accessory": "shelly-shutter",

    "name": "Rolladen 4",

    "ip": "192.168.178.43"

    }]

    }

  • Es waren mehrere Fehler vorhanden, von vergessenen Klammern, bis hin zu doppelten accessories Eintraegen:

  • Die "doppelten" accessories Einträge gehören zum Plugin homebridge-broadlink-rm ;)

    Es fehlte eine eckige und eine geschweifte Klammer.


    So sollte es funktionieren.

  • Guten Morgen Gerrit.Fries und ein frohes Neus Jahr.

    Vielen Dank für Deine Hilfe, ich habe es auch verglichen um zu verstehen wo der Fehler liegt. Möchte mich da ja etwas mehr mit beschäftigen und das „System“ verstehen.

    VG

  • Vielen Dank für Deine Hilfe, ich habe es auch verglichen um zu verstehen wo der Fehler liegt. Möchte mich da ja etwas mehr mit beschäftigen und das „System“ verstehen.

    Das "System" heißt in diesem Falle JSON. Die Wikipedia schreibt dazu: "Die JavaScript Object Notation (JSON [ˈdʒeɪsən]) ist ein kompaktes Datenformat in einer einfach lesbaren Textform und dient dem Zweck des Datenaustausches zwischen Anwendungen." Die Beurteilung von "einfach lesbar" möchte ich aber lieber jedem einzelnen überlassen...


    JSON eignet sich wunderbar für den Datenaustausch, weil es sich für Programmierer so einfach verarbeiten lässt. Daher nehmen die das auch gerne für Konfigurationsdateien (hier: config.json). Es ist eigentlich dazu gemacht, dass Programme untereinander leicht Daten tauschen können. Ein Beispiel wäre hier ein Server, der Wetterdaten im JSON-Format liefert (das ist das eine Programm) und ein homebridge-Plugin diese verarbeitet und daraus irgendwas extrahiert, beispielsweise eine Temperatur (das ist das andere Programm). Und weil man das als Programmierer sehr leicht auseinanderpflücken kann, nehmen sie es auch gern für andere Sachen.


    Für die Programme spielt es keine Rolle, ob JSON in einer einzigen Zeile steht oder wohlformatiert daherkommt. Für Menschen ist nur die letzte Form halbwegs brauchbar. Wenn man damit arbeitet und es selber schreiben muss (wie in config.json), dann hilft nur die totale Disziplin: Klammern, die aufgehen, müssen auch wieder zugehen, und den ganzen Scherbel einzurücken, hilft beim Verstehen ungemein. Ich mach das - auch beruflich - schon eine ganze Weile, aber es kommt immer wieder vor, dass ich da sitze und "WTF" vor mich hinmurmelnd eine JSON-Datei formatiere und den Fehler nicht finde.


    Die Fehlertoleranz bei JSON liegt bei Null. Entweder man macht es richtig oder man macht es gar nicht. Ist so, und jeder quält sich damit herum.