Piloter un chauffage Wiser de Schneider

Bonjour à tous,

Nouvel utilisateur de Jeedom que je découvre, j’ai tout de suite voulu piloter mon système de contrôle de chauffage Wiser de Schneider.

wiser2

Ce système sorti il y a quelques années est basé sur du très bon matériel en zigbee et avec des actionneurs de chauffage électrique et des thermostats avec affichage et boutons de réglage de la température.
On peut régler et programmer depuis une application ou directement dans la pièce.

Tout cela est très bien sauf que Schneider dans un élan de délire destructeur :face_with_symbols_over_mouth::rage: a décidé de saboter son produit en publiant une mise à jour qui a rendu le système instable et sujet à des ralentissements incessants. Il faut parfois de longues minutes pour changer une température.

Bref pas la joie pour ceux qui ont investi dans ce matériel certes de grande qualité mais tout de même cher.

Problème, le système est fermé et non documenté …:grimacing::roll_eyes:

J’ai été grandement aidé par une personne ayant publié des scripts DomoticZ

https://easydomoticz.com/forum/viewtopic.php?f=21&t=6929&sid=62797a2cfa2c9baef0c98208a4659daf

Je ne sais pas où il a eu les informations pour baser son script mais sans cela, c’était peine perdue. Merci à lui. :heart_eyes:

Voici donc un petit guide tiré de mes recherches pour piloter l’ensemble depuis Jeedom.

Je débute et je ne connais rien en script, Json et autres, donc c’est un système un peu rustique mais il fonctionne. Je suis preneur de toute idée d’amélioration.

La box de wiser peut communiquer en local en JSON avec le compte administrateur : Login admin et mot de passe : admin

On peut lui envoyer des commandes en http pour récupérer des infos JSON et on peut lui pousser des ordres JSON

Il y a les requêtes en http qui renvoient des infos en JSON :
Remplacer l’adresse ip par celle de la box wiser

http://admin:admin@192.168.1.XX/rpc/hvac/get_all_loc_temp -> Liste des équipements de température

http://admin:admin@192.168.1.XX /rpc/homedevice/device_list -> Lecture des de tous les équipements

http://admin:admin@192.168.1.XX /rpc/loadmanagement/get_appliances -> Liste des équipements Interrupteur

http://admin:admin@192.168.1.XX /rpc/mode/get_home_mode ->Lecture du mode de chauffe en cours

En lançant la première requête /rpc/hvac/get_all_loc_temp sous Firefox (qui lit le json) on obtient une liste des équipements de chauffage et leur statut.

On a donc une arborescence par pièce avec pour chacune :

  • Son numéro
  • Son id et son nom
  • La température en cours
  • La température de consigne

Ceci nous permet de connaître les numéros et identifiants de pièce et nous permettra de récupérer l’info sur la température de chaque pièce et la consigne de chauffage en cours

Et ensuite on peut envoyer en JSON des commandes pour changer la température de consigne :

La syntaxe est celle-ci avec une commande Curl:

/usr/bin/curl -H “Content-Type: application/json” -X POST -d ‘{“targetTemp”:[{“locationId”:“Salon”,“targetValue”:21.00}]}’ http://admin:admin@192.168.1.17/rpc/hvac/set_loc_temp

Les valeurs à ajuster sont la location Id qui indique la pièce et targetValue qui est la température que l’on souhaite.

Ensuite j’ai implémenté cela dans Jeedom à l’aide du plugin SCRIPT pour lire les infos de la box et SSH COMMANDER pour donner des ordres de température.

J’ai donc créé deux objets Script :

Le premier lit et affiche les températures

Il faut créer une commande par pièce avec Script configuré en JSON / Info / numérique

Dans la zone option on indique la requete http : http://192.168.1.17/rpc/hvac/get_all_loc_temp

On indique également le mot de passe

Dans la zone Requete on précise le numéro de la pièce et l’info que l’on veut curentValue: locationTempDetails>1>currentValue

Le numéro changera pour chaque pièce

script1

Le second lit et affiche les consignes en cours :

On crée à nouveau une commande par pièce avec Script configuré en JSON / Info / numérique

Dans la zone option on indique la requete http : http://192.168.1.17/rpc/hvac/get_all_loc_temp

On indique également le mot de passe

Dans la zone Requete on précise le numéro de la pièce et l’info que l’on veut targetValue: locationTempDetails>2>targetValue

Le numéro changera pour chaque pièce

script2

Pour l’écriture consigne de la température que l’on souhaite, ne sachant pas comment passer des paramètres en JSON, je suis parti sur le lancement direct de requêtes CURL en utilisant le plugin SSH Commander

C’est un peu basique mais je suis preneur de suggestions.

Il y a donc un objet par pièce et pour chaque pièce une commande par niveau de température.

ssh0

Syntaxe de la commande :
/usr/bin/curl -H “Content-Type: application/json” -X POST -d ‘{“targetTemp”:[{“locationId”:“Salon”,“targetValue”:21.00}]}’ http://admin:admin@192.168.1.17/rpc/hvac/set_loc_temp

