Page 1 sur 4

TTS Awox Striim Sound

Publié : 20 juin 2016, 12:07
par deennoo
Bonjour a tous.

J'ai une super enceinte connécté Awox Striim Sound, mais Awox ne fournit aucune API pour la controlé mise a par le protocole DLNA.

Elle a la fonction TTS, accesible dans une page internet :
tts striim sound.PNG
tts striim sound.PNG (6.62 Kio) Consulté 9765 fois
Comme vous le voyez : il faut taper un text dans une case sur une page au format html.

Cette page est accesible via : http://ipdelenceinte:34000/dashboard/player.html

Le code source de la section tts est ainsi :

Code : Tout sélectionner

<!-- Say Control -->
          <br/>
          <p class="lead">Say a custom message to the device.</p>
          <div class="row">
            <div class="col-lg-5 col-sm-10">
              <form id="form-say-msg" class="form-horizontal" role="form">
                <div class="input-group">
                  <input id="input-player-say-msg" type="text" class="form-control"
                         placeholder="enter your Message here...." maxlength="255" required>
                  <span class="input-group-btn">
                    <button   id="player-play-button"
                              class="btn btn-default btn-success"
                              type="submit">Say</button>
                  </span>
                </div>
              </form>
le text a entré est a mettre ici : placeholder="enter your Message here...."

Il y a surement un script qui pourrait "automatisé" une possible notification de domoticz vers cette page, une idée ?

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 12:27
par vil1driver
Salut,

A tout hasard, si tu tapes ceci tu obtiens le son ?

Code : Tout sélectionner

http://ipdelenceinte:34000/player.html?placeholder=toto

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 12:42
par deennoo
Ne fait pas planter mais ne fonctionne pas non plus.

Voici le code complet de la page, le placeholder TTS est dans : <!-- Say Control -->

