[37_echodevice] Amazon Echo Modul (nicht Alexa)

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

Vorheriges Thema - Nächstes Thema

popy

Zitat von: awel am 21 November 2018, 23:02:44
Nein, natürlich kann man nicht das ganze Modul auf Blocking umstellen - das wäre wirklich richtiger Quatsch.

Vielleicht gibt es aber die Möglichkeit, so etwas wie ein "get lastalexa" aus dem ganzen Intervallbetrieb des Moduls so herauszunehmen, dass es nur dann ausgeführt wird, wenn es explizit manuell / per Code aufgerufen wird und nur diese eine Funktion blockierend zu betreiben und damit ein Reading LastAlexa zu setzen. Mit einer maximalen Blockierzeit?
Dann hätte man in dem Modul die Funktionalität des blockierend aufgerufenen Scripts und könnte alles mit dem Modul erledigen.
Naja, die werden im 24/7-Modus alle 2 Sekunden geholt, obwohl man sie nur 2 mal in drei Tagen braucht, oder weniger. Ich bin noch mit kB-Speicher und sehr, sehr teurer Datenübertragung computer-sozialisiert  :) , vlt. ein Generationenproblem...  ;)
Das wäre eine gute Idee, nur diesen einen Call blockierend zu machen mit einem Timeout. So könnten wir auf das Script verzichten [emoji5]

Gesendet von meinem LG-H815 mit Tapatalk


MadMax-FHEM

Zitat von: awel am 21 November 2018, 23:05:34
... und man hat wieder die für eine nur verbale Pseudo-Kommunikation sehr unschöne Pause. Dann könnte man auch gleich auf das notify reagieren und brauchte den anderen Krempel nicht.

Ich sehe da keinen Unterschied zum Ausführen des Scriptes bzw. des blockierenden Aufrufs zu der "durch die Brust" Variante.

Weil das Notify dann triggert, wenn auch das Script ermittelt hat, also zeitlich sehe ich da keinen Unterschied.
Vorher kann ja auch mit Script-Variante nicht geantwortet werden.

Ob nun das Script blockierend aufgerufen wird um zu ermitteln welcher Echo es war oder eine "asynchrone" Abfrage des letzten Echo und dann mittels notify reagiert wird sehe ich zeitlich gleich.

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)

balli1187

Wenn es denn geht (keine Ahnung) einzelne Befehle blockierend Auszug führen, würde ich mir dies vielleicht auch für die Speak-Funktion wünschen. Eventuell auch mit einem separaten Befehl (speak und speakBlocking).

Der Hintergrund ist, dass ich mir gern Sprachausgaben in einen Ablauf integrieren würde, bspw. Im "Guten morgen"-Programm:
1. Flashbriefing
2. Ansage meiner anstehenden Termine oder Geburtstag (über einen Dummy mit Alexa-FHEM und CALVIEW)
3. Abspielen eines Radio-Senders

Punkt 2 wird bei mir nicht abgearbeitet, da der Speak Befehl direkt durch das darauffolgende set Echo tunin überschrieben wird.


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

KölnSolar

Ohne genau zu wissen über welche Funktionalität Ihr da im Detail diskutiert, gebe ich mal meinen Senf dazu: Aus meiner Sicht ist jegliches blockierende Verhalten für alle User zu vermeiden; Sonderfälle müssen prinzipiell außerhalb des Moduls realisiert werden; Sofern das nicht möglich ist, muss es zumindest über ein Attribut gesteuert werden. Wer unbedingt einen blockierenden Zugriff haben möchte, muss das dann auch bewusst für seine Installation entscheiden.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

michael.winkler

Zitat von: KölnSolar am 22 November 2018, 11:17:53
Ohne genau zu wissen über welche Funktionalität Ihr da im Detail diskutiert, gebe ich mal meinen Senf dazu: Aus meiner Sicht ist jegliches blockierende Verhalten für alle User zu vermeiden; Sonderfälle müssen prinzipiell außerhalb des Moduls realisiert werden; Sofern das nicht möglich ist, muss es zumindest über ein Attribut gesteuert werden. Wer unbedingt einen blockierenden Zugriff haben möchte, muss das dann auch bewusst für seine Installation entscheiden.
Grüße Markus
Ich versuche es jetzt noch mal kurz zu erklären:

Im Grunde kann man über ein get setting am Account Device die Readings aktualisieren. Es wird dann nur ein weiteres Notify Device benötigt in welchem man dann auf das Voice Reading reagiert. Das Notify kann dann ein Speak an das entsprechende ECHO absetzen. All das funktioniert ohne blocking. Eventuell benötigt man noch ein zusätzliches Reading in dem festgehalten wird dass ein get setting abgesetzt wurde weil ein ECHO eine entsprechende Aufgabe erhalten hat.

MadMax-FHEM

Zitat von: michael.winkler am 22 November 2018, 11:22:52
Ich versuche es jetzt noch mal kurz zu erklären:

Im Grunde kann man über ein get setting am Account Device die Readings aktualisieren. Es wird dann nur ein weiteres Notify Device benötigt in welchem man dann auf das Voice Reading reagiert. Das Notify kann dann ein Speak an das entsprechende ECHO absetzen. All das funktioniert ohne blocking. Eventuell benötigt man noch ein zusätzliches Reading in dem festgehalten wird dass ein get setting abgesetzt wurde weil ein ECHO eine entsprechende Aufgabe erhalten hat.

Genau das war der von mir beschriebene "durch die Brust ins Auge" Weg... ;)

Wie geschrieben sehe ich da keinen zeitlichen Unterschied zur blockierenden Funktion/Skript...

Und ich muss KölnSolar zustimmen: blockierend (egal wie kurz) ist für fhem "tödlich", da es (wenn nicht ausgelagert und dann ist ja das "Ziel verfehlt" ;)  ) fhem lahmlegt, also während dieser Zeit nichts mehr bearbeitet wird!
(auch keine evtl. nötigen Acks etc. an Sensoren usw.)

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)

sinus61

Gerade mal ausgetetet, die Frage "Alexa wie warm ist es", eine Routine schaltet per ha-bridge einen Dummy, ein Notify auf den Dummy führt ein "get ECHOACCOUNTDEVICE settings" aus.
Dann das Notify auf das Voice Reading:

echo_.*:voice:..* {
if ($EVENT =~ m/wie warm ist/) {
fhem "set $NAME speak Die Temperatur beträgt [au_Wetterstation:temperature2] Grad";
}
}

Die Antwort kommt jetzt vom jeweils angesprochenem Echo mit einer Verzögerung von ca. 1 Sekunde.

MadMax-FHEM

#1522
Zitat von: sinus61 am 22 November 2018, 18:10:15
Gerade mal ausgetetet, die Frage "Alexa wie warm ist es", eine Routine schaltet per ha-bridge einen Dummy, ein Notify auf den Dummy führt ein "get ECHOACCOUNTDEVICE settings" aus.
Dann das Notify auf das Voice Reading:

echo_.*:voice:..* {
if ($EVENT =~ m/wie warm ist/) {
fhem "set $NAME speak Die Temperatur beträgt [au_Wetterstation:temperature2] Grad";
}
}

Die Antwort kommt jetzt vom jeweils angesprochenem Echo mit einer Verzögerung von ca. 1 Sekunde.

Danke für's Testen! :)  ;)

EDIT: sogar noch eleganter! Ohne "Merker-Dummy"...

Ist das nun (viel) schlechter/langsamer als die Skript-Variante?

Auf jeden Fall sol, dass nichts blockieren muss, kein Timer "hoch geschraubt" werden muss oder überhaupt etwas umgebaut werden müsste...

Also rein mit fhem-Bordmitteln... ;)

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)

pfeffi

#1523
mal ne dumme Frage zwischendurch 
was muss in der datei  stream.m3u genau stehen
irgendwie werde ich aus der Anleitung in diesem Punkt nicht schlau
so steht es in der Anleitung:
Somit kann am lokalen Ort eine Datei "stream.m3u" mit eigenem Inhalt abgelegt werden. In die lokale Datei muss dann nur noch ein neuer Pfad eingetragen werden, der wiederum auf eine lokale MP3 Datei zeigt, in welcher der Text 2 Speech Text ist.
also gebe ich in die stream.m3u    " http://192.168.178.68/ECHO_G090U507837314AQ.mp3 "   ein.
wenn ich dann eine playlist oder playownmusic  auswähle wird immer nur der Inhalt von ECHO_G090U507837314AQ.mp3
wiedergegeben  egal was ich dort eingebe.
was mache ich falsch

awel

Zitat von: sinus61 am 22 November 2018, 18:10:15
Gerade mal ausgetetet, die Frage "Alexa wie warm ist es", eine Routine schaltet per ha-bridge einen Dummy, ein Notify auf den Dummy führt ein "get ECHOACCOUNTDEVICE settings" aus.
Dann das Notify auf das Voice Reading:

echo_.*:voice:..* {
if ($EVENT =~ m/wie warm ist/) {
fhem "set $NAME speak Die Temperatur beträgt [au_Wetterstation:temperature2] Grad";
}
}

Die Antwort kommt jetzt vom jeweils angesprochenem Echo mit einer Verzögerung von ca. 1 Sekunde.

Danke allerseits, das funktioniert! Es ist nur minimal langsamer als das Script, damit kann man bei den non-Blocking Vorteilen prima leben.

In dem Zusammenhang: Kann es sein, dass der Speak-Befehl nicht mit der normalen Lautstärke, sondern mit der Alarm- bzw. Weckerlautstärke erfolgt? Absicht? Das "normale" "sprich mir nach" und das Script machen das nicht, da wird der Text in der normalen Lautstärke ausgegeben.

Gruß Achim

michael.winkler

Zitat von: awel am 22 November 2018, 23:23:35
Danke allerseits, das funktioniert! Es ist nur minimal langsamer als das Script, damit kann man bei den non-Blocking Vorteilen prima leben.

In dem Zusammenhang: Kann es sein, dass der Speak-Befehl nicht mit der normalen Lautstärke, sondern mit der Alarm- bzw. Weckerlautstärke erfolgt? Absicht? Das "normale" "sprich mir nach" und das Script machen das nicht, da wird der Text in der normalen Lautstärke ausgegeben.

Gruß Achim
Ja die Sprachausgabe über speak wird mit der Lautstärke vom Alarmvolumen angespielt wenn die größer des normalen Volume ist.Steht so auch in der Doku

sash.sc

Zitat von: sinus61 am 22 November 2018, 18:10:15
Gerade mal ausgetetet, die Frage "Alexa wie warm ist es", eine Routine schaltet per ha-bridge einen Dummy, ein Notify auf den Dummy führt ein "get ECHOACCOUNTDEVICE settings" aus.
Dann das Notify auf das Voice Reading:

echo_.*:voice:..* {
if ($EVENT =~ m/wie warm ist/) {
fhem "set $NAME speak Die Temperatur beträgt [au_Wetterstation:temperature2] Grad";
}
}

Die Antwort kommt jetzt vom jeweils angesprochenem Echo mit einer Verzögerung von ca. 1 Sekunde.
Hört sich gut an.

Kannst du mal eine genaue Anleitung schreiben, wie was angelegt und definiert werden muss?

Danke schonmal

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

MadMax-FHEM

#1527
@sash.sc:

Steht doch eigentlich genau und wie ich finde ausführlich genug zum Nachbauen in dem Zitat...

Was ist unklar?

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)

pfeffi

unklar ist das es nicht funktioniert
wenn ich eine playlist oder ownmusic wiedergeben will
wird immer nur die mp3 datei wieder gegeben
in der ist aber immer der letzte Text der tts ausgabe

MadMax-FHEM

@pfeffi: die Anmerkung war nicht für dich/dein Problem...

Sondern an sash.sc gerichtet...
...ganz normaler "Unterhaltungs-Flow": Frage -> Antwort (gut in dem Fall Hinweis und Gegenfrage ;)  )

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)