NEWS
ALEXA spricht endlich beliebigen text !!!
-
hi mic,
ich bin nicht das hellste licht im programmieren - würdest du mir bitte kurz erklären (falls kurz möglich) warum du das global machst. ich mache das ähnlich wie du aber mit einen normalen blockly - hat das einen vorteil? alexa.rede ist ein bashscript, welches das alexa_remote_control_plain.sh nutzt.
-
Hi liv-in-sky,
würdest du mir bitte kurz erklären (falls kurz möglich) warum du das global machst `
Ich arbeite dann mit globalen Scripts Javascripts (JS), wenn ich auf diese von beliebigen anderen Scripts zugreifen möchte.
Im Prinzip ähnlich wie Du, wenn Du "alexa.rede.sh" ausführst, das ist ja quasi auch global verfügbar.
Zu meiner Vorgehensweise:
Ich habe Datenpunkte angelegt, einer heißt z.B. "tunein_current_station" (also Radiosender). Diese Datenpunkte werden überwacht mit einem nicht globalen Script (JS). Diese Datenpunkte spreche ich auch mit Alexa an.
var strObjPathB = 'javascript.0.mic.cloud-trigger.tunein_current_station'; on({id: strObjPathB, change: "any"}, function (obj) {
In diesem nicht globalen Script führe ich dann den gewünschten Code aus wenn sich der Datenpunkt ändert. In diesem Fall wird, sobald "3" in den Datenpunkt eingetragen wird, bei mir der Radiosender 1Live auf der Überall-Gruppe von Alexa gespielt.
G_AlexaTunein('Überall', strStationID);
(strStationID ist in dem Fall dann "s100198" für den Sender 1Live. G_AlexaTunein() führt die Funktion im globalen Script aus, das u.a. eben den exec() für "alexa_remote_control.sh" enthält.
In dem Script schalte ich auch noch den Receiver gleich mit ein.
Vorteil für mich: mein globales Script macht alles für mich, ich muss mich nicht mehr darum kümmern, wie der exec()-Befehl aufgebaut sein muss etc., um das "alexa_remote_control.sh" entsprechend zu steuern. D.h. ich kann das so beliebig einfach erweitern.
Ich bin allerdings erst seit ein paar Monaten bei ioBroker, die Fortgeschrittenen und Profis hier würden das wahrscheinlich noch deutlich eleganter lösen
-
Guten Abend könnte mir jemand verraten wie ich die globale Funktion aufrufe. `
Hi Niko,
funktioniert es denn, wenn Du ohne der globalen Funktion die exec() direkt ausführst?
Also z.B.
exec("bash /opt/iobroker/xy/alexa_remote_control.sh -d Wohnzimmer -e speak:'Das ist ein Test'");
(Pfad etc. natürlich anpassen, und vorausgesetzt, alexa_remote_control.sh funktioniert, wenn Du das z.B. mit Putty testest.)
Mir fällt außerdem auf, dass Du in Deinem Beispiel ein Alexa-Gerät mit "Echo Wohnzimmer" bezeichnest, heißt das wirklich so, also mit "Echo " vorangestellt? Das könnte zum Problem führen, ich hatte auch gemeint, "Echo" und "Alexa" dürfen in den Gerätenamen nicht enthalten sein.
-
Hi,
ja wenn ich die exec so ausführe klappt das ohne Probleme.
bin jetzt gerade durch dich auf die Lösung gekommen.
Hab den Namen "Echo Wohnzimmer" nochmal in Anführungszeichen gesetzt.
Also :
G_AlexaSayIt('"Echo Wohnzimmer"', 'Das ist ein Test');
So funktioniert es jetzt, werde aber bei Gelegenheit die "Echos" umbennen. Wußte nicht das es damit zu Problemen kommen kann.
Super das es jetzt klappt.
-
hi mic,
vielen dank für die ausführliche erklärung
-
Funktioniert wunderbar, danke für die Beschreibung wie man das nutzt
Ich habe es ohne alexarede.sh gemacht und mir das als Vorlage für die einzelnen anderen Scripte in Blockly vorbereitet.
So muss ich nur noch einen Textblock editieren.
der erste Textblock im Screenshot
bash /opt/iobroker/alexaTalk/alexa_remote_control.sh -d
Es müssen die Leerzeichen unbedingt mit eingefügt werden sonst klappts nicht
Blockly Export :
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="W%hp(PL8C~/lyy-KyyEK" x="38" y="38"><field name="COMMENT">bash /opt/iobroker/alexaTalk/alexa_remote_control.sh -d Wohnzimmer -e speak:'Guten Abend, Meister'</field>
<next><block type="schedule" id="-v.JH~cM[EfD@no?]].k"><field name="SCHEDULE">* * * * </field>
<statement name="STATEMENT"><block type="exec" id="[bZ%PACuS/qXQnM,JH%X"><mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG">log</field>
<value name="COMMAND"><shadow type="text" id="xA}H!7RUZownpg(GHv]S"><field name="TEXT">text</field></shadow>
<block type="text_join" id="/2tm:tVFv(@hH3(IqEW"><mutation items="5"></mutation>
<value name="ADD0"><block type="text" id="8fy9?O!/2OS7lh.~08|"><field name="TEXT">bash /opt/iobroker/alexaTalk/alexa_remote_control.sh -d</field></block></value>
<value name="ADD1"><block type="text" id="siK:tK;BvQRP/@MpHU!"><field name="TEXT">Wohnzimmer</field></block></value>
<value name="ADD2"><block type="text" id="*)ZS3UU6GgA
M_))36?"><field name="TEXT"> -e speak:'</field></block></value>
<value name="ADD3"><block type="text" id="0fOFO4Z]o_MZ6cg#Z;8"><field name="TEXT">Your Text Here!</field></block></value> <value name="ADD4"><block type="text" id="5)VlH?bM
tUbC3Q::0[~"><field name="TEXT">'</field></block></value></block></value></block></statement></block></next></block></xml>Grüße Tom
-
Leider funktioniert es bei mir nicht.
Ich bin wie von Mic beschrieben vorgegangen.
Weder als JS noch direkt in putty kommt eine Ausgabe.
Rufe ich im Terminal alexa_remote_control_plain.sh -d Wohnzimmer -e speak:'endlich kann ich frei reden' aus, kommt nur:
-bash: alexa_remote_control.sh: Kommando nicht gefunden.
Bestimmt nur eine Kleinigkeit für euch…Danke schon mal!
-
Mach mal ein./ beim Aufruf davor
-
versuch mal im directory den befehl :
chmod +x alexa_remote_control.sh
damit machst du die datei ausführbar
-
Leider funktioniert es bei mir nicht.
Ich bin wie von Mic beschrieben vorgegangen.
Weder als JS noch direkt in putty kommt eine Ausgabe.
Rufe ich im Terminal alexa_remote_control_plain.sh -d Wohnzimmer -e speak:'endlich kann ich frei reden' aus, kommt nur:
-bash: alexa_remote_control.sh: Kommando nicht gefunden.
Bestimmt nur eine Kleinigkeit für euch…Danke schon mal! `
Bist du im Verzeichnis wo die .sh-Datei liegt?Befehl lautet: bash alexa_remote_…...
-
Vielen Dank für eure Hilfe!
mit ./ davor oder auch mit bash, wird das Skript ausgeführt. Ich kann mich nur leider nicht anmelden, vermute, dass liegt an der Zwei-Faktor-Anmeldung?
Email und Kennwort habe ich natürlich
im Skript vorher hinterlegt.
chmod, hatte ich bereits gemacht, vielen Dank aber trotzdem!
-
Bei mit läufts auch iregendwie nicht, er sendet bei mir immer nur an die App, nicht aber an die Echos.
Hat jemand eine idee warum das so ist?
root@odroid:/opt/iobroker/xy# bash alexa_remote_control_plain.sh -d ALL -e speak:'Test' sending cmd:speak:Test to dev:ALL type:XXXXXXXXXXX serial:XXXXXXXXXXXXXXXXXXXX customerid: Sequence command: Alexa.Speak
Gruß Christian
-
versuch es doch mal ohne "ALL" und probiere nur einen echo.
ich musste z.b eine neue multigruppe machen, da die existierende nicht funktionierte.
-
Super. Hat nach Anleitung von MIC sofort funktioniert. Großes Dankeschön.
Habe jeden Alex Speaker separat angesteuert und (noch) keine 2nd Factor Auth.
-
versuch es doch mal ohne "ALL" und probiere nur einen echo.
ich musste z.b eine neue multigruppe machen, da die existierende nicht funktionierte. `
Ja hatte ich Probiert, lief auch nicht.
Gruppen habe ich keine, sind diese erforderlich?
Gruß Christian
-
Leider funktioniert es bei mir nicht.
Ich bin wie von Mic beschrieben vorgegangen.
Weder als JS noch direkt in putty kommt eine Ausgabe.
Rufe ich im Terminal alexa_remote_control_plain.sh -d Wohnzimmer -e speak:'endlich kann ich frei reden' aus, kommt nur:
-bash: alexa_remote_control.sh: Kommando nicht gefunden.
Bestimmt nur eine Kleinigkeit für euch…Danke schon mal! `
Bist du im Verzeichnis wo die .sh-Datei liegt?Befehl lautet: bash alexa_remote_…... `
Ja in dem Verzeichnis bin ich.
Ich habe die alexa_remote_control_plain.sh in dem Verzeichnis mit der alexa_remote_control.sh freigabe hat es nicht funtioniert.
Edit:
Ich habe jetzt die alexa_remote_control.sh drauf und die plain.sh gelöscht.
Nun bekomme ich folgende meldung:
root@odroid:/opt/iobroker/xy# bash alexa_remote_control.sh -d all -e speak:'Test' ERROR: unkown device dev:all
Ich habe eine Gruppe "überall" erstellt, damit geht es auch nicht. Device name der Echos geht auch nicht….
Nochmal Edit:)
Nun geht es, mit "ALL" mit Großschrift läufts aber Geräte einzeln ansprechen geht nicht, kann man sich irgendwie die Geräte anzeigen lassen? Laut App ist der Name Christians Echo ´...
Gruß Christian
-
wenn du einen echo namen mit leerzeichen hast, müssen die in anführungszeichen im bash gesetzt werden - ansonten bedeutet es : der device name ist "christians" und "echo" ist ein weiterer parameter
–> bash alexa_remote_control.sh -d "christians echo"-e speak:'Test'
so nebenbei:
umlaute und leerzeichen würde ich im allgemeinen nie bei namen für geräte oder sonstiges benutzen - macht immer wieder mal probleme
-
wenn du einen echo namen mit leerzeichen hast, müssen die in anführungszeichen im bash gesetzt werden - ansonten bedeutet es : der device name ist "christians" und "echo" ist ein weiterer parameter
–> bash alexa_remote_control.sh -d "christians echo"-e speak:'Test'
Es funkt, besten dank für eure Mühe
so nebenbei:
umlaute und leerzeichen würde ich im allgemeinen nie bei namen für geräte oder sonstiges benutzen - macht immer wieder mal probleme `
Danke.
Gruß Christian
-
Hallo!
Danke für das Super Script.
Hab es mit der Anleitung gestern nach gebaut.
Ich hab gestern Abend die Zwei-Faktor Authentifizierung kurz deaktiviert um das Script bzw. die Sprachausgabe zu testen.
War erfolgreich.
Ich hab danach die Zwei-Faktor Authentifizierung wieder aktiviert, danach funktionierte es noch immer.
Heute in der Früh und nach der Arbeit funktioniert die Sprachausgabe noch immer.
Mal schauen wie lange.
Wollte ich euch nur kurz mitteilen Falls noch jemand das Problem mit der Zwei-Faktor Authentifizierung hat.
Lg Praxxos
Edit: Funktioniert seit heute nicht mehr, cookie dürfte abgelaufen sein.
-
Es tut mir echt leid, ich steh voll auf dem Schlauch … ich habe alles soweit erledigt, aber er sagt mir, er könne sich nicht einloggen da Cookies nicht existieren und ich soll es mit dem Browser versuchen. Wie kann ich über Putty oder dem ioBroker einen Browser öffnen und mich bei Amazon einloggen?
Sorry für die Frage.