Afficher la valeur de consigne d'un thermostat dans une VA

Bonjour,
Je voudrais pouvoir afficher la valeur de consigne d’un thermostat dans une VA.
J’ai réussi à le faire avec la valeur d’un compteur avec un push comme ceci « /api/xdevices.json?key=apikey&SetVA03=$C08 », mais je n’arrive pas à le faire pour la consigne d’un thermostat.
Malgré mes recherches sur le forum, je ne trouve pas la réponse.
Merci d’avance de votre aide.

1 « J'aime »

Bonjour,
aujourd’hui, les étiquettes n’existent pas pour les consignes de thermostat.
Vous devrez donc passer par un script externe (nas, box, jeedom, …) qui récupèrera la consigne sur l’IPX800 avant de la réinjecter.

1ère étape :

  • soit faire un Get=T
  • soit récupérer la valeur consX dans le fichier IO.XML

2ème étape :

  • faire un push avec SetVA

Mais pourquoi stocker une valeur de l’IPX800 dans une autre variable IPX800 ? quel est votre but ?
Si c’est juste pour un affichage, vous pouvez créer un widget de type HTML qui affichera la valeur de consigne souhaitée. Il faudra auparavant créer une source de données pointant vers IO.XML pour affichage de la valeur ConsX.
cdt

Bonjour et Merci pour votre aide précieuse pour le débutant que je suis.
C’est effectivement pour faire de l’affichage. Je veux bien utiliser IO.XML mais il faut que j’apprenne. Pouvez vous m’aiguiller vers un wiki ou un tuto qui explique ce que c’est et comment on s’en sert ?
Bonne journée

si c’est pour de l’affichage, alors rien de plus simple :wink:
widget existant par défaut sur l’IPX800 :
image

Si le widget Thermostat ne vous convient pas, voici un début de piste :

  • création d’une source de données sur le dashboard
    Cliquer en haut à gauche du dashboard sur « Ajouter source de données »
  • renseigner l’accès au fichier
    image
  • validez et sauvegardez l’IHM

Créez un widget de type HTML

  • ajoutez ce code javascript
var consigne001=datasources["IO_XML"]["response"]["Cons001"];
return `
<div class="widget">
  <div class="tw-display">
    <div class="tw-tr">
      <div class="tw-value-wrapper tw-td">
        <span class="glyphicons glyphicons-dashboard x2"></span>
      </div>
      <div class="tw-value" style="font-size: 20px; margin: 15px 0 0 10px;">
        <div class="tw-value" style="font-size: 20px; margin: 15px 0 0 10px;">Consigne 1 : ${consigne001}
      </div>
    </div>
  </div>
</div>
`;
  • Sauvegardez le widget
  • Sauvegardez l’IHM
    image

Le code renvoie la consigne du Thermostat N°2 (avec cons001). Adaptez à vos besoin.
C’est un début, vous pouvez améliorer votre widget en cherchant sur le forum. Les exemples sont nombreux.
bonne journée

2 « J'aime »

Super ! Merci ! ça fonctionne impeccable.
De la même façon j’ai voulu récupérer la valeur de la sonde TC100 Sensor correspondante en remplaçant entre autre « Cons001 » par « Analog1 » mais j’obtiens 21248 au lieu de 29.3.
Savez vous s’il est possible d’appliquer la conversion à ce niveau.

En fait pour tout dire je souhaiterais, dans un même widget, pouvoir afficher cote à cote ou au dessus des une des autres, des valeurs courantes et le valeurs de consignes, et ce de façon condensé et si possible de façon graphique.

J’ai vu dans le forum des choses de ce type
image
ou
image

En ce qui me concerne il s’agit de sondes de type TC100 sensor et X-THL et de thermostats pointant sur ces sondes.
J’avoue que je ne sais pas trop comment m’y prendre.
Si vous pouviez me guider …
Merci d’avance.

Avec une recherche sur le forum, vous trouverez différents codes pour des widgets.
D’ailleurs, sur le premier exemple que vous donnez, j’ai déjà fourni le code .

En ce qui concerne la valeur analogique, il faut appliquer la formule de conversion du capteur à la valeur brute lue dans la datasource.
Vous pouvez facilement retrouver ces formules à partir du menu Périphériques / Analogiques de l’IPX800
image

Idem, vous trouverez des exemples sur le forum ou dans le wiki.

Merci beaucoup pour ton aide. Je vais fouiller cela.

Bonjour,
Je reviens en parallèle sur ce post.
Je ne sais pas coder mais j’arrive un peu à adapter du code existant.
J’ai donc réussi à faire cela :
image
Mais pour une meilleure lisibilité j’aimerais plutôt avoir quelque chose comme cela :
image

Ou idéalement, mais je ne sais pas si c’est possible j’aimerais avoir une fusion de ces 3 graphes en quelque sorte. Je m’explique :
Le premier graphe représente la valeur Maxi départ chauffage (Consigne thermostat 1)
Le troisième graphe représente la valeur Mini départ chauffage (Consigne thermostat 2)
et le deuxième représente la valeur réelle départ chauffage (Valeur de la sonde)
Je ne voudrais garder que ce deuxième graphe mais faire varier les plages de couleurs en fonction des valeurs des graphes 1 et 3
ou le bleu correspondrait à la plage de valeur entre 0 et valeur de consigne thermostat 2
le rouge correspondrait à la plage de valeur entre la valeur de consigne du thermostat 1 et 90
et le vert à la plage de valeur entre les deux thermostats genre :
image
En un peu mieux dessiné :slight_smile:

Mais là je cale et j’aurais vraiment besoin de l’aide d’un expert.

De plus les copie d’écran ci dessus son captées de mon ordi, mais de mon téléphone, même avec firefox, j’obtiens cela :
image
Ce qui n’est pas terrible
et c’est surtout de mon téléphone que je voudrais pouvoir visualiser ce widget.

Cela fait beaucoup d’un seul coup peut être.

Ci dessous la ou j’en suis dans le code. A optimiser sans doute.

var Cons001 = datasources["IO_XML"]["response"]["Cons000"];
var ConsMaxDR = (Cons001 * 1).toFixed(1);
var cssColor1 = "hsl(120, 100%, 50%)";
cssColor1 = "hsl("+ (240 - (ConsMaxDR * 240 / 90)) + ", 100%, 50%)";

var analog1 = datasources["IO_XML"]["response"]["analog0"];
var Temp_DR = (((analog1 * 0.000050354) - 0.25) / 0.028).toFixed(1);
var cssColor2 = "hsl(120, 100%, 50%)";
cssColor2 = "hsl("+ (240 - (Temp_DR * 240 / 90)) + ", 100%, 50%)";

var Cons002 = datasources["IO_XML"]["response"]["Cons001"];
var ConsMinDR = (Cons002 * 1).toFixed(1);
var cssColor3 = "hsl(120, 100%, 50%)";
cssColor3 = "hsl("+ (240 - (ConsMinDR * 240 / 90)) + ", 100%, 50%)";


var tps_chd = datasources["IO_XML"]["response"]["cpt0"];
var ischd_OFF = datasources["IO_XML"]["response"]["btn0"] == 0;


var btcolor = `color: #${ ischd_OFF ? '111111' : 'ff0000' };`;
let blue = "#0000ff", green = "#00ff00", red = "#ff0000";







