Homematic-Virtual-Interface icon indicating copy to clipboard operation
Homematic-Virtual-Interface copied to clipboard

Merkwürdiges Verhalten bei Installation von Plugins (1. Teil RM HVL Addon - Pi)

Open LevelOne2k opened this issue 4 years ago • 22 comments

Hallo!

HVL ist derzeit als Addon auf einer RM installiert. Alles leer und frisch (Testumgebung) auf einem Pi.

Eigentlich wollte ich einen anderen Bug(?) beschreiben, aber wie es ja immer so ist, wenn man dokumentiert, tritt der Fehler nicht auf.

Kurz Fassung was ich eigentlich melden wollte, jetzt aber nicht mehr passiert: Ich habe ein Plugin installiert, es dauert etwas, die Seite wird aktualisiert und man kann das Plugin aktivieren. Man drückt auf aktiviere, es dauert etwas und das Plugin ist aktiviert und funktioniert in allen Richtungen.

Zweites Plugin installiert, selber Ablauf wie oben - Plugin ist aktiviert und funktioniert in allen Richtungen.

Wollte ein drittes Plugin installieren, nach dem klicken auf Installieren passiert nichts, die Seite wird nicht neu geladen, aber das Plugin wird wohl installiert. Wenn man dann auf Home klickt, dann wieder bei Aktive Plugins auf bearbeiten, kann man das Plugin dann aktivieren.

Diese Umgebung gerade ist wie gesagt auf einem Pi installiert. Wenn ich RM in einer Virtuellen Umgebung installiere und dort HVL als Addon, dann ist das oben beschriebene immer reproduzierbar, jedoch noch extremer ausgeprägt bis hin zu das HVL abschmiert. Das werde ich aber nochmal gesondert dokumentieren.

Nun, das oben beschriebene wollte ich eigentlich melden, aber der Fehler trat nicht mehr auf. Ich konnte ein Plugin nach dem anderen installieren und alles verhielt sich so wie es soll. Die Seite nach der Installation wurde neu geladen, aktivieren war verfügbar usw. Ich habe Random einfach Plugins installiert. Als 5 Plugins ohne Probleme installiert und aktiviert waren, wollte ich noch eins installieren, dies war "Pi Core Temp" ich klickte auf installieren und es passierte lange Zeit nichts, und plötzlich kam dies: Bildschirmfoto 2020-01-22 um 09 02 03 HVL war dann erstmal nicht mehr erreichbar, bzw. hat sich irgendwann ohne Neustart wieder gefangen.

Ich bin dann wieder in die Plugin Liste und Pi Core Temp wurde trotz dieser Meldung installiert, der aktivieren Button war verfügbar.

Angemerkt sei noch, dass es diese Probleme nicht gibt wenn HVL außerhalb auf einem eigenen Pi installiert ist.

Edit: Ich habe das ganze auch mal als Bildschirmaufnahme festgehalten https://youtu.be/TNJJEUQfF4Y

LevelOne2k avatar Jan 22 '20 08:01 LevelOne2k

Problem auf der RM ist, das es durch das read only Filesystem ggf Probleme bei der npm Installation geben kann.

Was normalerweise hilft ist the Windows way: HVL restart (nicht den pi nur den HVL Prozess)

thkl avatar Jan 22 '20 11:01 thkl

Also brauche wir hier garnicht weiter forschen und dokumentieren?

Oder hast Du da eine Idee wie das besser laufen könnte @jens-maus

LevelOne2k avatar Jan 22 '20 12:01 LevelOne2k

Man müsste das .npmrc Verzeichnis unterhalb von /usr.... umbiegen. Das ist aber dann eine zentrale Einstellung die für alle gilt.

thkl avatar Jan 22 '20 12:01 thkl

Soll ich mal dokumentieren wie sich das ganze verhält wenn RM in einer virtuellen Umgebung läuft mit HVL als Addon oder ist das nicht nötig? Mit egal, kann’s machen.

LevelOne2k avatar Jan 22 '20 13:01 LevelOne2k

