homebridge-alexa

  • Hallo, meine homebridge ist auf einem Raspberry Pi 4B eingerichtet. Sie läuft mit dem homebridge-config-ui-x plugin einwandfrei. Sobald das homebridge-alexa plugin installiert ist, stoppt die bridge mit einem SyntaxError. Hier das Fehlerprotokoll:


    Dec 04 17:36:46 raspberrypi systemd[1]: Started Node.js HomeKit Server.

    Dec 04 17:36:47 raspberrypi homebridge[2537]: [12/4/2019, 17:36:47] Loaded config.json with 0 accessories and 2 platforms.

    Dec 04 17:36:47 raspberrypi homebridge[2537]: [12/4/2019, 17:36:47] ---

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Loaded plugin: homebridge-alexa

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Registering platform 'homebridge-alexa.Alexa'

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] ---

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Loaded plugin: homebridge-config-ui-x

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Registering platform 'homebridge-config-ui-x.config'

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] ---

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Loading 2 platforms...

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] [Config] Initializing config platform...

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] [Config] Spawning homebridge-config-ui-x with PID 2557

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] [Alexa] Initializing Alexa platform...

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] [Alexa] homebridge-alexa v0.4.43, node v12.13.1, homebridge v0.4.50

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Loading 0 accessories...

    Dec 04 17:36:48 raspberrypi homebridge[2537]: Setup Payload:

    Dec 04 17:36:48 raspberrypi homebridge[2537]: X-HM://0023ISYWYEONN

    Dec 04 17:36:48 raspberrypi homebridge[2537]: Scan this code with your HomeKit app on your iOS device to pair with Homebridge:

    ...

    Dec 04 17:36:48 raspberrypi homebridge[2537]: Or enter this code with your HomeKit app on your iOS device to pair with Homebridge:

    Dec 04 17:36:48 raspberrypi homebridge[2537]:

    Dec 04 17:36:48 raspberrypi homebridge[2537]: ┌────────────┐

    Dec 04 17:36:48 raspberrypi homebridge[2537]: │ 031-45-154 │

    Dec 04 17:36:48 raspberrypi homebridge[2537]: └────────────┘

    Dec 04 17:36:48 raspberrypi homebridge[2537]:

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Homebridge is running on port 51826.


    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] SyntaxError: Unexpected end of JSON input

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at JSON.parse (<anonymous>)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request.<anonymous> (/usr/local/lib/node_modules/homebridge-alexa/node_modules/hap-node-client/HAPNodeJSClient.js:445:26)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request._callback (/usr/local/lib/node_modules/homebridge-alexa/node_modules/lodash/lodash.js:10050:25)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request.requestRetryReply [as reply] (/usr/local/lib/node_modules/homebridge-alexa/node_modules/requestretry/index.js:105:19)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request.<anonymous> (/usr/local/lib/node_modules/homebridge-alexa/node_modules/requestretry/index.js:138:10)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request.self.callback (/usr/local/lib/node_modules/homebridge-alexa/node_modules/request/request.js:185:22)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request.emit (events.js:210:5)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request.<anonymous> (/usr/local/lib/node_modules/homebridge-alexa/node_modules/request/request.js:1161:10)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at Request.emit (events.js:210:5)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/homebridge-alexa/node_modules/request/request.js:1083:12)

    Dec 04 17:36:48 raspberrypi homebridge[2537]: [12/4/2019, 17:36:48] Got SIGTERM, shutting down Homebridge...


    Hier das config.json:


    {

        "bridge": {

            "name": "Homebridge",

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

    "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"

    }

    },

    {

    "name": "Alexa",

    "username": "xxxxx",

    "password": "yyyyy",

                "pin": "031-45-154",

    "platform": "Alexa"

    }

    ],

        "accessories": []

    }


    Ich komme einfach nicht weiter. Habt ihr eine Idee?

  • Config sieht gut aus, hab sie mit Jsonlint gecheckt.

    Eingabe für Alexa passt auch.


    Hast du schon mal ein anderes Plugin installiert?

    Ist da auch ein Fehler?

    Welche Versionen von node und npm laufen auf dem Pi?


    Mach mal zur Sicherheit ein

    Code
    sudo apt-get update && sudo apt-get upgrade
  • Hast du schon manuell das Plugin installiert, nicht über config-ui-x

    Code
    sudo npm install -g --unsafe-perm homebridge-alexa
  • hat leider nichts gebracht. Er steigt wieder mit


    Dec 04 21:01:25 raspberrypi homebridge[12862]: [12/4/2019, 21:01:25] SyntaxError: Unexpected end of JSON input

    Dec 04 21:01:25 raspberrypi homebridge[12862]: at JSON.parse (<anonymous>)


    aus.


    npm ist in der Version 6.12.1 installiert.

  • Toheiteddy


    Wieso hast du in der platform nochmals die zeile mit der pin drin? Ist dies evtl. der Fehler?


    Auf github ist folgendes nur erforderlich:

    Code
    "platforms": [
      {
        "platform": "Alexa",
        "name": "Alexa",
        "username": "....",
        "password": "...."
      }
    ],
  • Ich schlage folgendes vor: du kopierst deine config.json, die du weiter oben in Beitrag #81 hier gepostest hast und ersetzt damit deine aktuelle config.json. Ich nehme an, dass sich in deiner Konfiguration irgendwelche nicht sichtbaren Zeichen befinden, die der JSON-Parser nicht leiden kann.


    Hört sich merkwürdig an, aber wir hatten das alles schon mal hier, auch wenn es lange nicht mehr vorgekommen ist. Vielleicht hilft's ja.

  • Das war es leider auch nicht

    Nachdem ich mir die Fehlermeldung noch einmal durchgelesen habe, komme ich zu dem Schluss, dass die beiden Plugins richtig geladen und initialisiert werden und dass die Homebridge erst einmal läuft. Sie stürzt nach einem korrekten Start ab, aber was genau dazu führt, zeigt das Log nicht an.


    Du kannst das Log erweitern, indem du den Debug-Modus in /etc/default/homebridge aktivierst.


    sudo nano /etc/default/homebridge


    Code
    # Defaults / Configuration options for homebridge
    # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
    HOMEBRIDGE_OPTS=-I -U /var/homebridge
    
    # If you uncomment the following line, homebridge will log more
    # You can display this via systemd's journalctl: journalctl -f -u homebridge
    # DEBUG=*

    Die letzte Zeile veränderst du in

    DEBUG=*


    Das bläht das Log gigantisch auf. Es ist jetzt schwierig zu lesen, aber vielleicht erkennt man ja irgendwo, was genau passiert.


    Am Ende wirst du möglicherweise den Entwickler fragen müssen, ob er eine Erklärung hat. Ich kann keinen Fehler entdecken.

  • Sieht so aus, als würde es passieren, wenn die Hue-Bridge angefragt wird. Aber das übersteigt mein schmales Wissen bei Weitem. Ich schätze, du wirst den Entwickler von homebridge-alexa fragen müssen.

  • Und schon kam das Update :)

  • Ich hab immer noch ein Problem mit doppelten Devices. Meines Erachtens kommt es aus Home-automatition switches.


    Da wird der fake schalter bei alexa doppelt erkannt.


    Wie behebe ich das?

    Könnte auch sein dass es mit irgendeinem aqara alarm plugin korreliert.


  • Wie behebe ich das?

    Das weiß ich nicht. Können wir mal deine config.json sehen?

  • Also ich hab einmal Alarm-Switch installiert mit


    und Automation switches mit

    Der Dummy generiert 2 Schalter: Einen Bewegungssensor der in Homekit Auto Alarm heisst und einen Schalter, der Auto Alarm heisst. Wenn ich Auto Alarm in der config.json umbenne, heissen BEIDE anders, aber sind trotzdem doppelt.

  • Ich habe folgendes merkwürdige Problem mit dem Alexa-Plugin. Vorab eine kurze Situationsbeschreibung.


    Es laufen 2 Instanzen auf einem Pi4 mit jeweils auch der config-ui-x im standalone:

    1. homebridge und config-ui-x

    2. homebridge-camera und config-ui-x-camera


    Es laufen insgesamt ca. 25 Plugins (inkl. Alexa-Plugin), die ALLE in der Instanz "homebridge" geladen werden und bei "homebridge-camera" werden nur ein paar geladen durch den Befehl:


    plugins

    [
    "homebridge-camera-ffmpeg",
    "homebridge-website-to-camera",
    "homebridge-weather-plus",
    "homebridge-config-ui-x"
    ],


    Die sind natürlich bei der Instanz "homebridge-camera" in der config.json definiert und sie fehlen in der config der Hauptinstanz.

    Damit möchte ich vermeiden, dass die Cameras, Wetterdaten und Websites zu Alexa weitergereicht werden. Nach meinem Verständnis werden alle in HB geladenen Plugins (von der Instanz) unter der das Alexa-Plugin geladen wird, zu Alexa gemappt. Nur leider klappt das nicht. Wenn ich unter Alexa die "Neugeräte suche", dann erscheinen eben immer diese Devices und ich kann sie wieder rauslöschen. Das nervt mich einfach, da ich die nicht dort haben will. Sobald ich mal wieder eine neue "Suche" starte kommen die wieder.


    Habe schon auf jeder Instanz die Ordner "accessoires" und "persist" gelöscht - ohne Erfolg.

    Im Start-log von "homebridge" erscheinen weder die Cameras, noch Wetterdaten oder Websites. Umgekehrt erscheinen diese nur im Start-log von "homebridge-camera". Also soweit alles richtig.


    Was mache ich falsch!? Vielleicht kann mir jemand einen Wink - in die richtig Richtung - geben...

  • Selbst nicht ausprobiert, aber Du hast die Möglichkeit für einen Filter.

    Filters

    Limits accessories shared with Alexa to a single homebridge instance. ( I'm using this setting with Amazon for skill testing. ). The setting is ip:port of homebridge instance.

    Code
    "platforms": [
    {
    "platform": "Alexa",
    "name": "Alexa",
    "username": "....",
    "password": "....",
    "filter": "192.168.1.122:51826"
    }
    ],


    Oder die besagte Instanz nicht mit -I starten, was wahrscheinlich aber auch nicht unbedingt praktisch ist für einen anderen Nutzen.

    Known Issues

    • Whitelisting/blacklisting of accessories is not supported, but this can be achieved at the plugin level by putting the plugins you don't want exposed to Alexa in their own instance of HomeBridge, and for that instance of Alexa, don't include -I command line option. Discovery will fail for that instance, and the accessories will not be exposed.

    Hilfreich?