Code : Tout sélectionner

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1" />
		<title>Player</title>
		<link href="assets/css/normalize.css" rel="stylesheet" />
		<link href="assets/css/bootstrap.css" rel="stylesheet">
		<link href="assets/css/main.css" rel="stylesheet">
		<link href="assets/css/docs.css" rel="stylesheet">
		<link href="assets/css/font-awesome.min.css" rel="stylesheet" />
		<script src="assets/js/modules/config.js"></script>
		<!--[if lt IE 9]>
			<script src="assets/js/libs/html5shiv.min.js"></script>
			<script src="assets/js/libs/respond.min.js"></script>
		<![endif]-->
		<style type="text/css">
			.max-sized {
				width: 80%;
			}
		</style>
	</head>
	
	<!-- The locales list template -->
	<script type="script/template" id="presets-list">
		<div class="container-fluid" id="presets">
		<%
			_.each(preset, function(item, key, list) {
		%>
		<div class="row vertical-align horizontal-align">
			<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1">
				<h2 class="list-group-item-heading"> <%= item.id %> </h2>
			</div>
			<div class="col-xs-3 col-sm-2 col-md-2 col-lg-2">
				<% if (item.thumbnail_uri != "") { %>
					<img class="thumbnail hidden-xs visible-sm visible-md visible-lg" height="100" 
						width="100" src="<%= item.thumbnail_uri %>"></img>
					<img class="thumbnail visible-xs hidden-sm hidden-md hidden-lg" height="50" width="50"
						src="<%= item.thumbnail_uri %>"></img>
				<% } %>
			</div>
			<div class="col-xs-5 col-sm-6 col-md-6 col-lg-5"> <%= item.title %> </div>
				<div class="col-xs-2 col-sm-3 col-md-3 col-lg-4">
					<button class="btn btn-primary btn-md" data-preset=<%= item.id %> data-cmd="play" 
						type="button"><i class="fa fa-play"></i></button>
					<button class="btn btn-primary btn-md" data-preset=<%= item.id %> data-cmd="store" 
						type="button"><i class="fa fa-floppy-o"></i></button>
				</div>
			</div>
			<%
				});
			%>
		</div>
	</script>
	
	<body>
		
		<!-- Meta element used for storing templates -->
		<div class="meta">
			<a href="#" id="presets-error-message" class="list-group-item">
				<h4 class="list-group-item-heading">An error occured</h4>
				<p class="list-group-item-text">Make sure that your device is properly connected to your Wi-Fi network.</p>
			</a>
		</div>
		
		<!-- Top navigation bar -->
		<nav class="navbar navbar-default navbar-fixed-top darkly" role="navigation">
			<div class="container-fluid">
				<div class="navbar-header">
					<a class="navbar-brand" href="index.html"><i class="fa fa-dashboard"></i> Panel</a>
					<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
						<span class="sr-only">Toggle navigation</span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
					</button>
				</div>
				
				<div class="collapse navbar-collapse" id="navbar-collapse">
					<ul class="nav navbar-nav navbar-right">
						<!-- Start dropdown menu -->
						
						<li class="hidden-lg hidden-md active"><a href="player.html"><i class="fa fa-music"></i> Player</a></li>
						<li class="hidden-lg hidden-md"><a href="audio.html"><i class="fa fa-sliders"></i> Audio</a></li>
						<li class="hidden-lg hidden-md"><a href="alarms.html"><i class="fa fa-clock-o"></i> Alarms</a></li>
						<script type="text/javascript">
						if (config_use_light == 1) { 
							document.write ("<li class= \"hidden-lg hidden-md\"><a href=\"light.html\"><i class=\"fa fa-lightbulb-o\"></i> Light</a></li>\n");
						}
						</script> 
						<li class="hidden-lg hidden-md"><a href="wifi.html"><i class="fa fa-signal"></i> Wi-Fi</a></li>
						<li class="hidden-lg hidden-md"><a href="system.html"><i class="fa fa-cog"></i> System</a></li>
						<li class="dropdown">
							<a href="#" class="dropdown-toggle" data-toggle="dropdown">Help <b class="caret"></b></a>
							<ul class="dropdown-menu">
								<li><a href="help.html">Help page</a></li>
								<li><a href="http://www.awox.com/fr/faq-support-awox/" target="_blank">FAQ</a></li>
								<li><a href="http://www.awox.com/fr/a-propos-awox/contact/" target="_blank">Contact</a></li>
								<li class="divider"></li>
								<li><a href="mailto:support@awox.com">Drop us a mail</a></li>
							</ul>
						</li>
					</ul><!-- End dropdown menu -->
				</div><!-- .navbar-collapse -->
			</div><!-- .container-fluid -->
		</nav>
		
		<div id="content" class="row">
			
			<!-- Sidebar -->
			<div class="col-md-2">
				<div class="bs-docs-sidebar hidden-print affix-top hidden-sm hidden-xs" role="complementary">
					<ul class="nav bs-docs-sidenav">
				
						<li class="active"><a href="player.html">Player</a></li>
						<li><a href="audio.html">Audio</a></li>
						<li><a href="alarms.html">Alarms</a></li>
						<script type="text/javascript">
						if (config_use_light == 1) { 
							document.write ("<li><a href=\"light.html\">Light</a></li>\n");
						}
						</script>
						<li><a href="wifi.html">Wi-Fi</a></li>
						<li><a href="system.html">System</a></li>
					</ul>
					<a class="back-to-top" href="#top"> Back to top </a>
				</div>
			</div>
			<!-- Main content -->
			<div class="col-md-10" role="main">
				<div class="container-fluid margin-bottom-md">
					<h1 class="page-header">Player</h1>
					<p class="lead">This page provides means for controlling the Player of the device.</p>

          <!-- Playback control -->
          <h2 class="margin-top-md margin-bottom-md">Control</h2>
          <p class="lead">Control the Playback of the device.</p>
          <div class="row state-overview" id="playback">
            <div class="col-lg-6 col-sm-12">
                <button id="player-prev-button" class="btn btn-primary btn-large" 
                        type="submit"><i class="fa fa-fast-backward"></i></button>
                <button id="player-play-pause-button" class="btn btn-primary btn-large" 
                        type="submit"><i class="fa fa-play"></i></button>
                <button id="player-stop-button" class="btn btn-primary btn-large"
                        type="submit"><i class="fa fa-stop"></i></button>
                <button id="player-forward-button" class="btn btn-primary btn-large"
                        type="submit"><i class="fa fa-fast-forward"></i></button>
              </div>
          </div>
          
          <!-- Preset control -->
          <h2 class="margin-top-md margin-bottom-md">Presets</h2>
          <div class="row">
            <div  id="presets_list" 
                  class="container-fluid hide">
              <h4 class="list-group-item-heading">Loading</h4>
              <p class="list-group-item-text">Please wait a few seconds ...</p>
            </div>
          </div>
          <!-- Play  Control -->
          <div class="row">
            <h2 class="margin-top-md">Direct Play a media</h2>
            <p class="lead">Play a custom URI to the device.</p>
          </div>
          <div class="row">
            <div class="col-lg-5 col-sm-10">
              <form id="form-play-uri" class="form-horizontal" role="form">
                <div class="input-group">
                  <span class="input-group-addon"><i class="fa fa-music"></i></span>
                  <input  id="input-player-uri" type="text" class="form-control"
                          placeholder="enter your URI here...." maxlength="255" required>
                  <span class="input-group-btn">
                    <button id="player-play-button"
                            class="btn btn-default btn-success"
                            type="submit">Play</button>
                  </span>
                </div>
              </form>
            </div>
          </div>

          <!-- Say Control -->
          <br/>
          <p class="lead">Say a custom message to the device.</p>
          <div class="row">
            <div class="col-lg-5 col-sm-10">
              <form id="form-say-msg" class="form-horizontal" role="form">
                <div class="input-group">
                  <input id="input-player-say-msg" type="text" class="form-control"
                         placeholder="enter your Message here...." maxlength="255" required>
                  <span class="input-group-btn">
                    <button   id="player-play-button"
                              class="btn btn-default btn-success"
                              type="submit">Say</button>
                  </span>
                </div>
              </form>
            </div>
          </div>
        </div>

      </div> <!-- Main content -->
    </div>
    <script data-main="assets/js/app/player-app.js" src="assets/js/libs/require.min.js"></script>
  </body>
</html>
en cliquant sur say, j'active un script qui donne :

Code : Tout sélectionner

 {id: "/Player/Say.json", status: "passed", response_code: 200}
id
:
"/Player/Say.json"
response_code
:
200
status
:
"passed"
j'ai aussi cette info :
Capture13.PNG
Capture13.PNG (63.84 Kio) Consulté 9747 fois
en faisant : http://192.168.0.67:34000/Player/Say.json

j'ai :

Code : Tout sélectionner

{
  "player": {
    "state": "stopped",
    "position": 1,
    "duration": 1
  },
  "id": "/Player/Say.json",
  "status": "passed",
  "response_code": 200
}

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 12:53
par vil1driver
dans la série je tatone.. ceci ?

Code : Tout sélectionner

http://192.168.0.67:34000/player.html?input-player-say-msg=toto

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 12:54
par deennoo
vil1driver a écrit :dans la série je tatone.. ceci ?

Code : Tout sélectionner

http://192.168.0.67:34000/dashboard/player.html?input-player-say-msg=toto
l'adresse n'etait pas bonne j'ai corrigé. idem la page ce charge mais rien ne passe (le toto n'apparait pas dans la case ou il faut saisir du text)

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 13:04
par vil1driver
dans chrome, F12 et onglet 'Network'

il y aurait un lien à s'afficher avec ton texte dedans, lorsque tu clic sur SAY ?

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 13:18
par deennoo
j'ai ceci :
Capture.PNG
Capture.PNG (123.67 Kio) Consulté 9731 fois
Si je comprend bien :
Appuyer sur say, active un script : say.js
ce script say.js lance un XMLHttpRequest qui va cherche le text, et qui donne :

from data :
{"msg":"test de parlage"}: en source
{"msg":"test de parlage"}: en parsed donc la meme chose.

mal heureusement URL encoded est vide

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 18:14
par vil1driver
je tentes de nouveau ma chance :D (tout sur une ligne)

Code : Tout sélectionner

curl -v -H "Content-Type: application/json" -X POST -d '{"msg":"test de parlage"}' http://192.168.0.67:34000/Player/Say.json

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 21:13
par deennoo
vil1driver a écrit :je tentes de nouveau ma chance :D (tout sur une ligne)

Code : Tout sélectionner

curl -v -H "Content-Type: application/json" -X POST -d '{"msg":"test de parlage"}' http://192.168.0.67:34000/Player/Say.json

Yeah That it !!

Voici le retour :

Code : Tout sélectionner

pi@raspberrypi ~ $ curl -v -H "Content-Type: application/json" -X POST -d '{"msg":"test de parlage"}' http://192.168.0.67:34000/Player/Say.json
* About to connect() to 192.168.0.67 port 34000 (#0)
*   Trying 192.168.0.67...
* connected
* Connected to 192.168.0.67 (192.168.0.67) port 34000 (#0)
> POST /Player/Say.json HTTP/1.1
> User-Agent: curl/7.26.0
> Host: 192.168.0.67:34000
> Accept: */*
> Content-Type: application/json
> Content-Length: 25
>
* upload completely sent off: 25 out of 25 bytes
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
< Content-Length: 76
< Connection: close
< Pragma: no-cache
< Cache-Control: no-store, no-cache, must-revalidate, max-age=0
< Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
< Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
< Access-Control-Allow-Origin: *
< Content-Type: application/json; charset=utf-8
< Date: Mon, 20 Jun 2016 19:12:14 GMT
<
{
  "id": "/Player/Say.json",
  "status": "passed",
  "response_code": 200
* Closing connection #0
Et le doux text arrive sur l'enceinte ! tu es trop trop fort !

aller maintenant un peu de boulot pour faire un ti script afin d'uiliser une des notification dispo sur domoticz (la html est déja utilisé par la gateway sms)

je venais de parler a mon coach, qui m avait conseillé fiddler2 : un soft qui capture toute les requetes venant de d'un pc, et de zyeuter si il y avait qq chose..

Re: TTS Awox Striim Sound

Publié : 20 juin 2016, 21:53
par deennoo
Premiere Solution de cochon mais fonctionnel :

Cree un script shell avec ceci dedans :

Code : Tout sélectionner

#!/bin/bash
curl -v -H "Content-Type: application/json" -X POST -d '{"msg":"text que vous voulez faire dire"}' http://ipdevotreenceinte:34000/Player/Say.json
Pour On 1 Pour Off

Puis les placer dans les actions On et Action OFF
Capture.PNG
Capture.PNG (61.74 Kio) Consulté 9692 fois
Seul limite, le script device twice fait jouer le son 2 fois.