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 !

Api Viessmann pour récupération de données avec Vitoconnect

Réservé à l'utilisation et la programmation de scripts dans JEEDOM
Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 11 déc. 2018, 10:59

thetrueavatar a écrit :
11 déc. 2018, 10:42
Et votre consommation quotidienne pour l'instant ? Perso je consomme de l'ordre de 65kwh par jour en comptant que je chauffe mon ECS mais que ça ne compte que pour 2kwh/jour.
@Manouille
Comment tu fais pour perdre 2,2° la nuit alors que ta consigne absence est à 18 au lieu de 19 ? Est-ce que tu coupes pas carrément ta chaudière la nuit ?

C'est vraiment très variant selon les températures. Hier avec un mini à 7° et un maxi à 10° et une moyenne à 8,8° , j'ai consommé 81khw.
Mais aujourd'hui, avec une moyenne à 5°, je suis déjà à 46khw. Mais jeudi 6/12, j'ai consommé 48kwh avec une moyenne ext de 10.5°

Je me suis fait la même réflexion pour Manouille. Et toi @thetrueavatar, tu mets ta consignes à 15° pour t'assurer de ne rien consommer ?
Je me demande si tu consommerais pas moins en mettant ta consigne absence la nuit plutôt que 15. Au cas où il fait vraiment trop froid dehors, tu éviteras de te les cailler, et dans tous les cas, tu évites le coup de boost de 20% pendant x minutes au changement de consigne à la hausse. Peut être as tu changé ce paramétrage, ou peut être ne se déclenche t'il pas bêtement si la consigne est déjà atteinte. Au cas ou, regarde précisément ta conso sur l'heure qui suit ton changement de consigne le matin, et voit si tu ne surconsommes pas pour rien.
Dernière édition par Mikado le 11 déc. 2018, 11:04, édité 1 fois.

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 11 déc. 2018, 11:03

jpty a écrit :
11 déc. 2018, 10:49
Mikado a écrit :
11 déc. 2018, 08:42
Au sujet de la temp ambiante, quelqu'un aurait il la chance d'avoir à la fois le vitotrol dans son salon, et l'ancienne application avant Vicare ?
Cela permettrait de voir si l'arrondi modulo 0.5 est aussi présent. Bon, le plus important, c'est que la chaudière récupère bien la donnée brute, et je pense que c'est le cas.
L'appli Vitotrol Plus affiche la même valeur que l'API.
Il y a des différences entre ce qui est affiché sur la sonde d'ambiance Vitotrol 200A (modulo 0,1) et l'API ( modulo 0,5 ).
Sonde ambiance: 20,7°
API: 21°
Appli Vitotrol+: 21°
Appli Vicare: 21°
Merci pour ton retour. J'espère mais ne suis pas convaincu, que l'API donnera les données brut. Mais j'ai peu que l'arrondi soit dorénavant porté par l'API et non pas les applications. C'est contraire aux bonnes pratiques en informatique, mais bon.

jpty
Timide
Messages : 333
Inscription : 01 juin 2018, 10:54
Localisation : Nancy

Re: Script pour Gestion Chaudière Viessmann connecté

Message par jpty » 11 déc. 2018, 11:11

Mikado a écrit :
11 déc. 2018, 11:03
jpty a écrit :
11 déc. 2018, 10:49
Mikado a écrit :
11 déc. 2018, 08:42
Au sujet de la temp ambiante, quelqu'un aurait il la chance d'avoir à la fois le vitotrol dans son salon, et l'ancienne application avant Vicare ?
Cela permettrait de voir si l'arrondi modulo 0.5 est aussi présent. Bon, le plus important, c'est que la chaudière récupère bien la donnée brute, et je pense que c'est le cas.
L'appli Vitotrol Plus affiche la même valeur que l'API.
Il y a des différences entre ce qui est affiché sur la sonde d'ambiance Vitotrol 200A (modulo 0,1) et l'API ( modulo 0,5 ).
Sonde ambiance: 20,7°
API: 21°
Appli Vitotrol+: 21°
Appli Vicare: 21°
Merci pour ton retour. J'espère mais ne suis pas convaincu, que l'API donnera les données brut. Mais j'ai peu que l'arrondi soit dorénavant porté par l'API et non pas les applications. C'est contraire aux bonnes pratiques en informatique, mais bon.
Avant le reset de la chaudière dû à la coupure de courant la semaine dernière, les valeurs de l'API étaient différentes de celle de Vicare.
Ex le 07/12/18 j'avais:
Dans le json, pour heating.circuits.0.sensors.temperature.room, : 22.2°
Dans l'appli ViCare : 22°
Dans l'appli Vitotrol Plus: 22.2°
Sur l'affichage de la sonde d'ambiance: 22.4°

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 11 déc. 2018, 11:25

Mikado a écrit :
11 déc. 2018, 10:59
thetrueavatar a écrit :
11 déc. 2018, 10:42
Et votre consommation quotidienne pour l'instant ? Perso je consomme de l'ordre de 65kwh par jour en comptant que je chauffe mon ECS mais que ça ne compte que pour 2kwh/jour.
@Manouille
Comment tu fais pour perdre 2,2° la nuit alors que ta consigne absence est à 18 au lieu de 19 ? Est-ce que tu coupes pas carrément ta chaudière la nuit ?

C'est vraiment très variant selon les températures. Hier avec un mini à 7° et un maxi à 10° et une moyenne à 8,8° , j'ai consommé 81khw.
Mais aujourd'hui, avec une moyenne à 5°, je suis déjà à 46khw. Mais jeudi 6/12, j'ai consommé 48kwh avec une moyenne ext de 10.5°

Je me suis fait la même réflexion pour Manouille. Et toi @thetrueavatar, tu mets ta consignes à 15° pour t'assurer de ne rien consommer ?
Je me demande si tu consommerais pas moins en mettant ta consigne absence la nuit plutôt que 15. Au cas où il fait vraiment trop froid dehors, tu éviteras de te les cailler, et dans tous les cas, tu évites le coup de boost de 20% pendant x minutes au changement de consigne à la hausse. Peut être as tu changé ce paramétrage, ou peut être ne se déclenche t'il pas bêtement si la consigne est déjà atteinte. Au cas ou, regarde précisément ta conso sur l'heure qui suit ton changement de consigne le matin, et voit si tu ne surconsommes pas pour rien.
15 c'est ma consigne absence en fait(température réduite). Pour la consommation, je la monitor en prenant une photo de mon compteur gaz tous les matins en partant au taf :p. Peut-être que ma consigne absence est trop basse ceci dit. J'avais lu qu'il était conseillé de ne pas mettre au delà de 5°. Ceci dit sur base des explications de ce site bien foutus, je suis plutôt dans le cas où c'est pas intéressant(forte isolation, forte inertie,
https://www.energieplus-lesite.be/index ... 6602+c6603

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 11 déc. 2018, 11:38

A contrario je cite le paragraphe:
Le gain énergétique provient de la diminution des déperditions nocturnes. Et donc, plus la température intérieure descendra, plus l’économie augmentera. Il ne faut pas descendre sous une température de 12°C, parce que :

Cette température correspond au point de rosée de l’ambiance et que des problèmes de condensation pourraient se poser.

Malgré la relance du lundi matin, la température des murs serait trop froide et engendrerait de l’inconfort pour les occupants.

Maintenir 12°C dans le local témoin (où se trouve la sonde de régulation), c’est maintenir l’ensemble du bâtiment hors gel.
Une consigne de 16°C durant la nuit (voire moins) et 14°C durant les week-ends et les périodes scolaires est donc recommandée.

Il faut en outre savoir que cette température de consigne ne sera que rarement atteinte (uniquement en plein hiver), ce du fait de l'inertie thermique du bâtiment qui ralentit la chute de température.
Bon c'est clairement dans l'optique de la gestion de bâtiment type école mais ils semble conseiller une température de consigne la nuit de 16°.

Manouille
Timide
Messages : 33
Inscription : 29 juil. 2017, 12:59
Localisation : Anjou

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Manouille » 11 déc. 2018, 12:18

La perte de température est dû au poêle que j'éteins vers 00h00. Avec le poele, dans le salon je monte bien au-delà de la consigne :
Image

Par contre, dans les autres pièces, j'oscille entre 18 et 19 la nuit.

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 11 déc. 2018, 13:38

thetrueavatar a écrit :
11 déc. 2018, 11:25
Mikado a écrit :
11 déc. 2018, 10:59
thetrueavatar a écrit :
11 déc. 2018, 10:42
Et votre consommation quotidienne pour l'instant ? Perso je consomme de l'ordre de 65kwh par jour en comptant que je chauffe mon ECS mais que ça ne compte que pour 2kwh/jour.
@Manouille
Comment tu fais pour perdre 2,2° la nuit alors que ta consigne absence est à 18 au lieu de 19 ? Est-ce que tu coupes pas carrément ta chaudière la nuit ?

C'est vraiment très variant selon les températures. Hier avec un mini à 7° et un maxi à 10° et une moyenne à 8,8° , j'ai consommé 81khw.
Mais aujourd'hui, avec une moyenne à 5°, je suis déjà à 46khw. Mais jeudi 6/12, j'ai consommé 48kwh avec une moyenne ext de 10.5°

Je me suis fait la même réflexion pour Manouille. Et toi @thetrueavatar, tu mets ta consignes à 15° pour t'assurer de ne rien consommer ?
Je me demande si tu consommerais pas moins en mettant ta consigne absence la nuit plutôt que 15. Au cas où il fait vraiment trop froid dehors, tu éviteras de te les cailler, et dans tous les cas, tu évites le coup de boost de 20% pendant x minutes au changement de consigne à la hausse. Peut être as tu changé ce paramétrage, ou peut être ne se déclenche t'il pas bêtement si la consigne est déjà atteinte. Au cas ou, regarde précisément ta conso sur l'heure qui suit ton changement de consigne le matin, et voit si tu ne surconsommes pas pour rien.
15 c'est ma consigne absence en fait(température réduite). Pour la consommation, je la monitor en prenant une photo de mon compteur gaz tous les matins en partant au taf :p. Peut-être que ma consigne absence est trop basse ceci dit. J'avais lu qu'il était conseillé de ne pas mettre au delà de 5°. Ceci dit sur base des explications de ce site bien foutus, je suis plutôt dans le cas où c'est pas intéressant(forte isolation, forte inertie,
https://www.energieplus-lesite.be/index ... 6602+c6603
En fait je pense qu'il n'y a pas d'intérêt à mettre une consigne plus basse que ce que tu désires comme température. Nos chaudière sont modulantes et pas en mode tout ou rien. Si la température mini que tu souhaites est 18° (nuit et absence), alors il faut mettre 18°. si comme tu le dis, ton inertie fait que le matin tu as encore 18.5 admettons, tu ne devrais rien consommer de toutes les façons. Et si une nuit d'hiver polaire tu as consommé, c'est pour avoir 18°, sans te retrouver avec 15.8° si ta consigne était 15° :) Enfin, moi c'est comme cela que je raisonne. ;)

Et puis tu le dis, ton url est pour des bâtiments. J'ai discuté avec un chauffagiste qui tient la route, et raisonne bien. Il m'expliquait que l'écart grand maxi entre les consignes doit être de 2°. Mais que dans pas mal de cas, on pouvait consommer plus, ou en tout cas pas moins, et ce avec un confort amoindri. Pour l'illustrer, même si toute analogie a ses limites, il expliquait la consommation d'une voiture. Pour une même durée de trajet, celui qui maintient une vitesse constante consomme moins que celui qui accélère (montée de consigne), puis décélère (baisse de consigne).

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 11 déc. 2018, 13:39

Manouille a écrit :
11 déc. 2018, 12:18
La perte de température est dû au poêle que j'éteins vers 00h00. Avec le poele, dans le salon je monte bien au-delà de la consigne :
Image

Par contre, dans les autres pièces, j'oscille entre 18 et 19 la nuit.
On comprend mieux maintenant :)

Manouille
Timide
Messages : 33
Inscription : 29 juil. 2017, 12:59
Localisation : Anjou

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Manouille » 11 déc. 2018, 14:45

Conso moyenne en novembre : 39.9 kW / jour (réelle, y compris dhw)
Temp. moyenne : 9.2°C

A ajouter à cela, 7.5 kW / jour de pellets

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 11 déc. 2018, 14:50

Mikado a écrit :
11 déc. 2018, 13:38
thetrueavatar a écrit :
11 déc. 2018, 11:25
Mikado a écrit :
11 déc. 2018, 10:59



C'est vraiment très variant selon les températures. Hier avec un mini à 7° et un maxi à 10° et une moyenne à 8,8° , j'ai consommé 81khw.
Mais aujourd'hui, avec une moyenne à 5°, je suis déjà à 46khw. Mais jeudi 6/12, j'ai consommé 48kwh avec une moyenne ext de 10.5°

Je me suis fait la même réflexion pour Manouille. Et toi @thetrueavatar, tu mets ta consignes à 15° pour t'assurer de ne rien consommer ?
Je me demande si tu consommerais pas moins en mettant ta consigne absence la nuit plutôt que 15. Au cas où il fait vraiment trop froid dehors, tu éviteras de te les cailler, et dans tous les cas, tu évites le coup de boost de 20% pendant x minutes au changement de consigne à la hausse. Peut être as tu changé ce paramétrage, ou peut être ne se déclenche t'il pas bêtement si la consigne est déjà atteinte. Au cas ou, regarde précisément ta conso sur l'heure qui suit ton changement de consigne le matin, et voit si tu ne surconsommes pas pour rien.
15 c'est ma consigne absence en fait(température réduite). Pour la consommation, je la monitor en prenant une photo de mon compteur gaz tous les matins en partant au taf :p. Peut-être que ma consigne absence est trop basse ceci dit. J'avais lu qu'il était conseillé de ne pas mettre au delà de 5°. Ceci dit sur base des explications de ce site bien foutus, je suis plutôt dans le cas où c'est pas intéressant(forte isolation, forte inertie,
https://www.energieplus-lesite.be/index ... 6602+c6603
En fait je pense qu'il n'y a pas d'intérêt à mettre une consigne plus basse que ce que tu désires comme température. Nos chaudière sont modulantes et pas en mode tout ou rien. Si la température mini que tu souhaites est 18° (nuit et absence), alors il faut mettre 18°. si comme tu le dis, ton inertie fait que le matin tu as encore 18.5 admettons, tu ne devrais rien consommer de toutes les façons. Et si une nuit d'hiver polaire tu as consommé, c'est pour avoir 18°, sans te retrouver avec 15.8° si ta consigne était 15° :) Enfin, moi c'est comme cela que je raisonne. ;)

Et puis tu le dis, ton url est pour des bâtiments. J'ai discuté avec un chauffagiste qui tient la route, et raisonne bien. Il m'expliquait que l'écart grand maxi entre les consignes doit être de 2°. Mais que dans pas mal de cas, on pouvait consommer plus, ou en tout cas pas moins, et ce avec un confort amoindri. Pour l'illustrer, même si toute analogie a ses limites, il expliquait la consommation d'une voiture. Pour une même durée de trajet, celui qui maintient une vitesse constante consomme moins que celui qui accélère (montée de consigne), puis décélère (baisse de consigne).
Tu as raison que la nuit je devrais mettre ma consigne pour dormir. Comme mes chambres sont censées être réglées sur 17° je devrais laisser à 17° ca a plus de sens même si en pratique ça ne devrait rien changer je pense.
Pour la journée, c'est juste trouver la consigne réduite qui me permet d'économiser tout en trouvant un démarrage garantissant qu'à 17h ils fassent 20°.
PS: je vais faire mon puriste mais une quantité d'énergie s'exprime en kwh pas kw qui sont des "kilo-Joules par seconde" et donc un "débit" d'électricité. 1kwh= 1000w pendant 1h. J'ai jamais très bien compris pourquoi on a pris ça comme référence pour définir une quantité d'énergie tant ça porte à confusion ceci dit...

TonioBDS
Timide
Messages : 25
Inscription : 27 avr. 2018, 11:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par TonioBDS » 11 déc. 2018, 22:56

Bonjour à tous,

Je suis tombé sur ce fil de discussion et ça me motive à domotiser ma chaudière avec mon jeedom.

Pour commencer, à la lecture de tout le fil, pouvez-vous me confirmer la chose suivante :
Je possède une chaudière 222F avec un un boîttier pour la relier au net VITOCOM100 et un Vitotronic pour l'affichage déporté dans le salon. Pour la connexion à jeedom, ce qui importe c'est le Vitocom.
Comme j'ai un Vitocom, je comprends que je peux accéder à mes données sur vitodata100.viessmann.com et donc je dois suivre l'explication de scotty92fr sur le premier post. J'accède à mes infos sur mon mobile via l'application Vitotrol.
Mais comme ce n'est pas un Vitoconnect, je ne peux pas utiliser toute les autres info du fil de discussion avec l'accès à l'API sur api.viessmann.io. Je ne peux pas utiliser l'application ViCare.

Jusque là est-ce que je me trompe ?? Parce que je me ferme beaucoup de porte j'ai l'impression.

Enfin j'ai réussi à implémenter les scripts de scotty92fr, j'arrive à récupérer quelques infos.
Cependant, je n'arrive pas faire changer en mode éco. J'ai beau envoyer la commande, rien n'y fait.
J'ai l'impression que bon nombre des paramètres supposés être R/W ne le sont pas chez moi.
De plus je demande pas mal de paramètre dans le Viessmann.php et je ne les récupère pas tous dans le Viessmann.json, et la plupart n'ont même pas de noms.
Je joins mon *php et mon *json pour les bonnes âmes qui pourraient m'aider.
Merci à la communauté

Le PHP

Code : Tout sélectionner

<?php
/* 
Script viessmann version 1.0 par Michel Manceron
Permet de recuperer et gerer au minima la commande de gestion du système de chauffage Viessmann Vitodata 100

	- Le script lancé sans parmètre : Récupération des données du chauffage (paramètre dans $DataIds) 
	- Envoyer une information au système de chauffage (par ex: passer en mode economique, ...  

le script  permet la récupération des informations dans un fichier au format JSON "viessmann.json" dans le même répertoire que fichier script "Viessmann.php"

le script est lancé par le plugin script

Update des informations:

					Nom : 			Update
					Type Script:	Script
					Type:			Action et défaut
					Requête:		/var/www/html/plugins/script/core/ressources/Viessman.php


le numéro de l'information est la clef pour y acceder: l'accès se fait par le plugin script, avec comme requete :
		"numInformation>Wert"

		exemple: 	Nom: 			Temp_Exterieur
					type Script: 	JSON
					Type:			info et Numérique
					Requête:		5373>Wert
					Options: 		https://AdresseJeedom/plugins/script/core/ressources/viessmann.json
					Unité:			°

Modification des paramètres:
		exemple: 
					Nom : 			Eco_on (Valeur de la commande : ModeEconomique)
					Type Script:	Script
					Type:			Action et défaut
					Requête:		/var/www/html/plugins/script/core/ressources/Viessman.php 7853=1 


Il est nécessaire de modifier la valeur des variables Users : $login, $Pass, $Installation
2017/11/17 - Version 1.0 Version initiale

*/
// Variable Users
$Login = "XXXXXXXXXXX@gmail.com";
$Pass = "XXXXXXXXXX";
$Installation = "XXXXXXXXXXXXXXXXXXXX";

// nom du fichier log
$filelog ='Script_Viessmann';
$directorylog= dirname(__FILE__)."/../../../../log";

// initialisation des variables
$InstallationID = '';
$AppareilID = '';

// Tableau des points d'information à interroger 
$DataIds = array();
array_push ($DataIds,45,48,104,111,245,5372,5373,5374,5385,7182,7192,7193,7194,7197,7221,7247,7250,10763); // groupe Chaudière
//array_push ($DataIds,5272,5273,5274,5276,5277,5279); // groupe Solaire
array_push ($DataIds,949,5280,5381,5382,7177,7179,7181,10453); //groupe ECS
array_push ($DataIds,46,49,77,80,83,86,89,94,274,307,310,709,715,718,730,2871,2877,5376,6053,7853,7856,10430); //groupe Chauffage1
array_push ($DataIds,5377,84,87,81,7220,6054,78,7857,90,7854,716,7219,710,272,719,731,10430,44,47,308,311,2873,2879); //groupe Chauffage2
// Adresse de l'API 
$client = new SoapClient('https://www.viessmann.com/app_vitodata/VIIWebService-1.16.0.0/iPhoneWebService.asmx?WSDL');
$anlageID = 0;

/* fonction login 
 permet de se connecter à une installation. cette fonction récupère l'installationID et AppareilID

 retour de true/false suivant la connexion
*/

function login(){
	global $client,$anlage,$Login,$Pass,$Installation,$InstallationID,$AppareilID;
	$flag = false;

	$DataArray  = array('Benutzer'=> $Login, 
					'Passwort'=> $Pass,
					'Betriebssystem'=>'Debian9',
					'AppId'=>'Jeedom',
					'AppVersion'=>'1.0');
	$out = time()+30;
	while ( $out > time()) {
		try
		{
		    $response = $client->GetStateOfConnection();  
		    if ($response->GetStateOfConnectionResult->Ergebnis == 6) {
				$response = $client->login($DataArray);
				if ($response->LoginResult->Ergebnis == 0){
					write_log ('Connexion effectuées.');
					$response = $client->getDevices();
					foreach ($response->GetDevicesResult->AnlageListe as $key => $value) {
						if ($value->AnlageName == $Installation) {
							write_log ('installation : '. $value->AnlageId);
							$InstallationID = $value->AnlageId;
							foreach ($value->GeraeteListe as $key1 => $value1) {
								write_log ('Appareil : '. $value1->GeraetId );
								$AppareilID = $value1->GeraetId;
								$flag = true;
							}
						}
					}
				}
			}
		}

		catch (Exception $e){
			write_log ('Err: ('.$e->getCode().')'.$e->getMessage() );
		}
		if ($flag) {break;}
		sleep(5);
	}
return $flag;
}
/* fonction logout 
 permet de se déconnecter du système de chauffage

 pas de valeur de retour
*/

function logout(){
	global $client;
	$flag = false;
	$out = time()+30;
	while ( $out > time()) {
		try{
				$response = $client->logout();
			    if ($response->LogoutResult == 1 ) {
			      write_log ("Deconnexion du service");
			  	break;
			    }
			}
		 catch (Exception $e) {
		 		write_log ('Err: ('.$e->getCode().')'.$e->getMessage() );
		 }
		 sleep(5);
	}
}

/* fonction getInfoPoints 
 interroge le système de chauffage sur tous les noeuds disponible 
 retourne un tableau avec le Nom de l'information
*/
function getInfoPoints(){
	global $client,$InstallationID,$AppareilID;
	write_log ("Chargement des infos sur les noeuds de l'installation.");
  	$DataArray  = array(
					'AnlageId'=> $InstallationID, 
					'GeraetId'=> $AppareilID,
					);
  	$out = time()+30;
	while ( $out > time()) {
		try{
    		$response = $client->GetTypeInfo($DataArray);
    		foreach ($response->GetTypeInfoResult->TypeInfoListe->DatenpunktTypInfo as $key => $value) {
    			$table[$value->DatenpunktId] =array('Name' => $value->DatenpunktName, 
    												'iswriteable' => $value->IstSchreibbar
    												);
    		}
    		write_log ("  Nombre de noeuds : ".count($table));
    		break;
    	}
    	catch (Exception $e) {
			write_log ('Err: ('.$e->getCode().')'.$e->getMessage() );
		}
    	sleep(5);
    }

    return $table;
}
/* fonction refreshInfos 
 interroge les noeuds du système de chauffage  
 retourne un tableau avec le Nom de l'information et la valeur de chaque noeuds
*/
Function refreshInfos(){
	global $client,$InstallationID,$AppareilID,$TableInfo,$DataIds;
	write_log ("Demande de rafraichissement des données....");
  	$DataArray  = array(
					'AnlageId'=> $InstallationID, 
					'GeraetId'=> $AppareilID,
					'DatenpunktIds' => $DataIds 
					);
	$response = $client->RefreshData($DataArray);
	$DataArray_temp  = array(
					'AktualisierungsId'=> $response->RefreshDataResult->AktualisierungsId, 
					);
	$flag = false;
	$out = time()+90;
	while ( $out > time()) {
			$response1 = $client->RequestRefreshStatus ($DataArray_temp );
			write_log ("Status de la demande de rafraichissement : ".status2string($response1->RequestRefreshStatusResult->Status));
			if ($response1->RequestRefreshStatusResult->Status == 4) {
				$flag = true;
				break; 
			}
			sleep(5);
			
		}	
	//sleep(30);
  	if ($flag){
  		$flag = false;
		if ($response->RefreshDataResult->Ergebnis == 0) {
			$out = time()+90;
			while ( $out > time()) {
				$response = $client->GetData($DataArray);
				if ($response->GetDataResult->Ergebnis == 0) {
					foreach ($response->GetDataResult->DatenwerteListe->WerteListe as $key => $value) {
						$Table[ $value->DatenpunktId ]=array (
								"Wert" 		  => $value->Wert,
								"Zeitstempel" => $value->Zeitstempel,
								"Name" => $TableInfo[$value->DatenpunktId]['Name'],
								"iswriteable" =>$TableInfo[$value->DatenpunktId]['iswriteable']
							);
						}
						write_log ("rafraichissement des données effectuées");
						$flag = true;
						break;
					}
					sleep(5);
			
				}
		}
		if (!$flag){
			write_log ("intérrogation des noeuds impossible !");
		}
	
	}
	else
  	{
  		write_log ("demande de rafraichissement non aboutie !");
  	}
	return $Table;
}