Hab mich super auf die Updates gefreut. Folgendes passiert bei mir. HVL installieren und Pi neu starten. Die Oberfläche ist da, das wars auch schon. Die Versionsnummer ist 0.0.9 und nicht 0.0.10 --> Homematic-Virtual-Interface/raspberrymatic_installer/hvl-raspb-0.0.10.tar.gz. Ich kann mir die liste der verfügbaren Plugins anzeigen. Sobald ich eins zum Installieren anklicke, passiert einfach nichts, egal bei welchem Plugin. Sehr sehr schade, für mich ist die Kopplung an Tradfri interessant, hat leider noch nie funktioniert.

npm install homematic-virtual-tradfridevice

[email protected] preinstall /usr/local/addons/hvl/node_modules/node-aead-crypto node lib/preinstall.js

node-aead-crypto not needed on this system, since all ciphers are natively supported npm WARN saveError ENOENT: no such file or directory, open '/usr/local/addons/hvl/package.json' npm WARN notsup Unsupported engine for [email protected]: wanted: {"node":">4 <10"} (current: {"node":"12.13.0","npm":"6.12.0"}) npm WARN notsup Not compatible with your version of node/npm: [email protected] npm WARN enoent ENOENT: no such file or directory, open '/usr/local/addons/hvl/package.json' npm WARN hvl No description npm WARN hvl No repository field. npm WARN hvl No README data npm WARN hvl No license field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/node-aead-crypto): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] preinstall: node lib/preinstall.js npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

  • [email protected] added 18 packages from 12 contributors and audited 519 packages in 26.599s found 0 vulnerabilities

Dies ergibt die Installation per Hand. In der Übersicht der Plugins taucht der Tradfri plugin nun als installiert mit der Meldung: "Version > 0.0.17 Requires NodeJS >= 6.x". Meine Version von Node auf dem Pi ist v12.13.0

Aktivieren des Plugins dauert etwas und ist scheinbar erfolgreich. Setzen der Settings für das Plugin bewirkt leider nichts. In den Logs steht mal wieder die Meldung "Thu Jan 30 2020 13:28:02 GMT+0100 (CET)[homematic-virtual-tradfridevice - IkeaTradfri] [WARN] - we have to authenticate first". Ich Vermutte mal das Problem mit dem Configfile wurde nicht gelöst.

Wie es aussieht, fehlt die Config:

grep -rnwi 'hvl' -e 'tradfri_securityCode'

hvl/node_modules/homematic-virtual-tradfridevice/TradfriPlatform.js:42: this.securityCode = this.configuration.getValueForPlugin(this.name,'tradfri_securityCode') hvl/node_modules/homematic-virtual-tradfridevice/TradfriPlatform.js:80: that.configuration.setValueForPlugin(that.name,"tradfri_securityCode",that.securityCode);

Wo finde ich diese oder wo muss ich eine anlegen und wie soll die Struktur der Config aussehen?

OK, Config gefunden: /usr/local/etc/config/hvl/config.json

{ "ccu_ip": "127.0.0.1", "local_ip": "127.0.0.1", "local_rpc_port": 8301, "web_http_port": 8300, "restart_command": "/etc/init.d/S51hvl restart", "npm_command": "/usr/local/addons/hvl/node/bin/node /usr/local/addons/hvl/node/bin/npm", "plugins": [ { "type": "homematic-virtual-tradfridevice", "name": "IkeaTradfri", "disabled": false, "tradfri_ip": "...", "tradfri_user": { "identity": "tradfri_1580******", "psk": "*************" }, "tradfri_securityid": "removed" } ], "enable_debug": true, "daemon": true }

Weiß Jemand warum die Kommunikation mit dem Tradfri-Getaway nicht klappt?

WilhelmFaber avatar Jan 30 '20 12:01 WilhelmFaber

Der Tradfri User/PSK wird über die Einstellungen des Plugins angelegt. Da muss man eigentlich nichts in der Config eintragen. In den Settings muss einmal der Key von der Bridge eingetragen werden. Das Plugin macht den Rest.