Dans chaque commande curl il faut juste modifier le nom de la pièce et la température souhaitée et on donne a chaque commande le nom de la température souhaitée

ssh

Voila, on peut ensuite sur son dashboard voir :

  • Les températures en cours
  • Les consignes en cours
  • Pour chaque pièce on dispose de la possibilité de changer la température de consigne.

temp

consigne

set

On peut ensuite aisément programmer le chauffage avec le plugin agenda et des scénarios. :smiley:

Voila si vous avez des questions ou des suggestions d’amélioration, n’hésitez pas. :wink:

2 J'aimes

Hello,

Interessant par contre je n’arrive pas à faire la dernière partie sur les commandes SSH.
Comme-ci tu as un print screen de ta première page je dois avoir fait une erreur.

Voici le contenu d’une commande SSH :

/usr/bin/curl -H “Content-Type: application/json” -X POST -d ‘{“targetTemp”:[{“locationId”:“Salon”,“targetValue”:22.50}]}’ http://admin:admin@192.168.1.17/rpc/hvac/set_loc_temp

Il faut bien indiquer la pièce et la valeur cible voulue.

/usr/bin/curl -H “Content-Type: application/json” -X POST -d ‘{“targetTemp”:[{“locationId”:“Salon”,“targetValue”:22.50}]}’ http://admin:admin@192.168.1.17/rpc/hvac/set_loc_temp

Tout est à mettre sur une seule ligne.

Si le Jeedom est sur Raspberry, on peut tester les commandes curl directement depuis une fenêtre terminal. Cela permet de voir si la commande passe et modifie la température de consigne

Ensuite il faut bien sur paramétrer le module SSH pour qu’il puisse se connecter au pi

Adresse ip du Raspberry
Port SSH 22
Login et mot de passe du Raspberry

Hello,
en fait je suis en docker sur NAS synology, et le problème et sur la connexion SSH, je ne vois pas quel mot de pass login mettre jeedom ou root

J’avoue que je ne connais pas ce type d’installation. Le NAS fait office de serveur Jeedom ?

Ce n’est certainement pas le mot de passe de jeedom, Plutot le mot de passe du système hote.

La commande SSH envoie une commande de terminal Curl il faut donc aussi que Curl soit installé, sur la machine hote.

Y a t il un terminal sur lequel tu puisses tester une commande curl?

Oui j’ai un terminal sur le system

Alors essayes deja de lancer une commande curl sur le terminal

Bonjour,
tout d’abord un grand merci a toi pour l 'astuce. Je creuse en ce moment un peu le sujet.
Pour info, avec la zigate, le plug in domoticz (désolé pas jeedom) semble gérer la solution wiser en « natif », cad directement en zigbee. J 'ai essayé sur un thermostat, ca semble fonctionner, je ferai de plus amples tests plus tard, mais je préférai une solution zigbee sans la centrale (croix blanche) directement sur jeedom…
Je ne m’y connais pas assez pour transposer cela sur un plug in comme Abeille… mais peut etre mon message sera entendu ?

Sinon mes deux cents pour compléter ta solution (et encore merci pour la base que tu as donné !)
=> Perso je voulais pas utiliser SSH commander pour des tests car payant…
Du coup j 'ai utilisé le plug in script pour envoyer des ordres de consignes:

Un simple script en php permet de definir la valeur de consigne, pas besoin de SSH Commander :

<?php shell_exec('curl -H "Content-Type: application/json" -X POST -d \'{"targetTemp":[{"locationId":"Salon","targetValue":7}]}\' http://admin:XXX@192.168.1.74/rpc/hvac/set_loc_temp'); ?>

script_jeedom
Bon j’ai plus qu’ a regarder la partie « variable » pour récuper une valeur saisie par l’interface et m’éviter un script par température et pieces (car en gros chez moi je fais en fonction des moments 10°C, 15°C, 17°C, 19°C, 21°C : soit 5 scripts par pieces, ca me ferait 20 scripts différents… ca fait bcp).

Mais en tous cas, grace a toi, je vais peut etre enfin pouvoir programmer mon wiser de manière plus souple que l’interface APP de schneider qui est insuffisante.

En attendant une solution « intégrée » via zigate qui permettra d’être autonome et d’utiliser le plug in thermostat, mais déjà la partie « planning » c est une grande avancée.
Encore merci a toi.

Update 20/09: Pour info, je peux controler maintenant la consigne via un simple script (sans SSH commander) pour mettre a jour la température de consigne. Je l’ai fait en PHP. voici le contenu du script:
Set_SalonN.php

<?php 
  
$temp2= $argv[1];

shell_exec('curl -H "Content-Type: application/json" -X POST -d \'{"targetTemp":[{"locationId":"Salon","targetValue":'.$temp2.'}]}\' http://admin:XXXX@192.168.1.74/rpc/hvac/set_loc_temp');

?>

Ensuite, il n’y a plus qu’à appeler le script avec le paramètre adéquat, par exemple à partir d un slider pour mise à jour de la température de consigne manuellement:
script_jeedom2.jpg

