Bonjour à tous,
Suite à un besoin spécifique, j’ai créer ce weekend un équipement virtuel pour mettre en marche/arrêt forcé ou auto mon ballon d’eau chaude, peut-être que ça peut te servir.
Un virtuel sur la dashboard et un scénario permet le contrôle et la visualisation :
L’appui sur l’un des boutons change le mode du chauffe eau :
- STOP : « Arrêt forcé » (pour 1h).
- CLOCK : « Auto » → programmation de la chauffe entre 1h30 et 6h,
- FIRE : « Marche forcée » (pour 1h).
Le champ date en dessous, permet de modifier la date/heure de fin de la dérogation en cours (si forcé) ou de conserver le mode de fonctionnement en cours jusqu’à une certaine date (si auto).
Le virtuel est le suivant :
Configuration avancée de l’équipement (Graphique de fond) :
Configuration avancée de la commande « Auto » :
Configuration avancée des commandes « Arrêt forcé » et « Marche forcée » :
Configuration avancée de la commande « Date de reprise auto » :
Le widget « Date reprise » est en mode code :
<div style="width:185px;" class="tooltips cmd cmd-widget" data-type="action" data-subtype="slider" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
<span style="#hideCmdName#" class="cmdName">#name_display#</span>
<div class="content-sm">
<input id="input#id#" class="form-control input-sm value execute" type="datetime-local" data-cmd_id="#id#" required style="margin-top:5px;width:175px!important;height:30px!important;min-height:30px!important;max-height:30px!important;" />
</div>
<script>
jeedom.cmd.update['#id#'] = function(_options){
if (_options.display_value!="") {
var theVal = new Date(_options.display_value*1000);
theVal.setHours(theVal.getHours() - theVal.getTimezoneOffset()/60);
var theStr = theVal.toISOString();
theStr = theStr.substr(0,theStr.indexOf("."));
$('#input#id#').val(theStr);
} else {
$('#input#id#').val("");
}
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
$('.cmd[data-cmd_uid=#uid#] .execute').off("change").on("change", function () {
var theDate = new Date(this.value);
jeedom.cmd.execute({id:'#id#', value: { slider: theDate.getTime()/1000 }});
});
} else {
$('.cmd[data-cmd_uid=#uid#]:last .execute').off("keypress").keypress(function( event ) {
if(event.which == 13) {
var theDate = new Date(this.value);
jeedom.cmd.execute({id:'#id#', value: { slider: theDate.getTime()/1000 }});
}
});
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Le widget « Gestion » :
Le scénario :
Code du scénario
- Nom du scénario : Chauffe Eau
- Objet parent : Entrée
- Mode du scénario : all
- Programmation : 10 * * * *
- Programmation : 40 * * * *
- Evènement : #[Entrée][Gestion Chauffe Eau][Gestion]#
- Evènement : #[Entrée][Gestion Chauffe Eau][Date reprise]#
ACTION
remove_inat - Options : {"enable":"1","background":"0"}
SI intval(#[Entrée][Gestion Chauffe Eau][Date reprise]#) > #timestamp# && (#[Entrée][Gestion Chauffe Eau][Gestion]# != 0)
ALORS
DANS (intval(#[Entrée][Gestion Chauffe Eau][Date reprise]#) - #timestamp#) / 60 + 1
FAIRE
(scenario) start de [Chauffage][Entrée][Chauffe Eau]
SINON
event - Options : {"enable":"1","background":"0","cmd":"#[Entr\u00e9e][Gestion Chauffe Eau][Gestion]#","value":"0"}
event - Options : {"enable":"1","background":"0","cmd":"#[Entr\u00e9e][Gestion Chauffe Eau][Date reprise]#","value":""}
SI (#[Entrée][Gestion Chauffe Eau][Gestion]# < 0)
ALORS
#[Entrée][Chauffe Eau][Off 1]# - Options : {"enable":"1","background":"0"}
(stop) Arret du scenario
SINON
SI (#[Entrée][Gestion Chauffe Eau][Gestion]# > 0)
ALORS
#[Entrée][Chauffe Eau][On 1]# - Options : {"enable":"1","background":"0"}
(stop) Arret du scenario
SINON
SI time_between(#time#,0130,0600)
ALORS
#[Entrée][Chauffe Eau][On 1]# - Options : {"enable":"1","background":"0"}
SINON
#[Entrée][Chauffe Eau][Off 1]# - Options : {"enable":"1","background":"0"}
Je peux donner plus de détails sur le fonctionnement, les widgets, ou autre, si besoin.
Bad