Aber so wie das Log ausschaut gibt es wohl Probleme bei der Installation eines benutzen Moduls. Ich werfe da mal einen Blick drauf ....

thkl avatar Jan 30 '20 20:01 thkl

Nachdem ich etwas rumgespielt und gedebuged habe, fand ich heraus, dass der Response bei der Authentifizierung falsch behandelt wird.

Folgende Zeilen in der TradfriPlatform.js beheben das Problem:

this.gateway.authenticate(this.securityID).then((identity, psk) => { // work with the result that.tradfriUser = identity.identity || identity; that.securityCode = identity.psk || psk;

Nach der Korrektur wird die Authentifizierung erfolgreich durchgeführt und unter dem Punkt "IkeaTradfri" tauchen nun alle meine Leuchten aus dem Gateway. Mehr passiert leider nicht, die Leuchten tauchen weder im Posteingang von Homematic noch unter Geräten. Wie soll es weiter gehen?

Was mir aufgefallen ist, das mir unter dem Pfad so einiges an Klassen fehlt:

/usr/local/addons/hvl/node_modules/homematic-virtual-tradfridevice/

-rw-r--r-- 1 root root 112 Sep 1 2017 README.md -rw-r--r-- 1 root root 5782 Dec 2 2017 TradfriDevice.js -rw-r--r-- 1 root root 7247 Jan 30 22:34 TradfriPlatform.js -rw-r--r-- 1 root root 475 Sep 1 2017 index.js drwxr-xr-x 15 root root 4096 Jan 30 13:25 node_modules -rw-r--r-- 1 root root 23448 Jan 30 13:25 package-lock.json -rw-r--r-- 1 root root 1514 Jan 30 13:25 package.json drwxr-xr-x 3 root root 4096 Jan 30 13:18 www

das kann doch nicht alles gewesen sein? Wenn ich mit der Git-Repo abgleiche, finde ich unter plugins/IkeaTradfri folgendes:

www HM-LC-Bl1PBU-FM_Tradfri.json README.md TradfriBlind.js TradfriBlindGroup.js TradfriDevice.js TradfriGroup.js TradfriPlatform.js VIR-LG-DIM_Tradfri.json VIR-LG-GROUP_Tradfri.json VIR-LG-RGB-DIM_Tradfri.json VIR-LG-WHITE-DIM_Tradfri.json index.js package.json

Das Paket habe ich aber per Hand installiert, da HVL keine automatische Installation durchführen wollte. Mir scheint das absolut veraltet zu sein.

Das ist der Inhalt meiner package.json

{ "_from": "homematic-virtual-tradfridevice", "_id": "[email protected]", "_inBundle": false, "_integrity": "sha1-n56YQpwIbIOSzvbAnV1UhMSu6V4=", "_location": "/homematic-virtual-tradfridevice", "_phantomChildren": {}, "_requested": { "type": "tag", "registry": true, "raw": "homematic-virtual-tradfridevice", "name": "homematic-virtual-tradfridevice", "escapedName": "homematic-virtual-tradfridevice", "rawSpec": "", "saveSpec": null, "fetchSpec": "latest" }, "_requiredBy": [ "#USER", "/" ], "_resolved": "https://registry.npmjs.org/homematic-virtual-tradfridevice/-/homematic-virtual-tradfridevice-0.0.19.tgz", "_shasum": "9f9e98429c086c8392cef6c09d5d5484c4aee95e", "_spec": "homematic-virtual-tradfridevice", "_where": "/usr/local/addons/hvl", "bugs": { "url": "https://github.com/thkl/Homematic-Virtual-Interface/issues" }, "bundleDependencies": false, "dependencies": { "node-tradfri-client": "^2.1.2" }, "deprecated": false, "description": "Virtual Plugin - Ikea Tradfri", "engines": { "homematic-virtual-interface": ">=0.2.50", "node": ">=6.0.0" }, "keywords": [ "homematic-virtual-plugin" ], "license": "ISC", "name": "homematic-virtual-tradfridevice", "remark": "Version > 0.0.17 Requires NodeJS >= 6.x", "repository": { "type": "git", "url": "https://github.com/thkl/Homematic-Virtual-Interface/tree/master/plugins/IkeaTradfri" }, "version": "0.0.19" }

Versuche ich das Plugin nun mit der bestimmten Version zu installieren bekomme ich folgendes:

npm install [email protected]

npm ERR! code ETARGET npm ERR! notarget No matching version found for [email protected]. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist.

npm ERR! A complete log of this run can be found in: npm ERR! /usr/local/addons/hvl/.npm/_logs/2020-01-30T22_17_13_891Z-debug.log

WilhelmFaber avatar Jan 30 '20 21:01 WilhelmFaber

Hab per Hand aus dem Git das TRADFRI-Plugin geladen und auf RespberryMatic kopiert, funktioniert nun alles, die Lampen tauchen nun unter Geräte im Posteingang und können hinzugefügt werden.

WilhelmFaber avatar Jan 30 '20 22:01 WilhelmFaber

hmmmm, es waren die Gruppen und nicht die Lampen im Posteingang, diese haben zwar auch eine Steuerung, jedoch kann ich die nicht bedienen. Im Logfile sieht man, dass es etwas gesendet wird, aber es tut sich nichts.

[2020-01-30 23:55:50.631] [homematic-virtual-tradfridevice - IkeaTradfri][DEBUG] update Group 156187 [2020-01-30 23:55:50.698] [homematic-virtual-tradfridevice - IkeaTradfri][DEBUG] debug - observeDevice > {"3":{"0":"IKEA of Sweden","1":"TRADFRI bulb E27 CWS opal 600lm","2":"","3":"1.3.009","6":1},"3311":[{"5706":"0","5707":0,"5708":65279,"5709":41779,"5710":21542,"5850":0,"5851":254,"9003":0}],"5750":2,"9001":"Wohnzimmer Stehlampe","9002":1579683179,"9003":65585,"9019":1,"9020":1580405730,"9054":0} [2020-01-30 23:55:50.704] [homematic-virtual-tradfridevice - IkeaTradfri][DEBUG] update Lamp 65585

WilhelmFaber avatar Jan 30 '20 22:01 WilhelmFaber

So nach dem Neustart lassen sich die Lampen-Gruppen nun steuern. Es geht AN/AUS/DIMMEN, aber keine Farbe ansteuern. Hier ist die Frage warum werden Lampengruppen und nicht die Lampen selbst zu Homematic hinzugefügt?

WilhelmFaber avatar Jan 30 '20 23:01 WilhelmFaber

Moin, Ich schau mir das mal an. Das Plugin wurde freundlicherweise zur Verfügung gestellt. Ich muss mich da mal einlesen. Lampen einzeln gehen auf jeden Fall. Warum im npm Datein fehlen kann ich noch nicht genau sagen.

thkl avatar Jan 31 '20 05:01 thkl

So neues npm Paket .. dort sind alle Files drin und das Authentication Problem ist auch gelöst

thkl avatar Jan 31 '20 13:01 thkl

Moin, habe heute noch mal in die Logs geschaut warum die Installation der einzelner Plugins nicht geht. Es wird eine node-Installation im hvl-Verzeichnis erwartet.

[2020-01-31 23:06:57.151] [Homematic Virtual Interface.Server][INFO] Installing homematic-virtual-ical to /usr/local/addons/hvl [2020-01-31 23:06:57.173] [Homematic Virtual Interface.Server][ERROR] Error: Command failed: cd /usr/local/addons/hvl;/usr/local/addons/hvl/node/bin/node /usr/local/addons/hvl/node/bin/npm install homematic-virtual-ical --production --prefix "/usr/local/addons/hvl" /bin/sh: /usr/local/addons/hvl/node/bin/node: not found

at checkExecSyncError (child_process.js:621:11)
at Object.execSync (child_process.js:657:15)
at Server.installNPM (/usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/Server.js:1439:30)
at /usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/Server.js:1138:26
at Array.some (<anonymous>)
at /usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/Server.js:1133:18
at Server.buildPluginList (/usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/Server.js:1208:13)
at Server.fetchPluginList (/usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/Server.js:1186:14)
at Server.installPlugin (/usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/Server.js:1131:10)
at Server.handleConfigurationRequest (/usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/Server.js:618:26)

Habe per Hand die 0.0.21 installiert, auch damit tauchen keine einzelnen Lampen in Homematic auf, was läuft bei mir falsch?

WilhelmFaber avatar Jan 31 '20 22:01 WilhelmFaber

Das mit dem Node im hvl Path sollte aber im letzten installer gelöst sein. Das npm Kommando stehen in der config.json und könnte dort geändert werden.

thkl avatar Feb 01 '20 07:02 thkl

So, ich habe das Ganze jetzt mal auf einer neuen leeren RM (Virtual Box) ausprobiert. HVL via Addon Version 10 läuft auf der RM. Das Tradfri Plugin Version 0.0.21 installiert und mit dem Gateway verbunden. 10 Sek später sind die 2 Lampen und 2 Rollos die ich am Gateway (Firmware 1.10.29) habe im Posteingang der CCU zu finden.

Einzige Sache, ich werde mal noch die Fehlermeldungen des Plugins (Gateway nicht erreichbar, fehlerhafter Security Code) im WebUI von HVL anzeigen.

thkl avatar Feb 01 '20 12:02 thkl

hmmmm, das mit den einzelnen Lampen kann ich nicht bestätigen. Bei mir werden immer nur Gruppen in das Homematic aufgenommen. Hängen zwei Lampen in einer Gruppe, kann man die nicht getrennt steuern. Mein Gateway hat auch die Version 1.10.29

WilhelmFaber avatar Feb 04 '20 16:02 WilhelmFaber

So hab echt viel Zeit investiert und muss irgendwie aufgeben, hab das Teil auf keiner Weise auf meinem RaspberryMatic installiert und sauber zum Laufen bekommen. Die verlinkte Datei "Homematic-Virtual-Interface/raspberrymatic_installer/hvl-raspb-0.0.10.tar.gz" installiert HVL9 ohne eigenen node, der install script install_raspberrymatic.sh installiert zwar HVL10, aber es läuft nicht. Ich komme nicht einmal in die Konfiguration von HVL rein.

WilhelmFaber avatar Feb 12 '20 09:02 WilhelmFaber

Ja laut Erfinder der Raspberrymatic ist Node schon immer dort dabei. Deswegen habe ich das aus dem installer genommen.

thkl avatar Feb 12 '20 09:02 thkl

root@homematic-raspi:/usr/local/addons/hvl# find / -name hvl /usr/local/etc/config/rc.d/hvl /usr/local/etc/config/addons/www/hvl /usr/local/etc/config/hvl /usr/local/addons/hvl /usr/local/addons/node_modules/homematic-virtual-interface/addon/hvl root@homematic-raspi:/usr/local/addons/hvl# cd /usr/local/etc/config/rc.d/ root@homematic-raspi:/usr/local/etc/config/rc.d# ls -l total 16 lrwxrwxrwx 1 root root 42 Nov 26 12:21 97NeoServer -> /usr/local/addons/mediola/rc.d/97NeoServer -rwxr-xr-x 1 root root 3014 Apr 4 2019 cuxdaemon -rwxr-xr-x 1 root root 1329 Jan 30 16:30 hm-tools -rwxr-xr-x 1 root root 2292 Feb 12 10:32 hvl lrwxrwxrwx 1 root root 39 Jan 22 09:23 redmatic -> /usr/local/addons/redmatic/bin/redmatic -rwxr-xr-x 1 root root 775 Dec 20 20:56 xml-api root@homematic-raspi:/usr/local/etc/config/rc.d# ./hvl start ./hvl: line 20: /usr/local/addons/hvl/etc/postinstall.sh: not found root@homematic-raspi:/usr/local/etc/config/rc.d# module.js:471 throw err; ^

Error: Cannot find module '/usr/local/addons/hvl/node_modules/homematic-virtual-interface/lib/index.js' at Function.Module._resolveFilename (module.js:469:15) at Function.Module._load (module.js:417:25) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:509:3

WilhelmFaber avatar Feb 12 '20 09:02 WilhelmFaber

den Pfad gefunden und korrigiert:

#!/bin/sh HVLDIR=/usr/local/addons/hvl CONFIG_URL=/addons/hvl/index.html CONFIG_DIR=/usr/local/etc/config PIDFILE=/var/run/hvl.pid STARTRC=/etc/init.d/S51hvl VER=0.0.1 PSPID=ps -o pid,comm,args | awk '{if ($2=="node" && $3 ~ /hvl/){print $1}}'

case "$1" in ""|start) if [ ! -h $STARTRC ] then mount -o remount,rw / ln -sf $CONFIG_DIR/rc.d/hvl $STARTRC mount -o remount,ro / fi

    #run postinstall if necessary
    $HVLDIR/etc/postinstall.sh

    if [ "$PSPID" = "" ]
    then
      node /usr/local/addons/node_modules/homematic-virtual-interface/lib/index.js -C $CONFIG_DIR/hvl/ >>/dev/n>
      logger -t homematic -p user.info "started homematic virtual layer"
    fi
    ;;

stop)

jetzt fehlt dem ./hvl: line 20: /usr/local/addons/hvl/etc/postinstall.sh: not found

dies habe ich nirgendwo gefunden

WilhelmFaber avatar Feb 12 '20 10:02 WilhelmFaber

Hab die Datei von Hand da reinkopiert:

root@homematic-raspi:/usr/local/etc/config/rc.d# ./hvl start ./hvl: line 20: /usr/local/addons/hvl/etc/postinstall.sh: Permission denied root@homematic-raspi:/usr/local/etc/config/rc.d# ls -l /usr/local/addons/hvl/etc/postinstall.sh -rw-r--r-- 1 root root 3666 Feb 12 11:16 /usr/local/addons/hvl/etc/postinstall.sh root@homematic-raspi:/usr/local/etc/config/rc.d# chmod +x /usr/local/addons/hvl/etc/postinstall.sh root@homematic-raspi:/usr/local/etc/config/rc.d# ls -l /usr/local/addons/hvl/etc/postinstall.sh -rwxr-xr-x 1 root root 3666 Feb 12 11:16 /usr/local/addons/hvl/etc/postinstall.sh root@homematic-raspi:/usr/local/etc/config/rc.d# ./hvl start mkdir: can't create directory '/usr/local/addons/hvl/.npm': File exists cp: can't stat '/usr/local/addons/hvl/etc/hvl.conf': No such file or directory npm WARN saveError ENOENT: no such file or directory, open '/usr/local/addons/package.json' npm WARN enoent ENOENT: no such file or directory, open '/usr/local/addons/package.json' npm WARN addons No description npm WARN addons No repository field. npm WARN addons No README data npm WARN addons No license field.

chmod: update_addon: No such file or directory chmod: remove_hvl_object: No such file or directory internal/modules/cjs/loader.js:800 throw err; ^

Error: Cannot find module '/usr/local/addons/hvl/etc/hm_addon.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:797:15) at Function.Module._load (internal/modules/cjs/loader.js:690:27) at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10) at internal/main/run_main_module.js:17:11 { code: 'MODULE_NOT_FOUND', requireStack: [] } ln: /usr/local/addons/hvl/etc/www/index.html: No such file or directory

WilhelmFaber avatar Feb 12 '20 10:02 WilhelmFaber

so nach gefühlten 1000 korrigierten Pfaden im Startscript und postinstall script sowie Kopieren der nötigen Files per Hand war die Konfigseite von HVL erreichbar. Installieren und aktivieren von Tradfri addon hat auch geklappt. Geräte im Posteingang oder unter Geräte, Fehlanzeige....

WilhelmFaber avatar Feb 12 '20 10:02 WilhelmFaber