Alexa.sh v5.11 (stable) - Sprachausgabe und Fernsteuerung für Amazon Echo

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von blackhole » 13.07.2020, 22:00

Timichino hat geschrieben:
13.07.2020, 21:07
Ich nochmal :)
Habe noch etwas Geduld gezeigt und bis eben gewartet.

Nun habe ich auf 2FA umgestellt.
Funktioniert nun ohne Probleme.
Danke!

Sehr schön, so soll es sein. Gerne geschehen. ¯\_(ツ)_/¯

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von blackhole » 14.07.2020, 15:24

blackhole hat geschrieben:
09.07.2020, 09:59
Ich habe diese neue Option eben in das bereits vorhandene Skript get_lastalexa.sh integriert, so dass die Ausgabe nun nicht mehr nur beispielsweise "Echo Wohnzimmer" lautet, sondern eben beispielsweise "Echo Wohnzimmer: Fenseher einschalten". D.h. "lastalexa" wird mit "lastcommand" kombiniert, entsprechend aufbereitet und in der zugehörigen SysVar ausgegeben.

Das wurde zwischenzeitlich getestet und für gut befunden. Die Erweiterung von get_lastalexa.sh wird somit Bestandteil der nächsten Version werden.

hm4jojo
Beiträge: 72
Registriert: 22.06.2020, 17:41
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 2 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von hm4jojo » 14.07.2020, 19:31

Hallo Zusammen!

Ich bin noch in der Orientierungsphase.
Was mir auffällt ist folgendes:
Aufrufe der bash-Dateien funktionieren bei mir (RM) nicht.
z.B.
[qoute]
# Check (or get) cookie file
. alexa.sh -a > /dev/null
[/qoute]
geht nicht. Aber
[qoute]
# Check (or get) cookie file
./alexa.sh -a > /dev/null
[/qoute]
geht.

Nach der Anpassung bekomme ich endlich auch die Ausgabe in der console (Terminal), die hier im Forum beschrieben sind.
Leider wird kein Cookie angelegt. Auch bekomme ich "/usr/bin/oathtool: not found als Fehlermeldung.

Frage: Muss ich da noch was installieren?
Auch frage ich mich, die ich die Codes für SET_MFA_SECRET bekommen kann?
In meinem Amazonkonto bekomme ich nur eine 6-stellige Zahl.
Wo habe ich einen Denkfehler?

Gruß
hm4jojo

mskrause
Beiträge: 167
Registriert: 13.10.2018, 20:02
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 13 Mal
Danksagung erhalten: 19 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von mskrause » 14.07.2020, 20:11

hm4jojo hat geschrieben:
14.07.2020, 19:31

Auch frage ich mich, die ich die Codes für SET_MFA_SECRET bekommen kann?
Der Erhalt des MFA Secret wird auf der Seite von "Hersteller" https://blog.loetzimmer.de/2017/10/amaz ... -echo.html ab Eintrag Update 2019-07-08 gut beschrieben...

Gruß Marco

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von blackhole » 14.07.2020, 20:13

hm4jojo hat geschrieben:
14.07.2020, 19:31
Auch bekomme ich "/usr/bin/oathtool: not found als Fehlermeldung.

Das ist keine große Überraschung nach deiner fehlerhaften Manipulation. Lass bitte einfach die Finger vom Code, der passt schon.
Halte dich -anders als bisher- wirklich genau an die Installationsanleitung, dann wird auch alles gut.
Das haben schon viele User vor dir geschafft und du bekommst das sicherlich auch hin.

hm4jojo hat geschrieben:
14.07.2020, 19:31
Wo habe ich einen Denkfehler?

In der PN mit Alexa.sh-Paket und Installationsanleitung steht auch drin, was zu tun ist, falls etwas nicht funktioniert.
Mache also deine Änderungen rückgängig und schicke mir einfach die gefragten Ausgaben per PN.
Der Fehler in deiner Installation ist dann ganz schnell gefunden.

