Wieso funktioniert der Download aus post #1 nicht mehr? Bei mir klappt es... und da ist die aktuelle Datei inkludiert.
Sonos mittels PHP Skript steuern
Einklappen
X
-
Habe dir ein PN mit den Musterdateien geschickt. Loxone hat Sie runtergenommen.
Wieso funktioniert der Download aus post #1 nicht mehr? Bei mir klappt es... und da ist die aktuelle Datei inkludiert.Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank! -
-
Hallo,
vielen Dank an alle hier im Thread.
Bis jetzt klappt das ganz gut. Jedoch fehlt mir ein Play Befehl.
Der Player soll mit Lautstärke 30 und dem Radiosender 1 (Paloma) aus dem Array starten. Leider finde ich den Befehl nicht. Lauter / Leiser / Mute klappt alles.
Kann mir da einer helfen?
Array
'radiostations' => array(
'Paloma' => 'tunein.com/radio/Radio-Paloma-s97169/?streamid=3859877',
https://rap.ip/index.php?zone=bad&volume=30&(spiele Radio Paloma) <- das fehlt.
## L‰dt die angegebene Radioliste unter "Meine Radiosender" aus Sonos
http://DEINE_IP/DEIN_VERZEICHNIS/son...TION&volume=15
Das habe ich gefunden, jedoch bezieht sich das auf die Radioliste in sonos und nicht in der config.php
Noch besser wenn ich das direkt aus Loxone machen könnte.
GrußZuletzt geändert von deepinpowder; 17.03.2016, 17:37.Kommentar
-
Bin ich wirklich der einzige bei dem die Interpreteninfo nicht mehr geht? Fehler wie beschrieben im Post 152.
Habe heute Testes halber die Scripts auf einem anderen Apache Webserver laufen lassen. Auch hier, es läuft alle einwandfrei bis eben die Interpreteninfo. Dies wiederum füllt mir auch das Logfile innert 3 Tagen auf mehrere 100MB. hmmpf :-(Kommentar
-
ganz ehrlich nutze ich die Datenübermittlung an Loxone nicht da ich keinen großen Mehrwert darin sehe. Von daher habe ich nicht viel Zeit zum Testen verschwendet, aber mir erade noch einmal den Code angeschaut und optimiert. Du hast eine PN mit einer aktualisierten sonos2.php, bitte teste mal und gib mir feedback ob es klappt.Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Kann den Fehler mit der Interpreteninfo nachvollziehen.
Mir ist außerdem noch aufgefallen, dass alles Skripte nach der 1.3.2 bei mir ca. 10 Sekunden Bedenkzeit beim Start brauchen, während die Datei mit der 1.3.2 praktisch sofort abgespielt wird nachdem ich das Kommando im Browser eingegeben habe. Hättest Du eine Idee für die Ursache?Zuletzt geändert von uli; 22.03.2016, 19:30.Kommentar
-
Ja, ab V1.3.2 habe ich den rampto Type sleep vor der t2s programmiert, ihn aber auf 10 Sek. beschränkt statt der fest programmierten 17 Sek. Ich fand es so angenehmer als den abrupten Stop und dann die t2s abzuspielen.Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Ich bekomme leider trotz der vielen leider nicht ganz ausführlichen Anleitung den Titel/Interpreten nicht in Loxone in den Texteingangsverbinder.. habe das Skript seit gestern am laufen auf einem Raspi ... Nun meine Frage hier an der Stelle hat jemand vielleicht Loxone Musterdateien die ich so übernehmen könnte damit es läuft -... Gruss ChrisKommentar
-
Guude zusammen,
in post# 1 habe ich ein Update mit Fehlerbehebung und neuen Funktionen platziert. Folgende Fehler sind behoben:- Titel/Interpret Info für Loxone
- Zusätzlicher Parameter in der config.php um die Zeitspanne vor dem Ansagen einer t2s zu konfigurieren (entweder ca. 10 Sekunden oder abrupt)
- s2s (sonos-to-speech) Unterbricht abrupt den laufenden Song, sagt Titel/Interpret an, setzt Song abrupt fort. Am besten nur mit IVONA nutzen da hier die Englischkentnisse besser sind. Das s2s habe ich auf einen Taster gelegt, da meine Jungs gerne Song raten spielen und ich jetzt nicht mehr dauernd nachschauen muss ;-)
Gruß OliverAnmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Das mit dem komplexen Titel/Interpreten-Thema kann ich auch gut nachvollziehen. Vielleicht lässt es sich aber doch noch einfach beheben, dass bei den Sendern die keine Infos senden kein Fehler ins Log geschrieben wird. Ich nehme zumindest an, dass das damit zusammenhängt:
2016-03-26 15:40:02 - Fehler: [8], Undefined offset: 1 in /volume1/web/sonos/sonos2.php in line 930, Variable:Array -
Ich habe es jetzt so programmiert das bei Radio der Sender an alle Eingänge übertragen wird. Auch der Vorschlag mit den geänderten Errorhandling ist kompliziert, da es ein php error ist der über komplexe Regeln und Programmierung eliminiert werden müsste. Update poste ich bald
-
Hier meine Rückmeldung zur 1.4.8:
Die Funktion zum prompten Abspielen ist klasse und funktioniert einwandfrei! Bei der Zufallswiedergabe wird nun auch der zuletzt gespielte Track fortgesetzt und nicht die Liste neu geshufflet, einwandfrei!!!
Zwei Sachen sind mir jedoch noch aufgefallen:
- Wenn man eine Playliste pausiert hat und eine Textnachricht abspielt wird danach nicht wieder pausiert, sondern die Wiedergabe fortgesetzt
- Wenn man den Titel und den Interpreten getrennt ausgeben lässt, werden diese beim pausieren nicht auf leer gesetzt bzw. die Meldung "Es wird gerade nichts gespielt" ausgegeben
Kommentar
-
Habe mit Ivona noch ein Problem. Kriege nichts abgespielt. Habe auch die Anpassungen im Post 160 gemacht, ohne Erfolg.
Getestet habe ich wie folgt über den Browser:
http://x.x.x.x/sonos/sonos2.php?zone...Hans&text=Dies ist ein Test&volume=30
Kriege dabei folgenden Output im Browser:
_getConfig(); $this->_main(); } protected function _getConfig() { include 'config.php'; $this->_config = $config; } function _main() { $akey = $this->_config['access_key']; $skey = $this->_config['secret_key']; } static $utc_tz; function save_mp3($text, $filename, $language, $voice, $rate="medium", $volume="loud") { $payload['Input'] = array(); $payload['Input']['Data'] = urldecode($text);//{"Input":{"Data":"Hello world"}}' $payload['Parameters']['Rate'] = $rate; $payload['Parameters']['Volume'] = $volume; $payload['Voice']['Name'] = $voice; $payload['Voice']['Language'] = $language; $payload = json_encode($payload); $mp3 = $this->get_mp3($payload); file_put_contents($filename, $mp3); } function get_mp3($payload) { #global $skey, $akey; if( !self::$utc_tz ) { self::$utc_tz = new \DateTimeZone( 'UTC' ); } $datestamp = new \DateTime( "now", self::$utc_tz ); $longdate = $datestamp->format( "Ymd\\THis\\Z"); $shortdate = $datestamp->format( "Ymd" ); // establish the signing key { $ksecret = 'AWS4'.$this->_config['secret_key']; $kdate = hash_hmac( 'sha256', $shortdate, $ksecret, true ); $kregion = hash_hmac( 'sha256', 'eu-west-1', $kdate, true ); $kservice = hash_hmac( 'sha256', 'tts', $kregion, true ); $ksigning = hash_hmac( 'sha256', 'aws4_request', $kservice, true ); } // command parameters $params = array( 'host' => 'tts.eu-west-1.ivonacloud.com', 'content-type' => 'application/json', 'x-amz-content-sha256' => hash( 'sha256', $payload ), 'x-amz-date' => $longdate, ); $canonical_request = $this->createCanonicalRequest( $params, $payload ); $signed_request = hash( 'sha256', $canonical_request ); $sign_string = "AWS4-HMAC-SHA256\n{$longdate}\n$shortdate/eu-west-1/tts/aws4_request\n" . $signed_request; $signature = hash_hmac( 'sha256', $sign_string, $ksigning ); $params['Authorization'] = "AWS4-HMAC-SHA256 Credential=" .$this->_config['access_key']. "/$shortdate/eu-west-1/tts/aws4_request, " . "SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, " . "Signature=$signature"; $params['content-length'] = strlen( $payload ) ; /* * Execute Crafted Request */ $url = "https://tts.eu-west-1.ivonacloud.com/CreateSpeech"; $ch = curl_init(); $curl_headers = array(); foreach( $params as $p => $k ) $curl_headers[] = $p . ": " . $k; curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TCP_NODELAY, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false ); // debug opts { curl_setopt($ch, CURLOPT_VERBOSE, true); $verbose = fopen('php://temp', 'rw+'); curl_setopt($ch, CURLOPT_STDERR, $verbose); $result = curl_exec($ch); // raw result rewind($verbose); $verboseLog = stream_get_contents($verbose); #echo "Verbose information:\n
", htmlspecialchars($verboseLog), " \n"; } return $result; } private function createCanonicalRequest( Array $params, $payload ) { $canonical_request = array(); $canonical_request[] = 'POST'; $canonical_request[] = '/CreateSpeech'; $canonical_request[] = ''; $can_headers = array( 'host' => 'tts.eu-west-1.ivonacloud.com' ); foreach( $params as $k => $v ) $can_headers[ strtolower( $k ) ] = trim( $v ); uksort( $can_headers, 'strcmp' ); foreach ( $can_headers as $k => $v ) $canonical_request[] = $k . ':' . $v; $canonical_request[] = ''; $canonical_request[] = implode( ';', array_keys( $can_headers ) ); $canonical_request[] = hash( 'sha256', $payload ); $canonical_request = implode( "\n", $canonical_request ); return $canonical_request; } } ?>
Die Berechtigungen stimmen. Im config.php habe ich den Access key und secret key korrekt gesetzt
Jemand eine Idee?Kommentar
-
hmm.. Alle meine Befehle werden ohne slash zwischen php und dem Fragezeichen aufgerufen. Diese funktionieren so auch einwandfrei. Den Aufruf habe ich aus deinem readme und dann einfach noch entsprechend angepasst. Muss was anderes sein.
Nachtrag:
Habe die Stimme aus dem Aufruf entfernt und im Config File auf VoiceRSS umgestellt.
http://x.x.x.x/sonos/sonos2.php?zone...sage&text=Dies ist ein Test&volume=30
Funktioniert einwandfrei.
Stelle ich wieder zurück auf Ivona und probiere wieder mit dem gleichen Command, bekomme ich wieder die gleiche Meldung wie im Post 177.
Muss also an Ivona liegen.. ?Zuletzt geändert von daintree; 25.03.2016, 14:14.Kommentar
-
Dein Link klappt 1:1 bei mir. Hast du den secret und access key korrekt kopiert oder vielleicht ein Leerzeichen am Ende drin?
der die Sprache verändert? de-DE wäre für deutsch, andere unterstützt das Skript nichtZuletzt geändert von Liver_64; 25.03.2016, 16:14.
-
-
Ich nutze ein Raspi. Curl Support ist gemäss phpinfo enabled und aktiv. Habe nun auch den Secret und Access Key nochmals neu erstellt auf dem Ivona Portal und diese dann im config.php neu eingetragen. Alles Leider ohne Erfolg. Muss allenfalls sonst noch was auf dem Raspi installiert werden?Kommentar
Kommentar