Clim Atlantic cart Wifi UTY-TFNXZ1 appli FGLair compatible Jeedom?

Bonjour, mon installateur me propose de m’installer une climatisation gainable de la marque Atlantic avec une carte Wifi UTY-TFNXZ1 et connecté à l’application FGLair… Pas top l’application visiblement!!!
Comment puis je savoir si je pourrais récupérer les informations sur jeedom via tel ou tel plugin, je suis un peu déçu car il m’avait certifié que ce serait compatible Somfy et donc Tahoma.

Merci pour votre aide

Si c’est pompe à chaleur, chauffe eau thermodynamique ou radiateur électrique connecté Atlantic ou Thermor voir possibilités ci-dessous

  • CONNECTIVITÉ
  • Pilotage et visualisation des consommations en local ou à distance sur smartphone/tablette, possibles avec :
    • Cozytouch, application Atlantic
    • Delta Dore + plugin jeedore
    • Somfy
    Va voir sur le site https://www.atlantic-thermor-prescription.fr

Merci pour ton retour, j’ai appelé Atlantic à l’instant ils me confirme que je ne pourrais pas commander la climatisation via Somfy. Toutefois j’aimerais voir si je peux piloter via Jeedom.

Ma climatisation gainable est une pompe a chaleur Air/Air
Je suis allé sur le site que tu m’indique mais je ne vais pas voir dessus si c’est compatible Jeedom?

Atlantic utilise du Fujitsu regarde le lien ça pourrait servir

Bonjour à tous, j’ai enfin trouvé un moyen de piloter mes climatisations compatibles avec l’appli flgair. Pour ma part, j’ai pas besoin de grand chose; juste faire un on/off sur mes climatisations.
Il faut obligatoirement avoir l’appli flgair avec l’authentification fonctionnelle. Je n’ai pas créé de plugin car je suis pas assez doué, mais avec des scripts en Python, des scénario et des virtuels, je m’en sort pour mon besoin. Je publierai prochainement les informations nécessaires pour réaliser cela en sachant que même de cette manière, tout est possible pour les paramétrages (flux d’air, température, …).

1 « J'aime »

Bonjour tu pilotes une climatisation Atlantic qui n’est pas airline?
Où trouve tu cette appli, dans jeedom où application téléphone ?

Bonjour, non, j’ai une climatisation General (sous marque de Fujitsu) avec un module WiFi. L’application FGLair est une application disponible sur le Playstore pour piloter à distance ces climatisations.

Peux-tu nous en dire un peu plus ?

Bonjour,
Désolés pour ma réponse tardive.
Apparemment, je peux poster uniquement 2 liens par messages (car nouvelle utilisateur), ce qui me pose problème car mon explication est plutôt longue.
Je vais regarder comment résoudre ce problème.
Willy

J’ai 5 scripts python qui sont appelés (pour certains) par ces scénarios :

  • authentication.py

#!/usr/bin/python

import logging
import requests
import time
import os
import json

URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›

clim1_authenticationId = 1947 #ID de la commande dans le virtuel

method = « POST »
url = « https://user-field-eu.aylanetworks.com/users/sign_in.json »
data = ‹ {« user »:{« email »:« [votre addresse email] »,« password »:« [votre mot de passe] »,« application »:{« app_id »:« FGLair-eu-id »,« app_secret »:« FGLair-eu-gpFbVBRoiJ8E3QWJ-QRULLL3j3U »}}} ›
headers = {
« Content-Type »: « application/json »
}

response = requests.request(method, url, data=data,headers=headers)
response.raise_for_status()

access_token = response.json()[‹ access_token ›]

requestParams = {‹ plugin ›: ‹ virtual ›, ‹ apikey › : API_KEY , ‹ type › : ‹ virtual › , ‹ id › : clim1_authenticationId, ‹ value ›: access_token}
r = requests.post(URL, params=requestParams)

