Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Affichage d'un mot au lieu d'une valeur

Pour échanger sur les plugins classés en catégorie "Programmation"
Di@bl0
Timide
Messages : 6
Inscription : 23 août 2018, 17:59

Affichage d'un mot au lieu d'une valeur

Message par Di@bl0 » 25 nov. 2018, 18:41

Bonjour à tous,

Je souhaite afficher l’état de ma chaudière (que je reçois sous forme de valeur) sous forme de texte.

Exemple :

8 = auto
36 = Jour
34 = Nuit
33 = Vacances

Malgré mes recherches, je n'ai pas trouvé la solution, je pense que c'est réalisable directement dans un virtuel ou bien avec un Widget, mais je n'y arrive pas.

Merci d'avance :-)

Avatar de l’utilisateur
Phil56
Actif
Messages : 773
Inscription : 11 août 2015, 11:36

Re: Affichage d'un mot au lieu d'une valeur

Message par Phil56 » 25 nov. 2018, 20:03

Bonsoir,

si tu as déjà ton virtuel avec ton info de type numérique :
- tu vas dans les options de cette commande
- dans l'onglet Affichage tu sélectionnes le widget "badge (core)" puis tu enregistres
- dans l'onglet code, dans dashboard par exemple, tu coches "Activer la personnalisation du widget"
- dans le bloc de code tu remplaces

Code : Tout sélectionner

$('.cmd[data-cmd_id=#id#] .state').empty().append(_options.display_value +' #unite#');
par quelque chose comme ça :

Code : Tout sélectionner

var val = _options.display_value;
var valaff = "";           
switch(val)
{
	case '8':
	case 8:
		valaff = "auto";
		break;
	case '36':
        case 36:
        	valaff = "nuit";
        	break;
        default:
        	valaff = "????";
        	break;                
}

$('.cmd[data-cmd_id=#id#] .state').empty().append(valaff );
Tu peux aussi dupliquer ce widget dans le plugin widget et faire les mêmes modifs...

ken@vo
Phil

Edit : erreur de copier/coller
Box : Jeedom Maitre dans VM Esxi NUC intel i5, Jeedom Esclave RPI2 avec Zwave, Rfxcom, Blink1, EDISIO et TTS + VM Zoneminder
Protocoles : Zwave, X10, DI-O, HUE, EDISIO
Teleinfo (Dauguet rs232 mise en réseau avec une arduino mega)

Di@bl0
Timide
Messages : 6
Inscription : 23 août 2018, 17:59

Re: Affichage d'un mot au lieu d'une valeur

Message par Di@bl0 » 25 nov. 2018, 21:43

Phil56, bonne nouvelle, ça fonctionne a merveille.

Merci encore pour cette solution :-)

Yves.billaux
Timide
Messages : 16
Inscription : 29 déc. 2018, 12:45

Re: Affichage d'un mot au lieu d'une valeur

Message par Yves.billaux » 10 juin 2019, 21:24

Bonjour à tous,

Je déterre ce topic, parce que je voudrais faire exactement la même chose, a savoir afficher un texte en fonction d'une valeur d'info numérique.
Ex :
0=Volets fermés
1=Volets ouverts
2=Mouvement arrêté
3=En cours d'ouverture
4=En cours de fermeture

Malheureusement la solution proposée ici qui me semblait convenir n'est plus réalisable (Ou je ne sais pas comment) car depuis la version 3.2.24 l'onglet code n'existe plus...

Y a-t-il une autre solution ? Mon besoin me semble pourtant assez classique, mais je n'ai trouvé aucune solution fonctionnelle pour le moment.

Merci d'avance

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Affichage d'un mot au lieu d'une valeur

Message par winhex » 10 juin 2019, 22:51

Bonjour
Pour un novice

tu crees un scénarios
-- si état == 0 variable volet / valeurs fermés
-- si ....
Et tu crées un virtuel qui affiche cette variable

La solution du sujet est la création d'un widget

Yves.billaux
Timide
Messages : 16
Inscription : 29 déc. 2018, 12:45

Re: Affichage d'un mot au lieu d'une valeur

Message par Yves.billaux » 13 juin 2019, 19:54

Bonjour Winhex, et merci pour la réponse.
Peux-tu me dire comment on crée un widget de ce type ? J'ai essayer d'en créer un, mais je n'arrive pas bien a comprendre comment ça marche.
Je vais essayer la solution du scénario en attendant.
C'est dommage que l'on ne puisse pas faire ça facilement, je pense ne pas être le seul à qui cette fonction manque.
En tous cas, merci encore !!

winhex
Actif
Messages : 3799
Inscription : 23 janv. 2015, 01:41

Re: Affichage d'un mot au lieu d'une valeur

Message par winhex » 13 juin 2019, 23:17

inspire toi des widgets core
https://github.com/jeedom/core/tree/mas ... /dashboard
genre : cmd.info.numeric.shutter.html

rapidement crée un virtuel pour ne pas foutre le bazar et une fois fonctionnel tu appliques ton widget

supprime la #name_display# si tu ne veux pas afficher le nom ou utilise la fonction avancée (si tu veux l'utilisé pour autre chose)
nom : hideCmdName
valeur : display:none; (pas d'espace avant ni aprés)

le code brute que tu peux peaufiné à ta sauce
c'etait un vieux numérique de test qui change de couleur selon la valeur
j'ai ajouté empty et text (du jquery) et commenté // .append

la class en html
<strong class="state#id#" (c'est le style qui suit la mise en forme "font-size: 12px")
le moteur script
if (_options.display_value == 0 ) {
$(".state#id#").css('color', '#6699ff').empty().text("Volets fermés");
}
la ligne
$(".state#id#").css('color', '');
efface la couleur lors de la mise à jour

tu n'as plus qu'a continué les else if

Code : Tout sélectionner

<div class="tooltips cmd cmd-widget #history#" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" style="display: block;">
<center><span style="font-size : 12px !important;#hideCmdName#" class="cmdName">#name_display#</span> <strong class="state#id#" style="font-size: 12px;"></strong> #unite#</center>
<script>
jeedom.cmd.update['#id#'] = function(_options){
$('.cmd[data-cmd_id=#id#]').attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate)
//
// $('.cmd[data-cmd_id=#id#] .state#id#').empty().append(_options.display_value);

  $(".state#id#").css('color', ''); 
  if (_options.display_value == 0 ) {
$(".state#id#").css('color', '#6699ff').empty().text("Volets fermés");     
}else if (_options.display_value == 1 ) { 
  $(".state#id#").css('color', 'red').empty().text("Volets ouverts");   
}
  //
$('.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>
Pièces jointes
config.png
config.png (95.05 Kio) Consulté 2040 fois

Yves.billaux
Timide
Messages : 16
Inscription : 29 déc. 2018, 12:45

Re: Affichage d'un mot au lieu d'une valeur

Message par Yves.billaux » 16 juin 2019, 11:07

Salut Winhex,
Merci beaucoup d'avoir pris le temps de me répondre avec une réponse d'aussi bonne qualité !!!
Je vais essayer ça tout de suite.

Yves.billaux
Timide
Messages : 16
Inscription : 29 déc. 2018, 12:45

Re: Affichage d'un mot au lieu d'une valeur

Message par Yves.billaux » 16 juin 2019, 12:18

Re,
Je viens de tester, ça marche nickel !
Encore merci

Répondre

Revenir vers « [Catégorie] Programmation »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités