Demande d’amélioration pour une télécommande

Bonjour

Je sais que le sujet a déjà été abordé mais après les dernières évolutions des applications Freebox, je voulais savoir s’il est possible d’intégrer une télécommande pour le Player vue que maintenant il y en a une sur l’application Freebox Connect.

Je vous remercie d’avance

Hello,

Tu est peut être déjà au courant mais au cas où, il existe un plugin Freebox révolution (telecfree) qui permet d’avoir la télécommande d’un player Free (ne pas se fier à « Freebox révolution », je l’utilise pour mon player Devialet de l’offre Delta :slightly_smiling_face:

1 « J'aime »

Hello
Oui je suis au courant et je l’utilise


Mais ça reste limité car d’après ce que j’ai vu sur un autre système domotique, l’API du Player permettrait de remonter son état et sûrement d’autre paramètres et commandes bien pratique
D’où ma demande

Le plugin Freebox Os remonte déjà l’état du player (running/stopped), en tout cas pour le Devialet.
Et si comme moi tu as le player Devialet, l’intégration Alexa api permet aussi de remonter l’état de lecture (en pause, en lecture, où éteins) play/pause/stop, alors qu’Alexa elle même ne remonte pas ces infos.
Et aussi les chaînes, numéro de chaîne et applications en cours de visionnage (télé/Netflix/Amazon Prime/Youtube/Disney+, Gestionnaire de fichier etc …)
Je fait depuis Jeedom tout ce qui est possible de faire avec la télécommande et toute les infos du player remontent y compris le volume actuel.



En effet c’est une alternative

Mais celle-ci fait appelle à 3 plugins, c’est loin d’être optimisé

Mais en attendant elle peut dépanner

C’est sûr. Si l’intégration Alexa Api permet de remonter les chaînes et applications en cours de visionnage ainsi que l’état de lecture du player Free, il est fort probable que ce soit possible de remonter ça depuis Freebox Os. Ces infos sont remontées via le player Free sur Alexa Api, les commande sont en JSON, il faut passer par le plug-in script.

J’ai toute une automatisation multimédia pour la télé grâce à toute ces infos couplé au plugin telejee.

•L’allumage automatique sur un programme favori en cours (ou qui va potentiellement intéresser) la personne qui est détecté assise sur le canapé
•L’extinction automatique
•La reprise de lecture automatique après avoir mis un programme en pause
•L’adaptation du volume en fonction de l’heure, de l’état de sommeil des enfants, et du statut des appareils bruyant (ex, robot aspirateur en fonctionnement)
•La gestion du contre jour
•Le basculement automatique de chaîne lorsqu’un programme se termine et qu’un autre susceptible de nous plaire commence ou était déjà en cours sur une autre chaîne.
•Surveillance du temps de télé des enfants.
Avec toute les contraintes imaginables anticipé

C’est vraiment top!
Pourrais tu me dire ou tu trouves les informations des noms de chaines ? Le start/stop, je le vois bien, mais le reste…

Merci

Hello

Comme l’a dit Jeezy, l’information des chaînes se trouvent via le plugin Alexa-API pour le Player Devialet au moins

Bonjour,

J’ai pris note de ton amélioration mais je pense qu’un plugin fait deja cela. je pense que cela ferai doublon de l’ajouter dans le plugin. Et cela prendrais du temps de développement. J’ai pas mal de chose deja en beta a passer en stable avant d’ajouter de nouvelle fonction.

Je suis aller regarder l’API de la freebox, la partie « Player » est toujours marqué « instable ». Cela obligerai aussi a reprendre le widget et ce n’est pas ma tasse de thé cette partie. Par contre vous pouvez demander @mika-nt28 d’ajouter des fonctions dans le plugin-telecfree. Il y a peut être a améliorer l’affichage des commandes que je peux proposer mais je préférai laisser les fonctions séparés du plugin Freebox.
Le plugin n’est pas disponible sur Github
mais voici mon amélioration



Le fichier desktop\php\telecfree.php

<?php
if (!isConnect('admin')) {
	throw new Exception('{{401 - Accès non autorisé}}');
}
$plugin = plugin::byId('telecfree');
sendVarToJS('eqType', $plugin->getId());
$eqLogics = eqLogic::byType($plugin->getId());
?>

<div class="row row-overflow">
	<div class="col-xs-12 eqLogicThumbnailDisplay">
		<legend><i class="fas fa-cog"></i> {{Gestion}}</legend>
		<div class="eqLogicThumbnailContainer">
			<div class="cursor eqLogicAction logoPrimary" data-action="add">
				<i class="fas fa-plus-circle"></i>
				<br>
				<span>{{Ajouter}}</span>
			</div>
			<div class="cursor eqLogicAction logoSecondary" data-action="gotoPluginConf">
				<i class="fas fa-wrench"></i>
				<br>
				<span>{{Configuration}}</span>
			</div>
			<?php
			$jeedomVersion  = jeedom::version() ?? '0';
			$displayInfo = version_compare($jeedomVersion, '4.4.0', '>=');
			if ($displayInfo) {
				echo '<div class="cursor eqLogicAction info" data-action="createCommunityPost">';
				echo '<i class="fas fa-ambulance"></i><br>';
				echo '<span>{{Community}}</span>';
				echo '</div>';
			}
			?>
		</div>
		<legend><i class="fas fa-table"></i> {{Mes telécommandes}}</legend>
		<div class="input-group" style="margin:5px;">
			<input class="form-control roundedLeft" placeholder="{{Rechercher}}" id="in_searchEqlogic" />
			<div class="input-group-btn">
				<a id="bt_resetSearch" class="btn" style="width:30px"><i class="fas fa-times"></i>
				</a><a class="btn hidden roundedRight" id="bt_pluginDisplayAsTable" data-coreSupport="1" data-state="0"><i class="fas fa-grip-lines"></i></a>
			</div>
		</div>
		<div class="eqLogicThumbnailContainer">
			<?php
			foreach ($eqLogics as $eqLogic) {
				$opacity = ($eqLogic->getIsEnable()) ? '' : 'disableCard';
				echo '<div class="eqLogicDisplayCard cursor ' . $opacity . '" data-eqLogic_id="' . $eqLogic->getId() . '">';
				echo '<img src="' . $plugin->getPathImgIcon() . '"/>';
				echo '<br>';
				echo '<span class="name">' . $eqLogic->getHumanName(true, true) . '</span>';
				echo '<span class="hidden hiddenAsCard displayTableRight">';
				echo ($eqLogic->getIsVisible() == 1) ? '<i class="fas fa-eye" title="{{Équipement visible}}"></i>' : '<i class="fas fa-eye-slash" title="{{Équipement non visible}}"></i>';
				echo '</span>';
				echo '</div>';
			}
			?>
		</div>
	</div>

	<div class="col-xs-12 eqLogic" style="display: none;">
		<div class="input-group pull-right" style="display:inline-flex">
			<span class="input-group-btn">
				<a class="btn btn-default eqLogicAction btn-sm roundedLeft" data-action="configure"><i class="fas fa-cogs"></i> {{Configuration avancée}}
				</a><a class="btn btn-sm btn-success eqLogicAction" data-action="save"><i class="fas fa-check-circle"></i> {{Sauvegarder}}
				</a><a class="btn btn-danger btn-sm eqLogicAction roundedRight" data-action="remove"><i class="fas fa-minus-circle"></i> {{Supprimer}}</a>
			</span>
		</div>
		<ul class="nav nav-tabs" role="tablist">
			<li role="presentation"><a class="eqLogicAction cursor" aria-controls="home" role="tab" data-action="returnToThumbnailDisplay"><i class="fas fa-arrow-circle-left"></i></a></li>
			<li role="presentation" class="active"><a href="#eqlogictab" aria-controls="home" role="tab" data-toggle="tab"><i class="fas fa-tachometer-alt"></i> {{Equipement}}</a></li>
			<li role="presentation"><a href="#telectab" aria-controls="profile" role="tab" data-toggle="tab"><i class="fas fa-list"></i> {{Télécommandes}}</a></li>
			<li role="presentation"><a href="#racourcistab" aria-controls="profile" role="tab" data-toggle="tab"><i class="fas fa-list"></i> {{Raccourcis}}</a></li>
			<li role="presentation"><a href="#chainetab" aria-controls="profile" role="tab" data-toggle="tab"><i class="fas fa-list"></i> {{Chaînes}}</a></li>
		</ul>
		<div class="tab-content">
			<div role="tabpanel" class="tab-pane active" id="eqlogictab">
				<form class="form-horizontal">
					<fieldset>
						<div class="col-lg-6">
							<legend><i class="fas fa-wrench"></i> {{Paramètres généraux}}</legend>
							<div class="form-group">
								<label class="col-sm-4 control-label">{{Nom de l'équipement}}</label>
								<div class="col-sm-6">
									<input type="text" class="eqLogicAttr form-control" data-l1key="id" style="display : none;" />
									<input type="text" class="eqLogicAttr form-control" data-l1key="name" placeholder="{{Nom de l'équipement philipsHue}}" />
								</div>
							</div>
							<div class="form-group">
								<label class="col-sm-4 control-label">{{Objet parent}}</label>
								<div class="col-sm-6">
									<select id="sel_object" class="eqLogicAttr form-control" data-l1key="object_id">
										<option value="">{{Aucun}}</option>
										<?php
										$options = '';
										foreach ((jeeObject::buildTree(null, false)) as $object) {
											$options .= '<option value="' . $object->getId() . '">' . str_repeat('&nbsp;&nbsp;', $object->getConfiguration('parentNumber')) . $object->getName() . '</option>';
										}
										echo $options;
										?>
									</select>
								</div>
							</div>
							<div class="form-group">
								<label class="col-sm-4 control-label">{{Catégorie}}</label>
								<div class="col-sm-6">
									<?php
									foreach (jeedom::getConfiguration('eqLogic:category') as $key => $value) {
										echo '<label class="checkbox-inline">';
										echo '<input type="checkbox" class="eqLogicAttr" data-l1key="category" data-l2key="' . $key . '" />' . $value['name'];
										echo '</label>';
									}
									?>
								</div>
							</div>
							<div class="form-group">
								<label class="col-sm-4 control-label">{{Options}}</label>
								<div class="col-sm-6">
									<label class="checkbox-inline"><input type="checkbox" class="eqLogicAttr" data-l1key="isEnable" checked />{{Activer}}</label>
									<label class="checkbox-inline"><input type="checkbox" class="eqLogicAttr" data-l1key="isVisible" checked />{{Visible}}</label>
								</div>
							</div>

							<legend><i class="fas fa-cogs"></i> {{Paramètres spécifiques}}</legend>
							<div class="form-group">
								<label class="col-sm-4 control-label">{{Adresse IP du Player}}</label>
								<div class="col-sm-6">
									<input type="text" class="eqLogicAttr form-control" data-l1key="configuration" data-l2key="ipplayer" placeholder="{{Adresse IP du Player}}" />
								</div>
							</div>
							<div class="form-group">
								<label class="col-sm-4 control-label">{{Code télécommande}}</label>
								<div class="col-sm-6">
									<input type="text" class="eqLogicAttr form-control" data-l1key="configuration" data-l2key="codetelec" placeholder="{{Code Télécommande}}" />
								</div>
							</div>
						</div>
						<div class="col-lg-6">
							<legend><i class="fas fa-info"></i> {{Informations}}</legend>
							<div class="alert alert-info">
								{{Info : <br/>
							- Pour trouver votre code télécommande regardez dans les paramètres du Freebox Player<br/>
							- Depuis l'écran d'accueil --> Réglages --> Système --> Informations Freebox Player et Server --> Code télécommande réseau<br/>}}
							</div>
						</div>

					</fieldset>
				</form>
				<hr>
			</div>
			<div role="tabpanel" class="tab-pane active" id="telectab">
				<br />
				<table id="table_cmd_telec" class="table table-bordered table-condensed">
					<thead>
						<tr>
							<th></th>
							<th>{{Nom}}</th>
							<th>{{Action}}</th>
							<th>{{Paramètres}}</th>
							<th>{{Avancée}}</th>
						</tr>
					</thead>
					<tbody></tbody>
				</table>
			</div>
			<div role="tabpanel" class="tab-pane" id="racourcistab">
				<br />
				<table id="table_cmd_racoucis" class="table table-bordered table-condensed">
					<thead>
						<tr>
							<th></th>
							<th>{{Nom}}</th>
							<th>{{Action}}</th>
							<th>{{Paramètres}}</th>
							<th>{{Avancée}}</th>
						</tr>
					</thead>
					<tbody></tbody>
				</table>
			</div>
			<div role="tabpanel" class="tab-pane" id="chainetab">
				<a class="btn btn-success btn-sm cmdAction pull-right" data-action="add"><i class="fas fa-plus-circle"></i> {{Ajouter}}</a><br /><br />
				<br />
				<table id="table_cmd_chaine" class="table table-bordered table-condensed">
					<thead>
						<tr>
							<th></th>
							<th>{{Nom}}</th>
							<th>{{Action}}</th>
							<th>{{Paramètres}}</th>
							<th>{{Avancée}}</th>
						</tr>
					</thead>
					<tbody></tbody>
				</table>
			</div>
		</div>
	</div>
	<hr>
</div>

<?php include_file('desktop', 'telecfree', 'js', 'telecfree'); ?>
<?php include_file('core', 'plugin.template', 'js'); ?>

Bonjour
Merci JAG pour cette réponse
Effectivement j’avais vu dans l’API que cette partie était toujours indiqué en INSTABLE

Mais c’est une idée pour dans le future

Après si le plugin-telecfree peut être mis à jour, ça serait top car aujourd’hui il est plus fait pour le player Révolution même s’il fonctionne avec le player Devialet

Et récupéré les info d’un troisième plugin ne me semble pas l’idéal

Via le plugin Alexa Api, en faisant un scan des équipements tu auras le player Free (Devialet), pour les autres players je ne sais pas, et dans les commandes de l’équipement tu auras toute ces infos :wink:

En fait je ne les trouve pas dans les commandes de l’équipement
Plus haut, tu a cité qu’il fallait passer par un JSON via un Script, on le trouve ou le JSON ?

Pour info le plugin-telecfree fonctionne chez moi avec une freeebox One

Les commandes sont dans l’équipement Freebox d’Alexa smart home, dans Alexa api tu as un appareil Freebox (Devialet) qui remonte comme une écho Alexa et dans la catégorie Smart Home tu as un autre appareil Freebox avec les commandes
Sur le screen, en bas c’est les commandes brut en JSON, et en haut les commandes une fois passé par le plugin script (désolé pour la qualité, et fait pas attention à la faute « statue Freebox » :sweat_smile:



D’ailleurs, les équipements d’Alexa smarthome remontent pas mal d’info, y compris des infos que meme des plugins/app officiel ne remontent pas, par exemple, en plus des infos du Devialet, l’équipement smarthome de ma télé Samsung me remonte le capteur de luminosité de la télé.

Hello

Ah ok, mais là on est plus à 3 plugins nécessaires mais 4 et même 5 pour récupérer les données JSON

C’est donc l’usine à gaz mais ça reste une possibilité

1 « J'aime »

Pourquoi 5 plugins ?

J’utilise un plugin pour avoir toute les infos du player, et un plugin pour la télécommande:
-Alexa smart home → script
-Telecfree

À savoir que ces plugins me servent pour d’autres intégrations et pas seulement pour le player Delta, je considère pas comme une usine à gaz le faîte d’avoir 1 plugin pour la télécommande et un plugin pour les infos du player.

O top! J’avais jamais remarquer mon équipement freebox… Merci.
Plus qu’a mettre en forme et c’est partie…
MERCI