AP System API down?

Salut, un trop perçu par rapport à ma facture de l’an dernier. A priori c’est ce que j’aurais économisé cette année avec les panneaux et le changement de nos habitudes. Lave linge, lave vaisselle systématiquement quand il y a production. Chauffe eau dés que c’est possible ainsi que la piscine et depuis peu la nouvelle voiture de mme.
Je leur donne le surplus, mais j’envisage si ce n’est pas trop compliqué de peut-être doubler mon installation et de revendre le surplus du coup. Il me reste de la place pour aller jusqu’à 28 panneaux.

Aujourd’hui surprise, mon Ecu-R n’est plus connecté à internet et impossible de le reconfigurer avec l’iphone. Le wifi émis par l’ecu ne tient pas le temps de la configuration. Je me rappelle avoir galérer la première fois mais là c’est bizzare.

Olive va devoir nous faire un cours collectif avec ses beaux graphiques :smiley:

chauffe eau, piscine, chauffage … les gars
pensez panneaux thermique plutôt que voltaïque le rendement est 4 à 5 fois plus intéressant.

pour les belles courbes → influxdb et grafana.

Olive, quand tu parles de panneaux thermiques, c’est juste pour le chauffe eau ?
J"ai regardé de ce coté là mais l’installation est très couteuse et le retour sur investissement pas bon du tout surtout vu ma configuration de maison avec très peu de place pour le ballon.
C’est pour cela que j’ai opté pour les panneaux.
De mon coté le passa à plus de 3Kw oblige de refaire le tableau électrique qui a + de 30 ans et qui a besoin d’un bon lifting ! A suivre.
La revente pourquoi pas mais ça apporte son lot de contraintes il semblerait et déjà bien consommer sa production pour ne pas supprimer mais déjà alléger considérablement le cout électrique sur la maison c’est mon but. A suivre.
Pour l’instant EDF n’avait pas encore pris en compte la baisse de consommation chez moi, ça a tout juste commencé avec une baisse de 50€ par mois, mais malgré un linky communiquant je me rends compte qu’ils ne tienne pas compte des retours mensuels mais de l’annuel.
Je recevais des indications de baisse de consommation qui correspondaient à ce que je produisais (quand je n’avais que 4 panneaux) mais d’un autre coté mon mensuel ne baissait pas …
A suivre là aussi !

Bonjour,
N’oubliez pas les offres d’achats groupés organisé chaque année par Que Choisir ou Famille de France etc …
Il y a plus de 10% à gagner à chaque fois. Là je suis tranquille sur une offre à tarif bloqué pour 2 ans.
Produire pour auto-consommer au maximum et acheté le moins cher possible ce qu’on doit prendre du réseau.
J’avais regardé pour les panneaux thermique pour le chauffe eau, mais le toit bien orienté est sur une dépendance à 25 mètres de la maison principale.
Bon Dimanche au soleil :sunrise:

Bonjour,
Bon je suis toujours en test et je dois merder quelquepart dans ma compréhension.
Tu dis qu’il faut créer autant de composants que l’on a d’inverter.
3 inverters, j’ai donc créé 3 virtuels nommés ainsi :
APSystemEcu0
APSystemEcu1
APSystemEcu2
et ils sont dans l’Objet [APS]
comme le virtuel global et j’ai bien renseigné dans le scénario.

$APSystemJeedomName=« [APS][Production totale APS] »;
et
$APSystemJeedomEcuPrefixName=« [APS][APSystemEcu] »;

Dans l’objet APS j’ai bien le virtuel [Production totale APS] qui se met à jour mais pas les 3 inverters.
Et je ne vois pas mon erreur qui doit être sous mes yeux :tipping_hand_man: donc appel à l’oeil neuf :slight_smile:
Au cas où j’ai vérifié mon json qui contient bien toutes les valeurs.
Cldt
Heddy

Regarde mon exempls, y’a pas de crochet fermant pour le $APSystemJeedomEcuPrefixName (dans la log du script tu dois avoir des erreurs comme quoi les composants ne sont pas trouvés non ?)… L’informatique c’est ça des fois ça ne tient qu’à un fil … Tiens moi au courant avec une belle capture d’écran pour me faire voir que ça fonctionne …

Si je comprends bien tu as des micro-onduleurs avec 4 panneaux chacun ?

Putain j’suis comme toi j’ai un pb de connexion à mon ECU-R … t’as fini par faire comment pour qu’il refonctionne ? Je le ping mais il ne répond plus ! Le bougre ! Alors que les données remontent bien dans l’appli cloud …

Bon c’est bon un reboot de l’ecu et hop … c’est reparti pour la remontée d’info … L’adage "dans le doute reboot est donc vrai ici encore !

Je vais donc travailler sur ça, si erreur de connexion je vais tenter de remonter un message d’erreur dans la domotique, je ferai passer la modif afin de pouvoir le rebooter en auto si besoin …

