Hello
Même reponse que tous.
Ton blog est / a été une belle source d’inspiration.
J’ai démarré ma migration eedomus vers jeedom avec ton blog il y a un an.
+1 pour le hosting chez toi si tu as un acces FTTH. Si tu as un NAS Type syno, ca se fait facilement et graphiquement sans avoir à mettre les mains dans le camboui.
Première passe complétée après 1 mois et 1 semaine.
1 design pour tout résumer. Point.
Reste à développer toute la partie popup et interactive.
Il est intéressant de noter qu’il y a des écarts entre la vue « PC » et la vue « tablette » avec Webview avec JPI de @dJuL notamment au niveau des tableaux HTML.
la météo utilise le weatherwidget.io remis dans un tableau par le plugin html ; les boutons permettent d’avoir un TTS sur les conditions actuelles et à venir ; le second permettra d’afficher un popup des prévisions à 5 jours.
les infos environnementales sont des moyennes / min et max et se colorisent en fonction d’une plage. Idem pour les alertes givre, météo, les précipitations etc. L’index UV est un widget code qui me change la couleur le niveau des UV et l’icone.
les ouvrants changent de couleur en fonction de l’état mais aussi de la présence dans la maison. Par exemple le volet passe en orange s’il est fermé et que nous sommes là. A contrario, si nous sommes absents et qu’il est ouvert, il est rouge (capter la chaleur). Je joue sur les options du widget multi action avec les icones et le code php de @noodom. Pour palier au problème que ce code php ré-appuie sur l’icone, j’ai mis une simple zone avec une macro ; simple et efficace. Et surtout cela me permet d’interdire l’appui sur le bouton si l’alarme est mise et que nous ne sommes pas là. C’est là que je contrôle les accès des véhicules et les automatismes associés (si je gare la voiture, la moto ou madame dans le garage ou autre).
Pour le contrôle extérieur, les boutons core sont très bien et beaux donc autant les utiliser. Même recette pour les températures. Je récupère l’état de la filtration par le plugin piscine de @scadinot. La seule différence et que je mets en forme les horaires en incluant le mode de la piscine. Iopool mettant en place une API à l’été, je pourrai compléter cette partie.
Pour le contrôle intérieur, j’en ai profité pour gérer au mieux mon ampli multizone. Quelques prises critiques dans la maison et un pilotage harmony + tablette par JPI et l’appel des APK pour lancer tunein, spotify etc ou quelques modes de la TV pour le petit loup.
Le résumé global me permet d’un coup d’oeil d’avoir l’heure et la date (merci @Salvialf) et le mode de la maison : chauffage, clim, arrêt etc et les usages : travail, vacances, weekend, absent etc. C’est aussi ici que je pourrais tout basculer : dérogation eau chaude, changement de mode de chauffage ou passage manuel en mode vacances (seul mode que je change à la main notamment pour sa sortie, la fin des vacances triste !). Idem pour la gestion des personnes et des doubles de clés autorisés.
Le tableau de suivi du confort et des usages me permet d’avoir un état sur les températures (colorisés en fonction du mode clim ou chauffage ; on regarde en > ou en < en fonction du mode), pareil pour l’humidité et les usages : si un split tourne, si la VMC d’un étage tourne, si une porte est ouverte etc. Les boutons en haut me permettront d’accéder aux prises et autres pilotages (notamment pour voir les agendas, températures historisées etc). Idem pour les indicateurs d’alerte : fumée, fuite d’eau. Merci aqara.
Partie sécurité et alarme. J’ai l’état, je peux basculer en alarme partielle, totale ou de nuit. Quelques indicateurs clés me permettent de savoir la configuration en cours : volet se fermant si alarme mise, caméra en cours de détection de mouvement, choix de l’alarme en basculement auto, présence dans la maison etc. De même 3 boutons dans le futur pour accéder aux caméras, la configuration et au digicode pour débloquer l’alarme.
Pour la partie localisation. J’ai l’état des indicateurs : GPS, wifi, clé, forçage d’absence etc. A terme, le bouton me permettra d’ouvrir un popup pour savoir où est la personne. Petit widget graphique de l’état de l’alarme de la moto et la batterie.
Bon le courrier, facile. Courrier, colis, récupéré ou non. Idem ça se colorise.
Supervision, l’excellent petit LED pour avoir l’état du système. J’avais pensé à en mettre qu’une seule OU de l’ensemble mais après réflexion je vais ajouter des zones pour ouvrir des popups et me faciliter la gestion : vue unitaire de chaque élément, de chaque plugin, de chaque batterie de capteurs ou même faire les mises à jour de jpi par exemple.
Last one le tableau de suivi des consommations. Le statut me donne si délestage, production PV, fuite d’eau, la consigne retenue pour l’eau chaude (en fonction du nombre de personnes), si les clims tirent (>100W), idem pour la piscine. L’instantanée est travaillé avec les couleurs relatives au niveau de puissance appelée ou la consommation (heure, min etc). J’ai une image du facteur de puissance (W et VA). Pour le PV, j’ai préféré avoir la production en cours et le % de ce que j’ai utilisé sur la journée (le reste étant renvoyé sur le réseau). Pour l’eau, la consommation à la min et à l’heure sont des images fidèles de nos usages. La température de l’eau chaude et la conso instantanée des 2 autres usages importants de la maison piscine et climatisation globale. Vient ensuite des indicateurs quotidiens en général la consommation et le coût associé. A la différence de l’eau chaude où je préfère avoir la durée de chauffe et la consommation d’eau de la journée.
Le petit widget chevron me donne une image de la dernière semaine complète par rapport à la surprécédente. Bien plus fidèle que la veille avant-veille (notamment le vendredi/samedi ou le dimanche/lundi). Merci @superbricolo et @Thibaut_T pour les ajouts dans Suivi Conso, c’est aussi grâce à votre travail qu’on en arrive là. La dernière colonne reste le suivi mensuel de ces usages.
Très beau design, pas de fioritures, clair et lisible, c’est ce que je préfère.
Concernant les pop up que tu dois faire et que tu évoques souvent, quelle méthode comptes tu utiliser ?
J’ai testé la méthode ici [TUTO] Popup dans un design - #14 par Thom mais je trouve que pour les graphiques cela alourdit considérablement mon système (rpi 3b+)
Quelques widgets partagés, extrait de nombreux codes trouvés sur le forum et modifié à mon utilisation.
Attention, il vous faut le plugin icones de @ZygOm4t1k.
Le widget d’alarme de la moto icone + le niveau de batterie.Il faut passer les options et jouer du code de @noodom pour changer l’option alarme par le widget.
<div class="tooltips cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="display: block;">
<center>
<span class="iconCmd"></span><span><strong class="state" style="font-size: 25px;"></strong></span><span class="unite"></span>
</center>
<script>
jeedom.cmd.update['#id#'] = function(_options){
var state = _options.display_value;
var cmd = $('.cmd[data-cmd_id=#id#]');
var alarme = is_numeric('#alarme#') ? parseFloat('#alarme#'):0;
cmd.attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate);
// alarme = 0 (alarme = 0, online = 1)
if (alarme == 0) {
if (state >= 40) {
// vert car alarme désactivée, vert car en ligne, vert batterie car ok
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-open-variant" style="color:#30b455;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
// orange car alarme requiert attention, rouge var batterie déchargé
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-open-variant" style="color:#ff8c00;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
// alarme = 1 (alarme = 1, online = 1)
else if (alarme == 1) {
if (state >= 40) {
// rouge car alarme activée, vert car batterie OK
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-check" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
// rouge car alarme activée, rouge car batterie déchargée
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-alert" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
// alarme = 2 (alarme = 1, online = 0)
else if (alarme == 2) {
if (state >= 40) {
// rouge car alarme activée, vert car batterie ok
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#%<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#da3037;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
// alarme = 3 (alarme = 0, online = 0)
else if (alarme == 3) {
if (state >= 40) {
// vert car alarme désactivée, vert car
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#30b455;font-size:20px;"></i><div style="font-size:10px;color:#30b455;">#state#<span style="font-size:10px;color:#30b455;">%</span></div>');
}
else {
cmd.find('.iconCmd').empty().append('<i class="Mdi mdi-lock-question" style="color:#30b455;font-size:20px;"></i><div style="font-size:10px;color:#da3037;">#state#<span style="font-size:10px;color:#da3037;">%</span></div>');
}
}
//cmd.find('.state').empty().append(' '+state);
//cmd.find('.unite').empty().append(' #unite#');
if(_options.alertLevel){
$('.cmd[data-cmd_id=#id#]').removeClass('label label-warning label-danger')
if(_options.alertLevel == 'warning'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-warning');
}else if(_options.alertLevel == 'danger'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-danger');
}
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Pour savoir si je chauffe ou refroidi ou rien, je modifie une variable statut (voir article de JF sur le confort) qui me permet de récupérer l’état d’un split. Arrêté, froid ou chaud.
Pour la consigne de l’eau chaude en cours avec l’état du chauffe eau (je change l’icone) ; il faut là encore faire l’astuce du php et l’option chauffe.
<div class="tooltips cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="display: block;">
<center>
<span class="iconCmd"></span><span><strong class="state" style="font-size: 25px;"></strong></span><span class="unite"></span>
</center>
<script>
jeedom.cmd.update['#id#'] = function(_options){
var state = _options.display_value;
var cmd = $('.cmd[data-cmd_id=#id#]');
// si production on inverse le code couleur et chevron
var chauffe = is_numeric('#chauffe#') ? parseFloat('#chauffe#'):0;
if (chauffe == 0) {
if (state == 50) {
cmd.find('.iconCmd').empty().append('<i class="icon Mdi mdi-fire" style="color:#ff8c00;font-size:20px;"></i><span style="font-size:12px;color:#ff8c00;vertical-align:middle;text-align:center;"> #state#</span><span style="font-size:12px;color:#ff8c00;vertical-align:middle;text-align:center;"> °C</span>');
}
else if (state == 60) {
cmd.find('.iconCmd').empty().append('<i class="icon Mdi mdi-fire" style="color:#da3037;font-size:20px;"></i><span style="font-size:12px;color:#da3037;vertical-align:middle;text-align:center;"> #state#</span><span style="font-size:12px;color:#da3037;vertical-align:middle;text-align:center;"> °C</span>');
}
}
else if (chauffe == 1) {
if (state == 50) {
cmd.find('.iconCmd').empty().append('<i class="icon Mdi mdi-fire-alert" style="color:#ff8c00;font-size:20px;"></i><span style="font-size:12px;color:#ff8c00;vertical-align:middle;text-align:center;"> #state#</span><span style="font-size:12px;color:#ff8c00;vertical-align:middle;text-align:center;"> °C</span>');
}
else if (state == 60) {
cmd.find('.iconCmd').empty().append('<i class="icon Mdi mdi-fire-alert" style="color:#da3037;font-size:20px;"></i><span style="font-size:12px;color:#da3037;vertical-align:middle;text-align:center;"> #state#</span><span style="font-size:12px;color:#da3037;vertical-align:middle;text-align:center;"> °C</span>');
}
}
//cmd.find('.state').empty().append(' '+state);
//cmd.find('.unite').empty().append(' #unite#');
if(_options.alertLevel){
$('.cmd[data-cmd_id=#id#]').removeClass('label label-warning label-danger')
if(_options.alertLevel == 'warning'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-warning');
}else if(_options.alertLevel == 'danger'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-danger');
}
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Pour la tendance hebdo, je passe le % calculé par le plugin suivi conso d’une semaine sur l’autre et j’affiche en fonction un chevron bas, haut, simple ou double et la couleur. Je gère le 0 aussi… et je gère le sens car dans le cas de la production c’est l’inverse de la consommation (option production).
<div class="tooltips cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#" style="display: block;">
<center>
<span class="iconCmd"></span><span><strong class="state" style="font-size: 25px;"></strong></span><span class="unite"></span>
</center>
<script>
jeedom.cmd.update['#id#'] = function(_options){
var state = _options.display_value;
var cmd = $('.cmd[data-cmd_id=#id#]');
// si production on inverse le code couleur et chevron
var production = is_numeric('#production#') ? parseFloat('#production#'):0;
if (production == 0) {
if (state == 0) {
cmd.find('.iconCmd').empty().append('<i class="icon fa font-awesome-angle-right" style="color:#acacac;font-size:15px;"></i><span style="font-size:11px;color:#acacac;"> #state#<span style="font-size:11px;color:#acacac;">%</span></span>');
}
else if (state <= -10) {
cmd.find('.iconCmd').empty().append('<i class="icon fa font-awesome-angle-double-down" style="color:#30b455;font-size:15px;"></i><span style="font-size:11px;color:#30b455;"> #state#<span style="font-size:11px;color:#30b455;">%</span></span>');
}
else if ((state > -10) && (state < 0)) {
cmd.find('.iconCmd').empty().append('<i class="icon fa fa-chevron-down" style="color:#30b455;font-size:15px;"></i><span style="font-size:11px;color:#30b455;"> #state#<span style="font-size:11px;color:#30b455;">%</span></span>');
}
else if (state >= 10) {
cmd.find('.iconCmd').empty().append('<i class="icon fa font-awesome-angle-double-up" style="color:#da3037;font-size:15px;"></i><span style="font-size:11px;color:#da3037;"> #state#<span style="font-size:11px;color:#da3037;">%</span></span>');
}
else if ((state < 10) && (state > 0)) {
cmd.find('.iconCmd').empty().append('<i class="icon fa fa-chevron-up" style="color:#da3037;font-size:15px;"></i><span style="font-size:11px;color:#da3037;"> #state#<span style="font-size:11px;color:#da3037;">%</span></span>');
}
}
else if (production == 1) {
if (state == 0) {
cmd.find('.iconCmd').empty().append('<i class="icon fa font-awesome-angle-right" style="color:#acacac;font-size:15px;"></i><span style="font-size:11px;color:#acacac;"> #state#<span style="font-size:11px;color:#acacac;">%</span></span>');
}
else if (state <= -10) {
cmd.find('.iconCmd').empty().append('<i class="icon fa font-awesome-angle-double-down" style="color:#da3037;font-size:15px;"></i><span style="font-size:11px;color:#da3037;"> #state#<span style="font-size:11px;color:#da3037;">%</span></span>');
}
else if ((state > -10) && (state < 0)) {
cmd.find('.iconCmd').empty().append('<i class="icon fa fa-chevron-down" style="color:#da3037;font-size:15px;"></i><span style="font-size:11px;color:#da3037;"> #state#<span style="font-size:11px;color:#da3037;">%</span></span>');
}
else if (state >= 10) {
cmd.find('.iconCmd').empty().append('<i class="icon fa font-awesome-angle-double-up" style="color:#30b455;font-size:15px;"></i><span style="font-size:11px;color:#30b455;"> #state#<span style="font-size:11px;color:#30b455;">%</span></span>');
}
else if ((state < 10) && (state > 0)) {
cmd.find('.iconCmd').empty().append('<i class="icon fa fa-chevron-up" style="color:#30b455;font-size:15px;"></i><span style="font-size:11px;color:#30b455;"> #state#<span style="font-size:11px;color:#30b455;">%</span></span>');
}
}
//cmd.find('.state').empty().append(' '+state);
//cmd.find('.unite').empty().append(' #unite#');
if(_options.alertLevel){
$('.cmd[data-cmd_id=#id#]').removeClass('label label-warning label-danger')
if(_options.alertLevel == 'warning'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-warning');
}else if(_options.alertLevel == 'danger'){
$('.cmd[data-cmd_id=#id#]').addClass('label label-danger');
}
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Pour l’UV, je récupère la valeur par Darksky ou autre et même principe que plus haut : icone + valeur.
L’affichage des températures en fonction du mode chaud/froid/rien.
Soit on regarde à < -1/-2.5(chaud) ; >1/2.5 (froid); ±1/-+2.5 (rien).
Idem, je passe par les options. Je regarde par rapport à la consigne de la pièce pour être fiable car on se fiche d’avoir 16 dans une pièce où je suis en éco. La photo n’est pas top car il a fait super chaud ici et donc toutes mes températures sont au dessus des consignes !
<div class="cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-template="line" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
<div class="content-xs">
<span class="cmdNameColor#id# cmdName #hide_name#">#name_display# </span><span class="valueColor#id# value">#state#</span><span class="uniteColor#id# unite"> #unite#</span>
</div>
<style>
.cmdNameColor#id# {
font-size: 12px;
}
.valueColor#id# {
font-size: 12px;
}
.uniteColor#id# {
font-size: 12px;
}
</style>
<script>
jeedom.cmd.update['#id#'] = function(_options) {
var cmd = $('.cmd[data-cmd_id=#id#]')
//Définition des paramètres et couleurs par défaut et définition des limites par défaut
//Sinon à passer en paramètres !
var saison = is_numeric('#saison#') ? parseFloat('#saison#'):0;
var color1 = ('#color1#' != '#' + 'color1#') ? "#color1#" : "#5078aa";
var color2 = ('#color1#' != '#' + 'color1#') ? "#color2#" : "#acacac";
var color3 = ('#color1#' != '#' + 'color1#') ? "#color3#" : "#ff8c00";
var AppliedColor = ('#AppliedColor#' != '#' + 'AppliedColor#') ? "#AppliedColor#" : "#FFFFFF";
var limit = is_numeric('#limit#') ? parseFloat('#limit#'):15;
var range1 = is_numeric('#range1#') ? parseFloat('#range1#'):1;
var range2 = is_numeric('#range2#') ? parseFloat('#range2#'):2;
var valeur = Math.round(parseFloat(_options.display_value));
//Fonctionne sur un range +/-1 ; +/-2 ; à défaut hors range
//Chauffage = 0 on regarde si inférieur uniquement
if (saison == 0) {
var limit1 = limit-range1;
var limit2 = limit-range2;
if (valeur >= limit1) {
AppliedColor = color1;
}
else if ((valeur >= limit2) && (valeur < limit1)) {
AppliedColor = color2;
}
else {
AppliedColor = color3;
}
}
//Arrêt = 1 on regarde si inférieur et supérieur
else if (saison == 1) {
var limit1i = limit-range1;
var limit2i = limit-range2;
var limit1s = limit+range1;
var limit2s = limit+range2;
if ((limit1i <= valeur) && (valeur <= limit1s)) {
AppliedColor = color1;
} else if ((limit2i <= valeur) && (valeur <= limit2s)) {
AppliedColor = color2;
} else {
AppliedColor = color3;
}
}
//Clim = 2 on regarde si supérieur uniquement
else if (saison == 2) {
var limit1 = limit+range1;
var limit2 = limit+range2;
if (valeur <= limit1) {
AppliedColor = color1;
}
else if ((valeur > limit1) && (valeur <= limit2)) {
AppliedColor = color2;
}
else {
AppliedColor = color3;
}
}
//Debug au cas où on fixe une couleur bien lisible !
else {
AppliedColor = "#2B140E";
}
cmd.find('.cmdNameColor#id#').attr('style', 'color: ' + AppliedColor + ';');
cmd.find('.valueColor#id#').attr('style', 'color: ' + AppliedColor + ';');
cmd.find('.uniteColor#id#').attr('style', 'color: ' + AppliedColor + ';');
cmd.attr('title','Date de valeur : '+_options.valueDate+'<br/>Date de collecte : '+_options.collectDate)
//cmd.find('.state').empty().append(_options.display_value);
cmd.find('.value').empty().append(valeur);
if(_options.alertLevel){
if(_options.alertLevel == 'warning'){
cmd.find('.content-xs').addClass('label label-warning')
cmd.attr('data-alertlevel','warning');
}else if(_options.alertLevel == 'danger'){
cmd.find('.content-xs').addClass('label label-danger')
cmd.attr('data-alertlevel','danger');
}else{
cmd.find('.content-xs').removeClass('label label-warning label-danger')
cmd.attr('data-alertlevel','none');
}
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'})
</script>
</div>
Oui, celui-ci.
Je me garde la possibilité d’avoir un méga design plus grand ou le changement de design à la volée.
Après, je n’ai pas une PI, donc à voir…
(un core i5 10e génération / 32 Go en global) avec une VM dédiée.
Quelques ajustements pour l’eau chaude car au final il est plus lisible de savoir si l’eau chauffe, la consigne du jour et la température actuelle du ballon. Merci à @mika-nt28 pour ce plugin.
EDIT : Tu l’as peut-être écrit dans le post, mais est-ce que pour ce design tu as refait des virtuels dédiés au design et donc en double potentiellement de ceux du dashboard ?
Ce n’est pas possible… ce genre de choses.
Sauf erreur. Et sincèrement, c’est tout est relié à des virtuels ou des variables (le comptage d’eau, la consigne d’eau chaude, l’état d’un split de climatisation etc).
Oui, ça va je dors ! La vie appartient à ceux qui se lèvent tôt ;).
Un peu de course à pied ce matin, petit déjeuner famille et au boulot.
Pour répondre à ta question, j’ai nettoyé et je continue à nettoyer au fur et à mesure les virtuels créés pour l’ancien jeedom3 et les designs associés et j’intègre tout dans une catégorie objet « panel » qui me permet une gestion plus efficace.
Par ailleurs, cela m’oblige à modifier les ID de domowidget sur les téléphones familiaux.
En y réfléchissant, je pense que je vais m’appuyer sur deux approches :
design pour les « popups » massives comme la visualisation des caméras, la gestion des thermostats ou la visualisation du système d’un point de vue supervision,
plugin clink ou l’approche popup proposée (je vais plutôt tenter clink dans un premier temps) pour les virtuels ou les tableaux de virtuels légers.
Je ne connaissais pas ce plugin qui pourtant semble dater !
J’ai fait un premier test et pour l’instant je n’arrive qu’à avoir un snapshot de ma caméra et non pas le flux mais ça me paraît intéressant pour afficher la caméra de ma porte d’entrée quand quelqu’un sonne.
J’ai déjà abandonné… lol
Plugin très peu documenté et sur mes premiers essais ça rame beaucoup sur ma tablette…
Mon premier test était d’ouvrir une modale mais impossible d’avoir le flux rtsp, juste un snapshot, donc pas idéal pour voir ce qu’il se passe derrière la porte, mais ça fonctionnait correctement.
Du coup j’ai créé une page de design avec ma caméra et dans la modale j’appelle ce design pour avoir le flux en direct mais la c’est le drame, sur mon pc ça marche mais la tablette a beaucoup de mal à ouvrir la fenêtre, c’est inutilisable.
Du coup je suis resté sur mon idée de page design caméras et lorsqu’on sonne chez moi, mon scénario de notification affiche cette page de design pendant 30 secondes puis je fais un retour sur ma page design d’accueil, le résultat est pas mal.