Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

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 » 15 oct. 2019, 21:40

thetrueavatar a écrit :
15 oct. 2019, 16:42
Mikado a écrit :
03 déc. 2018, 17:00
Hello,

Comme dis dans le post précédent, je vous donne un retour sur ce que j'ai compris de nouveau sur la Viessmann 222-w.

Code B0 : pour ceux qui ont une sonde d'ambiance, bien vérifié que cela est mis sur 3. Sinon la sonde n'est pas prise en compte.

Code 90 : le plus difficile à comprendre :) il s'agit d'une durée par palier de 10 minutes, pour moyenner la température extérieure.
Par défaut c'est positionné à 21h30. Et c'est aussi pour cela que je ne comprenais pas trop la façon dont réagissait la chaudière. Si vous avez une chute brutale de température, ben va falloir attendre pour que cela moyenne à la baisse. 21h30 est sans doute pour une maison parfaitement isolée, mais dans mon cas, je l'ai descendu à 30 (donc 5 heures), et c'est bcp mieux. Plus réactif. Alors qu'avant, j'incriminais pente et //

Code B2 : ratio de prise en compte de la température ambiante pour la modulation de la courbe de chauffe. J'ai mis 32, ce qui permet de faire 50/50 entre l'influence de la température ambiante et extérieure. Meilleur réactivité pour amener la chaudière à la consigne, si il manque 0.5 ou 1 ou 2 degré. Sinon, en respectant surtout la consigne de chauffe, ben cela prendre du temps. Je préfère cela à augmenter artificiellement la consigne pour que cela aille plus vite.

Code B5 : Je ne me souviens plus ce que c'est :) , mais j'ai mis 6 sur les conseils d'un chauffagiste.

Après cela, j'ai constaté une meilleure réactivité pour rattraper la consigne à la hausse. Si c'est moi qui la change, ou si la temp Extérieure chute pas mal. Je sais que je consomme plus, puisque moins de temps pour atteindre la consigne, mais l'objectif, c'est aussi d'avoir un confort en ayant toujours la même temp ambiante ou à peu près, indépendamment de dehors.


Voilà, si vous avez des questions, n'hésitez pas.
C'est le code B2 mais marrant car c'est toi-même que je cite pour l'info ;-). Ca n'a pas fonctionné l'abaissement du code 90 à 5h ?
Je me souviens très bien de ce post :) Si cela fonctionne mais lorsque la chaudière démarre. La mon soucis c'est que j'ai 21° (consigne le soir jusque 23h) et ensuite la consigne passe à 20° jusque 18h30 le lendemain. Mais le matin, je l'ai vu descendre jusque 19,4 sans se déclencher. J'ai lu ton commentaire sur la courbe pour le déclenchement. Mais bizarrement, si je demande 21°, que j'entend se déclencher la chaudière et que je repasse 3 minutes après à 20°, elle m'emmène à 20°.

PhoBoS88
Timide
Messages : 34
Inscription : 13 nov. 2017, 21:01

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

Message par PhoBoS88 » 19 oct. 2019, 11:01

Bonjour à tous,,

Afin de changer de mode facilement, j'ai créé un mode jeedom avec "Chauffage" "Eco" et "Reception".
Ce mode fonctionne parfaitement, néanmoins j'ai également fait un scenario en cas de changement manuel sur le vitotrol pour le retour d'état.

J'ai régulièrement ce message en log :
Expression non valide [#3023# == "heating" ] trouvée dans le scénario : [Salle de Bain][Chaudière][Changement mode chaudière], résultat : "Message: Property "value" was not found. Code: 1" == "heating"

ou encore :
Expression non valide [#3023# == "comfort" ] trouvée dans le scénario : [Salle de Bain][Chaudière][Changement mode chaudière], résultat : "Message: Property "value" was not found. Code: 1" == "comfort"

Pourtant quand je teste les résultats du mode j'ai bien "heating""eco""comfort" et "standby" qui s'affiche.

Une idée ?

Merci d'avance

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

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

Message par thetrueavatar » 21 oct. 2019, 13:31

bonjour, si je comprend bien tu as régulièrement un appel au mode courant via l'api avec un test de la valeur pour afficher le mode courant dans jeedom.
L'erreur "Message: Property "value" was not found. Code: 1" est une exception quand le serveur viessmann renvoie une réponse vide au lieu de la valeur.
C'est une erreur sur laquelle je n'ai aucun contrôle car c'est le serveur Viessmann qui déconne.

Ce que tu peux faire c'est rajouté un "wrap" autour de l'appel à mon api pour faire un catch de l'exception mais bon ça demande un peu de dev.

Sinon tu peux rajouter dans les options de la commande >Gestion des valeurs>Valeurs interdites (séparées par ";")
"Message: Property "value" was not found. Code: 1".
Je pense qu'en faisant ça il ignorera la valeur qui pose problème.

PhoBoS88
Timide
Messages : 34
Inscription : 13 nov. 2017, 21:01

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

Message par PhoBoS88 » 21 oct. 2019, 21:19

Bonjout thetrueavatar,

Merci d'avoir pris le temps de me répondre.
Effectivement ton explication semble plausible, je n'ai pas le message d'erreur tous les jours.
J'avoue ne pas avoir tout compris, mais ta solution de gestion de valeur interdite m'ira très bien.

Merci encore pour l'excellent boulot que tu fournis, je fais de nombreux test avec les valeurs retournés par GetAvailableFeatures sans forcément réussir à grand chose , je ne maîtrise absolument pas le php !

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

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

Message par thetrueavatar » 21 oct. 2019, 21:33

Tu dois bien avoir une commande associée à ton widget mode. Si tu cliques sur la route dentée tu aurais une fenetre de config à remplir comme suit:
Capture d’écran de 2019-10-21 21-31-30.png
Capture d’écran de 2019-10-21 21-31-30.png (188.48 Kio) Consulté 623 fois
Faudrait ptet tester quelques variantes car je suis pas sûr qu'il faille les " ou pas mais au moins tu as l'idée

PhoBoS88
Timide
Messages : 34
Inscription : 13 nov. 2017, 21:01

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

Message par PhoBoS88 » 21 oct. 2019, 22:17

Oui merci,
Je te ferais un retour lorsque je serais sur que le message n’apparaît plus.
Pour le moment j'ai mis sans les "

Didier43
Timide
Messages : 167
Inscription : 13 sept. 2014, 17:38

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

Message par Didier43 » 22 oct. 2019, 17:21

Bonjour à tous.
J'utilise l'api sans pb avec des requêtes du fichiers exemple ( t° extérieure, intérieur), ça fonctionne nickels.

Toutefois je voudrai récupérer l'état de marche de ma chaudière ( PAC vitocal200). J'ai essayé avec "GetHeatingBurnerActive.php" ( en binaire) mais j'ai tjs comme résultat un 0.

J'ai donc fait un "GetAvailableFeatures.php" pour vérifier les paramètre, est effectivement la valeur "heating.Burner" n'existe pas. Par contre j'ai "heating.compressors".
J'ai donc essayé de changer la variable ( dans viessmannAPI.php)
"const HEATING_BURNER = "heating.burner";
par
const HEATING_BURNER = "heating.compressors";


Mais rien n'y fait....

Pouvez vous m’aiguiller pour récupérer cette valeur..

Merci pour cette API, et merci pour le boulot.

Mon GetAvailableFeatures.php :
heating.circuits.0.operating.programs.reduced heating.circuits.0.operating.programs.holiday heating.errors.history heating.circuits heating.circuits.0.frostprotection heating.circuits.0.operating.programs.standby heating.circuits.0.operating.programs.eco heating.circuits.0.operating.modes.forcedNormal heating.circuits.0.operating.modes.active heating.circuits.0.operating.modes.standby heating.compressor.statistics heating.device.time.offset heating.sensors.temperature.outside heating.circuits.0.heating.curve heating.circuits.0.operating.modes.forcedReduced heating.compressors.0.statistics heating.circuits.0.heating.schedule heating.circuits.0.sensors.temperature.supply heating.circuits.0.operating.programs.fixed heating.boiler.sensors.temperature.commonSupply heating.circuits.0.operating.modes.normalStandby heating.circuits.0.sensors.temperature.room heating.circuits.0 heating.circuits.0.operating.programs.active heating.errors.active heating.boiler.serial heating.configuration.cooling heating.compressors heating.configuration.multiFamilyHouse heating.controller.serial heating.compressors.0 heating.circuits.0.circulation.pump heating.compressor heating.circuits.0.operating.programs.normal heating.sensors.temperature.return heating.circuits.0.operating.modes.heating

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

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

Message par thetrueavatar » 22 oct. 2019, 19:12

Est-ce que tu arrives à récupérer l'information via ViCare ? Histoire que je sache si tu es censé avoir accès à l'info. Je n'ai pas la fonctionnalité et ça n'est pas dans les fichiers example de l'appli ViCare. Donc c'est difficile pour moi de savoir ce que ça retourne .
Peux-tu faire un appel comme suit et me fournir la réponse:

Code : Tout sélectionner

echo $viessmannApi->getRawJsonData("heating.compressors");

Didier43
Timide
Messages : 167
Inscription : 13 sept. 2014, 17:38

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

Message par Didier43 » 22 oct. 2019, 20:30

Oui j'ai bien cette info dans l'appli vicare, ainsi que le temps d'utilisation du compresseur.

Voila le résultat de la commande (j'ai modifié la série de chiffre par des 0, je ne sait pas si c’était lié à mon compte) :
Merci pour ton aide.


Résultat de la commande : {"links":[{"rel":["self"],"href":"https://api.viessmann-platform.io/opera ... rs"},{"rel":["up"],"href":"https://api.viessmann-platform.io/opera ... es"},{"rel":["http://schema.viessmann.com/link-relati ... ve-updates"],"href":"/operational-data/installations/202051/gateways/000000000000000/devices/0/features/heating.compressors"}],"class":["heating.compressors","feature"],"properties":{"enabled":{"value":["0"],"type":"array"}},"entities":[{"rel":["http://schema.viessmann.com/link-relati ... nts-unique"],"properties":{"apiVersion":1,"uri":"/v1/gateways/00000000000/devices/0/features/heating.compressors","gatewayId":"00000000000000","feature":"heating.compressors","timestamp":"2019-10-15T05:28:26.599Z","isEnabled":true,"isReady":true,"deviceId":"0"}},{"rel":["http://schema.viessmann.com/link-relati ... nts-unique"],"href":"https://api.viessmann-platform.io/opera ... .0"},{"rel":["http://schema.viessmann.com/link-relati ... nts-unique"],"properties":{"components":["0"]}}],"actions":[]}

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

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

Message par thetrueavatar » 22 oct. 2019, 21:34

bon il faut descendre encore d'un niveau car il y a un components. Le plus simple serait que tu m’envoies le résultat(par fichier attaché en mp) de

Code : Tout sélectionner

echo $viessmannApi->getFeatures(); 
Ca va tout me renvoyer mais au moins je devrais pas chercher à tâton. Si tu veux, par sécurité, tu peux remplacer les valeurs avant et après "gateways" dans les url de type /operational-data/installations/XXXXXXXX/gateways/XXXXX car elles sont spécifiques à ton installation même si en pratique sans tes crédentials je ne peux rien enfaire.

Didier43
Timide
Messages : 167
Inscription : 13 sept. 2014, 17:38

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

Message par Didier43 » 22 oct. 2019, 22:03

Je t'ai envoyer un mp, si la pj n'est pas passé dit le moi, je te renverrai un lien.

Didier43
Timide
Messages : 167
Inscription : 13 sept. 2014, 17:38

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

Message par Didier43 » 22 oct. 2019, 22:08

Et si besoin, une capture de l'app vicare :
Pièces jointes
Screenshot_20191022-220613_ViCare.jpg
Screenshot_20191022-220613_ViCare.jpg (39.53 Kio) Consulté 566 fois

PhoBoS88
Timide
Messages : 34
Inscription : 13 nov. 2017, 21:01

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

Message par PhoBoS88 » 22 oct. 2019, 22:13

Bonjour,

Je reviens à la charge.

Pour le moment pas d'erreur avec la valeur interdite .
Cependant je me suis rendu compte que ma pente et parrelele redescendait tout seul.
Je m'explique, ma valeur initial était de 1.1 pour la pente et -5 pour la //.
Lorsque j'augmente directement sur la chaudière, le script récupère bien 1.4 et 0. (valeurs enregistrés pendant ma modification).
Je regarde 1H aprés, les valeurs sont repassés a 1.1 et -5.

A ton avis, c'est ma chaudière qui reset les valeurs par défaut ou le script peu y être pour quelques chose ?
Du coup je suis allé re odifier sur la chaudière, je verrais ce que ça donne.

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

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

Message par thetrueavatar » 22 oct. 2019, 22:35

Didier43 a écrit :
22 oct. 2019, 22:03
Je t'ai envoyer un mp, si la pj n'est pas passé dit le moi, je te renverrai un lien.
J'ai bien reçu. Je viens d'implémenter une méthode getHeatingCompressorsStatistics() qui récupère les statistiques de base et renvoie dans ton cas:

Code : Tout sélectionner

{
  "starts": {
    "value": 64,
    "type": "number"
  },
  "hours": {
    "value": 44.6,
    "type": "number"
  },
  "hoursLoadClassOne": {
    "value": 21,
    "type": "number"
  },
  "hoursLoadClassTwo": {
    "value": 13,
    "type": "number"
  },
  "hoursLoadClassThree": {
    "value": 4,
    "type": "number"
  },
  "hoursLoadClassFour": {
    "value": 0,
    "type": "number"
  },
  "hoursLoadClassFive": {
    "value": 0,
    "type": "number"
  }
}
Il y a encore d'autres features que je pourrais implémenter sur base du fichier que tu m'as fourni. Je ferai ça à mon aise :p
EDIT: j'ai rajouté la méthode isHeatingCompressorsActive() pour voir l'activation du compressors ou pas. Faut que je vois quelle feature implèmente la température de retour qui est affichée.
Dernière édition par thetrueavatar le 22 oct. 2019, 22:58, édité 1 fois.

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

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

Message par thetrueavatar » 22 oct. 2019, 22:36

PhoBoS88 a écrit :
22 oct. 2019, 22:13
Bonjour,

Je reviens à la charge.

Pour le moment pas d'erreur avec la valeur interdite .
Cependant je me suis rendu compte que ma pente et parrelele redescendait tout seul.
Je m'explique, ma valeur initial était de 1.1 pour la pente et -5 pour la //.
Lorsque j'augmente directement sur la chaudière, le script récupère bien 1.4 et 0. (valeurs enregistrés pendant ma modification).
Je regarde 1H aprés, les valeurs sont repassés a 1.1 et -5.

A ton avis, c'est ma chaudière qui reset les valeurs par défaut ou le script peu y être pour quelques chose ?
Du coup je suis allé re odifier sur la chaudière, je verrais ce que ça donne.
Ca semble plus être un problème de config du plugin script. J'avais ça aussi à un moment. il modifiait la valeur dans le widget mais derrière n'appelait pas la methode pour mettre à jour la valeur sur la chaudière. Du coup au refresh suivant ça revenait à l'ancienne valeur.

Didier43
Timide
Messages : 167
Inscription : 13 sept. 2014, 17:38

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

Message par Didier43 » 23 oct. 2019, 09:00

Salut, j'ai mis à jour le git et je viens de faire un essai sur "isHeatingCompressorsActive();" avec un fichier php de ce type :
<?php
include __DIR__.'/bootstrap.php';
echo (int)$viessmannApi->isHeatingCompressorsActive();
Mais j'ai toujours un 0 renvoyé , que le compresseur tourne ou pas ( que je soit en binaire, numérique ou autre).
J'ai loupé un truc ?

Edit : et voila le résultat de la commande statistics :
<?php
include __DIR__ . '/bootstrap.php';
echo $viessmannApi->getHeatingCompressorsStatistics()("hours");
echo $viessmannApi->getHeatingCompressorsStatistics()("starts");


Résultat de la commande : Message: Call to undefined function {"starts":{"value":68,"type":"number"},"hours":{"value":47.2,"type":"number"},"hoursLoadClassOne":{"value":23,"type":"number"},"hoursLoadClassTwo":{"value":13,"type":"number"},"hoursLoadClassThree":{"value":4,"type":"number"},"hoursLoadClassFour":{"value":0,"type":"number"},"hoursLoadClassFive":{"value":0,"type":"number"}}() Code: 0

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

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

Message par thetrueavatar » 23 oct. 2019, 10:39

Pour le premier je vais regarder, par contre, pour le 2ème ton appel n'est pas bon. Tu peux pas juste mettre ("hours") pour accéder à la valeur hours d'un json et donc il se plaint de ça...

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

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

Message par thetrueavatar » 23 oct. 2019, 10:54

Bizarre j'ai test chez moi et ça "fonctionne". Le problème est que je sais pas ce qui est censé contenir l'info de l'activation du compresseur. J'ai supposé que c'était:

Code : Tout sélectionner

"class": [
    "heating.compressors",
    "feature"
  ],
  "properties": {
    "enabled": {
      "value": [
        "1"
      ],
      "type": "array"
    }
  }
Ca n'est peut-être pas le cas mais du coup faut que je vois.
Sinon j'ai rajouté plein de nouvelles méthodes sur base de ton JSON:
- isInFixedPrograms: return true si on est en program fixed
- getHeatingTemperatureReturn: la température de retour(comme montré sur ton image)
- getHeatingConfigurationCoolingMode: le mode activé pour ton mode airco(via pompe à chaleur ?) : normal/natural/natural-mixed
- setHeatingConfigurationCoolingMode: le changement de mode. Celui là j'ai pas pu tester même en local.

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

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

Message par thetrueavatar » 23 oct. 2019, 11:38

Pour ton problème concernant la lecture du json voici un exemple de code pour manipuler un json en php. Je suis pas expert php et donc y a ptet moyen de faire ça mieux ceci dit:

Code : Tout sélectionner

$heatingCompressorStatistics=json_decode($this->viessmannApi->getHeatingCompressorsStatistics(),true);
echo $heatingCompressorStatistics["starts"]["value"]

Didier43
Timide
Messages : 167
Inscription : 13 sept. 2014, 17:38

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

Message par Didier43 » 23 oct. 2019, 14:33

Je viens de tester la methode "getHeatingTemperatureReturn", impec ça fonctionne.

Par contre le "isHeatingCompressorsActive" j'ai bien essayé de bidouillé mais n'arrive qu'a sortir un 0... :cry:

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

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