Je vois qu il y a beaucoup d infos sur une seul page de l ecran de la tablette.
Quel résolution utilises tu pour quelle taille d écran ?
Beau travail.
1024x600 de mémoire.
Après c’est lisible sans lunette face à la tablette.
Je l’explique sur le blog. Je passe par le site screenresolution.
Merci !
Merci, j’ai utilisé ce site pour établir la résolution de ma tablette.
Ce que je ne comprend pas c’est que ce site m’indique une résolution de 1280 x 800 alors que sur la fiche technique c’est une 2560 x 1600 (Samsung Galaxy tab S).
C’est la résolution max de la tablette.
Tu peux jouer des dpi et de la résolution au besoin
android - how to use adb to change resolution of device - Stack Overflow
Salut Benj, Merci pour l’article sur l’alarme,
Je le trouve très instructif et très bien construit,
Je vois que tu as mis en place le widget digicode pour ton ancienne version v3,
Aurais-tu le code et fichiers à mettre à disposition pour la V4 depuis ton article ?
Encore merci pour ton partage et à très bientôt dans un nouvel article
Bonjour,
Je suis en train de finaliser l’article pour la piscine, sa gestion et l’iopool. Il est clair qu’il n’intéressera pas tout le monde, mais il y a quand même quelques idées à prendre pour l’automatisation notamment avec Android.
Merci en tout cas pour tes commentaires. Oui, pour le digicode, j’avoue avoir galéré, je m’étais même rabattu sur celui développé par @tomitomas ; mais bien trop complet et lourd pour un « pauvre » digicode comme je l’utilise le matin au réveil.
Attention à bien positionner les fichiers dans un répertoire non-core car en cas d’update, vous les perdez !
Le widget est à créer en mode code.
<div class="cmd cmd-widget reportModeHidden" data-type="action" data-subtype="message" data-template="default" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
<script>
$.include([ '/data/fonts/Digicode/digicode.css',
'/data/fonts/Digicode/digicode.js' ],
function() {
$('div.cmd[data-cmd_id="#id#"]').digicode(function(fct, code) {
jeedom.cmd.execute({
id: '#id#',
value: { title : fct, message: code }
});
}, 4);
}
);
</script>
</div>
Et le code js et le code css , personnellement j’ai mis ici :
Attention, j’ai modifié les codes pour mon installation : polices, couleurs, tailles.
digicode_css.txt (1,4 Ko) digicode_js.txt (2,4 Ko)
Attention, supprimer l’extension .txt et le _extension à passer en .extension.
J’ai prévu de faire une grosse mise à jour du blog en V4 mais après la publication de l’article des designs en V4 et celui de la piscine.
Il faut créer un virtuel :
value_digicode en information est utilisé par un scénario de désactivation sans aucun déclencheur :
digicode est une info qui lance LE scénario :
Merci pour ta réponse et ton partage,
Bonne journée,
J’ai édité mon message
C’est parfait, merci, bonne journée,
Et voilà, nouvel article sur la gestion de la piscine, la filtration, l’iopool Eco etc
https://www.jeedom-facile.fr/index.php/2021/06/03/une-gestion-de-piscine-simple-et-efficace/
Quelques principes avec le Sonoff, le parfait Jeedouino de @revlys et la pierre angulaire JPI de @dJuL.
Je m’appuie sur Macrodroid et Automate, tellement pratique.
Bonne lecture !
Eléments de réflexion pour une installation domotique :
- Besoins & Motivations : à travers mon expérience, retrouvez les besoins et les motivations ; cette étape de réflexion nécessaire pour dimensionner votre installation.
- Choix du matériel et son intégration dans Jeedom : encore à travers mon expérience, retrouverez les raisons de mes choix du matériel et son intégration dans Jeedom.
- La surveillance de vos équipements : comment s’assurer que tout est en ligne, fonctionne ou se relance en cas de problème…
- Configurez l’historisation des données que vous stockez dans Jeedom et comprenez l’intérêt !
- Surveillez et pilotez votre serveur domotique en cas de problème par un second Jeedom !
Catégorie sécurité :
- La vidéo-surveillance avec la domotique sous Jeedom et MotionEye : comment intégrer une détection de mouvement fiable et un accès aisé à vos caméras.
- La mise en place d’une alarme automatique, fiable et de l’intelligence autour : comment mettre en place une alarme fiable avec toute la gestion, la mise en forme des événements ou les designs…
Catégorie interactions :
- Domowidget ou comment piloter Jeedom depuis Android facilement !
- Météo, vigilance météo, notifications & scénarios
- JPI et les possibilités domotiques : synthèse vocale, design, pilotage de chargeur, etc
- Toutes mes astuces pour un design réussi sous Jeedom : la compilation de tous mes trucs !
- Les notifications par écrit, la voix : la base de votre installation domotique !
Catégorie automatisation :
- Éclairage de Noël : fait-il jour ou nuit ? scénarios d’éclairage automatisés avec interrupteurs virtuels, widgets personnalisés.
- Pilotage du ballon d’eau chaude : comment optimiser votre chauffe d’eau et ainsi réduire votre facture d’électricité ?
- La gestion d’humidité et des VMC dans une maison : ou comment piloter votre (vos) VMC avec interactions, notifications et automatisme.
- La gestion des volets : Maitrisez interactions, programmation, automatisation !
- La gestion du confort, des habitudes : Automatisez chauffage, climatisation et vos habitudes quotidiennes.
- La gestion des personnes et de la présence : Automatisez les actions de présence et d’absence en sachant si les personnes sont là ou non !
Catégorie autres :
- La notification du courrier, colis, qui a pris le courrier : ou comment éviter d’attendre que la Poste passe ou d’ouvrir sa boite aux lettres vide !
Le matériel et sa configuration nécessaire pour une installation domotique :
- Votre serveur domotique
- L’architecture de votre réseau
- Choix du matériel et son intégration dans Jeedom
- Le VPN ou comment se simplifier en sécurité la vie !
- Le domaine et les sous-domaines ou comment accéder à chez soi
- La Raspberry, 3 fonctions clés en domotique !
- JPI et ses possibilités matérielles
- Pilotage d’un ballon d’eau chaude
- Domotisation d’une boite aux lettres
- Pilotage de VMC et d’humidité
- Gestion de la présence et des personnes
- La gestion de votre piscine, sa filtration et sa « connexion » avec l’Iopool EcO : automatisez la filtration de votre piscine et utilisez une solution alternative connectée avec un excellent rapport qualité/prix telle que l’Iopool EcO !
L’installation et la configuration d’un hyperviseur permettant la virtualisation :
- Installation de Proxmox 5
- Gestion de la sauvegarde sous Proxmox
- Ajout d’un compte administrateur à Proxmox
- Notifications par email sous Proxmox
- Surveillance du disque dur sous Proxmox
- Sécurisation du login sous Proxmox
- Surveillance de l’onduleur sous Proxmox
- Administrer facilement Proxmox à distance ou en local
- Modifications du refroidissement du serveur domotique
- Installation ou Migration à Proxmox 6 et toute sa configuration
Les machines virtuelles :
- Machine virtuelle APACHE, brique de base des autres VM – rendre accessible des services depuis Internet de manière sécurisée avec une adresse sousdomaine.domaine.com
- Machine virtuelle JEEDOM, configuration, restauration, sauvegarde et quelques éléments de base pour Jeedom !
- Machine virtuelle BLEA, mal nécessaire pour palier à un problème de stabilité du plugin du même nom et une antenne externe
- Machine virtuelle MOTIONEYE ou comment mettre en place une détection de mouvement fiable
- Machine virtuelle PIHOLE ou comment filtrer la publicité et piloter tout cela depuis Jeedom & Android
Je n’avance pas comme je le souhaite mais peu à peu le blog se remplit…
Bonjour,
J’ai utilisé le code des chevrons de @benj29 (ci-dessous) et avec des valeurs comme par exemple -80% ou 11,3% les chevrons ne s’affichent pas, une idée de ce qui est faux ?
<link href='https://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>
<div style="min-width:120px;min-height:40px;margin-right: 3px;margin-left: 3px;padding:1px !important;font-family:Montserrat, Arial; font-weight:normal;color:rgba(0,0,0,1);" class="cmd #history# container-fluid tooltips cmd cmd-widget" 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 style="font-weight: bold;font-size: 10px;#hideCmdName#" class="cmdName">#name_display#</span>
<span style="font-weight: bold;line-height: 1.5" class="pull-right"></span>
<span style="font-size: 1.7em;font-weight: bold;line-height: 1.5" class="center-block state"></span>
<span style="font-size: 1px;line-height: 1.5"class="iconCmd"></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:14px;"></i><span style="font-size:14px;color:#acacac;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#30b455;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#30b455;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#da3037;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#da3037;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#acacac;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#da3037;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#da3037;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#30b455;"> #state#<span style="font-size:14px;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:14px;"></i><span style="font-size:14px;color:#30b455;"> #state#<span style="font-size:14px;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>
Merci, Joël
Bonjour,
Je te remets mon code ici :
<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>
Il fonctionne (j’ai pris soin de revérifier) :
De quel type est ton champ ?
Mon widget utilise un « sens » pour si sur-consommation ou sous-consommation pour la production ou la consommation (notamment pour le PV).
A défaut, le paramètre est à 0 (consommation). 1 c’est pour la production (gain en >).
Bonjour @benj29,
Est-ce que tu aurais l’amabilité de placer le code du widget de lever/coucher du soleil ?
Ce serait sympa.
Merci, Joël
Le lever :
<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#]');
cmd.attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate);
cmd.find('.iconCmd').empty().append('<i class="icon Mdi mdi-weather-sunset-up" style="color:#ff8c00;font-size:15px;"></i><span style="font-size:15px;color:#acacac;">#state#</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>
Le coucher :
<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#]');
cmd.attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate);
cmd.find('.iconCmd').empty().append('<i class="icon Mdi mdi-weather-sunset-down" style="color:#da3037;font-size:15px;"></i><span style="font-size:15px;color:#acacac;">#state#</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>
Avec les dizaines de code donnés sur le forum sur ce modèle (icone + texte) et que j’ai aussi donnée dans ces pages, c’est un peu le fainéantise des vacances non !
Hello,
Mise à jour de plusieurs articles :
-
gestion de la présence : ajout des dernières nouveautés de Macrodroid sur les déclencheurs de zones (antennes relais), protection sur position inconnue pour les faux positifs.
-
gestion de la piscine : simple mémo sur le fait qu’IOpool va mettre en place dans les mois à venir une API. A suivre !
-
gestion du confort, thermostat : optimisation scénario de pilotage des thermostats, passage en mode temporel, contournement de la protection sur température estivale du mode climatisation (quand la température extérieure est inférieure à la pièce, la clim ne démarre pas).
-
gestion de l’humidité : j’ai remis à jour lors de la V4 en m’appuyant sur les modes, entrées/sorties, scénario et petit virtuel de gestion.
Prochaine mise à jour la partie JPI et gestion des affichages des tablettes et de la présence par zone.
J’espère pouvoir ensuite attaquer un article sur mes designs en V4.
Petit délire de la soirée :
- ajout de 2 nuts pour les vélos de la famille,
- ajout de l’automatisation du garage (sur alarme, vérification de présence récente) comme expliqué dans l’article de la présence/alarme.
Mode fainéant, quand j’arrive ou que madame arrive avec le petit loup derrière, le garage s’ouvrira pour ranger les vélos. Elle n’est pas belle la vie avec la domotique !
-
gestion des automatisations :
-
gestion des nuts :
-
état des personnes :
Le scénario est celui dans l’article de la présence et des automatisations :
Forcément maintenant le contre la montre va rentrer plus vite
Bonsoir @benj29
J’ai lu ton article Notifications par email sous Proxmox lien je me suis cassé les dents malgré avoir suivis scrupuleusement ton article,
Je te mets dans le contexte quand même: Proxmox VE 7.0-11 à jour sur un Hystou i7 8ème génération,
après quelques recherches et conseils (@nebz pour ne pas le citer ^^) j’ai appliqué et déroulé l’article suivant Obtenir postfix pour envoyer des mails en externe,
J’ai lu les commentaires des différents lecteurs qui se sont heurtés aux mêmes soucis que moi,
Si ma trouvaille peut servir au plus grand nombre
Au plaisir, bonne soirée,
Hello, je vois c’est proxmox 7, suis encore sous 6.
Le debian est peut être la raison ?
Faut que j’installe un serveur pour un ami bientôt, ce sera l’occasion de voir cela, merci.
Bonjour Benj,
J’avais le même problème avec la version 6 de proxmox,
Au plaisir, bon week-end,
Bonjour Benjamin,
Je te remercie encore pour tes articles !
Celui de JPI n’est plus accessible. Est-ce normal ou c’est parce que tu es en train de le mettre à jour ?
Pourrais-tu le remettre stp ?