Aller au contenu
zoydu33

Sondes oregon -> Jeedom -> HC3

Recommended Posts

Bonjour à tous. Je propose un petit tutorial permettant de transférer les valeurs de sondes oregon connectées à jeedom vers une HC3. Ce tuto est certainement transposable à d’autres types de périphériques domotiques couplés à jeedom dont on souhaiterait transférer les données vers une HC3. J’ai également inclus dans ce tuto toutes les procédures de test qui m’ont permis de venir à bout de mon projet de récupération de données sur des sondes au protocole rfx.

Le tutorial est volontairement très détaillé pour aider les plus novices d’entre nous.

N’ayant pas de HC2 en ma possession je ne sais pas si les scripts et procédures proposées ici sont transposables sur ce type de box

Objectif :

Création d’une sonde température dans HC3 qui va récupérer les valeurs transmises par une sonde oregon connectée à JEEDOM.

Eléments préalables :

  •       -   Sondes déjà inclues dans JEEDOM
  •       -  Home center 3

  •       -  Pièces (room) déjà créées dans HC3

 

Etape 1 : Création du device sonde.

  •     -   Sur la HC3 aller dans « 5. Dispositif » puis cliquer sur l’icône « + » pour ajouter un device.

  •       - Dans la fenêtre « Ajouter un appareil » choisir « Autre appareil »

  •     - Dans la nouvelle fenêtre choisir « quick app »

  •       - Dans la fenêtre suivante donner un nom à la sonde, indiquer la pièce associée et dans « Device type » sélectionner « Temperature sensor » (Pour l’humidité par exemple choisir « Humidity sensor »). Dans le cadre du tuto le nom de la sonde est : « TempExterieurTest ». Voir capture 1

Capture 1

image.png.471855aafa95634c528a1ee97a8a696a.png

 

  •      -  Sauvegarder

  •       - Noter l’ID de la sonde créée pour l’utiliser dans de prochains scripts. Dans ce tuto l’id = 53  - voir capture 2

Capture 2

image.png.a986029759c90aa915fc55e1e5ac4907.png

 

Etape 2 : Construction du script d’actualisation de la température sur la nouvelle sonde HC3

Dans l'étape 2 je présente de quelle manière j’ai pu construire le script de modification du paramètre Température. La méthodologie peut être employé pour d’autres paramètres. 

  •      -  Dans la page d’administration de la HC3 cliquer sur l’icône swagger (capture 3)

Capture 3

image.png.7469f449925bba06894bd3e0dc6a228b.png

 

  •       -  Dans « select a definition » de l'interface du swagger choisir « device »

Etape 2.1 : Cas de figure où l’on souhaiterait identifier le paramètre température ou autre à rafraîchir dans l'HC3

  •       - Aller dans « Get  /devices/{deviceID} »

  •      -  Cliquer sur « Try it out »

  •     - Dans « ID of an existing device » mettre l’ID du device créé en étape 1 (ID = 53 dans mon exemple)

  •     - Cliquer sur « Execute ». Le générateur de script donne l’équivalent en curl et en http

  •     - Dans « server response » récupérer le code (Copier le code dans bloc note windows où cliquer dans « download » pour télécharger le fichier et l'ouvrir avec le bloc note de windows). Le code récupéré = CODE1

Extrait du code 1 :

    "unit": "C",

   "userDescription": "",

    "value": 0,

è  La partie qui nous intéresse est le paramètre ‘’value’’ : 0 sur cette zone de code. C’est cette partie qui est associée à la température qui s’affiche dans l'HC3.

 

Etape 2.2 : Construction du script de modification

  •       - Aller dans « Put  /devices/{deviceID} »

  •      -  Cliquer sur « Try it out »

  •       - Dans « ID of an existing device » mettre l’ID du device créé en étape 1 (ID = 53 dans mon exemple)

  •       - Dans « Modified device body » coller le code 1 (Etape 2.1)

  •       - Modifier à des fins de test le paramètre value dans la portion de code présenté dans Extrait du code 1 (exemple : ''value’’ : 55.5, )

  •       - Vérifier sur le tableau de bord de la HC3 la bonne modification de la température de la sonde « TempExterieurTest » ou autre.

  •       - Récupérer le script Curl généré par le « Put  /devices/{deviceID} » et le coller dans le bloc note Windows

  •       - Elaguer le code en conservant uniquement les paramètres à modifier. Dans notre cas c'est le paramètre value que l'on souhaite conserver. L'étape est un peu fastidieuse car elle nécessite pas mal de test (Voir Astuce 1 pour réaliser des tests de validation de script sur windows) 

Code 2 : code curl élagué permettant de modifier la température

curl -X PUT "http://adresseIP-HC3/api/devices/53" -H "Authorization: Basic xxxxxxxxxxx==" -d "{\"properties\":{\"value\":44.4}}"

Rappel : 53 est l’ID device et 44.4 la valeur de test

adresseIP-HC3 : Adresse ip de la box HC3

xxxxxxxxxxx : login et passe de la HC3 en hexadécimal récupérable en Etape 2.1 ou 2.2

Astuce1 -> Pour tester le bon fonctionnement du code avec Windows, lancer la console ligne de commande (Touche windows +R) puis coller le code et l’exécuter. Normalement la sonde créée dans HC3 va prendre la valeur 44.4

Etape 3 : Paramétrage de JEEDOM

  •       - Dans jeedom créer un nouveau scénario (exemple : test temperature)

  •      -  Dans le paramètre Evenement choisir la sonde de température (ou autre) que l'on doit synchroniser avec l'HC3 (Capture 3 et 4)

Capture 3 : Fenêtre jeedom scénario

image.png.1ed9df56ea4ee5422853c8a5ee903e83.png

Capture 4 : Fenêtre de paramétrage du déclencheur

image.png.560cb8dbba484803277a3ab9769eca4f.png

  •      - Récupérer le code dans la case Evenement. Dans l’exemple #[Exterieur][Sonde exterieur][Température]#   => Code 3 (voir capture 3)

  •       -  Dans l’onglet « Scénario » cliquer sur ajouter bloc

Capture 5 : Onglet scénario – Ajouter bloc

image.png.31a49e11fbb8d900fb5c4374cc4b589b.png
  •       - Dans la fenêtre « Ajouter un bloc » choisir « code »

  •       - Coller le code Code 4

Code 4 : Script jeedom -> HC3 (temperature)

$TSondeExterieur = cmd::byString('#[Exterieur][Sonde exterieur][Température]#')->execCmd();
$TSondeExterieurScript='curl -X PUT "http://adresseIP-HC3/api/devices/53" -H "Authorization: Basic xxxxxxxxxxx==" -d "{\"properties\":{\"value\":'.$TSondeExterieur.'}}"';
echo shell_exec($TSondeExterieurScript);

Rappel : 53 est l’ID device HC3

#[Exterieur][Sonde exterieur][Température]# : voir Code 3

adresseIP-HC3 : Adresse ip de la box HC3

xxxxxxxxxx : login et passe de la HC3 en hexadécimal récupérable en Etape 2.1 ou 2.2

Les noms des variables $TSondeExterieur et $TSondeExterieurScript peuvent être personnalisées

 

Astuce 2-> A des fins de test on peut ajouter au code 4 le script suivant pour visualiser au niveau des notifications jeedom le script curl (code 4 ligne2): 

message::add("test", $TSondeExterieurScript);

 

  •       -  Sauvegarder le scénario

     En surveillant le tableau de bord de l'HC3, vérifier que la sonde de température se synchronise. Cela peut prendre plusieurs minutes.

 

L’hygrométrie :

Pour récupérer hygrométrie des sondes oregon c'est le même combat. Il faut créer une sonde dédiée HC3. Les étapes sont identiques à celle présentée pour la température. Le paramètre à mettre à jour est de nouveau "value":0

Code 2 : code identiques mais avec l’ID device adapté.

Code 4 : code identiques mais avec l’ID device, le code 3 et le nom de variable adapté

Code 5 : Script jeedom -> HC3 (hygrométrie)

$HSondeExterieur = cmd::byString('#[Exterieur][Sonde exterieur][Humidité]#')->execCmd();
$HSondeExterieurScript='curl -X PUT "http:// adresseIP-HC3/api/devices/51" -H "Authorization: Basic xxxxxxx==" -d "{\"properties\":{\"value\":'.$HSondeExterieur.'}}"';
echo shell_exec($HSondeExterieurScript);

J'espère que ce tuto vous sera utile.

zoydu33

 

 

  • Like 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut à tous

Super tuto

 

J'ai une question 

 

J'ai extrait le bout de code ci-dessous avec GET (Etape 2.1 )

 

"properties": {
    "parameters": [
      {
        "id": 1,
        "lastReportedValue": 10,
        "lastSetValue": 10,
        "size": 1,
        "value": 10
      },

 

Mai je ne vois pas comment modifier VALUE=10 en VALUE=0 avec la Etape 2.2 PUT

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à toi,

 

Merci pour ce tuto super bien expliqué. 

J'ai malgré tout un problème : suite à l'exécution de la requête en ligne de commande, j'ai ce retour curl: (77) schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - La chaîne de certificats a été fournie par une autorité qui n’est pas approuvée.

 

Pourtant le paramètre  => -H "Authorization: Basic xxxxxxx=" récupéré depuis mon "put" est le bon...

 

Une idée ?

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 10 minutes, ppel666 a dit :

Bonjour à toi,

 

Merci pour ce tuto super bien expliqué. 

J'ai malgré tout un problème : suite à l'exécution de la requête en ligne de commande, j'ai ce retour curl: (77) schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - La chaîne de certificats a été fournie par une autorité qui n’est pas approuvée.

 

Pourtant le paramètre  => -H "Authorization: Basic xxxxxxx=" récupéré depuis mon "put" est le bon...

 

Une idée ?

Le problème vient tout simplement du fait que mon HC3 est en HTTPS alors que le tien est simplement en HTTP... Une idée pour passer la bonne ligne de commande pour le HTTPS ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×