print access_token

  • getDevices.py :

#!/usr/bin/python

import sys
import logging
import requests
import time
import os
import json

token = sys.argv[1]

URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›

method = « GET »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/devices.json ›
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}

response = requests.request(method, url, headers=headers)
response.raise_for_status()

result = response.json()

print result

  • refreshDeviceProperties.py :

#!/usr/bin/python

import sys
import logging
import requests
import time
import os
import json

token = sys.argv[1]
deviceId = sys.argv[2]

URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›

method = « GET »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/dsns/%s/properties.json › % deviceId
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}

response = requests.request(method, url, headers=headers)
response.raise_for_status()

result = response.json()

for value in result:
if value[‹ property ›][‹ name ›] == ‹ operation_mode ›:
requestParams = {‹ plugin ›: ‹ virtual ›, ‹ apikey › : API_KEY , ‹ type › : ‹ virtual › , ‹ id › : « 1935 », ‹ value ›: value[‹ property ›][‹ value ›]}
r = requests.post(URL, params=requestParams)

print « end »

  • sendDeviceProperty.py :

#!/usr/bin/python

import sys
import logging
import requests
import time
import os
import json

token = sys.argv[1]
propertyKey = sys.argv[2]
propertyValue = sys.argv[3]

method = « POST »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/properties/%s/datapoints.json › % propertyKey
data = ‹ {« datapoint »: {« value »: %s}} › % propertyValue
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}

response = requests.request(method, url, data=data,headers=headers)
response.raise_for_status()

print ‹ token=%s key=%s value=%s › % (token, propertyKey, propertyValue)

  • GetDeviceProperties.py

#!/usr/bin/python

import sys
import logging
import requests
import time
import os
import json

token = sys.argv[1]
deviceId = sys.argv[2]

URL_JEEDOM = « http://192.168.1.100 »;
API_KEY = « [clé API de jeedom] »;
URL=URL_JEEDOM+‹ /core/api/jeeApi.php ›

method = « GET »
url = ‹ https://ads-field-eu.aylanetworks.com/apiv1/dsns/%s/properties.json › % deviceId
headers = {
« Content-Type »: « application/json »,
« Authorization »: token
}

response = requests.request(method, url, headers=headers)
response.raise_for_status()

result = response.json()

print result

En gros, la première chose à faire est de récupérer le token avec le script authentication.py (en modifiant le script et en mettant mail et mot de passe).
Ce script nous permet de récupérer le token.

Ensuite, on peut récupérer la liste des appareils disponibles sur ce compte en lançant le script getDevices.py (en passant en paramètre le token).
Ce script nous permet de récupérer le deviceId.

Ensuite, on peut récupérer la listes des propriétés de l’appareil précédemment reconnu en lançant le script getDeviceProperties.py (en passant en paramètre le token et deviceId).
Ce script nous permet de récupérer tous les ids des propriétés disponible en réglage dans la climatisation. Actuellement, j’ai uniquement fait le démarrage et l’extinction en agissant sur la propriété nommé « operation_mode »

Les deux scripts getDevices.py et getDeviceProperties.py sont lancés à la main car une fois les ids récupérés, ils n’ont plus aucun intérêt.

Le fonctionnement reste encore à finaliser mais le principe est la.
J’aurai préféré un plugin pour faire tous ça, mais j’ai comme l’impression que c’est un peu compliqué.

J’ai créé un scénario qui est appelé par un virtuel (voir post suivant) et qui appelle les différents scripts déja présenté :

Voici les différents bout de code :

  • GetAccessToken :

$tags = $scenario->getTags();
$scenario->setLog(« Get token »); //Log
$result = shell_exec(‹ /var/www/html/plugins/script/data/fglair/authentication.py ›);
$scenario->setLog(« authentication end with result=$result »); //Log

  • Clim1_On :

$tags = $scenario->getTags();

$scenario->setLog(« Clim1 on »); //Log

$cmd = cmd::byString(« #[Rez-de-chaussée][Climatisation Rez-de-chaussée][accessToken]# »);
$accessToken = $cmd->execCmd();
$propertyKey = « 39332158 »; // la clé de la propriété operation_mode récupéré dans le getDeviceProperties.py
$propertyValue = « 3 »;

$scenario->setLog(« Get token with token=$accessToken »); //Log

$result = shell_exec('/var/www/html/plugins/script/data/fglair/sendDeviceProperty.py ‹ .$accessToken. › ‹ .$propertyKey. › '.$propertyValue);
$scenario->setLog(« Clim1 on end with result=$result »); //Log

  • Clim1_Off :

$tags = $scenario->getTags();

$scenario->setLog(« Clim1 Off »); //Log

$cmd = cmd::byString(« #[Rez-de-chaussée][Climatisation Rez-de-chaussée][accessToken]# »);
$accessToken = $cmd->execCmd();
$propertyKey = « 39332158 »; // la clé de la propriété operation_mode récupéré dans le getDeviceProperties.py
$propertyValue = « 0 »;

$scenario->setLog(« Get token with token=$accessToken »); //Log

$result = shell_exec('/var/www/html/plugins/script/data/fglair/sendDeviceProperty.py ‹ .$accessToken. › ‹ .$propertyKey. › '.$propertyValue);
$scenario->setLog(« Clim1 on end with result=$result »); //Log

  • Clim1_RefreshState :

$tags = $scenario->getTags();

$scenario->setLog(« Get device1 properties »); //Log

$cmd = cmd::byString(« #[Rez-de-chaussée][Climatisation Rez-de-chaussée][accessToken]# »);
$accessToken = $cmd->execCmd();
$deviceId = « AC000W00XXXXXX »; // la clé « dsn » de la propriété récupéré dans le getDevices.py

$scenario->setLog(« Get token with token=$accessToken »); //Log

$result = shell_exec('/var/www/html/plugins/script/data/fglair/refreshDeviceProperties.py ‹ .$accessToken. › '.$deviceId);
$scenario->setLog(« RefreshDeviceProperty return : $result »);

J’ai créé un virtuel qui me permet d’appeler des scénarios : les scénarios sont appelés dans la configuration de chaque commande dans le champs " Action avant exécution de la commande
".

Voila dans l’ensemble l’explication. C’est un peu brouillon, mais j’ai plus trop de temps à y consacrer actuellement.
J’aurai préféré créer un plugin, mais ça me semble compliqué.
Willy

Merci beaucoup pour tout ces éléments. Je viens de commencer à m’y pencher. Dès que je lance le scénario qui lance le script « authentication.py » j’obtient l’erreur syntax error, unexpected ‹ Get › (T_STRING), expecting ‹ ) ›

Je l’ai bien copié dans le dossier script/data/fglair/ et je ne vois pas du tout d’où vient cette erreur. J’ai juste modifié l’adresse IP et la clé API de jeedom, l’adresse email et le mot de passe sur ton script ainsi que le numéro de commande ou j’ai mis l’ID d’une commande texte, c’est bien ce qu’il fallait faire ?

J’ai laissé ta valeur "app_secret " sinon car je ne sais pas où récupérer cette information.

Bonjour, merci pour toutes ces infos.
J’ai pu piloter ma climatisation atlantic depuis un développement .Net sur mon PC.
C’est toujours amusant et peut me donner des idées si l’application FGLair ne me suffit pas.

Bonjour,
Désolé pour ce grand retard, je n’ai pas été notifié des messages. L’erreur peut venir du scénario ou du script.
Si l’erreur vient du scénario, elle sera affichée dans le logs, et vous pourrez voir quelle ligne pause problème.
Si l’erreur vient du script, le plus simple est de lancer le script en passant par putty ou autre afin de lancer le script sans passer par jeedom.