Merci pour le complément. :smiley:
Je vais tester pour essayer de mettre un slider pour fixer les températures. Ce sera plus élégant.

C’est vrai que ce serait mieux d’attaquer directement les thermostats et les actionneurs en Zigbee pour pouvoir éliminer la box blanche.

De mon côté ça marche bien. Mis en place aussi avec Google agenda pour changer la consigne en fonction d une heure.
Par contre sur la récupération des températures j ai l impression qu il la recupere pas automatiquement / régulièrement. J ai pourtant planifier le cron toutes les 10mn mais la courbe évolue dans le temps quand elle veut. C est assez bizarre.
Après c est pas grave c est de l info.
En tous cas merci pour la base qui m a motivé car planifier les horaires toutes les semaines (toutes les semaines mon planning change…vive le covid une semaine sur deux a la maison…) Ca allait être l enfer cet hiver.
Ah pour info la centrale accepte a nouveau les navigateurs web (ils avaient arrêtés on était obligés de passer par l appli…) J ai pas vu de comm mais en voulant tester une requête je me suis trompé et me suis aperçu que la fonctionnalité fonctionnait a nouveau.

Pour info les sliders étaient trop pénibles a gérer a partir du téléphone. J ai finalement opté pour une liste. Je galère juste pour mettre la liste par défaut sur la consigne du moment sans le faire en PHP et en important le core jeedom (si qqun sait comment faire pour mettre la valeur par défaut a une liste dans jeedom suis preneur)
Bref ça marche pas mal mais mon seul hic est que le thermostat du coup est géré par Schneider donc je bénéficie plus de l adaptation par courbe de chauffe.
Vais essayer avec le plugin thermostat de jeedom.
Ça et afficher le plug in agenda en design j ai pas trouvé comment faire (du coup je sais pas quelle est la prochaine heure de changement a moins de prendre un pc et d aller dans le plugin agenda…c est lourd)

Bonjour merci pour ce tuto très intéressant j’aurai une question concernant les prise de la même gamme wiser et savoir si quelqu’un sait comment on fait pour les intégrer dans jeedom avec le script comme a fait wolas pour les thermostats merci.

Quelque chose du genre
rpc/loadmanagement/set_appliance_state | Wiser <- Commande d’un équipement de type Interrupteur
Trouvé sur un forum domoticz. Faut chercher appliance Schneider Json et tu devrais trouver facilement perso j ai une prise commandée que j utilise pas vu le peu de gain (en gros avant j etaignais la nuit la hifi : ampli, télé, PS4,Wii, box télé qui étaient tous déjà en veille… J ai calculé qu en gros en éteignant de 1h du mat au lendemain 20h j aurais remboursé ma prise en 5/6 ans avec un contrat hc/hp… Sans compter la conso de la prise elle même… J ai arrêté ce genre d « optimisation » de bout de chandelle. Plus efficace de mettre un réflecteur a deux balles derrières les radiateurs c est pour dire)

La commande ne fonctionne pas mais je vais chercher merci pour la réponse ensuite je me sers surtout des prises pour déclencher à distance plutôt que de faire des économies.

Hello,
J ai retrouvé la source, il y a un peu plus d infos :
https://easydomoticz.com/forum/viewtopic.php?f=21&t=6929&start=20
notamment sur la partie « appliances » pour changer l etat des prises.
je cite :

Exemple 03 :
Req = ‹ /usr/bin/curl -H « Content-Type: application/json » -X POST -d ‹ {« applianceState »:[{« applianceId »:" › … ID_Equip … ‹ ",« state »: › … Cmd … ‹ }]} › http:// › … LogAdmin … ‹ : › … Mdp … ‹ @ › … IpAddr … ‹ /rpc/loadmanagement/set_appliance_state ›
Cmd = « true » à « False »
ID_Equip c’est l’ID de l’équipement que tu trouves en avec cette requête"

Sinon coté prise, tu peux pas récupérer la consommation: En fait les requetes json/rpc ont été analysées par un utilisateur qui à récupéré les trames entre l’appli et la box.
La partie conso, a priori est envoyée directement via la croix au cloud schneider et c est lui qui calcul les conso etc du coup c est pas la prise qui envoie directement sa conso à l appli visiblement. Mais tu devrais pouvoir controler les heures on/off avec ca (j avais testé le rpc sur les appliances et je récupérais bien ma prise).
Have fun :wink:

Bonjour merci pour la réponse même si c’est un peu du chinois tout ça, je vais essayer de faire un script sur jeedom comme a fait wolas mais c’est pas gagné je vais chercher et essayer pour savoir quoi mettre dans chaque case en tout cas merci pour ton aide.

Bonjour j’ai un peu tout essayé mais je n’y arrive faut il faire un script ou un fichier PHP?

Hello.
Je vais essayer si j ai le temps sur ma propre prise ce week end et te faire un mode opératoire. Je pense qu il faut un script PHP car c est ce que j ai fait pour changer la température de consigne.
Stay tune :wink: