[37_echodevice] Amazon Echo Modul (nicht Alexa)

Begonnen von michael.winkler, 12 Januar 2018, 18:20:12

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Wobei mich wundert, wenn du tatsächlich "Einzelhochkommas" hast, dass die Variable $NAME "aufgelöst" wird...
...und somit "grün" funktioniert...

Normalerweise funktioniert das nur mit Doppelanführungszeichen:

'$NAME' ergibt $NAME

"$NAME" ergibt ECHO...

(bzw. halt den "Inhalt" der Variablen...)

Antwort: leider keine Idee...

Kann es aber später mal bei mir testen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MarkusN

Danke, doppelte Anführungszeichen haben das Problem offenbar gelöst! Immer diese kleinen Fallstricke  ;D

Warum die grüne Zeile dann funktioniert ist allerdings eine gute Frage.

MadMax-FHEM

Gut, dann kann ich mir den Test ja sparen... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

cs-online

Hallo,

ich habe auch das Problem, dass mindestens mal das Speak nicht mehr funktioniert, obwohl ich connected bin. Auch Update auf die neueste Version des Moduls hat nichts geholfen. Was kann man noch probieren und gibt's schon Ideen, woran das liegen kann ?

Grüße Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

87insane

Ich verstehe das ganze nicht mehr....

Bitte einige Seiten vor blättern.

NPM usw... steht alles schon sehr oft in diesem Thread...

h-isteas

Also wenn ich "Get Status" mache dann kommt bei "Amazon_refreshtoken" unbekannt  ???


vop

#2811
Zitat von: vop am 06 August 2019, 12:20:37
Hallo zusammen,

seit wenigen Tagen habe ich ebenfalls das Problem, dass die Echo Devices offenbar im Read-Only-Mode sind. Gelesen wird normal, Befehle (getestet: volume, speak, routine_play) werden nicht ausgeführt. Meine zahlreichen Echos sprechen sonst recht viel (z.B. "Bitte Fenster in Raum xx schließen"), da fällt es unmittelbar auf, wenn auf einmal nichts mehr geht, nachdem es monatelang problemlos funktioniert hatte.

Das Account-Device ist im Status connected, COOKIE_STATE = OK, Authentifizierung vor langer Zeit mal per NPM gemacht.

Was kann ich zur Analyse beitragen?


Schöne Grüße

Karsten

EDIT: Ich habe nochmal manuell den npm install gemacht, folgendes Verhalten ist aber gleich geblieben:

  • set echodevice NPM_login refresh -> Meldung über ungültigen Refresh-Cookie
  • set echodevice NPM_login new -> FHEM hängt sich auf / startet neu.

User fhem hat Schreibrechte auf /opt/fhem/cache/alexa-cookie
sudoers-Eintrag für fhem ist vorhanden


Ich habe für mich nun eine Lösung gefunden, vielleicht hilft dies ja jemandem weiter.

Ich hatte nach einer Fehlermeldung im Log bzgl. node-Versionscheck genauer nachgeforscht, der Check befindet sich in Zeile 4289:


        # Node Version prüfen
        close NODEVER;
        open NODEVER,'-|', 'node -v' or die $@;
        my $NodeResult;
        my $NodeLoop = "2";
        do {
                $NodeResult=<NODEVER>;
                $NodeResult =~ s/v//g;

                #Log3 $name, 3, "[$name] [echodevice_NPMLoginNew] Node Version $NodeResult";
                if (version->declare($NodeResult)->numify < version->declare('8.10')->numify ) {

                        $InstallResult .= '<p>Die installierte Node Version  <strong>' . $NodeResult . '</strong> ist zu alt. Bitte zuerst die Node Version auf Minimum <strong>8.12</strong> aktualisieren. F
                        $InstallResult .= '<p><strong><font color="blue">sudo apt-get install curl</font></strong></p>';
                        $InstallResult .= '<p><strong><font color="blue">curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -</font></strong></p>';
                        $InstallResult .= '<p><strong><font color="blue">sudo apt-get update</font></strong></p>';
                        $InstallResult .= '<p><strong><font color="blue">sudo apt-get install nodejs</font></strong></p><br>';
                        $InstallResult .= '<br><form><input type="button" value="Zur&uuml;ck" onClick="history.go(-1);return true;"></form>';
                        $InstallResult .= "</html>";
                        $InstallResult =~ s/'/'/g;
                        Log3 $name, 3, "[$name] [echodevice_NPMLoginNew] Node Version " . $NodeResult . " is to old! Pleas make an update";
                        return $InstallResult;

                }
                else {Log3 $name, 3, "[$name] [echodevice_NPMLoginNew] Node Version " . $NodeResult;}



        } while ($NodeLoop eq "1");

