Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

Begonnen von Otto123, 31 Mai 2020, 18:30:55

Vorheriges Thema - Nächstes Thema

australien

Ich bin nun nochmals alles Schritte deiner Anleitung https://heinz-otto.blogspot.com/2019/05/installation-nodejs.html durchgegangen.

ich bekomme folgende Meldung pi@raspberrypi-fhem:~ $ sudo npm install pm2 -g
/usr/bin/pm2 -> /usr/lib/node_modules/pm2/bin/pm2
/usr/bin/pm2-dev -> /usr/lib/node_modules/pm2/bin/pm2-dev
/usr/bin/pm2-docker -> /usr/lib/node_modules/pm2/bin/pm2-docker
/usr/bin/pm2-runtime -> /usr/lib/node_modules/pm2/bin/pm2-runtime
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/pm2/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"})
npm WARN ws@7.2.5 requires a peer of bufferutil@^4.0.1 but none is installed. You must install peer dependencies yourself.
npm WARN ws@7.2.5 requires a peer of utf-8-validate@^5.0.2 but none is installed. You must install peer dependencies yourself.

+ pm2@4.4.1
updated 1 package in 22.495s


und pi@raspberrypi-fhem:~ $ sudo -su fhem pm2 list
┌─────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name      │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
└─────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘


irgendwie will er es nicht kennen?!
im fhem log steht nach einem reboot
[PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!
[PM2][Initialization] Defaulting to /etc/.pm2
fs.js:119
    throw err;
    ^

Error: ENOENT: no such file or directory, open '/etc/.pm2/pm2.log'
    at Object.openSync (fs.js:448:3)
    at module.exports.Client.launchDaemon (/usr/lib/node_modules/pm2/lib/Client.js:228:12)
    at /usr/lib/node_modules/pm2/lib/Client.js:104:10
    at /usr/lib/node_modules/pm2/lib/Client.js:320:14
    at processTicksAndRejections (internal/process/task_queues.js:79:9)
    at runNextTicks (internal/process/task_queues.js:56:3)
    at listOnTimeout (internal/timers.js:505:9)
    at processTimers (internal/timers.js:479:7)

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Otto123

#541
Die erste Warnungen habe ich auch, die mit ws@7.2.5 nicht. Da hast Du offenbar noch etwas laufen?
Was ergibt dies in der Systemkommandozeile?
ps -aux|grep pm2
Ich tappe dabei im Dunkeln. Ich installiere das nodejs Zeug von null - in der Analyse von anderen Umgebungen habe ich keine Ahnung.
fhem sollte Dateien unter /opt/fhem/.pm2 öffnen nicht unter /etc/.pm2 (gibt es bei mir nicht und will auch keiner schreiben)
Was gibt das in der FHEM Kommandozeile?
{qx(echo \$HOME)}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

australien

Zitat von: Otto123 am 23 August 2020, 21:32:22
Die erste Warnungen habe ich auch, die mit ws@7.2.5 nicht. Da hast Du offenbar noch etwas laufen?
Was ergibt dies in der Systemkommandozeile?
ps -aux|grep pm2
pi@raspberrypi-fhem:~ $ ps -aux|grep pm2
fhem      1334  0.0  3.7 126944 35464 ?        Ssl  20:45   0:02 PM2 v4.4.1: God Daemon (/opt/fhem/.pm2)
pi        1448  0.0  3.7 126940 35420 ?        Ssl  20:47   0:01 PM2 v4.4.1: God Daemon (/home/pi/.pm2)
pi        5436  0.0  0.0   7348   544 pts/0    S+   22:55   0:00 grep --color=auto pm2


Zitat
Was gibt das in der FHEM Kommandozeile?
{qx(echo \$HOME)}

Gruß Otto
da kommt nichts, ist leer

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Otto123

#543
Moin,

ok das mit der $HOME Umgebungsvariable ist offenbar von irgendetwas abhängig. Ich habe die auch nicht auf allen Systemen. Auf meinen frisch installierten ist sie vorhanden. War aber eh nur so eine Idee von mir, ich weiß nicht genau wo das Problem liegt.
Du hast jetzt zweimal pm2 laufen. Das ist sicher kein Problem, solange dort nicht gleiche Sachen gemacht werden. Ich habe mich mal aus meinem Worx Landroid Account ausgesperrt, bis ich begriffen habe das man unter jedem user einen neuen Prozess mit pm2 starten kann.
Ich kann mein Setup mal noch unter verschiedenen Systemen und Umgebungen testen und die Unterschiede dokumentieren. Bisher hatte ich nur frische Systeme verwendet und alles neu installiert.

Du hast ja schon gesagt, wenn Du es mit User Pi startest läuft es. Du kannst auch dort den Autostart aktivieren, dann lässt Du den Start unter FHEM einfach weg.
pm2 start sonos2mqtt
pm2 startup

Nach dem letzten Befehl "redet" pm2 mit Dir. D.h. Er schreibt eine Zeile in der Art
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi

Da tust Du das was er sagt, die zweite Zeile kopieren und ausführen. Danach musst Du den Zustand noch sichern.
pm2 save
Dann wird beim Neustart vom System pm2 automatisch gestartet.
Das für den Start zuständige notify n_pm2_sonos in FHEM musst Du natürlich deaktivieren oder löschen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

australien

#544
Danke Otto123

hab jetzt das pm2 so gestartet und es funktioniert alles.
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Otto123

Gut das es läuft!
Du hast editiert  ;), ich war entsetzt über den Speicherzuwachs  :o ich habe das mal getestet. Deswegen einfach das Ergebnis - der Vollständigkeit halber :)
Nach setupFHEM
df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root        15G    1,5G   13G   11% /