return `
<style>
.temp_chd {
   		/* On réinitialise l'apparence par défaut */
  	appearance: none;
  	-webkit-appearance: none;
  	-moz-appearance: meterbar;
	background-image: linear-gradient(
    90deg, 
    #0000ff 20%,	/* 18°C */
    #00ff00 40%,	/* 36°C */
    #ff0000 90%		/* 81°C */
  	);
  	background-size: 100% 100%;
	width: 150px;
	height: 18px;
	border: 1px solid #ccc;
	border-radius: 3px;
}
.temp_chd::-moz-meter-bar  {
    background: transparent;
	border-style: solid;
	border-color: white;
	border-width: 0px 3px 0px 0px;
}
.bt_chd {
	width: 26px;
	height: 16px;
	background-color: #cccccc;
	border: 3px outset #ccc;
	border-radius: 5px;
	font-size: 12px;
	font-weight: bold;
	text-align: center;
	padding: 2px 0 0 0;
}
</style>


<table width='100%'>
  <tr>
	
	<td align=left valign=left width='50%'><span style='margin-left:10px;'color: #Tat01'>T° Maxi DR</span></td>
	
	<td>
		<table width='100%'>
			<tr>
				<td align=left valign=middle width='30%'><div style='height:24px;margin-top:-1px;color: ${cssColor1};font-size: 18px;'>${ConsMaxDR}</span></td>
				<td align=left valign=top><div style='color: ${cssColor1};'<sup>°C</sup></div></td>
			</tr>
		</table>
	</td>
  </tr>
  <tr>
	<td valign=top>
		<table width='100%'>
			<tr>
				<td align=right valign=middle width=20><span style='padding-right: 2px; font-size:12px;'>0</span></td>
				<td align=center valign=middle width=90><meter class='temp_chd' min="0" max="90" value="${ConsMaxDR}"></meter></td>
				<td align=left valign=middle width=20><span style='padding-left: 2px; font-size:12px;'>90</span></td>
			</tr>
		</table>
	</td>
	<td valign=top>
	</td>
  </tr>
</table>



<table width='100%'>
  <tr>
	
	<td align=left valign=middle width='50%'><span style='color: #SondeDR'>T° DR</span></td>
	<td>
		<table width='100%'>
			<tr>
				<td align=right valign=middle width='70%'><div style='height:24px;margin-top:-1px;color: ${cssColor2};font-size: 18px;'>${Temp_DR}</span></td>
				<td align=left valign=top><div style='color: ${cssColor2};'<sup>°C</sup></div></td>
			</tr>
		</table>
	</td>
  </tr>
  <tr>
	<td valign=top>
		<table width='100%'>
			<tr>
				<td align=right valign=middle width=20><span style='padding-right: 2px; font-size:12px;'>0</span></td>
				<td align=center valign=middle width=90><meter class='temp_chd' min="0" max="90" value="${Temp_DR}"></meter></td>
				<td align=left valign=middle width=20><span style='padding-left: 2px; font-size:12px;'>90</span></td>
			</tr>
		</table>
	</td>
	<td valign=top>
	</td>
  </tr>
</table>


<table width='100%'>
  <tr>
	
	<td align=left valign=middle width='50%'><span style='color: #Tat02'>T° Mini DR</span></td>
	<td>
		<table width='100%'>
			<tr>
				<td align=right valign=middle width='70%'><div style='height:24px;margin-top:-1px;color: ${cssColor3};font-size: 18px;'>${ConsMinDR}</span></td>
				<td align=left valign=top><div style='color: ${cssColor3};'<sup>°C</sup></div></td>
			</tr>
		</table>
	</td>
  </tr>
  <tr>
	<td valign=top>
		<table width='100%'>
			<tr>
				<td align=right valign=middle width=20><span style='padding-right: 2px; font-size:12px;'>0</span></td>
				<td align=center valign=middle width=90><meter class='temp_chd' min="0" max="90" value="${ConsMinDR}"></meter></td>
				<td align=left valign=middle width=20><span style='padding-left: 2px; font-size:12px;'>90</span></td>
			</tr>
		</table>
	</td>
	<td valign=top>
	</td>
  </tr>
</table>

`;

Merci d’avance de votre aide
Cdt