Merci

Burne que je suis, tellement l’habitude que je suis passé dessus 100 fois sans le voir :frowning_face:
Ca marche beaucoup mieux :wave:
Par contre pour le voltage il ne s’affiche que pour le premier des 4 panneaux, ce qui me semble normal car c’est l’inverter qui fait le 230 pas les panneaux. Donc pas la peine d’en mettre 4.

Pour l’ECU, j’ai galéré comme un fou et il a failli passer par la fenêtre, mon Iphone aussi.
L’iphone se connecte bien à L’ecu sur son wifi ecu… mais dès que j’arrivais à la configuration wlan il se déconnectait. J’ai réussi au final avec de la dextérité en faisant vite avant la déconnexion. Mais le pire et c’est ce que tu dois avoir c’est que la led cloud ne s’est remise à On que quelques heures après.
Il faut donc que tu sois patient et ça va revenir … lentement.
A un moment je me suis même demandé s’ils ne voyaient pas notre récolte du json et qu’ils n’avaient pas coupé volontairement. Ca m’a bien pris la tête ce weekend.

Test d’affichage :

1 « J'aime »

Bon ben moi c’était juste un « bug » je pense, un reboot et le voyant cloud c’est allumé dans la foulée et la récupération de données est repartie !

Cool ton affichage, j’ai jamais tellement travaillé dessus de mon coté, j’suis fortement intéressé si t’as moyen de m’expliquer ça ce serait cool …

En tout cas c’est cool que toutes les données remontent bien …

Je viens de regarder pour les voltages, j’ai des données pour chaque panneau de mon coté …
Par contre comme tu le dis si bien ça sert pas à grand chose d’avoir plusieurs fois l’info car c’est la même !
Encore la tension délivré par le panneau pourrait être utile par panneau mais sinon le 240V pas d’utilité car c’est bien la sortie de l’onduleur donc pas lié à chaque panneau.

J’ai utilisé pour les panneaux un widget que j’avais installé un jour de @Sshafi je pense pour rendre à César.

pour le online j’ai utilisé un widget publié par @Tarlak c’est sympa la petite led verte et quand c’est offline c’est une led rouge qui clignote

Petite question saurais tu me dire comment enlever les noms power0 1 etc … car ils sont mis par le scénario

C’est clair que ça surcharge pour rien.
Et autrement le unknow qui est à 02 chez moi ça veut surement dire quelque chose, mais quoi c’est un mystère pour le moment, tu as quoi toi ?

1 « J'aime »

Moi j’ai 01, ça doit être un truc propriétaire … va savoir !
Merci pour les liens sur les plugins mais avec cette histoire de changement de forum y’a plein de liens morts et pour suivre justement des auteurs c’est la cata ! => MP

https://forum.jeedom.com/viewtopic.php?t=22801#p403022
Effectivement c’est sur l’ancien forum (quelle perte d’information d’avoir les liens inactifs … pffff)

cmd.info.numeric.Sky-progressBar.html
Comme d’hab pour installer, outil Widget, code, nouveau

<div id="box#id#" class="cmd #history# tooltips cmd-widget" style="min-width:90px;min-height:90px;position:relative;top:3px;" 
     data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="#collectDate#">  
  <center>
        <div id="name#id#"  style="font-size: 0.85em;position: relative;top:-2px;">#name#</div>
  </center>
   
    
  	<div id="cmd#id#" style="text-align: left; position: relative; height: 1.7em; padding: 2px;">
       <div id="label#id#" class="progress-label" 
            style="font-size: 1em; color: black; position: absolute; font-weight: bold; top: 1px; text-align: center; width: 100%;">#state# #unite#</div>
     </div>

	<script>
		var boxid = "box#id#", nameid = "name#id#", labelid = "label#id#", id = "cmd#id#", 
			valeurState = parseFloat("#state#"), maxvaleur = parseFloat("#maxValue#"), minvaleur = parseFloat("#minValue#"), corrNegative = 0;
		if(minvaleur < 0){
          corrNegative = minvaleur*-1;
          maxvaleur = maxvaleur + corrNegative;
          valeurState = valeurState + corrNegative;
		}
	/*****************************************************************************************************************/
     /******************************** Options de personnalisation Valeur par defaut **********************************/
     /*****************************************************************************************************************/
     /**1** Couleur progressBar **/ 	var couleurProgressBar = ("#couleurProgressBar#" == '#'+'couleurProgressBar#') ? '#A4D5EF' : ConvertPara("#couleurProgressBar#");
     /**2** Couleur texte **/			var couleurText = ("#couleurText#" == '#'+'couleurText#') ? 'black' : ConvertPara("#couleurText#");//'black';
     /**3** Barre vértical **/			var progressBarVertical = ("#progressBarVertical#" == '#'+'progressBarVertical#') ? false : ConvertPara("#progressBarVertical#");//false;
     /**4** Positionnement Barre **/	var PositionBar = ("#PositionBar#" == '#'+'PositionBar#') ? [0,0] : ConvertPara("#PositionBar#");//[0,0];
     /**5** Position texte **/			var PositionText = ("#PositionText#" == '#'+'PositionText#') ? ['center',0,0,0] : ConvertPara("#PositionText#");//['center',0,0,0]; 
     /**6** Dimension  barre **/		var DimensionBar = ("#DimensionBar#" == '#'+'DimensionBar#') ? [0,0] : ConvertPara("#DimensionBar#");//[0,0];
     /**7** Couleur fond barre **/		var CouleurFondBar = ("#CouleurFondBar#" == '#'+'CouleurFondBar#') ? ['#FFF',0] : ConvertPara("#CouleurFondBar#");//['#FFF',0];
     /**8** ??? **/
     /*****************************************************************************************************************/
     /*****************************************************************************************************************/
     /*****************************************************************************************************************/			
		  
      function TypeCouleur(valeur){
console.log(' function TypeCouleur('+valeur+')');
        var typeCouleur;
        if(/true|false/.test(valeur)){
  console.log('Valeur vaut : true ou false');
          typeCouleur = 'bool';
        }else if(/^#[a-zA-Z0-9]{3,6}$/.test(valeur)){
  console.log('Valeur vaut : Code HTML');  
          typeCouleur = 'html';
        }else if(/^rgb\(?[012]?\d\d,?[012]?\d\d,?[012]?\d\d\)$/i.test(valeur)){
  console.log('Valeur vaut : Code RGB'); 
          typeCouleur = 'rgb';
        }else if(/^[a-zA-Z]{3,}$/i.test(valeur)){
  console.log('Valeur vaut : Code NOM'); 
          typeCouleur = 'nom';
        }else if(/^-?\d{1,}:.+\&?/i.test(valeur)){
  console.log('Valeur vaut : Code Objet');
          typeCouleur = 'objet';
        }else if(/^[a-zA-Z0-9#\(\),\-]+\&/i.test(valeur)){
  console.log('Valeur vaut : Code Array');   
          typeCouleur = 'array';
        }else{
  console.log('Valeur vaut : Non reconnu');
          typeCouleur = 'inconnu';
        }
        return typeCouleur;
      }
      
      function ConvertPara(valeur){
      	var para, test = TypeCouleur(valeur);
        if(test == 'bool' || test == 'html'|| test == 'rgb' || test == 'nom'){         
          if(test == 'bool'){
            if(valeur == 'true'){
            	valeur = true; 
            }else{
              	valeur = false;
            }
          }
          para =  valeur;
console.log('Convertion1 '+test+' : '+para+"\nType : "+typeof(para)); 
        }else if(test == 'objet'){         
          var arrayVal = valeur.split('&'), cleVal;
console.log(arrayVal);
          para = new Object();
          for(var cle in arrayVal){
            cleVal = arrayVal[cle].split(':');
console.log('Correction : '.corrNegative);
			var tmp = (parseFloat(cleVal[0])+corrNegative);
console.log(tmp);
            para[tmp] = cleVal[1];
console.log('Clé/valeur : '+tmp+'/'+para[tmp]);            
          }
//          para =  valeur;
console.log('Convertion2 '+test+' : '+typeof(para));  
        }else if(test == 'array'){ 
        	para = valeur.split('&');
console.log('Convertion3 '+test+' : '+para); 
        }else{
console.log('Convertion Impossible');
          para =  'erreur';
        }
        return para;
      }      
      
      function couleur(valeur){
console.log('Fonction couleur '+valeur);
        var couleurs = valeur;
        if($.type(valeur) === 'object'){
console.log('Fonction couleur type objet');
console.log(valeur);
          for(var cle in valeur){
console.log('Fonction couleur clé:val : '+cle+' - '+valeur[cle]);
            if(valeurState >= parseFloat(cle) ){
               couleurs = valeur[cle];
  console.log('Couleur : '+cle + ' '+valeur[cle]+ ' '+valeurState);
            }
          }
        }
        return couleurs;
      }
      function positionnement(arrayPositionnement){
      	var position = $('#'+id).position(), P_top = position.top, P_left = position.left;
        $('#'+id).css({
          'top':(P_top+parseFloat(arrayPositionnement[0])),
          'left':((P_left-P_left)+parseFloat(arrayPositionnement[1]))
        });                
      }
       function positionnementext(arrayPosition){
         var positiontext = arrayPosition[0];
         var labelHtml = $('#'+labelid), idParent = labelHtml.parent().attr('id'), 
            position = $('#'+id).position(), P_top = position.top, P_left = position.left;  
        
        if(progressBarVertical){ //Dans le cas d'un positionnement vertical de la barre
console.log("Vértical :\nTop Barre : "+P_top+" \nLeft Barre : "+P_left+
            "\nHeight barre : "+ $('#'+id).height()+"\nWidth barre : "+ $('#'+id).width()+
            "\n\nLabel top : "+labelHtml.position().top + "\nLabel left : "+labelHtml.position().left + 
            "\nLabel height : "+labelHtml.height() + "\nLabel width : "+labelHtml.width()+
             "\n\nBox width : "+$('#'+boxid).width()+"\nBox height : "+$('#'+boxid).height()+
            "\n Positionnement texte : "+positiontext
           );          
          if(positiontext == 'centrer' ){//&& idParent != id 
 console.log('Positionnement texte Centrer '+$('#'+id).height()+' '+ labelHtml.height()+' '+(($('#'+id).height()-labelHtml.height())/1.7)); 
             $('#'+id).append(labelHtml);
             labelHtml.css({
                 'top':(($('#'+id).height()-labelHtml.height())/1.7)+'px',
                 'left': 0,
                 'width': '100%' 
               });
             
           }
           else if(idParent != boxid && positiontext =='dessus' || positiontext == 'dessous' ||
                   positiontext == 'gauche' || positiontext == 'droite' ){              
             if(positiontext =='dessus'){             
               $('#'+id).before(labelHtml);
               $('#'+id).css({
                 'top':((position.top *2)+(labelHtml.height()*0.7))
               });
               labelHtml.css({
                 'top': position.top
               });
            }else if(positiontext == 'dessous'){
               $('#'+id).after(labelHtml);
				 labelHtml.css({
                 'top': $('#'+id).width()+labelHtml.height()
               });
             }else if(positiontext == 'gauche'){
               $('#'+id).before(labelHtml);
               $('#'+id).css({
                 'left': $('#'+labelid).height()
               });
               labelHtml.css({
                 'top':($('#'+labelid).position().top + (($('#'+id).width()+labelHtml.height())/2)),
                 'left': 0,
                 'width': '50%' 
               });
           }else if(positiontext == 'droite'){
               $('#'+id).after(labelHtml);
			   $('#'+id).css({
                 'left': parseFloat('-'+$('#'+labelid).height())
               });
               labelHtml.css({
                 'top':($('#'+labelid).position().top + (($('#'+id).width()+labelHtml.height())/2)),
                 'left': ($('#'+id).height()*2),
                 'width': '50%'
               });
           }else{
console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
           }
           /([0-9]+)/.exec($('#'+boxid).css('min-height'));
           //var minHeight = (parseFloat(RegExp.$1)+labelHtml.height()+ );
             var minHeight = (labelHtml.height()+ $('#'+id).width() + $('#'+nameid).height());
           $('#'+boxid).css('min-height',minHeight+'px');
             
         }else{
console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
         }
           var rotate = 0, textTop = 0, textLeft = 0;
           if(typeof(arrayPosition[1] == 'numeric')){  
              var rotate = arrayPosition[1];
           }
console.log('Modif text rotate : '+arrayPosition[1]);               

           if(typeof(arrayPosition[2] == 'numeric')){  
               var textTop = parseFloat($('#'+labelid).position().top) +parseFloat(arrayPosition[2]);
           }
console.log('Modif text textTop : '+arrayPosition[2]+' '+ $('#'+labelid).position().top);
           if(typeof(arrayPosition[3] == 'numeric')){  
              var textLeft = parseFloat($('#'+labelid).position().left) +parseFloat(arrayPosition[3]);
           }
console.log('Modif text textLeft : '+arrayPosition[3]+' '+$('#'+labelid).position().left);
console.log('Modif text : '+rotate+' '+textTop+' '+textLeft);
           if(positiontext == 'centrer' ){	
          	labelHtml.css({
              'transform': 'rotate('+rotate+'deg)',
              'top': textLeft,
              'left':textTop 
           });
          }else{
            labelHtml.css({
              'transform': 'rotate('+rotate+'deg)',
              'top': textTop,
              'left': textLeft
            });
          }  
        
        }else{//Dans le cas d'un positionnement horizontal de la barre
          
           if(positiontext =='centrer' && idParent != id ){
             $('#'+id).append(labelHtml);
           }
           else if(idParent != boxid && positiontext =='dessus' || positiontext == 'dessous' ||
                   positiontext == 'gauche' || positiontext == 'droite' ){
             $('#'+boxid).append(labelHtml);

             if(positiontext =='dessus'){
               labelHtml.css({
                 'top':(position.top-$('#'+id).height())
               });
             }else if(positiontext == 'dessous'){
               labelHtml.css({
                 'top':(3 + position.top + $('#'+id).height())
               });
             }else if(positiontext == 'gauche'){
               labelHtml.css({
                 'top':position.top,
                 'left': '-'+($('#'+id).width()-15)+'px'
               });  
           }else if(positiontext == 'droite'){
               labelHtml.css({
                 'top':position.top,
                 'left': ($('#'+id).width()-15)+'px'
               });
           }else{
             console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
           }
           /([0-9]+)/.exec($('#'+boxid).css('min-width'));
           var minWidth = (parseFloat(RegExp.$1)+Math.abs($('#'+labelid).position().left)+ position.left);
           $('#'+boxid).css('min-width',minWidth+'px');
         }else{
            console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
         }
           var rotate = 0, textTop = 0, textLeft = 0;
           if(arrayPosition[1]){  
               var rotate = arrayPosition[1];
           }

          if(typeof(arrayPosition[2] == 'numeric')){  
              var textTop = parseFloat($('#'+labelid).position().top) +parseFloat(arrayPosition[2]);
           }

           if(typeof(arrayPosition[3] == 'numeric')){  
              var textLeft = parseFloat($('#'+labelid).position().left) +parseFloat(arrayPosition[3]);
           }
          
            labelHtml.css({
              'transform': 'rotate('+rotate+'deg)',
              'top': textTop,
              'left': textLeft
            });        
         }

      }
      
      function sizeBar(arrayPara){
console.log("SizeBarre :\nheigth "+ $('#'+id).height()+"\nwidth "+ $('#'+id).width());
        $('#'+id).css({
          'height': ($('#'+id).height()+  parseFloat(arrayPara[0]))+'px',
          'width': ($('#'+id).width()+  parseFloat(arrayPara[1]))+'px'
        });
      }
      
      //Création progressBar
      $('#'+id).progressbar({
         value: valeurState,
         max : maxvaleur
      });
      
      //Partamètre commun
      $('#'+id+' .ui-progressbar-value').css({
        'background-color': couleur(couleurProgressBar)
      });
      $('#'+boxid+' .progress-label').css({
        'color':couleur(couleurText),
        'z-index':10
      })
      
      //Paramètre spécifique A la position vértical/Horizontal
      if(progressBarVertical === true){
        $('#'+id).css({
          	'transform': 'rotate(-90deg)', 
          	'width': ($('#'+id).parent().height()*0.8),
          	'top': '40px'
        });
      }else{
         $('#'+id).css({
           	'width': ($('#'+id).width()*0.9),
           	'top': '10px'
         });
      }
            
   
	  sizeBar(DimensionBar);//Permet le redimentionnement de la barre
      positionnement(PositionBar);//Permet de modifier la position de la barre
      positionnementext(PositionText);//Permet de modifier la position de la barre
      
      if(CouleurFondBar[1] > 0){
      	$('#'+id).css({
          'box-shadow': '0px 0px '+(($('#'+id).height()*0.02)*CouleurFondBar[1])+'px '+CouleurFondBar[0]+' inset'
        });  
      }else{
        $('#'+id).css({
          'box-shadow': $('#'+id).width()+'px 0px 0px '+CouleurFondBar[0]+' inset'
        }); 
      }
    </script>
</div>

Super, merci !

Eh oui il pleut aujourd’hui :roll_eyes:
Reste plus qu’à trouver comment enlever les noms power0 power1 etc… je les ai bien décochés mais c’est le scénario qui les affiches et je ne sais pas faire :tipping_hand_man:


J"ai mis la ligne responsable de l’affichage en commentaire (ligne 4, commençant par <!-- et terminant par -->).
Par contre pour que ce soit pris en compte il m’a fallu repasser le widget à default puis revenir sur le widget qui va bien, il doit « cacher » le code quelque part et faut forcer la maj !

<div id="box#id#" class="cmd #history# tooltips cmd-widget" style="min-width:90px;min-height:90px;position:relative;top:3px;" 
     data-type="info" data-subtype="numeric" data-cmd_id="#id#" title="#collectDate#">   
  <center>
        <!-- <div id="name#id#"  style="font-size: 0.85em;position: relative;top:-2px;">#name#</div> -->
  </center>
   
    
  	<div id="cmd#id#" style="text-align: left; position: relative; height: 1.7em; padding: 2px;">
       <div id="label#id#" class="progress-label" 
            style="font-size: 1em; color: black; position: absolute; font-weight: bold; top: 1px; text-align: center; width: 100%;">#state# #unite#</div>
     </div>

	<script>
		var boxid = "box#id#", nameid = "name#id#", labelid = "label#id#", id = "cmd#id#", 
			valeurState = parseFloat("#state#"), maxvaleur = parseFloat("#maxValue#"), minvaleur = parseFloat("#minValue#"), corrNegative = 0;
		if(minvaleur < 0){
          corrNegative = minvaleur*-1;
          maxvaleur = maxvaleur + corrNegative;
          valeurState = valeurState + corrNegative;
		}
	/*****************************************************************************************************************/
     /******************************** Options de personnalisation Valeur par defaut **********************************/
     /*****************************************************************************************************************/
     /**1** Couleur progressBar **/ 	var couleurProgressBar = ("#couleurProgressBar#" == '#'+'couleurProgressBar#') ? '#A4D5EF' : ConvertPara("#couleurProgressBar#");
     /**2** Couleur texte **/			var couleurText = ("#couleurText#" == '#'+'couleurText#') ? 'black' : ConvertPara("#couleurText#");//'black';
     /**3** Barre vértical **/			var progressBarVertical = ("#progressBarVertical#" == '#'+'progressBarVertical#') ? false : ConvertPara("#progressBarVertical#");//false;
     /**4** Positionnement Barre **/	var PositionBar = ("#PositionBar#" == '#'+'PositionBar#') ? [0,0] : ConvertPara("#PositionBar#");//[0,0];
     /**5** Position texte **/			var PositionText = ("#PositionText#" == '#'+'PositionText#') ? ['center',0,0,0] : ConvertPara("#PositionText#");//['center',0,0,0]; 
     /**6** Dimension  barre **/		var DimensionBar = ("#DimensionBar#" == '#'+'DimensionBar#') ? [0,0] : ConvertPara("#DimensionBar#");//[0,0];
     /**7** Couleur fond barre **/		var CouleurFondBar = ("#CouleurFondBar#" == '#'+'CouleurFondBar#') ? ['#FFF',0] : ConvertPara("#CouleurFondBar#");//['#FFF',0];
     /**8** ??? **/
     /*****************************************************************************************************************/
     /*****************************************************************************************************************/
     /*****************************************************************************************************************/			
		  
      function TypeCouleur(valeur){
console.log(' function TypeCouleur('+valeur+')');
        var typeCouleur;
        if(/true|false/.test(valeur)){
  console.log('Valeur vaut : true ou false');
          typeCouleur = 'bool';
        }else if(/^#[a-zA-Z0-9]{3,6}$/.test(valeur)){
  console.log('Valeur vaut : Code HTML');  
          typeCouleur = 'html';
        }else if(/^rgb\(?[012]?\d\d,?[012]?\d\d,?[012]?\d\d\)$/i.test(valeur)){
  console.log('Valeur vaut : Code RGB'); 
          typeCouleur = 'rgb';
        }else if(/^[a-zA-Z]{3,}$/i.test(valeur)){
  console.log('Valeur vaut : Code NOM'); 
          typeCouleur = 'nom';
        }else if(/^-?\d{1,}:.+\&?/i.test(valeur)){
  console.log('Valeur vaut : Code Objet');
          typeCouleur = 'objet';
        }else if(/^[a-zA-Z0-9#\(\),\-]+\&/i.test(valeur)){
  console.log('Valeur vaut : Code Array');   
          typeCouleur = 'array';
        }else{
  console.log('Valeur vaut : Non reconnu');
          typeCouleur = 'inconnu';
        }
        return typeCouleur;
      }
      
      function ConvertPara(valeur){
      	var para, test = TypeCouleur(valeur);
        if(test == 'bool' || test == 'html'|| test == 'rgb' || test == 'nom'){         
          if(test == 'bool'){
            if(valeur == 'true'){
            	valeur = true; 
            }else{
              	valeur = false;
            }
          }
          para =  valeur;
console.log('Convertion1 '+test+' : '+para+"\nType : "+typeof(para)); 
        }else if(test == 'objet'){         
          var arrayVal = valeur.split('&'), cleVal;
console.log(arrayVal);
          para = new Object();
          for(var cle in arrayVal){
            cleVal = arrayVal[cle].split(':');
console.log('Correction : '.corrNegative);
			var tmp = (parseFloat(cleVal[0])+corrNegative);
console.log(tmp);
            para[tmp] = cleVal[1];
console.log('Clé/valeur : '+tmp+'/'+para[tmp]);            
          }
//          para =  valeur;
console.log('Convertion2 '+test+' : '+typeof(para));  
        }else if(test == 'array'){ 
        	para = valeur.split('&');
console.log('Convertion3 '+test+' : '+para); 
        }else{
console.log('Convertion Impossible');
          para =  'erreur';
        }
        return para;
      }      
      
      function couleur(valeur){
console.log('Fonction couleur '+valeur);
        var couleurs = valeur;
        if($.type(valeur) === 'object'){
console.log('Fonction couleur type objet');
console.log(valeur);
          for(var cle in valeur){
console.log('Fonction couleur clé:val : '+cle+' - '+valeur[cle]);
            if(valeurState >= parseFloat(cle) ){
               couleurs = valeur[cle];
  console.log('Couleur : '+cle + ' '+valeur[cle]+ ' '+valeurState);
            }
          }
        }
        return couleurs;
      }
      function positionnement(arrayPositionnement){
      	var position = $('#'+id).position(), P_top = position.top, P_left = position.left;
        $('#'+id).css({
          'top':(P_top+parseFloat(arrayPositionnement[0])),
          'left':((P_left-P_left)+parseFloat(arrayPositionnement[1]))
        });                
      }
       function positionnementext(arrayPosition){
         var positiontext = arrayPosition[0];
         var labelHtml = $('#'+labelid);
         var idParent = labelHtml.parent().attr('id');
         var  position = $('#'+id).position();
         var  P_top = position.top;
         var P_left = position.left;  
        
        if(progressBarVertical){ //Dans le cas d'un positionnement vertical de la barre
console.log("Vértical :\nTop Barre : "+P_top+" \nLeft Barre : "+P_left+
            "\nHeight barre : "+ $('#'+id).height()+"\nWidth barre : "+ $('#'+id).width()+
            "\n\nLabel top : "+labelHtml.position().top + "\nLabel left : "+labelHtml.position().left + 
            "\nLabel height : "+labelHtml.height() + "\nLabel width : "+labelHtml.width()+
             "\n\nBox width : "+$('#'+boxid).width()+"\nBox height : "+$('#'+boxid).height()+
            "\n Positionnement texte : "+positiontext
           );          
          if(positiontext == 'centrer' ){//&& idParent != id 
 console.log('Positionnement texte Centrer '+$('#'+id).height()+' '+ labelHtml.height()+' '+(($('#'+id).height()-labelHtml.height())/1.7)); 
             $('#'+id).append(labelHtml);
             labelHtml.css({
                 'top':(($('#'+id).height()-labelHtml.height())/1.7)+'px',
                 'left': 0,
                 'width': '100%' 
               });
             
           }
           else if(idParent != boxid && positiontext =='dessus' || positiontext == 'dessous' ||
                   positiontext == 'gauche' || positiontext == 'droite' ){              
             if(positiontext =='dessus'){             
               $('#'+id).before(labelHtml);
               $('#'+id).css({
                 'top':((position.top *2)+(labelHtml.height()*0.7))
               });
               labelHtml.css({
                 'top': position.top
               });
            }else if(positiontext == 'dessous'){
               $('#'+id).after(labelHtml);
				 labelHtml.css({
                 'top': $('#'+id).width()+labelHtml.height()
               });
             }else if(positiontext == 'gauche'){
               $('#'+id).before(labelHtml);
               $('#'+id).css({
                 'left': $('#'+labelid).height()
               });
               labelHtml.css({
                 'top':($('#'+labelid).position().top + (($('#'+id).width()+labelHtml.height())/2)),
                 'left': 0,
                 'width': '50%' 
               });
           }else if(positiontext == 'droite'){
               $('#'+id).after(labelHtml);
			   $('#'+id).css({
                 'left': parseFloat('-'+$('#'+labelid).height())
               });
               labelHtml.css({
                 'top':($('#'+labelid).position().top + (($('#'+id).width()+labelHtml.height())/2)),
                 'left': ($('#'+id).height()*2),
                 'width': '50%'
               });
           }else{
console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
           }
           /([0-9]+)/.exec($('#'+boxid).css('min-height'));
           //var minHeight = (parseFloat(RegExp.$1)+labelHtml.height()+ );
             var minHeight = (labelHtml.height()+ $('#'+id).width() + $('#'+nameid).height());
           $('#'+boxid).css('min-height',minHeight+'px');
             
         }else{
console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
         }
           var rotate = 0, textTop = 0, textLeft = 0;
           if(typeof(arrayPosition[1] == 'numeric')){  
              var rotate = arrayPosition[1];
           }
console.log('Modif text rotate : '+arrayPosition[1]);               

           if(typeof(arrayPosition[2] == 'numeric')){  
               var textTop = parseFloat($('#'+labelid).position().top) +parseFloat(arrayPosition[2]);
           }
console.log('Modif text textTop : '+arrayPosition[2]+' '+ $('#'+labelid).position().top);
           if(typeof(arrayPosition[3] == 'numeric')){  
              var textLeft = parseFloat($('#'+labelid).position().left) +parseFloat(arrayPosition[3]);
           }
console.log('Modif text textLeft : '+arrayPosition[3]+' '+$('#'+labelid).position().left);
console.log('Modif text : '+rotate+' '+textTop+' '+textLeft);
           if(positiontext == 'centrer' ){	
          	labelHtml.css({
              'transform': 'rotate('+rotate+'deg)',
              'top': textLeft,
              'left':textTop 
           });
          }else{
            labelHtml.css({
              'transform': 'rotate('+rotate+'deg)',
              'top': textTop,
              'left': textLeft
            });
          }  
        
        }else{//Dans le cas d'un positionnement horizontal de la barre
          
           if(positiontext =='centrer' && idParent != id ){
             $('#'+id).append(labelHtml);
           }
           else if(idParent != boxid && positiontext =='dessus' || positiontext == 'dessous' ||
                   positiontext == 'gauche' || positiontext == 'droite' ){
             $('#'+boxid).append(labelHtml);

             if(positiontext =='dessus'){
               labelHtml.css({
                 'top':(position.top-$('#'+id).height())
               });
             }else if(positiontext == 'dessous'){
               labelHtml.css({
                 'top':(3 + position.top + $('#'+id).height())
               });
             }else if(positiontext == 'gauche'){
               labelHtml.css({
                 'top':position.top,
                 'left': '-'+($('#'+id).width()-15)+'px'
               });  
           }else if(positiontext == 'droite'){
               labelHtml.css({
                 'top':position.top,
                 'left': ($('#'+id).width()-15)+'px'
               });
           }else{
             console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
           }
           /([0-9]+)/.exec($('#'+boxid).css('min-width'));
           var minWidth = (parseFloat(RegExp.$1)+Math.abs($('#'+labelid).position().left)+ position.left);
           $('#'+boxid).css('min-width',minWidth+'px');
         }else{
            console.log("Positionnement Inconu : #name#\ntop: "+ position.top +"\nleft : "+ position.left+ "\nParent " + idParent); 
         }
           var rotate = 0, textTop = 0, textLeft = 0;
           if(arrayPosition[1]){  
               var rotate = arrayPosition[1];
           }

          if(typeof(arrayPosition[2] == 'numeric')){  
              var textTop = parseFloat($('#'+labelid).position().top) +parseFloat(arrayPosition[2]);
           }

           if(typeof(arrayPosition[3] == 'numeric')){  
              var textLeft = parseFloat($('#'+labelid).position().left) +parseFloat(arrayPosition[3]);
           }
          
            labelHtml.css({
              'transform': 'rotate('+rotate+'deg)',
              'top': textTop,
              'left': textLeft
            });        
         }

      }
      
      function sizeBar(arrayPara){
console.log("SizeBarre :\nheigth "+ $('#'+id).height()+"\nwidth "+ $('#'+id).width());
        $('#'+id).css({
          'height': ($('#'+id).height()+  parseFloat(arrayPara[0]))+'px',
          'width': ($('#'+id).width()+  parseFloat(arrayPara[1]))+'px'
        });
      }
      
      //Création progressBar
      $('#'+id).progressbar({
         value: valeurState,
         max : maxvaleur
      });
      
      //Partamètre commun
      $('#'+id+' .ui-progressbar-value').css({
        'background-color': couleur(couleurProgressBar)
      });
      $('#'+boxid+' .progress-label').css({
        'color':couleur(couleurText),
        'z-index':10
      })
      
      //Paramètre spécifique A la position vértical/Horizontal
      if(progressBarVertical === true){
        $('#'+id).css({
          	'transform': 'rotate(-90deg)', 
          	'width': ($('#'+id).parent().height()*0.8),
          	'top': '40px'
        });
      }else{
         $('#'+id).css({
           	'width': ($('#'+id).width()*0.9),
           	'top': '10px'
         });
      }
            
   
	  sizeBar(DimensionBar);//Permet le redimentionnement de la barre
      positionnement(PositionBar);//Permet de modifier la position de la barre
      positionnementext(PositionText);//Permet de modifier la position de la barre
      
      if(CouleurFondBar[1] > 0){
      	$('#'+id).css({
          'box-shadow': '0px 0px '+(($('#'+id).height()*0.02)*CouleurFondBar[1])+'px '+CouleurFondBar[0]+' inset'
        });  
      }else{
        $('#'+id).css({
          'box-shadow': $('#'+id).width()+'px 0px 0px '+CouleurFondBar[0]+' inset'
        }); 
      }
    </script>
</div>

image

Je vais aussi tenter d’ajouter une autre couleur et une autre valeur pour fournir le max du panneau dans la journée.
Une image de fond d’un panneau aussi avec la couleur transparent de remplissement ce sera la cerise sur le gateau …
Faut que je révise mon CSS un peu mais ça va l’faire, faut juste que j’ai le temps (ou que je le prenne)

Merci. C’est fait en fait je n’avais pas compris que le nom s’affichait à cause du code widget puisque j’avais décoché l’affichage du nom dans jeedom. Ca a pris en compte de suite chez moi.
J’ai mis 3 couleurs mais aujourd’hui par manque de soleil ça n’était pas franc. Je commence à jaune pale jusqu’à 101 W, ensuite jaune plus foncé jusqu’à 201 et ensuite encore plus orangée. J’ai pris plutôt les jaunes car c’est le soleil. J’y ai pensé aussi cet ap à trouver une image de fond de panneau, visuellement ce serait top :innocent:

t’as géré comment la notion de couleur par rapport à la valeur ?
J’suis un peu novice dans tout ce qui est affichage, je faisais la partie hardware / ponts plus que le visuel mais là j’ai trop de trucs dans la domotique et faut que je progresse sur l’ésthétique !
Merci