Api Viessmann pour récupération de données avec Vitoconnect
Re: Script pour Gestion Chaudière Viessmann connecté
bonjour,
pour la fonction GetHeatingBurnerActive faut il utiliser un script de type numerique ou autre?
pour la fonction GetHeatingBurnerActive faut il utiliser un script de type numerique ou autre?
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
De type booléen true false
Re: Script pour Gestion Chaudière Viessmann connecté
Merci pour tout ce boulot, c'est vraiment super.
Personnellement j'ai pas mal de commandes qui ne fonctionnent pas mais j'ai plus l'impression que cela vient de moi.
Je pense que je ne doit pas les intégrer comme il faut dans Jeedom.
Personnellement j'ai pas mal de commandes qui ne fonctionnent pas mais j'ai plus l'impression que cela vient de moi.
Je pense que je ne doit pas les intégrer comme il faut dans Jeedom.
Est-ce possible d'avoir une copie d'écran des différentes commandes avec la façon dont vous les avez intégrer ?
Re: Script pour Gestion Chaudière Viessmann connecté
Je vais faire un bilan alors.thetrueavatar a écrit : ↑20 oct. 2018, 17:53Moi ça m'intéresse pour pouvoir corriger le code en effet :p.
Je ne pense pas qu'il y ai vraiment des bugs mais plutôt des fonction non disponibles chez Viessmann et des bugs chez eux... Ca a clairement l'air d'être en plein dev chez eux (api et vicare) et à la vitesse où cela avance pour une grosse boite comme ça, je me dis qu'ils font faire ça à un stagiaire
Sur la chaudière et via l'appli, on peut avoir 4 périodes par jour avec à chaque fois heure de début et heure de fin. Ces périodes sont des période en mode normal.thetrueavatar a écrit : ↑20 oct. 2018, 17:53Pour le schedule je peux écrire la fonction. Je doit juste réfléchir à l'interface à mettre en place. Me semble qu'on peut ajouter un jour donc ça serait du style nom du jour, start, end, ....
Par contre, en regardant les features sur ton github, je vois qu'il y aurait possibilité de mettre les modes reduced, normal et fixed. Fixed, je ne vois pas à quoi cela correspond...
Je me disais qu'il pourrait y avoir une fonction pour modifier un jour (start, end, mode pour les 4 périodes) et aussi une fonction pour changer tout le schedule d'un coup.
Après, tu fais au mieux et comme tu le sens. Je serais là pour tester en tout cas
Re: Script pour Gestion Chaudière Viessmann connecté
Pour l'intégration à Jeedom, moi j'ai fait un seul script, qui appelle un seul php, pour me remonter toutes les valeurs.
En fait, j'ai remarqué que c'est plus rapide d’enchaîner les get dans le PHP et de remonter à chaque fois la valeur à Jeedom par l'api jeedom sur les virtuels que de faire un script pour chaque get.
En plus, je formatte comme je veux la donnée avant de l'envoyer à Jeedom. Par exemple, pour GetHeatingBurnerActive, moi je mets 1 pour True et 0 sinon et je remonte ça dans un type binaire de Jeedom. Pour getActiveMode, je traduit en français les modes que retourne l'api viessmann et je mets un type autre dans le virtuel jeedom.
Comme ça je peux le tracer sur une courbe les numériques et les binaires.
Pour l'affichage on peut appliquer un widget pour faire l'affichage qu'on veut : une flamme quand la valeur est égale à 1 par exemple.
Voilà ce que cela donne. C'est du brut pour l'instant. Voici mon script. Je ne sais pas programmer en php alors vous serez tolérants. J'ai bricolé un truc en glanant des exemples sur le net pour faire une fonction de requette http POST qui ne doit pas être top mais cela marche... Je suis preneur d'améliorations si vous en avez.
En fait, j'ai remarqué que c'est plus rapide d’enchaîner les get dans le PHP et de remonter à chaque fois la valeur à Jeedom par l'api jeedom sur les virtuels que de faire un script pour chaque get.
En plus, je formatte comme je veux la donnée avant de l'envoyer à Jeedom. Par exemple, pour GetHeatingBurnerActive, moi je mets 1 pour True et 0 sinon et je remonte ça dans un type binaire de Jeedom. Pour getActiveMode, je traduit en français les modes que retourne l'api viessmann et je mets un type autre dans le virtuel jeedom.
Comme ça je peux le tracer sur une courbe les numériques et les binaires.
Pour l'affichage on peut appliquer un widget pour faire l'affichage qu'on veut : une flamme quand la valeur est égale à 1 par exemple.
Voilà ce que cela donne. C'est du brut pour l'instant. Voici mon script. Je ne sais pas programmer en php alors vous serez tolérants. J'ai bricolé un truc en glanant des exemples sur le net pour faire une fonction de requette http POST qui ne doit pas être top mais cela marche... Je suis preneur d'améliorations si vous en avez.
Code : Tout sélectionner
<?php
include __DIR__.'/bootstrap.php';
use Viessmann\API\ViessmannFeature;
function post_request($url, array $params) {
$query_content = http_build_query($params);
$fp = fopen($url, 'r', FALSE, // do not use_include_path
stream_context_create([
'http' => [
'header' => [ // header array does not need '\r\n'
'Content-type: application/x-www-form-urlencoded',
'Content-Length: ' . strlen($query_content)
],
'method' => 'POST',
'content' => $query_content
]
]));
if ($fp === FALSE) {
fclose($fp);
return json_encode(['error' => 'Failed to get contents...']);
}
$result = stream_get_contents($fp); // no maxlength/offset
fclose($fp);
return $result;
}
function jeedom_post($cmd_id, $value) {
$jeedom_apikey = "mettre sa propre clé de jeedom";
$jeedom_url_retour = "http://192.168.1.xx(mettre ip locale de jeedom)/core/api/jeeApi.php?plugin=virtual&apikey={$jeedom_apikey}&type=virtual&id={$cmd_id}&value={$value}";
$jeedom_params = array('key1' => '', 'key2' => '');
$result = post_request($jeedom_url_retour, $jeedom_params);
return $result;
}
jeedom_post("2685", $viessmannApi->getOutsideTemperature());
jeedom_post("2683", $viessmannApi->getBoilerTemperature());
jeedom_post("3023", $viessmannApi->getSlope());
jeedom_post("3024", $viessmannApi->getShift());
$res = $viessmannApi->getActiveMode();
if ( $res == "standby" ):
$res = "Arret";
elseif ( $res == "dhw"):
$res = "EauChaude";
elseif ( $res == "dhwAndHeating"):
$res = "EauChaude+Chauffage";
elseif ( $res == "forcedReduced"):
$res = "Réduit";
elseif ( $res == "forcedNormal"):
$res = "Force";
else:
$res = "Erreur";
endif;
jeedom_post("3021", $res);
$res = $viessmannApi->getActiveProgram();
if ( $res == "reduced" ):
$res = "Reduit";
elseif ( $res == "normal"):
$res = "Normal";
elseif ( $res == "dhwAndHeating"):
$res = "EauChaude+Chauffage";
elseif ( $res == "forcedReduced"):
$res = "ForceReduit";
elseif ( $res == "forcedNormal"):
$res = "ForceNormal";
endif;
jeedom_post("3047", $res);
$res = $viessmannApi->isHeatingBurnerActive();
if ( $res == True ):
$res = "1";
else:
$res = "0";
endif;
jeedom_post("3022", $res);
$res = $viessmannApi->isDhwModeActive();
if ( $res == True ):
$res = "1";
else:
$res = "0";
endif;
jeedom_post("2693", $res);
jeedom_post("2684", $viessmannApi->getSupplyProgramTemperature());
jeedom_post("2689", $viessmannApi->getHotWaterStorageTemperature());
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
par type booléen je voulais dire type binaire.Manouille a écrit : ↑21 oct. 2018, 11:56Merci pour tout ce boulot, c'est vraiment super.
Personnellement j'ai pas mal de commandes qui ne fonctionnent pas mais j'ai plus l'impression que cela vient de moi.
Je pense que je ne doit pas les intégrer comme il faut dans Jeedom.
Est-ce possible d'avoir une copie d'écran des différentes commandes avec la façon dont vous les avez intégrer ?
Voici une image pour vous montrez comment c'est configuré chez moi:
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
Bonjour et merci pour l'explication. Ne m'y connaissant pas bien en jeedom j'ai fait un script par valeur mais c'est clairement plus optimal de le faire en un seul script. En faisant un script par commande, on est forcé de se ré-authentifier à chaque fois, tandis que comme tu as fait le token est réutilisé à chaque appel. Je rappelle d'ailleurs que les fichiers que que je mets dans example ne sont qu'à titre d'example. Je fourni une API mais ne suit pas du tout expert en intégration jeedom.fmetz a écrit : ↑21 oct. 2018, 12:56Pour l'intégration à Jeedom, moi j'ai fait un seul script, qui appelle un seul php, pour me remonter toutes les valeurs.
En fait, j'ai remarqué que c'est plus rapide d’enchaîner les get dans le PHP et de remonter à chaque fois la valeur à Jeedom par l'api jeedom sur les virtuels que de faire un script pour chaque get.
En plus, je formatte comme je veux la donnée avant de l'envoyer à Jeedom. Par exemple, pour GetHeatingBurnerActive, moi je mets 1 pour True et 0 sinon et je remonte ça dans un type binaire de Jeedom. Pour getActiveMode, je traduit en français les modes que retourne l'api viessmann et je mets un type autre dans le virtuel jeedom.
Comme ça je peux le tracer sur une courbe les numériques et les binaires.
Pour l'affichage on peut appliquer un widget pour faire l'affichage qu'on veut : une flamme quand la valeur est égale à 1 par exemple.
Voilà ce que cela donne. C'est du brut pour l'instant.
Chaudière.jpg
Voici mon script. Je ne sais pas programmer en php alors vous serez tolérants. J'ai bricolé un truc en glanant des exemples sur le net pour faire une fonction de requette http POST qui ne doit pas être top mais cela marche... Je suis preneur d'améliorations si vous en avez.Code : Tout sélectionner
<?php include __DIR__.'/bootstrap.php'; use Viessmann\API\ViessmannFeature; function post_request($url, array $params) { $query_content = http_build_query($params); $fp = fopen($url, 'r', FALSE, // do not use_include_path stream_context_create([ 'http' => [ 'header' => [ // header array does not need '\r\n' 'Content-type: application/x-www-form-urlencoded', 'Content-Length: ' . strlen($query_content) ], 'method' => 'POST', 'content' => $query_content ] ])); if ($fp === FALSE) { fclose($fp); return json_encode(['error' => 'Failed to get contents...']); } $result = stream_get_contents($fp); // no maxlength/offset fclose($fp); return $result; } function jeedom_post($cmd_id, $value) { $jeedom_apikey = "mettre sa propre clé de jeedom"; $jeedom_url_retour = "http://192.168.1.xx(mettre ip locale de jeedom)/core/api/jeeApi.php?plugin=virtual&apikey={$jeedom_apikey}&type=virtual&id={$cmd_id}&value={$value}"; $jeedom_params = array('key1' => '', 'key2' => ''); $result = post_request($jeedom_url_retour, $jeedom_params); return $result; } jeedom_post("2685", $viessmannApi->getOutsideTemperature()); jeedom_post("2683", $viessmannApi->getBoilerTemperature()); jeedom_post("3023", $viessmannApi->getSlope()); jeedom_post("3024", $viessmannApi->getShift()); $res = $viessmannApi->getActiveMode(); if ( $res == "standby" ): $res = "Arret"; elseif ( $res == "dhw"): $res = "EauChaude"; elseif ( $res == "dhwAndHeating"): $res = "EauChaude+Chauffage"; elseif ( $res == "forcedReduced"): $res = "Réduit"; elseif ( $res == "forcedNormal"): $res = "Force"; else: $res = "Erreur"; endif; jeedom_post("3021", $res); $res = $viessmannApi->getActiveProgram(); if ( $res == "reduced" ): $res = "Reduit"; elseif ( $res == "normal"): $res = "Normal"; elseif ( $res == "dhwAndHeating"): $res = "EauChaude+Chauffage"; elseif ( $res == "forcedReduced"): $res = "ForceReduit"; elseif ( $res == "forcedNormal"): $res = "ForceNormal"; endif; jeedom_post("3047", $res); $res = $viessmannApi->isHeatingBurnerActive(); if ( $res == True ): $res = "1"; else: $res = "0"; endif; jeedom_post("3022", $res); $res = $viessmannApi->isDhwModeActive(); if ( $res == True ): $res = "1"; else: $res = "0"; endif; jeedom_post("2693", $res); jeedom_post("2684", $viessmannApi->getSupplyProgramTemperature()); jeedom_post("2689", $viessmannApi->getHotWaterStorageTemperature());
Je pourrais encore optimisé la chose en ne faisant qu'un seul appel réseau car la méthode getFeatures() renvoie quasiment toutes les données il me semble et ne nécessite qu'un appel réseau.
Toutefois, j'ai constaté en pratique que les informations ne sont rafraîchies que toutes les 5 mins par le serveur Viessmann.
Je ne suis pas sûr que ça vaille la peine d'optimiser à ce point mon code.
Je vais sans doute intégrer un script comme tu as fait spécifique à jeedom. Est-ce que ça te dérange si je m’inspire du tiens ? Je n'avais pas réussi à facilement retrouvé dans la documentation quelle url utiliser pour poster depuis un script l'information sur jeedom.
Re: Script pour Gestion Chaudière Viessmann connecté
@thetrueavatar, tu rigoles, bien sûr que tu peux t'en inspirer... Tu poses la question avec tout le travail que tu fais pour nous !
-
- Timide
- Messages : 20
- Inscription : 25 août 2018, 12:26
Re: Script pour Gestion Chaudière Viessmann connecté
Pour la mise à jour des Virtuels via les scripts, j'utilise pour ma part
par exemple.
Code : Tout sélectionner
$cmd = cmd::byString("#[Chauffage][Chaudière Viessmann][Mode]#");
$scenario->setLog($value);
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
Il faut inclure ça dans un répertoire spécial pour avoir accès à la commande cmd::byString ? Il doit y avoir une sorte de bootstrap comme moi dans jeedom pour exposer ces méthodes spécifiques.
Re: Script pour Gestion Chaudière Viessmann connecté
Ca marche depuis un script php ça ou est-ce que c'est dans un bloc code de scenario jeedom ?Avataar120 a écrit : ↑21 oct. 2018, 13:52Pour la mise à jour des Virtuels via les scripts, j'utilise pour ma part
par exemple.Code : Tout sélectionner
$cmd = cmd::byString("#[Chauffage][Chaudière Viessmann][Mode]#"); $scenario->setLog($value);
Re: Script pour Gestion Chaudière Viessmann connecté
Bonjour
Je viens de faire installer une chaudiere Viessmann vitodens 222F + vitotrol 300RF + vitoconnect .
Je suis novice, je possede un NAS synology .
Pourriez vs m'aider à installer jeedom et utiliser les script afin de pouvoir controler ma chaudiere à distance car l app Vicare est très basique.
Merci d'avance
Je viens de faire installer une chaudiere Viessmann vitodens 222F + vitotrol 300RF + vitoconnect .
Je suis novice, je possede un NAS synology .
Pourriez vs m'aider à installer jeedom et utiliser les script afin de pouvoir controler ma chaudiere à distance car l app Vicare est très basique.
Merci d'avance
Re: Script pour Gestion Chaudière Viessmann connecté
Bonjour,
Je viens de mettre en oeuvre Viessmann_API, c'est super et facile à utiliser. Merci thetrueavatar !
Pour le moment, j'ai fait au plus simple : pluging script, et commandes comme décrites par thetrueavatar
Au fait, vous requetez toutes les mn ?
J'envisage également de faire comme fmetz : un seul script qui récupère les diférentes valeurs, et qui les transmet à un virtuel.
Ca évite les nombreuses requetes d'authentification (le token récupéré étant rejouable).
. D'une part, pour un soucis de performance
. D'autre part, je crains que M. Viessmann ne finisse par mettre en place une règle qui empeche les requetes d'authentification en rafale.
J'ai été admin système dans une autre vie, j'ai géré entre autres choses un serveur d'authentification (SSO CAS), et j'avais mis des restrictions pour éviter des rafales de requetes d'auth ; pour éviter les tentatives de piratage, et pour éviter une surcharge du serveur.
Je viens de mettre en oeuvre Viessmann_API, c'est super et facile à utiliser. Merci thetrueavatar !
Pour le moment, j'ai fait au plus simple : pluging script, et commandes comme décrites par thetrueavatar
Au fait, vous requetez toutes les mn ?
J'envisage également de faire comme fmetz : un seul script qui récupère les diférentes valeurs, et qui les transmet à un virtuel.
Ca évite les nombreuses requetes d'authentification (le token récupéré étant rejouable).
. D'une part, pour un soucis de performance
. D'autre part, je crains que M. Viessmann ne finisse par mettre en place une règle qui empeche les requetes d'authentification en rafale.
J'ai été admin système dans une autre vie, j'ai géré entre autres choses un serveur d'authentification (SSO CAS), et j'avais mis des restrictions pour éviter des rafales de requetes d'auth ; pour éviter les tentatives de piratage, et pour éviter une surcharge du serveur.
Re: Script pour Gestion Chaudière Viessmann connecté
fmetz a écrit : ↑21 oct. 2018, 11:58Je vais faire un bilan alors.thetrueavatar a écrit : ↑20 oct. 2018, 17:53Moi ça m'intéresse pour pouvoir corriger le code en effet :p.
Je ne pense pas qu'il y ai vraiment des bugs mais plutôt des fonction non disponibles chez Viessmann et des bugs chez eux... Ca a clairement l'air d'être en plein dev chez eux (api et vicare) et à la vitesse où cela avance pour une grosse boite comme ça, je me dis qu'ils font faire ça à un stagiaire
Voilà mon bilan. Je ne savais pas trop comment poster ça... S'il y a mieux, vous me direz.
Code : Tout sélectionner
Chaudière Vitodens 222W (1 circuit avec ballon interne à la chaudère)
GET
Ce qui marche :
echo "getOutsideTemperature " . $viessmannApi->getOutsideTemperature() . "\n";
echo "getBoilerTemperature " . $viessmannApi->getBoilerTemperature() . "\n";
echo "getSlope " . $viessmannApi->getSlope() . "\n";
echo "getShift " . $viessmannApi->getShift() . "\n";
echo "getActiveMode " . $viessmannApi->getActiveMode() . "\n";
echo "getActiveProgram " . $viessmannApi->getActiveProgram() . "\n";
echo "isHeatingBurnerActive " . $viessmannApi->isHeatingBurnerActive() . "\n";
echo "isDhwModeActive " . $viessmannApi->isDhwModeActive() . "\n";
Toujours vu à False !
echo "getComfortProgramTemperature " . $viessmannApi->getComfortProgramTemperature() . "\n";
echo "getNormalProgramTemperature " . $viessmannApi->getNormalProgramTemperature() . "\n";
echo "getReducedProgramTemperature " . $viessmannApi->getReducedProgramTemperature() . "\n";
echo "getEcoProgramTemperature " . $viessmannApi->getEcoProgramTemperature() . "\n";
OK mais Eco et Reduced températures sont les mêmes sur ma chaudière
echo "isInStandbyMode " . $viessmannApi->isInStandbyMode() . "\n";
Toujours vu à False !
echo "getSupplyProgramTemperature " . $viessmannApi->getSupplyProgramTemperature() . "\n";
echo "getHotWaterStorageTemperature " . $viessmannApi->getHotWaterStorageTemperature() . "\n";
echo "isOneTimeDhwCharge " . $viessmannApi->isOneTimeDhwCharge() . "\n";
Jamais vu à True !
echo "getDhwTemperature " . $viessmannApi->getDhwTemperature() . "\n";
echo "getHeatingGasConsumption (Day) " . "\n";
print_r($viessmannApi->getHeatingGasConsumption("day"));
Conso(kWh)=8*retour sur 7 jours de j à j-6 ; avec VitoTrol on avait 8 jours
Marche mais en ce moment ma conso ne dépasse pas 128kWh (voir ci-dessous le bug avec les autres consos)
echo "getHeatingGasConsumption (Week) " . "\n";
print_r($viessmannApi->getHeatingGasConsumption("week"));
conso(kWh)=8*retour sur 52 semaines de s à s-51 ; avec VitoTrol on avait 53 semaines
Marche si conso<=128kWh, il y a un pb de codage au-delà. Le codage semble être un modulo de 128kWh (modulo 1024)
Au dessus de 128(codé 1024), je retrouve la conso de ma chaudière si j'ajoute les paquets de 1024 qui manquent.
Je pense qu'il faut attendre que la fonction marche dans ViCare...
echo "getHeatingGasConsumption (Month) " . "\n";
print_r($viessmannApi->getHeatingGasConsumption("month"));
conso(kWh)=8*retour sur 12 mois de m à m-12 ; avec VitoTrol on avait 13 mois
bug modulo 1024
echo "getHeatingGasConsumption (Year) " . "\n";
print_r($viessmannApi->getHeatingGasConsumption("year"));
conso(kWh)=8*retour sur 2 années de a à a-1 ; avec VitoTrol on avait 3 ans
bug modulo 1024
echo "getHeatingSchedule " . "\n";
print_r($viessmannApi->getHeatingSchedule());
Ce qui ne marche pas:
echo "getRoomTemperature " . $viessmannApi->getRoomTemperature() . "\n";
Marche pas (Property "value" was not found) mais normal je n'ai pas l'option chez moi
echo "getExternalProgramTemperature " . $viessmannApi->getExternalProgramTemperature() . "\n";
donne toujours 0
echo "getDhwGasConsumption " . "\n";
print_r($viessmannApi->getDhwGasConsumption("day"));
echo "getDhwGasConsumption " . "\n";
print_r($viessmannApi->getDhwGasConsumption("week"));
echo "getDhwGasConsumption " . "\n";
Print_r($viessmannApi->getDhwGasConsumption("month"));
echo "getDhwGasConsumption " . "\n";
print_r($viessmannApi->getDhwGasConsumption("year"));
Toutes les fonctions renvoient la même chose que Heating
echo "getHeatingBurnerStatistics " . $viessmannApi->getHeatingBurnerStatistics("hours") . "\n";
echo "getHeatingBurnerStatistics " . $viessmannApi->getHeatingBurnerStatistics("starts") . "\n";
Marche pas (FEATURE_NOT_FOUND)
echo "getDhwSchedule " . "\n";
print_r($viessmannApi->getCirculationSchedule());
Renvoi toujours un tableau vide
echo "getHeatingBurnerCurrentPower " . $viessmannApi->getHeatingBurnerCurrentPower() . "\n";
Marche pas (FEATURE_NOT_FOUND)
echo "getHeatingBurnerModulation " . $viessmannApi->getHeatingBurnerModulation() . "\n";
Marche pas (FEATURE_NOT_FOUND)
echo "getCirculationPumpStatus " . $viessmannApi->getCirculationPumpStatus() . "\n";
Marche pas (FEATURE_NOT_FOUND)
echo "isDhwCharging " . $viessmannApi->isDhwCharging() . "\n";
Marche pas (FEATURE_NOT_FOUND)
echo "getDhwChargingLevel " . $viessmannApi->getDhwChargingLevel() . "\n";
Marche pas (FEATURE_NOT_FOUND)
#echo "getDhwPumpsCirculation " . $viessmannApi->getDhwPumpsCirculation() . "\n";
Marche pas (FEATURE_NOT_FOUND)
#echo "getDhwPumpsPrimary " . $viessmannApi->getDhwPumpsPrimary() . "\n";
Marche pas (FEATURE_NOT_FOUND)
#echo "getDhwTemperatureOutlet " . $viessmannApi->getDhwTemperatureOutlet() . "\n";
Marche pas (FEATURE_NOT_FOUND)
SET
Ce qui marche :
echo "setCurve " . $viessmannApi->setCurve("-5","1.7") . "\n";
echo "setComfortProgramTemperature " . $viessmannApi->setComfortProgramTemperature("22") . "\n";
echo "activateEcoProgram " . $viessmannApi->activateEcoProgram("19") . "\n";
Pourquoi y passer la température alors que la température Eco est la même que la température Reduced qu'on change avec setReducedProgramTemperature ?
echo "setNormalProgramTemperature " . $viessmannApi->setNormalProgramTemperature("20") . "\n";
echo "setReducedProgramTemperature " . $viessmannApi->setReducedProgramTemperature("12") . "\n";
echo "setDhwTemperature " . $viessmannApi->setDhwTemperature("50") . "\n";
Ce qui ne marche pas:
echo "deActivateEcoProgram " . $viessmannApi->deActivateEcoProgram() . "\n";
Marche pas : cela ne désactive pas le mode Eco
Avec ViCare : ça marche
echo "setExternalProgramTemperature " . $viessmannApi->setExternalProgramTemperature("11") . "\n";
Marche pas, donne toujours 0
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
S'ils utilisent un API Gateway j'imagine qu'il doit y avoir un DDOS protection. Pour ma part j'ai constaté un interval de 5 minutes entre les mises à jours des données donc j'ai configuré le cron dans ce sens-là.vmath54 a écrit : ↑21 oct. 2018, 18:22Bonjour,
Je viens de mettre en oeuvre Viessmann_API, c'est super et facile à utiliser. Merci thetrueavatar !
Pour le moment, j'ai fait au plus simple : pluging script, et commandes comme décrites par thetrueavatar
Au fait, vous requetez toutes les mn ?
J'envisage également de faire comme fmetz : un seul script qui récupère les diférentes valeurs, et qui les transmet à un virtuel.
Ca évite les nombreuses requetes d'authentification (le token récupéré étant rejouable).
. D'une part, pour un soucis de performance
. D'autre part, je crains que M. Viessmann ne finisse par mettre en place une règle qui empeche les requetes d'authentification en rafale.
J'ai été admin système dans une autre vie, j'ai géré entre autres choses un serveur d'authentification (SSO CAS), et j'avais mis des restrictions pour éviter des rafales de requetes d'auth ; pour éviter les tentatives de piratage, et pour éviter une surcharge du serveur.
Re: Script pour Gestion Chaudière Viessmann connecté
Bonsoir à tous,
Je suis ce post depuis un moment sans avoir de compétences en php et autres langages évolués. J'ai réussi à récupérer certaines informations mais je suis perdu avec les dernières évolutions de fmetz entre autre.
Mon pb se situe au niveau des répertoires dans lesquels il faut mettre les fichiers, doit on mettre le main.php; le bootstrap. php etc ..... Quelqu'un pourrait-il m'éclairer sur la question.
Merci d'avance et encore bravo pour ce super boulot.
Je suis ce post depuis un moment sans avoir de compétences en php et autres langages évolués. J'ai réussi à récupérer certaines informations mais je suis perdu avec les dernières évolutions de fmetz entre autre.
Mon pb se situe au niveau des répertoires dans lesquels il faut mettre les fichiers, doit on mettre le main.php; le bootstrap. php etc ..... Quelqu'un pourrait-il m'éclairer sur la question.
Merci d'avance et encore bravo pour ce super boulot.
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
Merci pour le retour. A part pour le deactivateEcoProgram où je sais que ça marche pas(toujours pas compris pourquoi) le reste semble "ok". Les FEATURE_NOT_FOUND et problème de propriété non trouvée sont des erreurs du au fait que tu as pas ce type de données là exposées pour ton équipement.fmetz a écrit : ↑21 oct. 2018, 19:25fmetz a écrit : ↑21 oct. 2018, 11:58Je vais faire un bilan alors.thetrueavatar a écrit : ↑20 oct. 2018, 17:53Moi ça m'intéresse pour pouvoir corriger le code en effet :p.
Je ne pense pas qu'il y ai vraiment des bugs mais plutôt des fonction non disponibles chez Viessmann et des bugs chez eux... Ca a clairement l'air d'être en plein dev chez eux (api et vicare) et à la vitesse où cela avance pour une grosse boite comme ça, je me dis qu'ils font faire ça à un stagiaire
Voilà mon bilan. Je ne savais pas trop comment poster ça... S'il y a mieux, vous me direz.Code : Tout sélectionner
Chaudière Vitodens 222W (1 circuit avec ballon interne à la chaudère) GET Ce qui marche : echo "getOutsideTemperature " . $viessmannApi->getOutsideTemperature() . "\n"; echo "getBoilerTemperature " . $viessmannApi->getBoilerTemperature() . "\n"; echo "getSlope " . $viessmannApi->getSlope() . "\n"; echo "getShift " . $viessmannApi->getShift() . "\n"; echo "getActiveMode " . $viessmannApi->getActiveMode() . "\n"; echo "getActiveProgram " . $viessmannApi->getActiveProgram() . "\n"; echo "isHeatingBurnerActive " . $viessmannApi->isHeatingBurnerActive() . "\n"; echo "isDhwModeActive " . $viessmannApi->isDhwModeActive() . "\n"; Toujours vu à False ! echo "getComfortProgramTemperature " . $viessmannApi->getComfortProgramTemperature() . "\n"; echo "getNormalProgramTemperature " . $viessmannApi->getNormalProgramTemperature() . "\n"; echo "getReducedProgramTemperature " . $viessmannApi->getReducedProgramTemperature() . "\n"; echo "getEcoProgramTemperature " . $viessmannApi->getEcoProgramTemperature() . "\n"; OK mais Eco et Reduced températures sont les mêmes sur ma chaudière echo "isInStandbyMode " . $viessmannApi->isInStandbyMode() . "\n"; Toujours vu à False ! echo "getSupplyProgramTemperature " . $viessmannApi->getSupplyProgramTemperature() . "\n"; echo "getHotWaterStorageTemperature " . $viessmannApi->getHotWaterStorageTemperature() . "\n"; echo "isOneTimeDhwCharge " . $viessmannApi->isOneTimeDhwCharge() . "\n"; Jamais vu à True ! echo "getDhwTemperature " . $viessmannApi->getDhwTemperature() . "\n"; echo "getHeatingGasConsumption (Day) " . "\n"; print_r($viessmannApi->getHeatingGasConsumption("day")); Conso(kWh)=8*retour sur 7 jours de j à j-6 ; avec VitoTrol on avait 8 jours Marche mais en ce moment ma conso ne dépasse pas 128kWh (voir ci-dessous le bug avec les autres consos) echo "getHeatingGasConsumption (Week) " . "\n"; print_r($viessmannApi->getHeatingGasConsumption("week")); conso(kWh)=8*retour sur 52 semaines de s à s-51 ; avec VitoTrol on avait 53 semaines Marche si conso<=128kWh, il y a un pb de codage au-delà. Le codage semble être un modulo de 128kWh (modulo 1024) Au dessus de 128(codé 1024), je retrouve la conso de ma chaudière si j'ajoute les paquets de 1024 qui manquent. Je pense qu'il faut attendre que la fonction marche dans ViCare... echo "getHeatingGasConsumption (Month) " . "\n"; print_r($viessmannApi->getHeatingGasConsumption("month")); conso(kWh)=8*retour sur 12 mois de m à m-12 ; avec VitoTrol on avait 13 mois bug modulo 1024 echo "getHeatingGasConsumption (Year) " . "\n"; print_r($viessmannApi->getHeatingGasConsumption("year")); conso(kWh)=8*retour sur 2 années de a à a-1 ; avec VitoTrol on avait 3 ans bug modulo 1024 echo "getHeatingSchedule " . "\n"; print_r($viessmannApi->getHeatingSchedule()); Ce qui ne marche pas: echo "getRoomTemperature " . $viessmannApi->getRoomTemperature() . "\n"; Marche pas (Property "value" was not found) mais normal je n'ai pas l'option chez moi echo "getExternalProgramTemperature " . $viessmannApi->getExternalProgramTemperature() . "\n"; donne toujours 0 echo "getDhwGasConsumption " . "\n"; print_r($viessmannApi->getDhwGasConsumption("day")); echo "getDhwGasConsumption " . "\n"; print_r($viessmannApi->getDhwGasConsumption("week")); echo "getDhwGasConsumption " . "\n"; Print_r($viessmannApi->getDhwGasConsumption("month")); echo "getDhwGasConsumption " . "\n"; print_r($viessmannApi->getDhwGasConsumption("year")); Toutes les fonctions renvoient la même chose que Heating echo "getHeatingBurnerStatistics " . $viessmannApi->getHeatingBurnerStatistics("hours") . "\n"; echo "getHeatingBurnerStatistics " . $viessmannApi->getHeatingBurnerStatistics("starts") . "\n"; Marche pas (FEATURE_NOT_FOUND) echo "getDhwSchedule " . "\n"; print_r($viessmannApi->getCirculationSchedule()); Renvoi toujours un tableau vide echo "getHeatingBurnerCurrentPower " . $viessmannApi->getHeatingBurnerCurrentPower() . "\n"; Marche pas (FEATURE_NOT_FOUND) echo "getHeatingBurnerModulation " . $viessmannApi->getHeatingBurnerModulation() . "\n"; Marche pas (FEATURE_NOT_FOUND) echo "getCirculationPumpStatus " . $viessmannApi->getCirculationPumpStatus() . "\n"; Marche pas (FEATURE_NOT_FOUND) echo "isDhwCharging " . $viessmannApi->isDhwCharging() . "\n"; Marche pas (FEATURE_NOT_FOUND) echo "getDhwChargingLevel " . $viessmannApi->getDhwChargingLevel() . "\n"; Marche pas (FEATURE_NOT_FOUND) #echo "getDhwPumpsCirculation " . $viessmannApi->getDhwPumpsCirculation() . "\n"; Marche pas (FEATURE_NOT_FOUND) #echo "getDhwPumpsPrimary " . $viessmannApi->getDhwPumpsPrimary() . "\n"; Marche pas (FEATURE_NOT_FOUND) #echo "getDhwTemperatureOutlet " . $viessmannApi->getDhwTemperatureOutlet() . "\n"; Marche pas (FEATURE_NOT_FOUND) SET Ce qui marche : echo "setCurve " . $viessmannApi->setCurve("-5","1.7") . "\n"; echo "setComfortProgramTemperature " . $viessmannApi->setComfortProgramTemperature("22") . "\n"; echo "activateEcoProgram " . $viessmannApi->activateEcoProgram("19") . "\n"; Pourquoi y passer la température alors que la température Eco est la même que la température Reduced qu'on change avec setReducedProgramTemperature ? echo "setNormalProgramTemperature " . $viessmannApi->setNormalProgramTemperature("20") . "\n"; echo "setReducedProgramTemperature " . $viessmannApi->setReducedProgramTemperature("12") . "\n"; echo "setDhwTemperature " . $viessmannApi->setDhwTemperature("50") . "\n"; Ce qui ne marche pas: echo "deActivateEcoProgram " . $viessmannApi->deActivateEcoProgram() . "\n"; Marche pas : cela ne désactive pas le mode Eco Avec ViCare : ça marche echo "setExternalProgramTemperature " . $viessmannApi->setExternalProgramTemperature("11") . "\n"; Marche pas, donne toujours 0
Re: Script pour Gestion Chaudière Viessmann connecté
Moi j'ai créé un répertoire Viessmann dans "/var/www/html/plugins/script/core/ressources" et j'y mets tout dedans. (j'ai jeedom sur raspeberry).herigs a écrit : ↑22 oct. 2018, 20:45Bonsoir à tous,
Je suis ce post depuis un moment sans avoir de compétences en php et autres langages évolués. J'ai réussi à récupérer certaines informations mais je suis perdu avec les dernières évolutions de fmetz entre autre.
Mon pb se situe au niveau des répertoires dans lesquels il faut mettre les fichiers, doit on mettre le main.php; le bootstrap. php etc ..... Quelqu'un pourrait-il m'éclairer sur la question.
Merci d'avance et encore bravo pour ce super boulot.
Après, dans jeedom j'ai créé un script avec une commande pour tout lire et une commande pour chaque set.
-
- Timide
- Messages : 282
- Inscription : 30 nov. 2017, 13:54
Re: Script pour Gestion Chaudière Viessmann connecté
ok j'ai compris. Sans doute que lors de l'appel aux script ils utilisent l'option -d de php qui permet de définir un fichier INI et donc définir un fichier jeedom définissant les méthodes spéciales sans devoir inclure explicitement celui-ci dans le fichier php. Tu cours fmetz que tu as accès aux méthodes jeedom depuis mes scripts donc ?
Re: Script pour Gestion Chaudière Viessmann connecté
Je ne comprends pas bien ta question, moi je n'utilise pas de méthodes jeedom dans les scripts php.thetrueavatar a écrit : ↑23 oct. 2018, 13:31ok j'ai compris. Sans doute que lors de l'appel aux script ils utilisent l'option -d de php qui permet de définir un fichier INI et donc définir un fichier jeedom définissant les méthodes spéciales sans devoir inclure explicitement celui-ci dans le fichier php. Tu cours fmetz que tu as accès aux méthodes jeedom depuis mes scripts donc ?
Je me suis mal m'exprimé je pense. Moi j'utilise tes scripts php que je lance dans jeedom grâce au plugin script dans lequel j'ai créé un script Viessmann qui contient une commande de type info pour tout lire et une commande de type action pour chaque set.
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité