Sprachausgabe über HomePod

Begonnen von jko, 16 Juli 2019, 18:31:56

Vorheriges Thema - Nächstes Thema

Lanhydrock

Anm.:

Auch die Jungs und Mädels nebenan kämpfen gerade mit den "passenden" Versionen, um Airtunes ans Laufen zu bekommen...  ;)
https://forum.smartapfel.de/forum/thread/2722-homepod-plugin-homebridge-airtunes-radio/?pageNo=1

vor allem ab Seite 5:
https://forum.smartapfel.de/forum/thread/2722-homepod-plugin-homebridge-airtunes-radio/?pageNo=5

Werde mal auch dort weiter mitverfolgen...
- FHEMs in VM @ Mac mini & RPi, fhem2fhem
- Homematic, 1wire, Hue & Lightify & Tradfri & Xiaomi & Oblo via zigbee2mqtt/Conbee II, Rademacher DuoFern, Roto i8 & Hunter Ventile via HM-LC-Sw4-DR
- Interdomo GBK (via Siemens ozw672; dank HTTPMOD, lest Post #33765)
- homebridge(-fhem), Grafana, DBLog

Dirk070

Danke für den Link zum smarten Apfel.....lässt sich das dort beschrieben Szenario "Seit iOS 13 kann man ja über die Home App als Aktion die "Musik"-Ausgabe auf dem Homepod auswählen." auch mit FHEM bauen?
Also kann man z.B. mit Homebridge eine Aktion auf dem Homepod auslösen?

4kk

Guten Abend zusammen,

ich schließe mich hier mal an, da ich gefühlt den ganzen Tag versucht habe das gute TTS via Airplay zu laufen zu bekommen .

Ebenfalls an beide Anleitungen gehalten und zig nodejs Versionen getestet.
zu beginn die 9.8 wie gefordert.

auch bei mir kommt nur adding device...

pi@XXXX_FHEM_PI:~/node_airtunes/examples $ node play_ffmpeg.js --host 169.254.231.XXX --port 7000 --ffmpeg /usr/bin/ffmpeg
adding device: 169.254.231.XXX:7000
^C


Wenn ich aber das Skript manuell startet (konsole) kommt ein versionskonflickt....
Eventuell verbirgt sich da das Problem.

Mit "Module löschen" und neu Kompilieren usw. habe ich mich bereits versucht. Ob das alles so richtig war weiß ich aber auch nicht.


Eventuell kann ja jemand mehr damit anfangen als ich daher hier mal die Fehler Ausgabe:

Bis morgen und gute Nacht :) :o

FHEM_PI:~ $ /usr/bin/node /home/pi/node_airtunes/examples/play_ffmpeg.js --host $IP --port 7000 --ffmpeg /usr/bin/ffmpeg --file /opt/fhem/cache/text.mp3
internal/modules/cjs/loader.js:807
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: The module '/home/pi/node_airtunes/build/Release/airtunes.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 59. This version of Node.js requires
NODE_MODULE_VERSION 64. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:807:18)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/pi/node_airtunes/lib/device_coreaudio.js:4:16)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)

4kk

update:

So lässt es sich ausführen:

Versionen verwaltet mit NVM:
https://linuxize.com/post/how-to-install-node-js-on-raspberry-pi/
FHEM_PI:~ $ nvm ls
        v7.10.1
         v8.0.0
         v8.8.1
         v8.9.0
         v8.9.4
         v9.0.0
         v9.8.0
->     v10.19.0
       v13.11.0
         system
default -> 10 (-> v10.19.0)
node -> stable (-> v13.11.0) (default)
stable -> 13.11 (-> v13.11.0) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/erbium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.19.0
lts/erbium -> v12.16.1 (-> N/A)


also mit -> Now using node v10.19.0 (npm v6.13.4)

Aber jetzt gleich das nächste Problem:

FHEM_PI:~ $ ./Airplay_Einmal.sh
/usr/bin/node /home/pi/node_airtunes/examples/play_ffmpeg.js --host 192.168.1.160 --port 7000 --ffmpeg /usr/bin/ffmpeg --file /tmp/Einmal.mp3
adding device: 192.168.1.160:7000
(node:7202) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.


Eventuell klappt es ja mit dem richtigen Node bereits bei jemandem.
Wenn jemand Ideen hat würde ich mich freuen.
Nach dem Inhalt der "play_ffmpeg.js" müsste da eigentlich noch was kommen...


var airtunes = require('../lib/'),
    spawn = require('child_process').spawn,
    argv = require('optimist')
      .usage('Usage: $0 --host [host] --port [num] --ffmpeg [path] --file [path] --volume [num] --password [string]')
      .default('port', 7000)
      .default('volume', 75)
      .default('ffmpeg', '/usr/local/bin/ffmpeg')
      .default('file', './wakeup.mp3')
      .demand(['host'])
      .argv;

console.log('adding device: ' + argv.host + ':' + argv.port);
var device = airtunes.add(argv.host, argv);

// when the device is online, spawn ffmpeg to transcode the file
device.on('status', function(status) {
  console.log('status: ' + status);

  if(status !== 'ready')
    return;

  var ffmpeg = spawn(argv.ffmpeg, [
    '-i', argv.file,
    '-f', 's16le',        // PCM 16bits, little-endian
    '-ar', '44100',       // Sampling rate
    '-ac', 2,             // Stereo
    'pipe:1'              // Output on stdout
  ]);

  // pipe data to AirTunes
  ffmpeg.stdout.pipe(airtunes);

  // detect if ffmpeg was not spawned correctly
  ffmpeg.stderr.setEncoding('utf8');
  ffmpeg.stderr.on('data', function(data) {
    if(/^execvp\(\)/.test(data)) {
      console.log('failed to start ' + argv.ffmpeg);
      process.exit(1);
    }
  });
});

// monitor buffer events
airtunes.on('buffer', function(status) {
console.log('buffer ' + status);

  // after the playback ends, give some time to AirTunes devices
  if(status === 'end') {
    console.log('playback ended, waiting for AirTunes devices');
    setTimeout(function() {
      airtunes.stopAll(function() {
        console.log('end');
        process.exit();
      });
    }, 2000);
  }
});


Grüße Mike

Felix_86

Hallo zusammen,

ich kam nun mal wieder dazu, mich dem Thema bei meinem Kumpel anzunehmen. Leider sind wir nach wie vor erfolglos bei der Sprachausgabe über den HomePod.

Anbei die Ausgabe der Console. Evtl. sieht hier jemand den Fehler, damit der Kram endlich läuft.

pi@raspberrypi:~/Downloads $ git clone https://github.com/afaden/node_airtunes.git
Klone nach 'node_airtunes' ...
remote: Enumerating objects: 379, done.
remote: Total 379 (delta 0), reused 0 (delta 0), pack-reused 379
Empfange Objekte: 100% (379/379), 1.30 MiB | 2.51 MiB/s, Fertig.
Löse Unterschiede auf: 100% (182/182), Fertig.

pi@raspberrypi:~/Downloads $ cd node_airtunes
pi@raspberrypi:~/Downloads/node_airtunes $ git checkout fix_port_0_error
Branch 'fix_port_0_error' folgt nun Remote-Branch 'fix_port_0_error' von 'origin'.
Zu neuem Branch 'fix_port_0_error' gewechselt

pi@raspberrypi:~/Downloads/node_airtunes $ node-gyp configure build
module.js:559
    throw err;
    ^

Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:557:15)
    at Function.Module._load (module.js:484:25)
    at Module.require (module.js:606:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/share/node-gyp/lib/node-gyp.js:12:10)
    at Module._compile (module.js:662:30)
    at Object.Module._extensions..js (module.js:673:10)
    at Module.load (module.js:575:32)
    at tryModuleLoad (module.js:515:12)
    at Function.Module._load (module.js:507:3)

pi@raspberrypi:~/Downloads/node_airtunes $ sudo apt-get install node-graceful-fs
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
node-graceful-fs ist schon die neueste Version (4.1.11-1).
node-graceful-fs wurde als manuell installiert festgelegt.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 83 nicht aktualisiert.

pi@raspberrypi:~/Downloads/node_airtunes $ node-gyp configure build
module.js:559
    throw err;
    ^

Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:557:15)
    at Function.Module._load (module.js:484:25)
    at Module.require (module.js:606:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/share/node-gyp/lib/node-gyp.js:12:10)
    at Module._compile (module.js:662:30)
    at Object.Module._extensions..js (module.js:673:10)
    at Module.load (module.js:575:32)
    at tryModuleLoad (module.js:515:12)
    at Function.Module._load (module.js:507:3)


Folgende Versionen sind installiert:

pi@raspberrypi:~/Downloads/node_airtunes $ npm -v
5.6.0
pi@raspberrypi:~/Downloads/node_airtunes $ node -v
v9.8.0
pi@raspberrypi:~/Downloads/node_airtunes $ nodejs -v
v10.15.2
pi@raspberrypi:~/Downloads/node_airtunes $ node-gyp -v
module.js:559
    throw err;
    ^

Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:557:15)
    at Function.Module._load (module.js:484:25)
    at Module.require (module.js:606:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/share/node-gyp/lib/node-gyp.js:12:10)
    at Module._compile (module.js:662:30)
    at Object.Module._extensions..js (module.js:673:10)
    at Module.load (module.js:575:32)
    at tryModuleLoad (module.js:515:12)
    at Function.Module._load (module.js:507:3)

Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

jko

Hi,

Da fehlt ein Modul


npm i graceful-fs

Sollte helfen....

Felix_86

Hallo jko,

vielen Dank für deine Antwort. Leider war die Installation des Moduls nicht ausreichend oder wurde nicht korrekt durchgeführt.

Anbei die Ausgabe vom heutigen Versuch

pi@raspberrypi:~ $ cd Downloads/
pi@raspberrypi:~/Downloads $ date
Mi 6. Mai 21:19:55 CEST 2020
pi@raspberrypi:~/Downloads $ git clone https://github.com/afaden/node_airtunes.git
Klone nach 'node_airtunes' ...
remote: Enumerating objects: 379, done.
remote: Total 379 (delta 0), reused 0 (delta 0), pack-reused 379
Empfange Objekte: 100% (379/379), 1.30 MiB | 2.25 MiB/s, Fertig.
Löse Unterschiede auf: 100% (182/182), Fertig.
pi@raspberrypi:~/Downloads $ cd node_airtunes
pi@raspberrypi:~/Downloads/node_airtunes $ git checkout fix_port_0_error
Branch 'fix_port_0_error' folgt nun Remote-Branch 'fix_port_0_error' von 'origin'.
Zu neuem Branch 'fix_port_0_error' gewechselt
pi@raspberrypi:~/Downloads/node_airtunes $ node-gyp configure build
module.js:559
    throw err;
    ^

Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:557:15)
    at Function.Module._load (module.js:484:25)
    at Module.require (module.js:606:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/share/node-gyp/lib/node-gyp.js:12:10)
    at Module._compile (module.js:662:30)
    at Object.Module._extensions..js (module.js:673:10)
    at Module.load (module.js:575:32)
    at tryModuleLoad (module.js:515:12)
    at Function.Module._load (module.js:507:3)
pi@raspberrypi:~/Downloads/node_airtunes $ npm i graceful-fs
npm WARN airtunes@0.1.7 No license field.

+ graceful-fs@4.2.4
updated 1 package in 2.283s
pi@raspberrypi:~/Downloads/node_airtunes $ node-gyp configure build
module.js:559
    throw err;
    ^

Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:557:15)
    at Function.Module._load (module.js:484:25)
    at Module.require (module.js:606:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/share/node-gyp/lib/node-gyp.js:12:10)
    at Module._compile (module.js:662:30)
    at Object.Module._extensions..js (module.js:673:10)
    at Module.load (module.js:575:32)
    at tryModuleLoad (module.js:515:12)
    at Function.Module._load (module.js:507:3)
pi@raspberrypi:~/Downloads/node_airtunes $


Zwischenzeitlich habe ich auch npm nicht von apt-get installation, sondern aus dem Github Projekt geklont. Dies brachte allerdings auch keine Veränderung.

Ist hier etwas grundlegend schief und muss bereinigt werden oder warum bin ich nicht in der Lage den HomePod auf dem Raspberry in Betrieb zu nehmen????
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Felix_86

#22
Hallo zusammen,

da ich mir keinen Rat mehr wusste, habe ich Raspbian 9 / Stretch auf einer zweiten SD Karte neu installiert und habe dort die Installationsschritte ausgeführt. Nun sieht es deutlich besser aus - keine Fehler mehr beim Kompilieren.

Starte ich nun play_ffmpeg.js erhalte ich folgende Ausgabe:

pi@raspberrypi:~/Downloads/node_airtunes/examples $ node play_ffmpeg.js --host 192.168.2.152 --port 7000 --ffmpeg /usr/bin/ffmpeg --file ~/Downloads/node_airtunes/examples/wakeup.mp3
adding device: 192.168.2.152:7000
status: stopped


Im tcpdump sehe ich auch, dass Netzwerkkommunikation zwischen dem Raspberry und dem angesprochenen Homepod stattfindet, allerdings ist der Ton nicht hörbar.

Wo liegt nun der Fehler?
Warum kommt direkt nach dem "adding device" die Meldung "status: stopped"?
Was bedeutet "status: stopped"?


UPDATE:
Wenn ich das play_ffmpeg.js als Root ausführe, erhalte ich die Meldung "Cannot find module 'async'". Ok, installiere ich async mittels "npm install async" unter Root, kommt zwar die Meldung nicht mehr, allerdings kommt dann als pi User nach dem "adding device" nichts mehr (auch nicht die Ausgabe "status stopped"), auch im tcpdump ist dann KEINE Netzwerkkommunikation mehr zu sehen.
Entferne ich async unter Root wieder (npm remove async) dann erhalte ich zwar wieder die Meldung  "Cannot find module 'async'" unter Root, aber als pi User kommt nach dem "adding device" wieder "status: stopped" und im tcpdump ist Netzwerkkommunikation ersichtlicht.

Das async Modul (installiert unter Root) tut also irgend etwas, was dazu führt, dass play_ffmpeg.js unter dem pi User anders agiert / funktioniert.

Jemand eine Idee?

Danke
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Felix_86

Das Problem besteht weiterhin und ohne Rückmeldung, Infos, Hilfe oder Denkanstöße komme ich leider nicht weiter :(
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Ganglion

Zitat von: 4kk am 23 März 2020, 17:41:28
Aber jetzt gleich das nächste Problem:

FHEM_PI:~ $ ./Airplay_Einmal.sh
/usr/bin/node /home/pi/node_airtunes/examples/play_ffmpeg.js --host 192.168.1.160 --port 7000 --ffmpeg /usr/bin/ffmpeg --file /tmp/Einmal.mp3
adding device: 192.168.1.160:7000
(node:7202) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.


Grüße Mike

Habe 1:1 die gleiche Meldung und das gleiche Problem... Hast Du oder evtl. jemand anderes eine Lösung dafür oder eine Idee?

Felix_86

Ich kämpfe auch schon seit einem halben Jahr an dem Thema rum und finde keine Lösung und bringe es nicht zum Laufen. Habe auch schon Kontakt zum TE aufgenommen, aber bisher auch kein Weiterkommen.

Entweder wird die Verbindung zum HomePod über FHEM nur sehr selten von den Usern verwendet oder bei allen anderen läufts einfach und keiner hat Probleme.
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Anjo1979

Zitat von: Felix_86 am 16 Oktober 2020, 21:07:57
Ich kämpfe auch schon seit einem halben Jahr an dem Thema rum und finde keine Lösung und bringe es nicht zum Laufen. Habe auch schon Kontakt zum TE aufgenommen, aber bisher auch kein Weiterkommen.

Entweder wird die Verbindung zum HomePod über FHEM nur sehr selten von den Usern verwendet oder bei allen anderen läufts einfach und keiner hat Probleme.

Hallo zusammen,

ich würde mich ebenfalls riesig freuen, wenn es jemand zum Laufen bekommt. Ich verfolge dies hier schon ein weile und habe diverse Dinge (ähnlich zu Felix_86) probiert. Leider ohne erfolg, Fehlermeldungen ebenfalls wie bei Felix_86.

Was ich gesehen hatte, dass es wohl eine "Weiterentwicklung = node_airtunes2" gibt. Siehe hier: https://github.com/mcfisto/node_airtunes2
Ich konnte es bisher noch nicht testen, werde ich aber asap tun. Vielleicht hilft es euch weiter!?

Grüße
Anjo

Hanjo

Hallo,

nachdem ich die gleichen Probleme hatte, wie weiter oben im Thread beschrieben, habe ich mich ein bisschen durch die Forks gewühlt. Erfolg hatte ich letztendlich mit diesem Fork:

https://github.com/fimius23/node_airtunes2

Viele Grüße
Hanjo

Dirk070

Hallo Hanjo,

ich habe hier auch alles Mögliche probiert und kam doch nie richtig weiter.
Nutze FHEM im Docker auf der Syno.

Könntest Du netterweise kurz beschreiben, welche Schritte hier zu unternehmen sind?

Vielen Dank und schöne Grüße
Dirk

Elektrolurch

Hallo,

ich weiß nicht, ob der Beitrag noch lebt (:-))?
Leider habe ich das gleiche Problem, wie die Mitstreiter hier im Beitrag:

cd examples
node play_ffmpeg.js --host 192.168.1.87 --port 7000 --ffmpeg /usr/bin/ffmpeg

Gibt nur "Adding device 192.168.1.87 Port 7000..." aus (ohne Sound) und bleibt dann einfach hängen (kann nur mit ctrl-C beeeendet werden).

example-Verzeichnis enthält Skript und Audio - Datei.
Device ist online mit Port 7000.

Versionen:

npm -v
5.6.0
nodejs -v
V12.22.12
node-gyp -v
module.js:559
    throw err;
    ^

Error: Cannot find module 'nopt'
    at Function.Module._resolveFilename (module.js:557:15)
    at Function.Module._load (module.js:484:25)
    at Module.require (module.js:606:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/share/nodejs/node-gyp/lib/node-gyp.js:4:14)
    at Module._compile (module.js:662:30)
    at Object.Module._extensions..js (module.js:673:10)
    at Module.load (module.js:575:32)
    at tryModuleLoad (module.js:515:12)
    at Function.Module._load (module.js:507:3)


Habe versucht, dass zu fixen mit:

npm install nopt


Hat aber nichts gebracht.

Installation laut Anleitung:

git clone https://github.com/afaden/node_airtunes.git
cd node_airtunes
git checkout fix_port_0_error
npm install


läuft durch, bringt aber eine Menge Type-Warungen für die Funktionsaufrufe.


Hat da jemand mehr Erfolg gehabt?

Elektrolurch

P.S.: Glücklicherweise regnet es heute.... sitze schon den ganzen Nachmittag daran.

configDB und Windows befreite Zone!