Bonjous à tous,
Sur un IPX V5 est il possible de créer a partir d’un Widget HTML du son soit en html ou js
du style mp3 comme un son de sirene ou alarme.
Merci d’avance
Bonjous à tous,
Sur un IPX V5 est il possible de créer a partir d’un Widget HTML du son soit en html ou js
du style mp3 comme un son de sirene ou alarme.
Merci d’avance
Bonjour Antarion,
si vous voulez un son de sirène, pourquoi ne pas brancher une sirène sur un relais de la V5?
Bonne journée
Bonjour grocrabe,
Oui je pense faire ça
mais j’ai essayé avant a partir d’un widget sans reussir mais je suis sûr qu’il y a une possibilité de lire un son mp3
Mais je n’y arrive pas …
Bonjour,
aujourd’hui il y a l’objet Player.
Il faudrait voir si c’est possible de créer une playlist particulière pour l’alarme, je n’ai pas exploré les possibilités de ce côté avec l’API.
Il y a peut être également une possibilité avec les enceintes Sonos. Pas exploré non plus.
Bonjour fgtoul,
Merci pour les réponses.
Bonne journée
Bonjour,
Je tente de faire le lien entre les infos du plugin Sonos depuis mon jeedom vers le module player afin de pouvoir controler mes enceintes depuis mes X-Display 2. J’arrive à transférer les infos de titre et auteur de jeedom vers l’IPX grace à une requete PUT en Curl en revanche je ne parviens pas à effectuer de Push vers jeedom depuis le module player, qui n’a qu’une sortie timelapse. Les IO, récupérable via l’API ne semblent pas non plus donner l’état de l’action et je ne peux donc pas non plus déclencher d’action (lecture ou autre) depuis jeedom.
J’ai tenté de rentrer l’IP de mon jeedom comme nom de serveur dans le module mais je sèche aussi sur cette piste. Auriez-vous d’autres idees?
GCE indique que le Player n’est compatible qu’avec IEST. En cherchant sur le net je vois que IEST fonctionne avec des requettes HTTP de type http://10.10.10.254/httpapi.asp?command=setPlayerCmd:play:http://pr320.pinguinradio.nl/listen.pls, 10.10.10.254 étant dans cet exemple l’IP indiquée dans la configuration du module player de l’IPX. Savez-vous s’il est possible d’émuler par exemple un serveur IEST et de rediriger ces requetes HTTP vers des URL de commandes de Jeedom?
On peut déclencher des Push grace à un scenario avec comme déclencheur le module Player, mais ça ne marche que pour la commande Pause/Play. Dommage.
Bonjour @Helethom, j’essaie de mettre en place le script donc tu parles sur l’autre discussion et je n’arrive pas à faire remonter les infos.
Est ce que tu vois un endrois où j’ai pu me planter stp?
Nom du scénario : Test Sonos SDB > IPX
- Objet parent : Salle de Bain
- Mode du scénario : all
- Programmation : */5 * * * *
- Evènement : #[Salle de Bain][Sonos SdB][Répéter statut]#
- Evènement : #[Salle de Bain][Sonos SdB][Muet statut]#
- Evènement : #[Salle de Bain][Sonos SdB][Aléatoire statut]#
- Evènement : #[Salle de Bain][Sonos SdB][Piste]#
- Evènement : #[Salle de Bain][Sonos SdB][Statut]#
ACTION
tag - Options : {"enable":"1","background":"0","name":"ip","value":"192.168.99.245"}//IP de l'IPX800
tag - Options : {"enable":"1","background":"0","name":"apikey","value":"apikey"} // API key de l'IPX800
tag - Options : {"enable":"1","background":"0","name":"ID_IPX800_Title","value":"524323"} // ID récupéré à l'aide de l'API DECK de l'IPX800
tag - Options : {"enable":"1","background":"0","name":"ID_IPX800_Artist","value":"524324"} // ID récupéré à l'aide de l'API DECK de l'IPX800
tag - Options : {"enable":"1","background":"0","name":"ID_IPX800_Random","value":"65968"} // ID récupéré à l'aide de l'API DECK de l'IPX800
tag - Options : {"enable":"1","background":"0","name":"ID_IPX800_Loop_Mode","value":"196683"} // ID récupéré à l'aide de l'API DECK de l'IPX800
tag - Options : {"enable":"1","background":"0","name":"ID_IPX800_Mute","value":"65964"} // ID récupéré à l'aide de l'API DECK de l'IPX800
tag - Options : {"enable":"1","background":"0","name":"String_SONOS","value":"[Salle de Bain][Sonos SdB]"}
CODE
(code) $tags = $scenario->getTags();
// Configuration de l'IPX800
$Config_IPX800 = array(
'ip' => $tags['#ip#'],
'apikey' => $tags['#apikey#']
);
// Données pour le Player
$Player_Data = array(
'Artist' => array(
'ipx800id' => $tags['#ID_IPX800_Artist#'],
'ipx800folder' => '/api/core/str/',
'sonosvalue' => cmd::byString('#' . $tags['#String_SONOS#'] . '[Artiste]#')->execCmd()
),
'Title' => array(
'ipx800id' => $tags['#ID_IPX800_Title#'],
'ipx800folder' => '/api/core/str/',
'sonosvalue' => cmd::byString('#' . $tags['#String_SONOS#'] . '[Piste]#')->execCmd()
),
'Random' => array(
'ipx800id' => $tags['#ID_IPX800_Random#'],
'ipx800folder' => '/api/core/io/',
'sonosvalue' => cmd::byString('#' . $tags['#String_SONOS#'] . '[Aléatoire statut]#')->execCmd()
),
'Mute' => array(
'ipx800id' => $tags['#ID_IPX800_Mute#'],
'ipx800folder' => '/api/core/io/',
'sonosvalue' => cmd::byString('#' . $tags['#String_SONOS#'] . '[Muet statut]#')->execCmd()
),
'Loop_Mode' => array(
'ipx800id' => $tags['#ID_IPX800_Loop_Mode#'],
'ipx800folder' => '/api/core/ana',
'sonosvalue' => cmd::byString('#' . $tags['#String_SONOS#'] . '[Répéter statut]#')->execCmd()
)
);
// Fonction pour envoyer les données via PUT
function put($url, $data) {
$curl = curl_init($url);
$headers = array(
"accept: application/json",
"Content-Type: application/json"
);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$resp = curl_exec($curl);
if ($resp === false) {
throw new Exception('cURL error: ' . curl_error($curl));
}
curl_close($curl);
return $resp;
}
// Fonction principale pour exécuter les commandes sur l'IPX800
function execute($Config_IPX800, $Player_Data) {
foreach ($Player_Data as $key => $info) {
$urlPut = 'http://' . $Config_IPX800['ip'] . $info['ipx800folder'] . $info['ipx800id'] . '?ApiKey=' . $Config_IPX800['apikey'];
$body = array('value' => $info['sonosvalue']);
try {
$response = put($urlPut, $body);
// Log pour déboguer
// log::add('GCE_IPX800V5', 'debug', $urlPut . ' PUT : ' . json_encode($response));
} catch (Exception $e) {
// Gestion d'erreur
log::add('GCE_IPX800V5', 'error', 'Error sending data to IPX800: ' . $e->getMessage());
}
}
}
// Exécution avec les données configurées
execute($Config_IPX800, $Player_Data);