[...]


Installiert war bei mir v8.11.1, was meinem Verständnis nach eigentlich den Vergleich "> 8.10" erfüllen sollte - im Text steht dann ja auch, wie man die Version aktualisieren kann. Die Meldung wurde mir leider in FHEM nie angezeigt, FHEM hat sich bei set NPM_login new immer aufgehängt (auch nach gefühlten 10 mal noch, die Methode hat mir also nicht weitergeholfen ;) )

set NPM_install über die FHEM-Oberfläche hat nicht funktioniert, mit Fehlermeldung. Also manuell durchgeführt. Das alexa-cookie-Verzeichnis musste ich selbst anlegen, da npm dies (trotz Aufruf per sudo) wegen angeblich fehlender Berechtigungen nicht konnte und mit Fehler abgebrochen ist. Nach manueller Anlage des Verzeichnisses lief die Installation mit aktuellem nodejs dann aber durch.

Ergebnis:

  • set NPM_login new funktioniert endlich wieder!
  • Der Zustand von COOKIE_TYPE hat sich von READING zu NPM_Login geändert
  • speak, volume, routine_play funktionieren wieder


Hier die kompletten Befehle:

sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get update
sudo apt-get install nodejs
sudo mkdir /opt/fhem/cache/alexa-cookie/node_modules/alexa-cookie2
sudo npm install --prefix /opt/fhem/cache/alexa-cookie alexa-cookie2


Jetzt bleibt die spannende Frage, warum das früher mal funktioniert hat (ich bezweifle, dass mein nodejs mal aktueller war und sich von selbst downgegradet hat). Aktuell nutze ich das Modul in Version v0.0.54, aber auch in v0.0.51z war der Versionscheck schon der gleiche...
Und die weitere Frage, warum FHEM bei unpassender Version abstürzt, statt diese durchaus hilfreiche Meldung auszugeben.

Ergänzung:
ich hatte zwischendurch auf der Kommandozeile "node -v" aufgerufen (als user 'pi', Standard-Raspbian). Dort wurde nichts ausgegeben, denn wie sich herausstellte, gab es unter /usr/sbin/node ein weiteres Binary namens node, was auch immer das war. Beim direkten Aufruf von /usr/bin/node -v wurde die Versionsinfo ausgegeben.

Könnte es vielleicht damit zu tun haben?

Bei leerer Ausgabe von "node -v" dürfte diese Zeile hier zum 'die' und somit zum Absturz führen:
open NODEVER,'-|', 'node -v' or die $@;

=> an dieser Stelle wird statt $npm_bin_node nur 'node' aufgerufen, möglicherweise wurde das falsche node gestartet.

(im Zuge des nodejs-Updates wie oben beschrieben wurde /usr/sbin/node entfernt, das würde erklären warum nun bei nur noch einem vorhandenen node-Binary wieder das richtige ausgeführt und eine Versionsinfo ausgegeben wird)

Borkk

ZitatHallo Zusammen,

Ich habe über das Modul wirklich grandiose Sprachansagen uvm. realisiert, echt klasse. Aber gibt es denn wirklich keinen Weg den Dingern via speak-ssml einen einfachen mp3 Pieps zu entlocken, ohne den "Umweg" für die DNS Umleitung zu nehmen? Ich habe viel gefunden aber nichts will so recht klappen. Auch nicht die Amazon Töne aus <audio src="soundbank://soundlibrary/.... ?!?!

Bin für jeden Hinweis dankbar.

Ich hatte diese Frage schon mal gestellt, bisher ohne Antwort. Hat evtl. jemand einen Hinweis?
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

amenomade

#2813
Mit "audio"? https://developer.amazon.com/fr/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html#audio
(Siehe auch "requirements and limitations")

EDIT: das wird aber wahrscheinlich nicht gehen, da das Modul die "sprich mir nach" funktionalität nutzt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

h-isteas

Hey Vop,

Klasse Erklärung, TOP. Macht Sinn. Ich habe gestern auch versucht mal NPM zu installieren nachdem ich nicht weitergekommen bin. hatte aber recht wenig Zeit. So Kurz vorm Urlaub hat man noch tausende andere Sachen zu tun  :o

Aber vielleicht schaffe ich es heute oder morgen Abend nochmal weiter zu machen. Für mich hat es so den Anschein als hätte Amazon hier irgendwas gedreht  ;D


Thyraz

Zitat von: vop am 07 August 2019, 22:36:59
Ergänzung:
ich hatte zwischendurch auf der Kommandozeile "node -v" aufgerufen (als user 'pi', Standard-Raspbian). Dort wurde nichts ausgegeben, denn wie sich herausstellte, gab es unter /usr/sbin/node ein weiteres Binary namens node, was auch immer das war. Beim direkten Aufruf von /usr/bin/node -v wurde die Versionsinfo ausgegeben.

Könnte es vielleicht damit zu tun haben?

Das war mit Sicherheit das Problem.
Das Modul wird node ja sicher auch nicht mit einem fixen Pfad aufrufen (kann ja je nach Installation / Distro verschieden sein).
Hat man mehr als eine Node Version auf dem System muss somit schon die richtige reagieren wenn man nur "node" ohne Pfad aufruft.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

vop

Zitat von: Thyraz am 08 August 2019, 08:07:13
Das Modul wird node ja sicher auch nicht mit einem fixen Pfad aufrufen

An den meisten Stellen wird das Attribut npm_bin_node berücksichtigt, bzw. falls nicht gesetzt der Standardpfad /usr/bin/node genommen. Wie im Code-Ausschnitt zu sehen, ist dies beim Versionscheck nicht der Fall:


open NODEVER,'-|', 'node -v' or die $@;


@michael.winkler : vielen Dank für das coole Modul und genieß deinen Urlaub! Vielleicht kannst du ja bei Gelegenheit mal schauen, ob an dieser Stelle noch die Berücksichtigung von npm_bin_node möglich ist.

pfeffi

Hallo Michael
Habe deine Anleitungen für den mpd-player und icecast umgesetzt und sie funktionierten
monatelang wunderbar, jetzt habe ich das Problem, daß wenn ich alexa einfach nur anspreche
Z. B. Leiser oder lauter stoppt sofort der mpd-player,  Modul ist auf dem neuesten Stand,  Verbose und Logs
zeigen nicht an wer das auslöst,
Hast du vielleicht ne Idee.

1907

Hi Miteinander,

Erstmal Danke an den Dev und alle Helfer für das tolle Modul.
Ich hab eine triviale Frage:
Ist es möglich über das Modul bei einem Echo Show 5 das Display abzuschalten? Also quasi wie mit dem Befehl "Alexa Display aus".
Echt abartig, dass so ne Funktion nicht per Alexa Routine möglich ist   :o

Borkk

ZitatMit "audio"? https://developer.amazon.com/fr/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html#audio
(Siehe auch "requirements and limitations")

EDIT: das wird aber wahrscheinlich nicht gehen, da das Modul die "sprich mir nach" funktionalität nutzt.

Die Seite kenne ich. Wenn ich das auf mein Echo jage, spricht er zwar, spielt aber keinen Sound ab.

<speak>
    Welcome to Car-Fu.
    <audio src="soundbank://soundlibrary/transportation/amzn_sfx_car_accelerate_01" />
    You can order a ride, or request a fare estimate.
    Which will it be?
</speak>


Ich habe es auch mit einem eigenen, nach Vorgaben codierten Mp3 auf einem mit Letsencrypt zertifizieren https Server versucht. Geht auch nicht. 

Naja, ist dann wohl so, Schade. Das Modul ist trotzdem der Hammer.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...