/* fonction WriteData 
 demande la modification d'une valeur d'un noeud du système de chauffage  
 retourne un tableau avec le Nom de l'information et la valeur de chaque noeuds
*/

function WriteData( $point,$Data){
	global $client,$InstallationID,$AppareilID;
	write_log ("Demande de rafraichissement des données....");
  	$DataArray  = array(
					'AnlageId'=> $InstallationID, 
					'GeraetId'=> $AppareilID,
					'DatapointId' => $point,
      				'Wert' => $Data
					);
  	write_log ('ecriture => '.$point.' => '.$Data );
	$response = $client->WriteData($DataArray);
	$DataArray_temp  = array(
					'AktualisierungsId'=> $response->WriteDataResult->AktualisierungsId, 
					);
	$response1 = $client->RequestWriteStatus ($DataArray_temp);
	$flag = false;
	$out = time()+90;
	while ( $out > time()) {
			$response1 = $client->RequestWriteStatus ($DataArray_temp);
			write_log ("Status de la demande d'écriture : ".status2string($response1->RequestWriteStatusResult->Status));
			if ($response1->RequestWriteStatusResult->Status == 4) {
					write_log ("Donnée Mise à jour : $point = $Data");
					$flag = true;
					break;
				} 
			else {
						
			}
			sleep(5);
		}
	return $flag;		
}
	
/* fonction write_json 
ecrit le tableau des données en JSON dans le fichier Viessmann.json  
ne retourne aucune valeur
*/
function write_json( $Chaine )
	{
		write_log ("Mise a jour du json");
  		$file = dirname(__FILE__)."/viessmann.json";
		if (!file_exists($file)) touch($file);
		$fh = fopen($file, 'w+');
		fwrite($fh, $Chaine);
		fclose($fh);
	}
/* fonction status2string 
transforme le code de status en texte lisible 
retourne le texte si reconnus, sinon la valeur 
*/
function status2string($status){
	switch ($status) {

				case '1':
				case 1: $st = "prise en compte";
						break;
				case '3':
				case 3: $st = "traitement en cours";
						break;
				case '4':
				case 4: $st = "traitement effectué";
						break;
				default: $st = $status;
						break;
			};
			return $st;
}
/* fonction write_log
Permet d'écrire un message dans le fichier log.
*/
function write_log ($message)
{
	global $filelog,$directorylog;
    $logfile = $directorylog."/".$filelog;
  	$dt = (new \DateTime())->format('Y-m-d H:i:s');
    if (!file_exists($logfile)) {touch($logfile);};
  	$myfile = fopen($logfile, "a");
	fwrite($myfile, "\n". $dt.": ".$message);
	fclose($myfile);
}
//Main
// traitement des paramêtres 
if (isset($argv)) {
     foreach ($argv as $arg) {
         $argList = explode('=', $arg);
         if (isset($argList[0]) && isset($argList[1])) {
             $_GET[$argList[0]] = $argList[1];
             write_log("Paramètre ".$argList[0]."=".$argList[1]);
         }
     }
 }
//traitement principal
try {
  	if (login()) { 
  		$TableInfo =  getInfoPoints(); 
  		if (is_array($TableInfo)){	
			if (isset($argList[0]) && isset($argList[1])) {  
					if (!(writedata($argList[0],$argList[1]))) {write_log("Ecriture impossible de la valeur demandée");} ;
				}
			$Info=refreshInfos();
			if (is_array($Info)){
				$filejson = json_encode($Info);
				write_json ($filejson);
			}
			logout();
			}
		}
	
	else{
		 	write_log("Connexion impossible !");
		}
	
	echo "Ok";
} 
catch (Exception $e) {
	 write_log ('Exception : ligne='.$e->getLine().'('. $e->getCode().')'. $e->getMessage());
 	 //$trace = $e->getTrace();
 	 //write_log (print_r( $trace,true));
 	 //$a = print_r(get_defined_vars(), true);
	 //write_log ($a);
 	 echo "Erreur, voir $filelog";
}
//garbage
write_log ('--------------------------------------------------------------------------');
unset ( $TableInfo,$Info,$filejson,$Login,$Pass,$Installation,$InstallationID,$AppareilID,$DataIds,$anlageID,$anlage,$filelog,$directorylog);
Le JSON

Code : Tout sélectionner

{"77":{"Wert":"0","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"78":{"Wert":"0","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"80":{"Wert":"20","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"81":{"Wert":"20","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"83":{"Wert":"20","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"84":{"Wert":"20","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"86":{"Wert":"3","Zeitstempel":"2015-12-16 14:55:41","Name":null,"iswriteable":null},"87":{"Wert":"3","Zeitstempel":"2015-12-16 14:55:53","Name":null,"iswriteable":null},"89":{"Wert":"1","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"90":{"Wert":"1","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"94":{"Wert":"2","Zeitstempel":"2018-11-26 17:18:01","Name":null,"iswriteable":null},"104":{"Wert":"6410.2","Zeitstempel":"2018-12-11 22:35:26","Name":"anzahl_brennerstunden_r","iswriteable":false},"111":{"Wert":"8977","Zeitstempel":"2018-12-11 22:35:26","Name":"anzahl_brennerstart_r","iswriteable":true},"245":{"Wert":"1","Zeitstempel":"2018-12-11 22:35:26","Name":"zustand_interne_pumpe_r","iswriteable":false},"272":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"274":{"Wert":"0","Zeitstempel":"2015-12-16 14:55:41","Name":null,"iswriteable":null},"307":{"Wert":"1970-01-01 00:00:00","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"308":{"Wert":"1970-01-01 00:00:00","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"310":{"Wert":"1970-01-01 00:00:00","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"311":{"Wert":"1970-01-01 00:00:00","Zeitstempel":"2018-12-11 22:32:25","Name":null,"iswriteable":null},"709":{"Wert":"3","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"710":{"Wert":"3","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"715":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"716":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"718":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"719":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"730":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"731":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"949":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":"konf_ww_solltemp_2_rw","iswriteable":true},"2871":{"Wert":"1.4","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"2873":{"Wert":"1.4","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"2877":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"2879":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"5280":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":"zustand_speicherladepumpe_r","iswriteable":false},"5372":{"Wert":"39","Zeitstempel":"2018-12-11 22:35:26","Name":"temp_agt_r","iswriteable":false},"5373":{"Wert":"2.5","Zeitstempel":"2018-12-11 22:35:26","Name":"temp_ats_r","iswriteable":false},"5374":{"Wert":"42","Zeitstempel":"2018-12-11 22:35:26","Name":"temp_kts_r","iswriteable":false},"5376":{"Wert":"20","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"5377":{"Wert":"20","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"5381":{"Wert":"51.3","Zeitstempel":"2018-12-11 22:35:26","Name":"temp_ww_r","iswriteable":false},"5382":{"Wert":"20","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"5385":{"Wert":"2018-12-11 22:10:45","Zeitstempel":"2018-12-11 22:35:26","Name":"konf_uhrzeit_rw","iswriteable":true},"6053":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"6054":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"7177":{"Wert":"50","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"7179":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":"info_ww_charging_active_r","iswriteable":false},"7181":{"Wert":"1","Zeitstempel":"2018-12-11 22:35:26","Name":"zustand_zirkulationspumpe_r","iswriteable":false},"7184":{"Wert":"00:00:00:00:00:00:00:00:00:00","Zeitstempel":"2018-12-11 22:32:25","Name":"aktuelle_fehler_r","iswriteable":false},"7219":{"Wert":"2","Zeitstempel":"2015-12-16 14:55:53","Name":null,"iswriteable":null},"7220":{"Wert":"0","Zeitstempel":"2015-12-16 14:55:53","Name":null,"iswriteable":null},"7247":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"7250":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"7853":{"Wert":"1","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"7854":{"Wert":"1","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"7856":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null},"7857":{"Wert":"0","Zeitstempel":"2018-12-11 22:35:26","Name":null,"iswriteable":null}}

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 12 déc. 2018, 09:24

TonioBDS a écrit :
11 déc. 2018, 22:56
Bonjour à tous,

Je suis tombé sur ce fil de discussion et ça me motive à domotiser ma chaudière avec mon jeedom.
Salut,
Je pense que @thetrueavatar pourrait te confirmer l'utilisation ou non de son API. Suis quand même étonné que l'API ne fonctionne pas avec ton install car à terme, il ne devrait pas y avoir autre chose que cette API. Es tu bien sur que cela ne fonctionne pas ? Peut être te suffit il de te créer un nouveau compte sur une nouvelle database de Viessmann.

Anyway, on est tous connecté sur l'API. Dans mon cas, je n'ai pas le même matos que toi, donc difficile de t'aider sur ton soucis.

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 12 déc. 2018, 09:26

Mikado a écrit :
12 déc. 2018, 09:24
TonioBDS a écrit :
11 déc. 2018, 22:56
Bonjour à tous,

Je suis tombé sur ce fil de discussion et ça me motive à domotiser ma chaudière avec mon jeedom.
Salut,
Je pense que @thetrueavatar pourrait te confirmer l'utilisation ou non de son API. Suis quand même étonné que l'API ne fonctionne pas avec ton install car à terme, il ne devrait pas y avoir autre chose que cette API. Es tu bien sur que cela ne fonctionne pas ? Peut être te suffit il de te créer un nouveau compte sur une nouvelle database de Viessmann.

Le php de Scotty devient peut être incompatible au fil des évolutions de l'exposition des données. Je crains que hormis si tu mets vraiment les mains dans le cambouis, tu fais fausse route avec ce vieux script.

Anyway, on est tous connecté sur l'API. Dans mon cas, je n'ai pas le même matos que toi, donc difficile de t'aider sur ton soucis.

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 12 déc. 2018, 10:03

L'api que j'ai développée consulte les services en ligne viessmann. Ceux-ci ne sont alimentés en informations que par le VitoConnect. Le VitCom100 est un module infrarouge il me semble et qui permet de consulter les données directement sur la chaudière. On ne peut donc récupérer via l'api ou Vicare les informations si on a le VitoCom100 à ma connaissance.

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 12 déc. 2018, 12:19

thetrueavatar a écrit :
12 déc. 2018, 10:03
L'api que j'ai développée consulte les services en ligne viessmann. Ceux-ci ne sont alimentés en informations que par le VitoConnect. Le VitCom100 est un module infrarouge il me semble et qui permet de consulter les données directement sur la chaudière. On ne peut donc récupérer via l'api ou Vicare les informations si on a le VitoCom100 à ma connaissance.
ah ok, je ne savais pas. donc ce n'est vraiment pas le même sujet.

tiens pour info, 6.8° de moyenne hier et 115Kwh de consommé. là à 12h18, temp moyenne depuis minuit à 3.8° et conso de 66kwh.

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 12 déc. 2018, 12:46

Moi j'ai mis ma consigne à 17° mais mon brûleur s'est déclenché à plusieurs reprise cette nuit. En gros à 23° de température de chaudière pour 1° de température extérieure. En fait je me rend compte que dans la courbe de chauffe ça ne tient pas compte de la durée pendant laquelle on chauffe à la consigne réduit. Avec une interite/isolation aussi importante faut vraiment longtemps pour que ma maison refroidissent...
Faut croire que mes paramètres sont encore trop élevés car la température était à 18.5° au matin du coup. J'ai encore diminué de 1 mon parallèle et suis à - 6 ...

TonioBDS
Timide
Messages : 25
Inscription : 27 avr. 2018, 11:19

Re: Script pour Gestion Chaudière Viessmann connecté

Message par TonioBDS » 12 déc. 2018, 14:14

Merci bcp pour ta réponse, qui je l'espère en appelera d'autres. En fait j'ai essayé. J'ai téléchargé l'appli ViCare, créé un compte. Puis quand je dois associer mon installation à mon compte il me demande de scanner un QR core de ce que je crois être un Vitoconnect.
Or j'ai un Vitocom 100 et je ne crois pas me souvenir d'avoir dessus une étiquette avec un QR code...
Snif.

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 12 déc. 2018, 14:19

TonioBDS a écrit :
12 déc. 2018, 14:14
Merci bcp pour ta réponse, qui je l'espère en appelera d'autres. En fait j'ai essayé. J'ai téléchargé l'appli ViCare, créé un compte. Puis quand je dois associer mon installation à mon compte il me demande de scanner un QR core de ce que je crois être un Vitoconnect.
Or j'ai un Vitocom 100 et je ne crois pas me souvenir d'avoir dessus une étiquette avec un QR code...
Snif.
Après, si vraiment cela t'intéresse et que tu as la prise optique sur ta chaudière (je ne sais pas si il y a d'autres type de connectique), je trouve que le prix est loin d'être rédhibitoire.

Mikado
Timide
Messages : 150
Inscription : 17 sept. 2018, 10:42

Re: Script pour Gestion Chaudière Viessmann connecté

Message par Mikado » 12 déc. 2018, 14:21

thetrueavatar a écrit :
12 déc. 2018, 12:46
Moi j'ai mis ma consigne à 17° mais mon brûleur s'est déclenché à plusieurs reprise cette nuit. En gros à 23° de température de chaudière pour 1° de température extérieure. En fait je me rend compte que dans la courbe de chauffe ça ne tient pas compte de la durée pendant laquelle on chauffe à la consigne réduit. Avec une interite/isolation aussi importante faut vraiment longtemps pour que ma maison refroidissent...
Faut croire que mes paramètres sont encore trop élevés car la température était à 18.5° au matin du coup. J'ai encore diminué de 1 mon parallèle et suis à - 6 ...
C'est un truc de fou ton isolation, ou plutôt la mienne peut être :)
Mais tu es de quelle région ? car cette nuit et surtout Vendredi, on part dans du bon négatif

thetrueavatar
Timide
Messages : 282
Inscription : 30 nov. 2017, 13:54

Re: Script pour Gestion Chaudière Viessmann connecté

Message par thetrueavatar » 12 déc. 2018, 14:21

TonioBDS a écrit :
12 déc. 2018, 14:14
Merci bcp pour ta réponse, qui je l'espère en appelera d'autres. En fait j'ai essayé. J'ai téléchargé l'appli ViCare, créé un compte. Puis quand je dois associer mon installation à mon compte il me demande de scanner un QR core de ce que je crois être un Vitoconnect.
Or j'ai un Vitocom 100 et je ne crois pas me souvenir d'avoir dessus une étiquette avec un QR code...
Snif.
Dans la boîte il y a de mémoire un papier contenant 2-3 QR code ce qui donne droit à associer à 2-3 chaudières différentes. C'est pour ça que j'ai interdit à ma femme de jeter la boîte ;-).
Sinon, je viens de Belgique ton température similaire au Nord de la France:
chart (11).png
chart (11).png (105.04 Kio) Consulté 3156 fois

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité