Bonjour,
J’aimerais pouvoir faire apparaitre des alertes sur mon design sous forme de Pop-up, avec éventuellement aussi des boutons permettant d’interagir avec l’alerte.
Quelques exemples pratiques:
Au moment de sortir une alerte suggérant de prendre un parapluie car il va bientot pleuvoir
Suggérer d’ouvrir la fenetre des chambres le soir si leur température est trop élevée et qu’il fait plus frais à l’extérieur
Proposer d’écouter les infos à la radio, avec un bouton qui permet de lancer franceinfo sur les Sonos.
Demander confirmation si on lance une playlist depuis le design et que les enfants dorment.
J’ai cherché sur plusieurs fils de discussion du forum, et ai trouvé quelques pistes:
En passant par l’activation et la desactivation d’un équipement virtuel. Mais la mise à jour sur le design nécessite un rafraichissement de la page web ou un gotodesign depuis un scenario, avec donc un délai de chargement (pas WAF).
En adaptant cette solution en css/javascript qui permet de montrer/cacher des équipements sur un OnClick. Mais je ne vois pas comment déclencher ce javascript depuis un scenario. (possible de déclencher un javascript sur un changement d’état d’une info par exemple?)
Je me rends compte que l’action alert dans les scenarios affiche justement du texte dans une div_alert sur le design, sans avoir à rafraichir la page. Ca serait déjà un grand pas en avant, mais le probleme de cette alerte est qu’elle fait glisser tout mon design vers le bas quand elle apparait. Et donc mes boutons en bas de design ne sont plus accessibles.
Est-il possible de modifier le comportement de cette div_alert pour qu’elle se superpose sur le design au lieu de le décaler vers le bas?
Y-a-t’il une solution pour faire apparaitre/disparaitre un équipement sans rafraichissement?
Existe-t’il sinon un plugin qui permettrait de remplir mon besoin?
Hello,
je viens de faire un essai sur un design.
Ajouter un Texte/html
Contenu:
<script>
// Gestion de la fenêtre de dialogue
$(function() {
$( "#dialog-update-cmd" ).dialog({
resizable: false,
height: "auto",
width: 400,
modal: true,
autoOpen: false,
closeOnEscape: true,
open: function () {
setTimeout(function () {
$( "#dialog-update-cmd" ).dialog( "close" );
}, 10000); // 10 secondes avant fermeture automatique
},
buttons: {
"Valider": function() {
$( this ).dialog( "close" );
// ACTION SI ON VALIDE ICI
console.log("ON VALIDE");
},
Cancel: function() {
$( this ).dialog( "close" ); // ON FERME JUSTE LE POPUP
}
}
});
});
// Une commande a été mise à jour, on vérifie si c'est celle
// qu'on surveille pour afficher le popup
var currentValue = "";
$('body').on('cmd::update', function(_event, _options) {
//console.log(_options);
_options.forEach((option) => {
var cmd_id = option.cmd_id;
var display_value = option.display_value;
const cmd_id_a_surveiller = 16537; // ici l'id que je désire surveiller
if(cmd_id == cmd_id_a_surveiller) {
console.log("update commande " + cmd_id + " : " + display_value);
if(currentValue != "" && currentValue != display_value) {
// Valeur actualisée depuis l'ouverture de page, et valeur différente on affiche le popup
//$( "#dialog-update-cmd" ).dialog( "open" );
}
currentValue = display_value;
}
});
});
</script>
<div id="dialog-update-cmd" title="Mise à jour valeur détectée">
<p>
<span class="ui-icon ui-icon-alert" style="float:left; margin:12px 12px 20px 0;"></span>
Mise à jour détectée. Question rapide blabla...
</p>
</div>
ça correspond pas exactement à la demande initiale, mais c’est une piste de départ.
j’ai mis des commentaires pour aider, y’a l’id de la commande à surveiller (celle qui déclenche l’affichage du popup) à modifier en correspondance à votre install
tout en bas personnalisation du message.
on peut imaginer surveiller plusieurs commandes et faire des messages différents en conséquences.
si besoin de plus de renseignements, n’hésitez pas.
Salut
Je n’arrive pas à faire fonctionner ton code.
Juste pour être sûr :
J’ai ajouter ton code sur un design à un extérieur/html
J’ai modifier pour mettre l’id pour mettre un commande info d’un virtuel par exemple.
Je change la valeur de ma commande info mais rien ne se passe.
16537 pour moi. ça ne fait pas de calcul dans mon cas mais c’est pour les tests, le ping de mon ordi est toujours différent et actualisé toutes les minutes, plus simple pour les tests
ajouter un « texte/html » et aller dans les paramètres d’affichage
coller le code ci-dessus en mettant l’id correspondant
sauvegarder et actualiser une première fois ta page (pas obligatoire mais au moins on est sûr)
dans les 2 minutes qui suivent il devrait y avoir le popup si la valeur a changé
pour savoir les commandes que jeedom a reçu depuis que tu as ouvert la page, tu peux décommenter en enlevant les 2 slash //console.log(_options);
ensuite en faisant F12 tu auras les commandes
D’ailleurs si tu as des erreurs dans la console ça peut t’aiguiller.
J’espère avoir été clair.
PS: je suis en jeedom 4.2.20. il se peut que ça ne fonctionne pas sur des vieilles versions (même probable)