Nach setupNodejs
df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root        15G    1,6G   13G   12% /
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

australien

ja, hab editiert.
Das fhem hatte die backups mittlerweile sehr angehäuft und das war der Grund. bin jetzt wieder bei
pi@raspberrypi-fhem:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  9.9G  4.1G  71% /
devtmpfs        431M     0  431M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M  6.3M  457M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1   42M   24M   18M  57% /boot
tmpfs            93M     0   93M   0% /run/user/1000


raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

TomLee

Mir ist heute bei einer Sprachausgabe aufgefallen das das Sonos_Modul den Speak Befehl hintereinander ausführen kann wenn es zwei Events gibt die zur gleichen Zeit stattfinden und beide Events einen Sprachbefehl auslösen.

Das kann der s2m speak-Befehl (noch ?) nicht.

set SonosControl speak 20 bla;set SonosControl speak 20 bla

Meint Ihr das könnte mit den Parametern timeout und delayMs in notify zusammenhängen, hab schon etwas gespielt aber ohne Erfolg.

Otto123

Da hast Du Recht. Da muss ich mal nachdenken. TTS für sich macht das auch korrekt. Meine ganzen Sprachausgaben bauen darauf auf, dass "ich" einfach losfeuere und der arbeitet die nacheinander ab.
Jetzt verwenden wir das quasi parallel.

Mal schauen ;) da muss irgendwie ne Queue her. Das liegt nicht primär an s2m denke ich.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Bin schon mehrfach gescheitert sonos-tts-polly ans laufen zu bekommen.

Heute frag ich.

Die Installation war mit npm i -g @svrooij/sonos-tts-polly

In /usr/local/bin siehts dann so aus:

pi@FHEMOS:/usr/local/bin $ ls -l
insgesamt 37292
-rwxr-xr-x 1 root root 38183868 Jul 30 18:21 node
lrwxrwxrwx 1 root root       38 Jul 30 18:21 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxrwxrwx 1 root root       38 Jul 30 18:21 npx -> ../lib/node_modules/npm/bin/npx-cli.js
lrwxrwxrwx 1 root root       31 Jul 30 18:31 pm2 -> ../lib/node_modules/pm2/bin/pm2
lrwxrwxrwx 1 root root       35 Jul 30 18:31 pm2-dev -> ../lib/node_modules/pm2/bin/pm2-dev
lrwxrwxrwx 1 root root       38 Jul 30 18:31 pm2-docker -> ../lib/node_modules/pm2/bin/pm2-docker
lrwxrwxrwx 1 root root       39 Jul 30 18:31 pm2-runtime -> ../lib/node_modules/pm2/bin/pm2-runtime
lrwxrwxrwx 1 root root       43 Jul 30 18:36 sonos2mqtt -> ../lib/node_modules/sonos2mqtt/lib/index.js
lrwxrwxrwx 1 root root       58 Aug 29 14:57 sonos-tts-polly -> ../lib/node_modules/@svrooij/sonos-tts-polly/dist/index.js