Timichino
Beiträge: 48
Registriert: 07.01.2017, 19:19
Hat sich bedankt: 16 Mal
Danksagung erhalten: 2 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von Timichino » 14.07.2020, 22:37

Hallo,
ich benutze den Parameter -lastalexa um herauszufinden welche Licht Gerwerke an bzw. ausgeschaltet werden.
Über die Echo Namen weiß ich, in welchem Zimmer Lampen geschaltet werden müssen.
Ich habe zwei ALexa Routinen, "Schalte das Licht an bzw. aus".
Dadurch wird eine Variable ALexa_Licht auf true/false gesetzt.

Danach wird ein Skript ausgelöst, welches via Lastalexa den angesprochenen Echo identifiziert und dann alle Lichter im jeweiligen Gewerk ausschaltet.
Bisher habe ich den Rückgabewert direkt in einer Variable gespeichert und dann via Skript alle zugehörigen Aktoren ausgeschaltet.
Zur Ermittlung habe ich dies verwendet:

Code: Alles auswählen

var Alexa =  "sh /usr/local/addons/alexa/alexa_remote_control.sh -lastalexa &";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(Alexa);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var Ausgabe =  dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().ToLatin();
Ausgabe = Ausgabe.Trim();
Nun habe ich auf

Code: Alles auswählen

! system.Exec("/usr/local/addons/alexa/get_lastalexa.sh &");
umgestellt und anschließend die Sysvar ausgelesen.
Problem ist nun, dass die Sysvar nicht rechtzeitig aktualisiert wurde und immer der letzte Wert ausgelesen wird. So steht man in der Küche und das Lich im Wohnzimmer geht aus, da "get_lastalexa.sh" dort zuletzt aufgerufen wurde ;)

Der obige Aufruf über die alexa.sh funktioniert leider nicht, ich muss immer direkt auf die alexa_remote_control.sh gehen.

Gibt es eine Möglichkeit das mit der Alexa.sh zu machen?

Grüße und Danke vorab!

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von blackhole » 15.07.2020, 06:56

Timichino hat geschrieben:
14.07.2020, 22:37

Code: Alles auswählen

! system.Exec("/usr/local/addons/alexa/get_lastalexa.sh &");

Ich gehe davon aus, dass du bei deinen Tests das führende Ausrufezeichen entfernt hast.
Ich gehe auch davon aus, dass du insbesondere den ersten Abschnitt der Anleitung ("alexa.sh, jq und oathtool") verstanden und umgesetzt hast.

Ansonsten sind in den beteiligten Skripten (get_lastalexa.sh und alexa.sh) keine künstlichen/zusätzlichen Verzögerungen eingebaut (v3.08).
Wir empfindlich/zeitkritisch dein Konstrukt in der Praxis ist kann ich allerdings nicht einzuschätzen.

Um dich schrittweise zu nähern, kannst du in deinem bisherigen HM-Script einfach einmal ...

Code: Alles auswählen

(...) /usr/local/addons/alexa/alexa_remote_control.sh -lastalexa (...)
... durch ...

Code: Alles auswählen

(...) /usr/local/addons/alexa/alexa.sh -lastalexa (...)
... ersetzen. Alle Parameter werden von alexa.sh an das Lötzimmer-Skript 1:1 durchgereicht und die Ausgaben werden nicht blockiert oder gefiltert. Du kannst das auch einfach durch Aufruf und Vergleich der Ausgaben in der Shell gegenprüfen.

Zu dem führenden "sh" vor einem Shell-Skript-Aufruf hatte ich hier ja schon mal was geschrieben. Das verursacht Herzbluten.
Schick mir auch mal die in der Installationsanleitung gefragten Ausgaben per PN.

Sweatchuck
Beiträge: 125
Registriert: 07.09.2016, 08:44
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von Sweatchuck » 15.07.2020, 08:24

blackhole hat geschrieben:
14.07.2020, 15:24
blackhole hat geschrieben:
09.07.2020, 09:59
Ich habe diese neue Option eben in das bereits vorhandene Skript get_lastalexa.sh integriert, so dass die Ausgabe nun nicht mehr nur beispielsweise "Echo Wohnzimmer" lautet, sondern eben beispielsweise "Echo Wohnzimmer: Fenseher einschalten". D.h. "lastalexa" wird mit "lastcommand" kombiniert, entsprechend aufbereitet und in der zugehörigen SysVar ausgegeben.

Das wurde zwischenzeitlich getestet und für gut befunden. Die Erweiterung von get_lastalexa.sh wird somit Bestandteil der nächsten Version werden.
Servus Blackhole,

kannst du da ggf. zwei Systemvariablen draus machen? Ich verwende aktuell die Rückgabe von lastalexa direkt in einem Skript um auf den angesprochenen Echo zu antworten.

Das wäre dann nicht mehr so einfach möglich. Alternativ kann ich natürlich deine vorherige Version weiter nutzen, finde aber die Möglichkeit den letzten Befehl einzusehen nicht schlecht.

Mit der bisherigen lastalexa-Rückgabe konnte ich es wunderbar umsetzen, auf meine Fragen direkt die Antwort auf dem angesprochenen Gerät zu bekomme. Super!

Gruß
Sweatchuck

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von blackhole » 15.07.2020, 08:33

Sweatchuck hat geschrieben:
15.07.2020, 08:24
Das wäre dann nicht mehr so einfach möglich ...
Mit der bisherigen lastalexa-Rückgabe konnte ich es wunderbar umsetzen, auf meine Fragen direkt die Antwort auf dem angesprochenen Gerät zu bekomme. Super!

Das ist verständlich.

Sweatchuck hat geschrieben:
15.07.2020, 08:24
kannst du da ggf. zwei Systemvariablen draus machen? Ich verwende aktuell die Rückgabe von lastalexa direkt in einem Skript um auf den angesprochenen Echo zu antworten.

Ja klar, mache ich.

Für v3.09 sehe ich dann diesbezüglich 3 Skripte vor (get_lastalexa.sh, get_lastcommand.sh und get_lastalexacmd.sh).
Letzteres wird dann die Kombination aus beiden vorgenannten Skripten sein und kann wahlweise verwendet werden.
Das Skript get_lastalexa.sh liefert somit dann auch in der nächsten Paketversion den gleichen Output wie bisher.

hm4jojo
Beiträge: 72
Registriert: 22.06.2020, 17:41
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 2 Mal

Re: Alexa.sh v3.08 - Sprachausgabe und Fernsteuerung für Amazon Echo

Beitrag von hm4jojo » 15.07.2020, 12:59

hm4jojo hat geschrieben:
14.07.2020, 19:31
Auch bekomme ich "/usr/bin/oathtool: not found als Fehlermeldung.
Das ist keine große Überraschung nach deiner fehlerhaften Manipulation. Lass bitte einfach die Finger vom Code, der passt schon.
Halte dich -anders als bisher- wirklich genau an die Installationsanleitung, dann wird auch alles gut.
Das haben schon viele User vor dir geschafft und du bekommst das sicherlich auch hin.
Nach Hinweis vom mskrause und Neuaufsetzen der Skripte aus Alexa.sh v3.08, läuft das ganze jetzt ohne Fehlermeldung bzw. mit Ausgabe.
Z.B.

Code: Alles auswählen

root@homematic-raspi:/usr/local/addons/alexa# ./check_cookie.sh 
Cookie is good - nothing to do.
15.07.2020 09:49 Uhr
Same content - nothing to do.
root@homematic-raspi:/usr/local/addons/alexa# 
Das einzige, was mich noch irritiert ist, dass der Eintrag "33 * * * * /usr/local/addons/alexa/check_cookie.sh > /dev/null" nicht im crontab drin bleibt, wenn ich den Befehl "/etc/init.d/S98crond restart" ausführe.
mit crontab -e habe ich die Zeile eingefügt. Mit crontab -l sehe ich die neue Zeile. Nach "/etc/init.d/S98crond restart"" veliere ich die neue Zeile.

Code: Alles auswählen

root@homematic-raspi:/usr/local/addons/alexa# crontab -l
0 * * * * /bin/setHWClock.sh >/dev/null 2>/dev/null
1 */6 * * * /bin/SetInterfaceClock
0 4 * * * /usr/sbin/logrotate /etc/logrotate.conf || logger -p error -t "logrotate" "logrotate aborted with error $?"
*/1 * * * * /bin/updateDCVars.tcl >/dev/null 2>/dev/null
7 0 * * * /bin/nice /bin/cronBackup.sh >/dev/null 2>/dev/null
0 3 * * 0 [ ! -e /etc/config/NoFSTRIM ] && /bin/nice /sbin/fstrim --all --quiet >/dev/null 2>/dev/null
0 2 * * * [ ! -e /etc/config/NoBadBlocksCheck ] && /bin/nice /bin/checkBadBlocks.sh >/dev/null 2>/dev/null
*/10 * * * * [ -d /media/usb0/measurement ] && /bin/nice /usr/bin/rsync -aogX --delete-after --no-whole-file --checksum /tmp/measurement/ /media/usb0/measurement/ >/dev/null 2>/dev/null
*/5 * * * * /usr/local/addons/mediola/bin/watchdog

root@homematic-raspi:/usr/local/addons/alexa# crontab -e
root@homematic-raspi:/usr/local/addons/alexa# crontab -l
0 * * * * /bin/setHWClock.sh >/dev/null 2>/dev/null
1 */6 * * * /bin/SetInterfaceClock
0 4 * * * /usr/sbin/logrotate /etc/logrotate.conf || logger -p error -t "logrotate" "logrotate aborted with error $?"
*/1 * * * * /bin/updateDCVars.tcl >/dev/null 2>/dev/null
7 0 * * * /bin/nice /bin/cronBackup.sh >/dev/null 2>/dev/null
0 3 * * 0 [ ! -e /etc/config/NoFSTRIM ] && /bin/nice /sbin/fstrim --all --quiet >/dev/null 2>/dev/null
0 2 * * * [ ! -e /etc/config/NoBadBlocksCheck ] && /bin/nice /bin/checkBadBlocks.sh >/dev/null 2>/dev/null
*/10 * * * * [ -d /media/usb0/measurement ] && /bin/nice /usr/bin/rsync -aogX --delete-after --no-whole-file --checksum /tmp/measurement/ /media/usb0/measurement/ >/dev/null 2>/dev/null
*/5 * * * * /usr/local/addons/mediola/bin/watchdog
33 * * * * /usr/local/addons/alexa/check_cookie.sh > /dev/null

root@homematic-raspi:/usr/local/addons/alexa# /etc/init.d/S98crond restart
Stopping crond: OK
Starting crond: OK

root@homematic-raspi:/usr/local/addons/alexa# crontab -l
0 * * * * /bin/setHWClock.sh >/dev/null 2>/dev/null
1 */6 * * * /bin/SetInterfaceClock
0 4 * * * /usr/sbin/logrotate /etc/logrotate.conf || logger -p error -t "logrotate" "logrotate aborted with error $?"
*/1 * * * * /bin/updateDCVars.tcl >/dev/null 2>/dev/null
7 0 * * * /bin/nice /bin/cronBackup.sh >/dev/null 2>/dev/null
0 3 * * 0 [ ! -e /etc/config/NoFSTRIM ] && /bin/nice /sbin/fstrim --all --quiet >/dev/null 2>/dev/null
0 2 * * * [ ! -e /etc/config/NoBadBlocksCheck ] && /bin/nice /bin/checkBadBlocks.sh >/dev/null 2>/dev/null
*/10 * * * * [ -d /media/usb0/measurement ] && /bin/nice /usr/bin/rsync -aogX --delete-after --no-whole-file --checksum /tmp/measurement/ /media/usb0/measurement/ >/dev/null 2>/dev/null
*/5 * * * * /usr/local/addons/mediola/bin/watchdog
root@homematic-raspi:/usr/local/addons/alexa# 
Gruß und Danke!
hm4jojo

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“