Amazon Alexa Text to Speech (TTS) übers Smart Home nutzen
Wir zeigen Dir, wie Du eine TTS-Funktion mit Amazons Alexa umsetzen und in Dein Smart Home integrieren kannst.
Eine Text-to-Speech-Funktion (TTS) haben wir bereits in einem vergangenen Tutorial über das Bose Soundtouch System umgesetzt. Heute wollen wir diese Funktionsweise auch mit Amazons Alexa verwirklichen. Dabei werden wir über einen HTTP-Aufruf die Alexa-Geräte mit unserer Smart Home Zentrale verbinden und ins Smart Home einbauen. So lassen sich danach Texte über die URL eingeben, die anschließend vom jeweiligen Gerät ausgegeben werden.
In diesem Beitrag haben wir uns von einer Anleitung von Alexander Noack von Lötzimmer inspirieren lassen, der bereits eine Amazon Alexa Fernsteuerung mit Shell umgesetzt hat. Da Shell jedoch nicht mit allen Smart Home Systemen kompatibel ist, werden wir die Umsetzung über PHP machen sodass man die Alexa Geräte einfach über einen HTTP Request steuern kann.
Unser Dank geht an:
Die Einrichtung des Skripts
Um das PHP-Skript nutzen zu können, benötigst Du einen PHP Webserver. Wir nutzen dazu eine Einrichtung über eine Synology Nas Station. Du kannst aber auch einen Webserver über einen Raspberry Pi installieren.
Außerdem benötigt Du folgende ZIP-Datei, die zwei Dateien enthält. Die alexa.php und die cookies.txt, welche wir im Anschluss überschreiben werden. Diese beiden Dateien kannst Du nun in Deinem Webserver hochladen und extrahieren:
Hier findest Du die ZIP-Datei!Hier findest du das Ganze via GitHub:
https://github.com/RalfsDev/AlexaTTS/tree/master
Wenn man die Datei nun aufruft, erscheint noch eine Fehlermeldung, da die cookies.txt-Datei noch nicht überschrieben wurde. Um das umzusetzen, benötigst Du ein passendes Add-on für Firefox oder Google Chrome. Wurde dieses passend installiert, wird Dir in Deinem Browser in der Übersichtleiste, rechts in der Ecke ein Icon angezeigt.
Als nächstes laden wir die cookies.txt-Datei unter der Amazon-Alexa-Seite herunter. Dafür müssen wir uns zunächst einloggen. Im Anschluss speichern wir diese Datei und ersetzen sie gegen die bereits auf dem Server gespeicherte. Wenn Du die Datei nun aufrufst, tauchen auch die passenden Echo-Geräte in der Übersicht auf.
Wie bereits erwähnt, ist die Session nicht dauerhaft aktiv. Wichtig ist, dass Du Dich nicht manuell ausloggst, dann würde die Datei beispielsweise ungültig werden. Um eine Gültigkeit der Session garantieren zu können, muss man regelmäßig (alle 4 bis 8 Wochen) die Cookies erneuern und kann so die Funktionalität aufrecht erhalten.
Alexa TTS nutzen
Das Skript ist nun funktionsfähig. Wenn Du nun einen HTTP-Request eines Echo-Geräts aufrufst, wird Dein Text über Alexa ausgegeben. Diesen HTTP-Aufruf kannst Du anschließend über Dein Smart Home System ansprechen.
Wir hoffen, Dir gefällt diese Funktion genauso gut wie uns. Sollte sich an der Login-Problematik noch etwas ändern, halten wir Dich hier bei uns natürlich auf dem Laufenden!
Wenn Du gerne wissen möchtest, wie Du Alexa Text-to-Speech über Dein Fibaro Home Center umsetzen kannst, haben wir hier ein passendes Video für Dich vorbereitet!
Update (28.04.2020)
Für alle, die Probleme mit den Cookies haben, am besten noch einmal bei alexa.amazon.com ausloggen.
Danach sollten alle bisher gesetzten Cookies für die Seite in den Einstellungen unter “Cookies und Website-Daten” gelöscht werden.
Bei Firefox geht man dann auf den Button “Daten verwalten” und im sich anschließend öffnenden Fenster nach “alexa” suchen und alle bisherigen Cookies löschen.
Anschließend neu einloggen. Hier darauf achten, dass der Haken bei “Angemeldet bleiben” gesetzt wurde. Dann die Cookies.txt neu herunterladen und in den alexa_tts-Ordner kopieren.
Anschließend sollte der “Your cookie information has expired”-Fehler nicht mehr auftauchen und die Alexa-Geräte gelistet werden.
die cookies.txt muss wohl cookies_chrome.txt heißen? Aber auch nach dieser Anpassung funktioniert es bei mir nicht. Gibt es noch einen Trick? Gruß Alex
Hallo,
wegen der cookies.txt da hatte ich das falsche ZIP hochgeladen. Aber ist wirklich nur der dateiname der anders ist. Welchen Browser hast du benutzt um die Cookies.txt zu erstellen? Ein Paar User haben mit google chrome probleme aber nicht alle mit Firefox habe ich noch keine klage gehört – magst du es mal mit Firefox versuchen?
Ein Problem könnte noch sein das du trotz deutchem Useraccount einen Amazon.com account hast dann muss in der Alexa.php $basic_url = ‘https://alexa.amazon.de’; angepasst werden in .com – du erkennst das daran wenn du wenn du dich bei alexa.amazon einloggst du auf die .com seite weitergeleitet wirst.
Also ich bin ratlos, Firefox, neu eingeloggt, Browser und Sprache geändert, trotzdem bekomme ich die Meldung das irgendwas nicht stimmt und das komplette Array wird mir ausgegeben.
Hallo,
hast du vllt. Skype dann können wir mal zusammen drüber schauen? Leider ist das von außen schwer zu sagen bei meiner Hardware und bei meinem Amazon Account läuft es ohne Probleme – so wie bei vielen anderen auch. Dann füge mich mal hinzu: https://join.skype.com/invite/h6oYoPzOrgkL
Leider nicht, ich würde dir aber mal einen Screen anhängen wie es aktuell (umstellung auf .com) aussieht. Vielleicht hilft dir das schon weiter? (php7)
https://image.ibb.co/mcTTUy/alexa_tts.jpg
Got the same error don’t know what to do!!!!!!!
Please help
Hallo
bei mir funktioniert es auch nicht.
Es kommt immer die Meldung:
Your Browser is Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Your User Lang is: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
When you have any trouble with this script open Alexa.php and replace this two data in the alexa.php -> user_lang and browser
an unknown error has occurredNo Device Name (device_name) selected!
egal ob ich chrome oder firefox nutze
Hallo,
hast du vllt. Skype dann können wir mal zusammen drüber schauen? Leider ist das von außen schwer zu sagen bei meiner Hardware und bei meinem Amazon Account läuft es ohne Probleme – so wie bei vielen anderen auch. Dann füge mich bitte einfach mal hinzu: https://join.skype.com/invite/h6oYoPzOrgkL
Hallo
Habe den gleichen Fehler.
Gibt es eine Lösung dafür?
Hallo Nico,
Erstmal vielen Dank für die super Idee. Ich hatte auch schon mit dem shell script von loetzimmer experimentiert. Das hat anfangs gut geklappt, war letztendlich leider nicht sehr zuverlässig. Da bin ich dann auf deine Seite hier gestoßen.
Leider bekomme ich auch die Meldung “No Device Name (device_name) selected!” und
einen php Fehler in zeile 103: “Trying to get property of non-object in /var/www/html/alexa.php on line 103”. Aber das ist wohl ein Folgefehler.
Ich bin nicht der php Spezialist, habe aber schon mal etwas versucht zu debuggen. Irgendwas passt in dem curl-Befehl nicht:
Wenn ich die “$get_devices = curl_exec($ch)” als print_r ausgebe, wird mir die Anmeldemaske von Amazon Echo angezeigt.
Ist bei Chrome und Firefox das gleiche Ergebnis.
Hast Du noch eine Idee ?
Hallo,
ich habe eine Vermutung, kann es sein das du einen englisch sprachigen Amazon Account hast?
Wenn ich die “$get_devices = curl_exec($ch)” als print_r ausgebe, wird mir die Anmeldemaske von Amazon Echo angezeigt.
-> Wird die Seite auf deutsch oder englisch ausgegeben?
Falls ja, versuch mal $basic_url = ‘https://alexa.amazon.de’; das .de durch .com zu ersetzen.
Das Problem was das Script hat ist folgendes: Deine Cookies.txt ist nicht correct bzw. der Login klappt nicht.
Ich prüfe zwar if(strpos($get_devices,”Anmelden”)!==false) {
ob das Cookie falsch okay ist und der Login geklappt hat aber nur auf deutsch – ich pass das heute Abend noch an.
hi, I have the same issue line 103. my account was created on Amazon. fr I have changed it in the code but that don’t work. have you solved it? thanks
Hallo. Danke für das Tutorial . Nach dem Sonos gestern die offene API zu gemacht hat ist dies ein guter Weg um den Großteil meiner TTS Ausgaben mit dem HC weiter zu nutzen… Statt über die Sonos dann halt jetzt über die Alexas .. Hätte nicht gedacht das ich das hinbekomme aber Dank der Schritt für Schritt Anleitung hat es super hingehauen . Gibt es einen Weg – wie auch immer – zb. über einen Server – auch bestimmte Musik starten zu lassen ? Ausgelöst vom HC ? Bisher hatte ich es zb. das um 20.30 ein Lied abgespielt wurde – für 1 Minute – dann kann die TTS Durchsage: es ist spät – ab ins Bett … TTS funktioniert – nur die Musik nicht . bzw kann man sie ja über Routinen starten lassen , aber dann läuft es ja 3- 4 Minuten … Hat evtl. jemand eine Idee ? Gruß
Hallo,
ich arbeite an einer V2 aber ich muss auch ehrlich sagen das es noch ein paar Wochen dauern kann. Ich habe gerade noch soviele Kleinigkeiten hier offen die ich erst fertig machen will und auch muss 😀 wenn ich will das mein Smart Home wieder läuft – gerade für die letzten Videos musste ich doch das ein oder andere “ausbauen”.
Nico,
funktioniert auch auf einem Raspi wunderbar. Danke für die Weiterentwicklung des Shell-Skripts. Die Lösung ist etwas userfreundlicher ist (auch wenn das manuelle Kopieren der Cookies noch etwas nervig ist).
Was das manuelle Kopieren angeht: Im Umfeld von Home Assistant wird da auch gerade eifrig entwickelt,hinter dem nachfolgenden Link kannst Du Infos dazu finden, wie mit node.js das Auslesen der Cookies automatisiert werden kann (scheint schon zu funktionieren). Evtl. eine Anregung für Verbesserungen?
https://community.home-assistant.io/t/echo-devices-alexa-as-media-player-testers-needed-it/58639
Meine Bitte: Könntest Du das Skript auf github weiterentwicklen, so dass man es einfacher paketieren kann?
Wir überlegen nämlich gerade das (Experimentell) als Sonos-Alternative für die User von homeean.de (APIs für homee Smart Home Gateway User auf einem Raspi) anzubieten und ich trommle gerade etwas für das Skript in der homee community…
Ich will Dich ermutigen das Skript generell weiter zu entwicklen (also auch hinsichtlich der Media-Player-Funktionalitäten), das ist eine einfache Lösung für alle Gateways, die Webhooks (URL-Aufrufe) unterstützen.
Danke für Deinen Einsatz
Hallo,
ich arbeite schon an einer V2 😉 wird aber noch ein wenig dauern. Das Problem an der node.js Lösung ist halt das, dass oft schon wieder garnicht so einfach ist für einen normalen User. Ein PHP Webserver bekommt man relativ einfach noch hin node & co sieht dann schon wieder ganz anders aus.
Aber wie gesagt ich verfolge das relativ aktiv -> auch aus eigen Interesse 😀
Dann solltest Du Dir homeean mal ansehen 😉
https://homeean.de
Ein Grossteil unserer Pakete basiert auf node.js und für unsere User ist die Installation nicht mehr als ein Copy&Paste auf ein Standard-Raspian-Image..
ich schau mir das mal an 🙂 – ist ja ähnlich wie iobroker oder ?
Ne, leider noch ohne GUI, aber wir haben das auf dem Radar. Einige der bereitgestellten APIs und Tools lassen sich allerdings auch von anderen Gateways als homee nutzen (diejenigen mit einer REST-API).
Dann solltest Du Dir homeean mal ansehen 😉
Ein Grossteil unserer Pakete basiert auf node.js und für unsere User ist die Installation nicht mehr als ein Copy&Paste auf ein Standard-Raspian-Image..
Hallo, ich habe es gestern auf meinem Raspi installiert und finde es super was du hier schon umgesetzt hast. Was mir aufgefallen ist, dass die Sprachausgabe während der Musikwiedergabe etwas leiser ausgegeben wird und dadurch durchaus überhört wird. Gibt es da eine Möglichkeit die Lautstärke für die Sprachausgabe zu ändern und optimaler Weise hinterher wieder auf die Ausgangslautstärke zurückzusetzen?
Hallo,
das funktioniert in meiner V2 schon ich bin aber diese Woche unterwegs – ich lade das mit der Lautstärke in der kommenden Woche mal hoch.
noch mal eine bitte: Kannst Du das Skript auf Github publizieren und von dort releasen (dann musst Du auch dein Zip-File nicht mehr up2date halten – du verlinkst einfach das letzte Package auf Github)? Das macht uns die Arbeit auch beim Paketieren etwas einfacher (und Du kannst die Feature-Requests und Bugmeldungen im Github verwalten)…
Hallo,
ja kann ich machen
Hello ,and thanks for this great job.
I m facing issues when I want to process the tts : here what is written at the bottom of the web page :
Your “csrf” cookie is not available! The request can not be processed – your cookie.txt is wrong
I had to modify some things in the script regarding the language. Can You tell me where I have to modify the parameters ? Are there multiple parameters to modify at mutiple places in the script?
I hope you understand my poor english because I’m French and not fluent in english nor in german.
Thanks.
Hey elvis,
no Problem. Try to change the this value in your alexa.php:
$basic_url = ‘https://alexa.amazon.de’;
to your url. I think in fr the url must be .com but you see it when you logged in.
and change please on line 33 if(strpos($check_cookie_file_data,”.amazon.de”)!==false) {
this amazon.de also
Thanks for your quick answer.
That s what i did but I forgot one “.fr” somewhere in the script.
It now works !!!
awesome 🙂 – enjoy text to speech
Hi, ich nutze das Script schon ein paar Wochen und bin begeistert.
Gibt es schon einen Download für die Version mit Lautstärkeanpassung?
Kommt denke ich kommende Woche 🙂
Gibts was Neues zur Version 2.0 🙂
Hallo Nico, Du hattest im IP-Symcon Forum gepostet, dass Du eventuell ein Tutorial für IP-Symcon erstellen willst.
Ab IP-Symcon 5 sind nun neue Funktionen ergänzt worden unter anderem auch Text to Speech vom Webfront bzw. aus einem Skript aus IP-Symcon heraus.
Siehe
https://www.symcon.de/forum/threads/37976-Sprachausgaben-%C3%BCber-Amazon-Alexa-TTS?p=363595#post363595
Du kannst das gerne mit der Demo testen, falls noch Dinge im Readme fehlen können die gerne noch ergänzt werden.
Hallo Nico
Heute wollte ich mich endlich mal daran machen Alexa zu mehr zu bewegen und habe dein Tutorial getestet
Dabei kam dann dieses heraus
https://gyazo.com/2e010c7fe9da73b283d42f2cdea4f170
auf meinem Raspberry läuft PHP7.
Gibt es da schon eine Lösung?
Grüße Sven
Hier wird immer von einer V 2.0 geschrieben die eine Lautstärkenanpassung ermöglicht.
Nico wollte die im August hochladen , kann mir einer sagen wo ich diese finde ??
Danke
Hallo, darf man noch mit der Version 2.0 rechnen 🙂
Hallo Nico,
danke für deine Mühen und die interessante Lösung.
Gehe ich Recht in der Annahme, dass das ganze nur funktioniert, wenn der PHP-Server im lokalen Netzwerk ist? Ich hab einen PHP-Server bzw. Webspace gemietet, der beim Betreiber im Rechenzentrum steht. Da läuft meine Homepage drüber. Bekomme ichnes mit dem auch ans laufen?
VG
Michael
Hallo,
vielen Dank für das Tolle Skript, funktioniert einwandfrei.
Gibt es einen Grund, warum du bestimmte deviceFamily’s ausgeschlossen hast?
Viele Grüße
Björn
hello,
i need help please. I’ve installed all the scripts php
When i tried to execute the alexa php with devide id and txt it send ok and a result is “your text wa sent to …
but nothing happened in my echo plus. No notifications, i’ve already activated the notifications in the alexa app
thanks for your help
to begin, its very nice (i hope) because i have installed the script php to my server and placed the script LUA in my HC2
if i start the php script i get a blank screen. i altered the php in .com and .nl but no change there. when i run the script LUA it says OK en send it tot text, but nothing happens. also change line 104 php into, what i see in amazon devices, Kitchen Alexa. but again nothing. please can you help me
Hello great script (i think)
i can’t get it to work
iam from holland get from php:
Your Browser is Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
Your User Lang is: nl,en-US;q=0.7,en;q=0.3
When you have any trouble with this script open Alexa.php and replace this two data in the alexa.php -> user_lang and browser
The following devices are available in your Amazon account
Notice: Trying to get property of non-object in C:\xampp\htdocs\alexa.php on line 103
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\alexa.php on line 103
Name serialNumber deviceFamily deviceType deviceOwnerCustomerId HTTP REQUEST URL
No Device Name (device_name) selected!
i change the browser and lang also replace both .de into .com (also in .nl and .co.uk)
but still the same result
do i have to mannage the :
foreach($user->devices as $mydata) {
if($mydata->deviceFamily == ‘WHA’) continue;
if($mydata->deviceFamily == ‘VOX’) continue;
if($mydata->deviceFamily == ‘FIRE_TV’) continue;
if($mydata->deviceFamily == ‘TABLET’) continue;
thanks for now
Hat jmd. Eine Lösung für die Implementierung auf einem homematic System? Würde tts gern für gewisse Programme innerhalb der ccu3 nutzen. Ansonsten ziemlich geil gemacht. Vielen Dank
Hi. Finde ich irgendwo die V2 zum Download?
Wie kann ich die Lautstärke ändern?
Danke!!!
Hallo! Vielen Dank für das super Tutorial – es läuft bei mir auf Anhieb. Bin auch daran interessiert die Lautstärke bei der Ausgabe anpassen zu können – gibt es hier schon was neues 😉 ??
Liebe Leser,
HIERMIT FUNKTIONIERT ALEXA ZUM VORLESEN PROBLEMLOS !!!
Ich habe einen Alexa-Skill entwickelt, der mit einer ebenfalls von mir programmierten Handy-App zusammenarbeitet. Man kann nahezu beliebig große Texte auf dem Handy per Zwischenablage in die App kopieren und abschicken. Danach erhält man einen dreistelligen Code, welchen man Alexa angibt. Einfach “Alexa, starte Lies meinen Text” sagen und nach einer kurzen Einführungsinfo den Code in einzelnen Ziffern nennen. Dann zurücklehnen und zuhören. Alternativ kann man auch sagen “Alexa, frage Lies meinen Text nach vorlesen” und kann direkt die 3 Ziffern angeben.
Ideal zum Hören von Geschichten, Emails, SMS, Whatsapp-Nachrichten, Web-Seiten, einfach allem, was sich in die Zwischenablage kopieren lässt.
Die Demo-App begrenzt den Text auf 400 Zeichen, die Pro-App, die für 0,99€ zu kaufen ist, setzt keine Grenzen – bis auf die des Handys für die Anzahl der Zeichen in einem Textfeld und wo die liegt, habe ich bisher nicht herausgefunden ;-).
Downloads:
Demo: https://play.google.com/store/apps/details?id=appinventor.ai_rolfoster2008.AlexaLiesMeinenText_Demo
Pro: https://play.google.com/store/apps/details?id=appinventor.ai_rolfoster2008.AlexaLiesMeinenText
Viel Spaß damit und viele Grüße,
Rolf
UPDATE zu Lies meinen Text, Alexa
Funktionen im Kurz-Überblick:
– fast beliebig lange Texte aus der Zwischenablage in die App kopieren
– Alexa-Skill aufrufen, 3-stelligen Verbindungscode eingeben und Text anhören
– Bis zu 10 Texte im Handy für späteres Vorlesen speichern (wurde aufgrund eines User-Wunsches hinzugefügt)
Mit dieser App und dem zugehörigen Alexa-Skill names “Lies meinen Text” kann man fast endlos lange Texte aus der Zwischenablage des mobilen Geräts in die App kopieren und von Alexa vorlesen lassen. Dies können z.B. Internetseiten, lange SMS-, Mail- oder Whatsapp-Nachrichten sein. Man startet dazu den Skill und nennt einen dreistelligen Zahlencode aus dem Handy und schon heisst es Zurücklehnen, Augen zu und entspannt zuhören statt lesen müssen.
Mit dem neuesten Update lassen sich bis zu 10 solcher Texte innerhalb der App speichern und nach Belieben zum Vorlesen aktivieren. So kann man tagsüber interessante Texte speichern und abends anhören.
Der treibende Grund für die Entwicklung war der Fakt, dass es im Internet keine solch einfach zu handhabende App gibt.
Im Google Playstore finden Sie die App unter:
https://play.google.com/store/apps/details?id=appinventor.ai_rolfoster2008.AlexaLiesMeinenText_Demo&hl=de
und
https://play.google.com/store/apps/details?id=appinventor.ai_rolfoster2008.AlexaLiesMeinenText&hl=de
Letzters ist die Pro-Version und kostet 0,99€. Die Demo-Version beschränkt die Sprachausgabe auf maximal 400 Zeichen.
Ich hatte ein paar Anlaufschwierigkeiten mit Chrome, anstatt die cookies.txt per Erweiterung zu speichern, habe ich sie aus dem Popup kopiert und als Textdatei manuell gespeichert. So wurde Sie dann auch vom Script direkt angenommen 😀
PS
Wer wie ich gerne vor einer Meldung einen Benachrichtigungston hätte: Einfach ein Schimpfwort, oder mehrere, benutzen… Alexa piept diese aus und so hat man dann “BEEEEEEEEEP – Update zu Was auch immer” 🙂
Hallo,
ich habe die Lösung super einfach implementieren können. Ein PHP Server läuft auf der Synology 🙂
Gibt es noch das angesprochene Update auf V2.0?
Hi! Ich bekomme es nicht zum laufen. Der Webserver auf Synology läuft und //alexa_tts/alexa.php zeigt mir auch die Geräte an.
Wenn ich aber eine HTTP REQUEST URL (http://192.168.178.20//alexa_tts/alexa.php?device_name=echo_kueche&text_tts=test) im Browser öffne bekomme ich eine Fehlermeldung und es findet keine Sprachausgabe statt.
Wo liegt das Problem?
Fehlermeldung:
Unfortunately, an error has leaked!Array ( [url] => https://alexa.amazon.de/api/behaviors/preview [content_type] => [http_code] => 401 [header_size] => 268 [request_size] => 2252 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.243247 [namelookup_time] => 5.5E-5 [connect_time] => 0.096955 [pretransfer_time] => 0.196804 [size_upload] => 435 [size_download] => 0 [speed_download] => 0 [speed_upload] => 1788 [download_content_length] => 0 [upload_content_length] => 435 [starttransfer_time] => 0.243224 [redirect_time] => 0 [redirect_url] => [primary_ip] => 52.94.220.236 [certinfo] => Array ( ) [primary_port] => 443 [local_ip] => 192.168.178.20 [local_port] => 42112 [request_header] => POST /api/behaviors/preview HTTP/1.1 Host: alexa.amazon.de Cookie: x-amzn-dat-gui-client-v=1.24.206595.0; at-acbde=Atza|IwEBIPZ3xXmutezd5TZAv95X5S3J8ikSeZ_vw7-opuRtr-ULLJB16e8A5h5o_9ySVnW5Mh62I3WZno026_rNNwqWnQoBj5bDtDhHQMObg64ouaWAlu3mUdb-pimK3phh9x0vSHQHi–Cl24zXj6nghxD-Z3kOQtlDXdzaYRIEKu0ozEpIfYQ8Py8S05merzmAk8RE3vW-3DH7hSOPtkyyModBMPts5PrwO73CEu3geDiMWl2BSfSmokqfhALsxCP01HHdrcxC3CThgfUDqzrfjIvG_gDuj3A8_WRmd7WYf9sZ7fNURfTVJfGP7WKxKYKpLisz6CxKFLdG00zo97bLrhDlXj7d_5-4eppycbd9B_6Eosu4QrHs32k9v576ZeiaMl_qCXwJfmOt8az-l1Fy4l98yJr4uAwLxwnbJpYRH__tS3UllYnw1FlNDE5L1OsWaC6XUw; sess-at-acbde=”h2T+kvWHxEeLB2SPTPu6WSWZBWn0aPDF94Sqae3swE4=”; session-id=257-9535401-1746846; session-id-time=2205330802l; session-token=”mhaz61HDahHLHWKmJJEGTLsGx2BH+33AbEebQM823yexMAQ6hgtncXy/xLVLW5XNcel97NseDh00WcZKHt59P1UT6lTpC4TMmkffpItiw3u61YBVwuAQ0QMw0NUwCu78fqyK/k5L0ZdEibAVXQKBb+UTkQHbblujmN72u6I8JnRIEjXYs6qZwrTlRQR/MKMU9Zd8LguwOrIOvN43njZmMaiJCvSRRZG9NFyzcdd7yv4=”; sst-acbde=Sst1|PQEkAhX_-30ZEZ353ZujrKLvC3qVx8Jvjutjz1AHpLrsStgWNCcsfoL7r0podpG4lsWZlI3LEb2YNNYRSaR-6K7sDIi8v63tg7zv08ISZUj5xLtjhZGu8f4U8uVtPxveoQEZ1m1esiaTTvgyz9voFutfXY9w4-wtZg5EzQyROvffNrrihLbS_vQT77FN3TqR8y550Yu6uszhjauYZrtv4MF88wbp51zSaTrKa80WZXB7zMxiuHds-mk-VXMhKztciI0YmInZ7fTMenHgc-bcRnqxeDoFoapwfehFsE1vTEnG-mtjoxI6Mrw3oyoUC6VRVGmLwUgBYxonemp6r_1603vGgw; ubid-acbde=260-4774592-0579911; x-acbde=”AfeOw1NXI2cdanjTY1Zvsc@L1oPXD6TO” User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0 Accept: */* Accept-Encoding: deflate, gzip DNT: 1 Connection: keep-alive Content-Type: application/json; charset=UTF-8 Accept-Language: de,nl-BE;q=0.8,en-US;q=0.5,en;q=0.3 Referer: https://alexa.amazon.de/spa/index.html Origin: https://alexa.amazon.de csrf: 1990036566 Cache-Control: no-cache Content-Length: 435 )
Hallo Nico,
Haben Sie die Klingelfunktion gesehen, die jetzt auf der Amazon-Website https://www.amazon.de/gp/product/B07Q2V2RGL verfügbar ist?
Die Website https://www.ijpuk.com bietet die Möglichkeit, virtuelle Türklingeln zu erstellen. Mit diesen können Sie entweder das Alexa-Gerät wie eine echte Türklingel läuten lassen, aber auch Alexa-Routinen ausführen, mit denen benutzerdefinierte Ankündigungen ausgelesen werden können.
Hallo,
ich bekomme es auch nicht zu laufen ….
Habs hinbekommen!
Spitze! Ich habe den Artikel oben dahingehend aktualisiert.
Viele Grüße
Ralf
Hallo,
kann ich statt TTS auch “Alexa-Befehle” übermitteln?
Die Idee dahinter wäre, dass ich statt einer sprachlichen Ausgabe die Aktion dahinter triggere.
Ich bräuchte es um das Kamera Bild einer Netatmo Kamera einzublenden. In meinem Fall klingelt es an der Tür und es soll direkt das Kamera Bild erscheinen.
Aber die Möglichkeiten wären grenzlos 😉
Danke für Ihre Antwort
Matthes
Hallo Matthes,
der Netatmo Skill oder Monocle Skill auf der Alexa ist keine Alternative? Anschließend dann in der Alexa App eine Routine einrichten. Ich habe aktuell leider keine Netatmo Kamera hier, aber zum Beispiel beim Ring-Skill öffnet automatisch direkt die Kamera-Ansicht, wenn jemand klingelt. Eine weitere Alternative wäre IFTTT. Die Alexa API kann natürlich schon noch wesentlich mehr. Das Skript müsste man dahingehend entsprechend anpassen, damit kein TextToSpeech übermittelt wird, sondern zum Beispiel ein Skill gestartet wird.
Viele Grüße
Ralf
Hello, could you help me?
I encounter the error of the empty array with the following info:
Notice: Trying to get property ‘devices’ of non-object in /share/CACHEDEV1_DATA/Web/alexa.php on line 103
Warning: Invalid argument supplied for foreach() in /share/CACHEDEV1_DATA/Web/alexa.php on line 103
Ein PHP Script aus der Zip installieren?
Wo ist das GitHub/Git? Wo kann ich mir den Code zuerst anschauen?
Da hast du natürlich recht. Der Artikel war auch schon etwas veraltet.
Habe die PHP auf GitHub eingestellt:
https://github.com/RalfsDev/AlexaTTS/tree/master
Die cookies.txt muss dann selbst noch erstellt und in den entsprechenden Ordner gelegt werden.
Beste Grüße
Ralf
Hi Ralf,
no idea for my pb :
Invalid argument supplied for foreach() in /home/****/****l/****/****/alexa.php on line 109
///////
foreach($user->devices as $mydata)
{
if($mydata->deviceFamily == ‘WHA’) continue;
if($mydata->deviceFamily == ‘VOX’) continue;
if($mydata->deviceFamily == ‘FIRE_TV’) continue;
if($mydata->deviceFamily == ‘TABLET’) continue;
if (isset($device_name) && $device_name == clear_string($mydata->accountName))
{
$serialNumber = $mydata->serialNumber;
$deviceType = $mydata->deviceType;
$deviceOwnerCustomerId = $mydata->deviceOwnerCustomerId;
}
Thank you
Ich hatte auch das Cookie-Problem. Nach längerem Suchen habe ich die Lösung gefunden. In meiner Windows-/XAMPP-Umgebung wurde das abgespeicherte Cookies.txt nicht geladen. Ich musste daher im PHP-File die Zeilen 87 und 88 anpassen: das $cookies musste gegen realpath($cookies) ersetzt werden.
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath($cookies));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath($cookies));
Danach hat der Aufruf sofort funktioniert. Hoffe das hilft noch jemandem weiter!
Ergänzung zu meinem vorherigen Kommentar: durch die Änderung wurden die Geräte erfolgreich ausgelesen. Damit der ganze Request funktioniert musste ich dieselbe Änderung noch in den Zeilen 170, 213 und 214 vornehmen!
Gruß,
Philip
Hi,
bei mir will es gar nicht gehen. Ich lasse das ganze über mein WD MyCloud WebServer laufen. Wenn ich die Seite alexa.php aufrufe dann bekomme ich eine Ansicht wie auf GitHub aber ist Lokal.
Hatte jemand das Problem? Was kann ich dagegen machen?
Gruß
Pawel
Hi,
dank deines tollen Beitrages konnte ich Alexa prima aus meiner Hausautomation heraus sprechen lassen. Leider geht das seit einiger Zeit nicht mehr und ich bekomme beim Webaufruf immer folgende Fehlermeldung:
Your “csrf” cookie is not available! The request can not be processed – your cookie.txt is wrong
Ich habe die Coockies regelmäßig auf die gleiche Art und Weise aktualisiert und auch mehrfach mich abgemeldet, die Coockies gelöscht, neu angemeldet, neu die Datei ausgetauscht…
Meine Geräte werden mir auch vollständig angezeigt, nur Sprechen will Alexa wegen des vorgenannten Fehlers nicht mehr. Die alte Webseite alexa.amazon.de verweist nur noch auf die erforderliche App, aber eine “normale” Anmeldung auf amazon.de hat es bislang auch getan.
Lässt sich der Fehler irgendwie beheben? Oder hat sich das Sprechen lassen jetzt erledigt?
Gruß
Thomas