L’apparence du CSS est dépendante du navigateur, c’est d’autant plus vrai pour les dégradés (gradient). Pour créer un visuel agréable avec tout navigateur, il faut beaucoup de code, ce qui alourdit considérablement le Dashboard de l’IPX800. Il faut choisir un navigateur et s’y tenir.

Essayez de faire des widgets plus légers en code, sinon votre Dashboard sera vite saturé et vous ne pourrez y placer que quelques widgets. Au bout d’un moment, la sauvegarde de l’IHM refusera de se faire.

Pour des widgets analogiques, je vous invite à lire ce wiki : Jauges analogiques
Je pense que les jauges horizontales vous intéresseront.

OK je vais regarder un peu plus en détail, mais je vois déjà que vous êtes très fort en codage. :slight_smile:
Pour l’affichage sur mon téléphone, le résultat est le même quelque soit le navigateur (Firefox, safari, Qwant )
Et pour faire un truc plus simple comme cela ?
image
ça pourrait fonctionner quelque soit le navigateur ?
J’ai trouvé cela dans un post sur les widgets mais il n’y a pas de code
Savez vous ou je peux le trouver ?
Bonne fin de journée.

Bonjour,
vous trouverez des articles en suivant le lien ci-dessous.
Pour votre cas, je vous conseille d’utiliser l’objet « Meter » plutôt que « Progress Bar »

cdt

Bonjour,
ça progresse …
J’ai voulu utiliser l’objet meter en suivant le tuto mais cela ne fonctionne pas bien si le low est trop éloigné du mini ou si le higth est trop éloigne du maxi. (J’ai galéré pour identifier le pb)

Auriez vous une explication à cela ?
Merci d’avance
Bonne journée

Ici les cas 1 à 3 sont ceux du tuto
Les cas 4 et 6 ne fonctionnent pas correctement (devraient être en vert)
Les cas 5 et 7 ne fonctionnent que parce que j’ai modifié respectivement les mini et maxi
image
Ci joint le code correspondant

<!DOCTYPE html>        
<html lang="en">        
<head>        
    <meta charset="utf-8" />     
   <style>    
   meter {    
     width: 200px;    
     height: 10px;    
   }    
   </style>       
</head>        
<body>        
     
       
 
   Meter (when "min <= value < low") OK  
   <meter  min="0" max="100" value="17" low="25" high="75"></meter>    
    
   <br/>    
   Meter (when "high < value <= max") OK   
   <meter  min="0" max="100" value="80" low="25" high="75"></meter>    
    
   <br/>    
   Meter (when "low <= value <= high") OK   
   <meter  min="0" max="100" value="50" low="25" high="75"></meter>  
   
   <br/>    
   Meter (when "low <= value <= high")  KO !  
   <meter  min="0" max="100" value="70" low="65" high="75"></meter>

   <br/>    
   Meter (when "low <= value <= high")  OK ?  
   <meter  min="50" max="100" value="70" low="65" high="75"></meter>
      
   <br/>    
   Meter (when "low <= value <= high") KO !   
   <meter  min="0" max="100" value="30" low="25" high="35"></meter>
      
   <br/>    
   Meter (when "low <= value <= high")  OK ?
   <meter  min="0" max="50" value="30" low="25" high="35"></meter>

Bonjour,

Je déterre ce sujet car je souhaite envoyer la consigne d’un thermostat vers une variable jeedom par l’intermédiaire d’un push.
D’après ce que j’ai compris ceci n’était pas possible en 2020.

Pouvez-vous m’indiquer, s’il vous plaît, s’ il est aujourd’hui possible de faire ce type de Push ? Si oui quel est le nom de la variable de l’IPX800 à mettre dans le PUSH ?

Merci d’avance pour votre aide,


Alex

Bonjour @Clach et bienvenue
Non ce n’est toujours pas possible.
Vous pouvez cependant récupérer la consigne dans le fichier io.xml via des polling.
bonne journée.

Bonsoir,
Merci pour la réponse.
C’est bien ce que je craignais.

Bonne soirée,