Die index.js sieht so aus:

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var config_1 = require("./config");
var server_1 = __importDefault(require("./server"));
var config = config_1.ConfigLoader.loadConfig();
var server = new server_1.default(config);
process.on('SIGINT', function () {
    console.log('Got [CTRL]+C signal, closing...');
    server.stop();
    process.exit();
});
//# sourceMappingURL=index.js.map



Will ich starten bekomm ich drei Fehler zurück

pi@FHEMOS:~ $ sonos-tts-polly --port 5601 --amazonKey AKIAJXEV7bliblablup --amazonSecret 5fOZ4stQ4GbliblablupVxmjCOhEl/QEKWRKO
/usr/local/bin/sonos-tts-polly: Zeile 1: use strict: Kommando nicht gefunden.
/usr/local/bin/sonos-tts-polly: Zeile 2: Syntaxfehler beim unerwarteten Wort `('
/usr/local/bin/sonos-tts-polly: Zeile 2: `var __importDefault = (this && this.__importDefault) || function (mod) {'


Hat irgendwer einen Tipp ?

Gruß

Thomas

PatrickR

#550
Hi!

Zitat von: TomLee am 29 August 2020, 16:33:38
Hat irgendwer einen Tipp ?
Ist Docker vielleicht eine Alternative? Dann funktioniert es einfach, Du kriegst von dem ganzen Node-Geraffel nix mit und hast es schön getrennt von Deinem Hauptsystem.

Mal als Appetitthäppchen:

docker run -d --name sonos-tts-polly --restart=always \
-p 5601:5601 \
-e SONOS_TTS_AMAZON_KEY=XXX \
-e SONOS_TTS_AMAZON_SECRET=YYY \
-e SONOS_TTS_AMAZON_REGION=eu-central-1 \
svrooij/sonos-tts-polly


So funktioniert es bei mir. sonos2mqtt ist übrigens ähnlich einfach.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

TomLee

ZitatIst Docker vielleicht eine Alternative?

Keine Ahnung hab ich mich bisher noch nicht einmal mit beschäftigt.
Auf die Schnelle funktioniert es einfach so nicht.

War doch so gedacht das ich das im Terminal (mit Key und Secret) eingebe ?
Dann läuft der Docker bis ich mit strg+c beende ?

Unabhängig vom speak_Befehl ( der nicht klappt ) müsst ich ja, wenn der Server läuft, auch bspw. auf diese URL zugreifen können, was (noch) nicht geht:

http://192.168.188.67:5601/api/voices

Schau mir das später aber nochmal an.

PatrickR

Zitat von: TomLee am 29 August 2020, 17:51:48
War doch so gedacht das ich das im Terminal (mit Key und Secret) eingebe ?
Dann läuft der Docker bis ich mit strg+c beende ?
Eigentlich backgrounded der Container wegen -d selbst. Aber der erste Start kann etwas dauern, da erst das Image gezogen werden muss.

Was wird denn ausgegeben?

Mit docker logs -f sonos-tts-polly gibts auch nach dem Backgrounden das Log.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

TomLee

Bin etwas weiter, hab aber einen Fehler gemacht und möchte den mittlerweile laufenden Container löschen und neu anlegen.

Zum löschen muss ich den Container zuvor beenden, bekomme es aber einfach nicht hin.

sudo docker stop sonos-tts-polly
sudo docker stop b93377e3508c
sudo docker stop b93377e3508c1576d374178627224595444aca55a8d9b52212742045c2b864b8


Nichts klappt.

sudo docker ps ergibt immer wieder:
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                    NAMES
b93377e3508c        svrooij/sonos-tts-polly   "docker-entrypoint.s..."   2 hours ago         Up 2 hours          0.0.0.0:5601->5601/tcp   sonos-tts-polly


Wie macht mans den richtig ?

PatrickR

Zitat von: TomLee am 30 August 2020, 16:11:37
Wie macht mans den richtig ?
Du machst das schon richtig, aber irgendwas ist da verbogen. Muss ehrlich gestehen, dass ich noch nie einen hängenden Container hatte. Aktuell laufen 30 Container...
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook