Pilotage Chaudiere Okofen

Bonjour à tous,

J’ai une chaudière Oekofen (ou Okofen, Ökofen), avec ecran tactile, connectée, avec json activable.
l’appli MyPelletronic fonctionne depuis l’extérieure, j’ai aussi installé le skills Okofen pour Alexa, donc jusqu’ici, ça va :slight_smile:

Mais je souhaite à minima afficher la température du thermostat ainsi que la température de consigne, et le mode actif dans Jeedom.
J’ai trouvé qq infos sur le web (par exemple https://github.com/thannaske/oekofen-json-documentation).
Ce qui m’a permis, une fois jspon activé sur la chaudière, d’obtenir les infos du circuit de chauffage par URL suivante dans un navigateur web : 192.168.1.105:4321/monmotdepasse/hk1, où l’IP est l’IP locale de ma chaudière, et hk1 le circuit de chauffage nr 1 (je n’en n’ai qu’un).

J’obtiens le résultat suivant :

{
   "hk1":{
      "L_roomtemp_act":"233",
      "L_roomtemp_set":"235",
      "L_flowtemp_act":"525",
      "L_flowtemp_set":"534",
      "L_state":"32",
      "L_statetext":"Mode confort actif",
      "L_pump":"true",
      "mode_auto":"1",
      "time_prg":"0",
      "temp_setback":"195",
      "temp_heat":"235",
      "temp_vacation":"150",
      "name":"Chauffage",
      "oekomode":"0"
   }
}

Du coup naivement, je me suis dit que je pourrais utiliser le plugin script pour récupérer par exemple la valeur de la variable « L_roomtemp_act », mais je ne sais pas comment utiliser le plugin… que mettre en ‹ requête › ?

Bref, y-a-t-il une bonne âme pour me donner un exemple ?

Je pense que ça pourrait m’aider à démarrer.
Ensuite je me propose de poster une mode d’emploi complet avec screen shot de la chaudière pour aider d’autre bras cassés comme moi :wink:

Merci

3 « J'aime »

Bonsoir @zeJMi

En requête, vous mettez hk1>L_statetext pour récupérer le mode actif.


hk1>L_roomtemp_act pour la temperature actuelle de la pièce
de type numérique pour cette commande avec dans sa configuration une division par 10 pour repasser en degré:
image

Si vous voulez plus d’explications, il faudrait que vous colliez le json de votre post dans une balise image pour rendre lisible.

3 « J'aime »

Bonsoir @jpty,

Merci beaucoup ! je peux effectivement récupérer ce que je souhaite. C’est super :slight_smile:
Je vais essayer de voir comment pouvoir envoyer de nouvelles valeurs (les variables L sont pour lecture, les autres peuvent être modifiées il m semble).
Du coup avec le plugin script et vos explications, je vais pouvoir atteindre mon objectif.
Merci encore.

Dès que j’ai qqchose d’abouti je ferai un post qui résumera les manips.

Bonne soirée !

1 « J'aime »

Je pilote maintenant ma chaudière Okofen par JSON avec l’aide des plugins script, virtuel et un scénario.
Voici ce que j’ai en place. Surement perfectible, mais en tout cas fonctionnel.

Au préalable sur la chaudière, il faut activer JSON : menu principal->généralités->(scroll down)->IP config->(scroll down)->JSON → mettre en mode ‹ Marche ›. Noter le port et le mot de passe.

Pour tester :
http://IP_chaudiere:port/mot_de_passe/all : donne les formats
http://IP_chaudiere:port/mot_de_passe/all? donne les valeurs
http://IP_chaudiere:port/mot_de_passe/hk1 pour le circuit chauffage nr 1
*Pour tester un changement de consigne à 24 degrés : *
http://IP_chaudiere:port/mot_de_passe/hk1_temp_heat=240

Ensuite dans Jeedom :

  1. Un premier équipement avec le plugin script pour récupérer les infos de la chaudière :

Ce qui sera utile pour la suite est :

  • le mode (de 0 à 3 = 0|Arrêt;1|Auto;2|Confort;3|Réduit),
  • la consigne
  • et la valeur du thermostat.

Ne pas oublier de diviser les valeurs par 10 (merci @jpty)

image

  1. Un deuxième équipement basé sur le plugin script qui servira à piloter la chaudière :

Je ne souhaite que mettre à jour le thermostat avec une nouvelle consigne, et pouvoir changer de mode.

  1. Ensuite on crée un Virtuel qui récupère les valeur du premier équipement précédemment créé, et qui enverra par scénario les nouvelles valeurs à la chaudière, avec un deuxième équipement script.

on utilise

  • une liste pour les modes
  • un curseur limité pour la nouvelle consigne (je ne sais pas gérer les décimales)
  1. Enfin le scénario assez simple pour rafraichir le deuxième équipement script (basé sur http)

Les déclencheurs : changement de mode et changement de consigne

Action : rafraichir les requêtes http du virtuel->cela met à jour les valeurs de la chaudière.

Il reste qqs soucis :

  • par exemple changer le mode envoi la consigne en même temps.
  • le rafraichissement peut aussi poser soucis,
  • et je ne peux pas envoyer des valeur décimales en thermostat : par exemple 23.5 degrés, seulement 23 ou 24…

Mais c’est un premier jet qui j’espère pourra aider ceux qui comme moi débute dans cet univers Jeedom :slight_smile:

Bonne soirée !

4 « J'aime »

Merci pour ce sujet.

Je cherchait justement a piloté ma chaudière.

Par contre il faut mettre >val après les commande: mode_auto, L_roomtemp_act et L_roomtemp_set.

J’ai L_roomtemp_act qui reste toujours a 0. Il correspond a quoi?

Bonsoir,

hk1>L_roomtemp_act pour la temperature mesurée actuelle de la pièce, par le thermostat d’ambiance.

Le variables L sont en lecture, les autres sont en écriture.

JM

Salut
je suis sur raspi 4 ssd jeedom 4

j’essaie de reproduire ton tuto, mais je coince sur l’étape 3 sur le virtuel et aussi sur les infos et commande que tu récupère sur le json.
Peux-tu m’éclairer ?

Salut,

Pas de soucis.
Ma logique est issue de tâtonnements… donc c’est surement perfectible.

L’idée est la suivante :

  • dans mon salon j’ai un thermostat : je le crée donc en Virtuel. Il récupère des variables et peut en mettre à jour. Il affiche le tout
  • pour récupérer les données de la chaudière : un script (des infos json) : cela récup les infos qui servent au thermostat. Je le CRON toutes les 30 minutes : ça me donne comme ça une courbe de température du ‹ vrai › thermostat. C’est comme ça que j’ai vu qu’en passage en heure creuse je n’atteint jamais le point le plus bas de température avant le redémarrage en heure pleine
  • pour envoyer des données à la chaudière : un autre script : le thermostat MAJ des variables qui sont au final utilisées en refresh par ce script par le biais d’un scénario.

ça donne grosso modo :
script lecture infos chaudière->thermostat->scenario->script maj chaudière

Pour le json : soit des infos json pour lire des données, soit des http pour poster des updates à la chaudière.

Que veux tu savoir plus spécifiquement ?

JM

@zeJMi merci pour ton partage qui m’a permis de connecter ma chaudière avec mon système.

Je suis en Smart Xs avec Panneau Solaire. Du coup J’ai reproduit ton mode opératoire pour gérer la partie eau chaude et panneau solaire de ma chaudière sur le même principe. De ce fait je sais forcer l’eau chaude depuis jeedom et connaitre suivre la T° de l’eau en temps quasi réél. Pareil pour les panneaux solaires, je peux voir la T° du glycol en circulation et de l’accu bas qui gére cette partie de la chaudière.
Infos pour circuit eau chaude

"hk1":{
      "hk_info":"heating circuit data",
      "L_roomtemp_act":{"val":"0", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
      "L_roomtemp_set":{"val":"80", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
      "L_flowtemp_act":{"val":"299", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
      "L_flowtemp_set":{"val":"80", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
      "L_state":{"val":"8", "factor":"1"},
      "L_statetext":"Mode arr?t",
      "L_pump":{"val":"false", "format":"0:Arr?t|1:Marche"},
      "mode_auto":{"val":"0", "format":"0:Arr?t|1:Auto|2:Confort|3:R?duit"},
      "time_prg":{"val":"0", "format":"0:Prog. 1|1:Prog. 2"},
      "temp_setback":{"val":"185", "unit":"?C", "factor":"0.1", "min":"100.0", "max":"400.0"},
      "temp_heat":{"val":"205", "unit":"?C", "factor":"0.1", "min":"100.0", "max":"400.0"},
      "temp_vacation":{"val":"170", "unit":"?C", "factor":"0.1", "min":"100.0", "max":"400.0"},
      "name":{"val":"", "length":"20"},
      "oekomode":{"val":"0", "format":"0:Arr?t|1:Confort|2:Interm?diaire|3:Ecologique"}
   }

Infos pour circuit solaire

"sk1":{
      "sk_info":"solar circuit data",
      "L_koll_temp":{"val":"506", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
      "L_spu":{"val":"494", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
      "L_pump":{"val":"19", "unit":"%", "factor":"1", "min":"0.0", "max":"100.0"},
      "L_state":{"val":"0", "factor":"1"},
      "mode":{"val":"1", "format":"0:Arr?t|1:Marche"},
      "cooling":{"val":"0", "format":"0:Arr?t|1:Ecologique|2:Marche"},
      "spu_max":{"val":"850", "unit":"?C", "factor":"0.1", "min":"200.0", "max":"900.0"},
      "name":{"val":"", "length":"20"}
   }

Gadget en plus, je récupère la T° extérieur de la sond de la chaudière qui est aussi un bon indicateur. (L_Ambiant)

"system":{
      "system_info":"system global variables",
      "L_ambient":{"val":"205", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
      "L_errors":{"val":"0", "factor":"1", "min":"-32768", "max":"32767"},
      "L_usb_stick":{"val":"false", "format":"0:Arr?t|1:Marche"}
   }

Attention faire des script séparées pour chaque module (Chauffage, eau chaude; T° ext, panneau solaire) de la chaudière avec une requête > 2s afin d’éviter de vous faire insulter.
Voilà la tête de mon interface, à savoir que je pilote aussi mes vannes de chauffages avec.

Du coup je gère, avec un petit script rafraichi toutes les 5 minutes des informations.

Je suis preneur des remarques et conseils constructifs pour améliorer mon système.
Je peux aider aussi même si je reste assez basic dans ce que je fais.

2 « J'aime »

Bonjour @zeJMi ,

Merci pour le petit tuto pour intégré la chaudière okofen dans jeedom.

J’ai cependant un problème car je n’arrive a récupérer seulement les info dans hk1, j’ai essayer toutes les autres valeurs pour circuit 2 ( hk2) ballon tampon, ballon solaire,etc… et rien ne fonctionne.
Le message d’erreur est Json invalide ou non décodable.

Quelqu’un a des idées d’où cela peut venir ?

Merci

Merci pour les explications et tutos

Hello @zeJMi & @jpty
merci pour ces infos essentielles à ceux qui se chauffent avec Ökofen.

Auriez vous un conseil à me souffler car je galère pour parser les valeurs dans le json de ma pellematic. J’ai bien vu lu et relu le tuto mais quelque chose ne passe pas. Un peu comme si le JSON provenant de la chaudière avait un problème de syntaxe :-/

Le voici (l’url passe correctement dans un browser mais pas dans la requête du plugin SCRIPT):

{
 "hk1":{
  "L_roomtemp_act":"160", 
  "L_roomtemp_set":"80", 
  "L_flowtemp_act":"243", 
  "L_flowtemp_set":"80", 
  "L_comfort":"0", 
  "L_state":"8", 
  "L_statetext":"Mode arrêt",
  "L_pump":"false", 
  "remote_override":"0", 
  "mode_auto":"1", 
  "time_prg":"0", 
  "temp_setback":"180", 
  "temp_heat":"200", 
  "temp_vacation":"150", 
  "name":"", 
  "oekomode":"0", 
  "autocomfort":"-1", 
  "autocomfort_sunset":"0", 
  "autocomfort_sunrise":"0"
 }
}

A présent voici mes requêtes (mot de passe substitué pour ce screenshot) :

Merci d’avance pour votre bienveillance.
Mike

Hello, je ne sais pas si tu as eu une réponse en MP, mais tout semble correct sur ta page. La seule différence que je vois avec la mienne, c’est que j’ai écris mon MDP en majuscule dans les paramètres des requêtes.

J’en profite également pour soliciter de l’aide car de temps en temps (quand j’ai une coupure réseau notamment), j’ai l’impression que ma chaudière bloque le port utilisé pour le JSON et le plugin script me renvoie cette erreur :

404 Not Found
No context found for request
[2023-01-18 12:05:07]ERROR : Erreur pour [Chauffage][Valeurs Chaudiere Okofen Script][Temp Choisie] : Json invalide ou non décodable : 
404 Not Found
No context found for request
[2023-01-18 12:05:08]ERROR : Erreur pour [Chauffage][Valeurs Chaudiere Okofen Script][Programme horaire en cours] : Json invalide ou non décodable : 
404 Not Found
No context found for request
[2023-01-18 12:05:18]ERROR : Erreur pour [Chauffage][Valeurs Chaudiere Okofen Script][Etat] : Json invalide ou non décodable : 
404 Not Found
No context found for request
[2023-01-18 12:05:18]ERROR : Erreur pour [Chauffage][Valeurs Chaudiere Okofen Script][EtatTexte] : Json invalide ou non décodable : 
404 Not Found
No context found for request
[2023-01-18 12:05:18]ERROR : Erreur pour [Chauffage][Valeurs Chaudiere Okofen Script][Temp Piece] : Json invalide ou non décodable : 

Quelqu’un a déjà rencontré ce soucis ?

ça finit par refonctionner tout seul au bout de plusieurs heures, ou si je change le port sur l’interface Okofen puis que je modifie le port dans mon script (ce qui est pénible).

Merci d’avance pour ceux qui me liront.

Bonjour Stomm,

désolé pour ma réponse tardive. Je n’ai pas rencontré ce type d’erreur.
As tu investigué côté routeur ? Cela ressemble plus à un souci local plutôt qu’un souci sur ta chaudière.

De mon côté, c’est bon j’ai réussi à me dépanner, j’ai changé la requête.
Mike

1 « J'aime »

Bonjour,
J’ai créé 3 équipements avec le plugin Script et dès que je mets des valeurs dans les champs j’ai des erreurs indiquant d’attendre 2500 ms :
Json invalide ou non décodable : Wait at least 2500ms during requests.

Comment lancer les actualisations avec un décalage de plus de 2,5 s ?

Bonjour,
j’ai mis en place un contrôle de mon installation ÖkoFEN :

après avoir testé le contrôle de ma chaudière via le plugin Modbus je me suis rabattu sur le JSON car il permet de moins solliciter le contrôleur de la chaudière et Jeedom pour la lecture des informations (1 appel en JSON permet de récupérer l’intégralité des informations de la chaudière plutôt que de faire un appel pour chaque paramètre en ModBus)

l’écriture se fait aussi via JSON.

Avant toute chose, il faut relever les paramètre de connexion à la chaudière et activer le mode JSON :
Menu Principal de la chaudière → Généralités → IP Config
relever l’adresse IP de la chaudière : AAA:BBB:CCC:DDD
JSON Mode = Marche
JSON Mot de passe = xxxxx
JSON Port = PPPP

lister les informations disponibles sur ton installation via le navigateur internet :
http://AAA.BBB.CCC.DDD:PPPP/XXXX/all

http://AAA.BBB.CCC.DDD:PPPP/XXXX/all? renvoi les paramètres avec leur description

un fichier JSON est retourné avec tous les paramètres :
{
« system »:{
« L_ambient »:160,
« L_errors »:0,
« L_usb_stick »:0,
« L_existing_boiler »:0,
« mode »:1
},

Les paramètres commençant par « L_ » sont uniquement consultables, les autres sont disponibles en écriture.

liste des registres disponibles :

  • system : paramètres généraux
  • weather : infos climatiques actuelles
  • forecast : prévisions météo
  • hkx : circuit de chauffage n°x (1 à 6)
  • pux : ballon tampon n°x (1 à 3)
  • wwx : circuit de chauffage n°x (1 à 3)
  • skx : récepteur circuit solaire n°x (1 à 6) 1&2 pour les champ de panneaux n°1, 3&4 pour les panneaux 2, …
  • sex : Compteur d’énergie solaire du champ de panneaux n°x
  • pex : infos chaudière n°x (1 à 4)
  • error : erreurs en cours (1 à 5)

Il n’apparaîtra que les paramètres des équipements disponibles sur l’installation.

La lecture se fait via un scénario :

Les valeurs des paramètres décodés sont renvoyés sur des virtuels :

les valeurs de température renvoyées sont en 10e de degrés, il faudra les diviser par 10 dans le virtuel :

l’écriture des consignes se fait via un script :
On selectionne par exemple le mode d’uncircuit de chauffage via un menu déroulant d’un virtuel :

puis on l’envoie à la chaudière via un script :

Les valeurs de consigne de température doivent être envoyée en 10iemes de degrés (Ex 20,5°C → 205) à la chaudière.

Réduire les écritures au strict nécessaire pour ne pas altérer la mémoire du contrôleur de la chaudière (nombre d’écritures totales limités, les écritures inutiles et très fréquentes pourraient poser problème à long terme).

J’espère que ça pourra vous aider.

Je récupère les infos via un script rafraichi toutes les 5 minutes sans bloc code dans un scénario et ça fonctionne très bien depuis un an maintenant

Chaque équipement Script est bien vu par la chaudière comme un seul appel ; par contre si on veut rafraichir plusieurs équipements, il faut bien le faire à plus de 2500 ms d’écart.

Pour modifier une valeur, j’utilise plutôt une commande info ce qui me permet d’avoir un retour d’état.