Les DHT 11, 22, Raspberry ça marche enfin !

Aaahhh, le Raspberry et les DHT de tout type viennent de faire un grand pas car Adafruit met à notre disposition une bibliothèque destinée à faire les acquisitions depuis les DHT11, 22, 2302 QUI FONCTIONNE.

Si, si je vous jure !

un autre article mentionnait ici l’installation et les problèmes liés à l’acquisition des données, c’est du passé.

Voyons ici comment connecter un capteur de température et de % d’humidité DHT11 à notre Raspberry. la procédure est identique pour un DHT22 ou 2302

Un DHT 111

Câblage

  • 1 du DHT au 3.3 V,
  • 2 du DHT au gpio que vous voulez,
  • 3 rien,
  • 4 GND

Un lecteur (cj) fait remarquer que :

D’après les spécifications fabriquant, le DHT22 accepte une alimentation comprise entre 3.3V et 6V. Les DHT11 et AM2302 acceptent quant à eux une alimentation comprise entre 3.3 et 5.5V. On peut donc sans problème brancher ces composants sur le 5V d’un RPi (ce que j’ai d’ailleurs fait avec mon AM2302 pour éviter les interférences créées par sa mauvaise cohabitation avec un DS18B20 connecté sur le 3.3V en 1-wire).

Entre 1 et 2 une résistance 4.7K Ohm-10 K, si ça marche pas avec 4.7K , passez à une 10k.

Attention vérifiez la répartition des pins GPIO suivant votre modèle de Raspberry.

Un tuto en anglais de chez Adafruit : https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/wiring

Software

Les outils Adafruit ont été déplacés sur github et consistent maintenant en une librairie C que nous devrons utiliser dans un script python.

Récupérons les sources et compilons la bibliothèque DHT.

git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo apt-get update
sudo apt-get install build-essential python-dev python-openssl
sudo python setup.py install

Une fois terminé et pour tester cela, on exécute la commande suivante (pour un  DHT11) , un DHT 22 sera interrogé par Adafruit_DHT 22 XX, XX étant le numéro du GPIO concerné.

cd examples
sudo ./AdafruitDHT.py 11 4
Temp=23.0* Humidity=37.0%
J’indique au plus têtus d’entre vous que le sudo EST OBLIGATOIRE pour accéder aux GPIO du Raspi.
Attention : le message d’erreur ci-dessous indique que le mode « device-tree » n’est pas activé sur le Raspberry.
Traceback (most recent call last):
 File "./AdafruitDHT.py", line 41, in <module>
 humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
 File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 90, in read_retry
 File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 77, in read
 File "build/bdist.linux-armv7l/egg/Adafruit_DHT/Raspberry_Pi_2.py", line 34, in read
 RuntimeError: Error accessing GPIO.
Tapez sudo raspi-config puis dans le point 8 « Advanced Options », faites un « Enable Device Tree » et rebootez.
Vérifiez que tout fonctionne avec :
AdafruitDHT 11 4

Le 11 étant le type de DHT que vous avez (11 ,22 ou 2302) et 4 le numéro du GPIO que vous avez câblé.

OK tout est bon on a température et humidité, on passe à la suite.

Attention : Le DHT11 et le  DHT22 ne répondent que 1 fois par seconde, inutile donc de les interroger plus rapidement.

Domoticz

On  va dans l’onglet « Matèriel » pour créer un virtual device puis dans ce virtual device.

On ajoute un virtual sensor Temp+Humidité ,

2014-09-05 19_01_10-Domoticz

Maintenant on revient dans  « Réglages/Dispositifs », on clique sur la flèche verte pour l’ajouter puis on on note l’ IDX Domoticz (44) dans mon cas

2014-09-05 19_03_06-DomoticzLire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Lua et json

json_luaLes dernières versions de Domoticz donnent maintenant la possibilité de lire/fabriquer, dans nos scripts Lua, des fichiers au format JSON en natif sans autre outil externe.

L’intérêt est grand en effet d’avoir des outils pour exploiter ce format qui est utilisé nativement dans Domoticz, mais aussi dans de nombreux sites web afin de donner aux utilisateurs des possibilités d’interrogation, citons juste l’api de Domogeek, celle de méteo France, airaprif …..

Rappel pour ceux qui arriveraient maintenant https://easydomoticz.com/lapi-json-de-domoticz-demythifiee/ et la bibliothèque complète https://easydomoticz.com/traduction-francais-de-lapi-json-domoticz/

Encore une fois il s’agit de la traduction de la page correspondante du wiki https://www.domoticz.com/wiki/Lua_-_json.lua

Utilisation

Rien n’est à installer puisque les versions après le 23/11/2016 (build  8e0dfd5) incorporent un fichier JSON.lua dont nous allons voir l’utilisation ici.

Dans chaque script Lua qui aura besoin d’utiliser des valeurs renvoyées au format JSON, il nous suffira d’appeler ce fichier JSON.lua. Ce fichier est dans le répertoire des scripts lua que ce soit sous Linux ou Windows©.

Exemples

Domoticz

Imaginons que je cherche à récupérer dans un script Lua, le nom et la valeur actuelle d’un dispositif interne à Domoticz.

Comme en tapant dans un navigateur :

http://192.168.1.81:8080/json.htm?type=devices&ridx=226 ou le ridx=226 est l’idx de mon périphérique Domoticz et 192.168.1.81:8080 , l’IP et le port de mon Domoticz.

je reçois cela en retour

{
"ActTime" : 1482786662,
"ServerTime" : "2016-12-26 22:11:02",
"Sunrise" : "08:37",
"Sunset" : "17:25",
"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"CustomImage" : 0,
"Data" : "On",
"Description" : "",
"Favorite" : 1,
"HardwareID" : 3,
"HardwareName" : "Rfxcommusb10",
"HardwareType" : "RFXCOM - RFXtrx433 USB 433.92MHz Transceiver",
"HardwareTypeVal" : 1,
"HaveDimmer" : true,
"HaveGroupCmd" : true,
"HaveTimeout" : false,
"ID" : "0945F16",
"Image" : "Light",
"IsSubDevice" : false,
"LastUpdate" : "2016-11-03 07:48:25",
"Level" : 0,
"LevelInt" : 0,
"MaxDimLevel" : 15,
"Name" : "Volet Salon",
"Notifications" : "false",
"PlanID" : "4",
"PlanIDs" : [ 4, 9 ],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"Status" : "On",
"StrParam1" : "",
"StrParam2" : "",
"SubType" : "AC",
"SwitchType" : "On/Off",
"SwitchTypeVal" : 0,
"Timers" : "false",
"Type" : "Lighting 2",
"TypeImg" : "lightbulb",
"Unit" : 5,
"Used" : 1,
"UsedByCamera" : false,
"XOffset" : "899",
"YOffset" : "507",
"idx" : "34"
},
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,

Je vois que le nom est dans Name et la valeur dans Data ET TOUT CA dans le « pavé » nommé ‘result’

"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"CustomImage" : 0,
"Data" : "On",
...
"Name" :"Volet Salon",

Le script utilisant la bibliothèque JSON.lua serait :

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
--   json = (loadfile "D:\\Domoticz\\scripts\\lua\\json.lua")()  -- For Windows

local config=assert(io.popen('/usr/bin/curl http://192.168.1.81:8080/json.htm?type=devices&rid=226'))

 local blocjson = config:read('*all')
 config:close()
 --print (blocjson)
 local jsonValeur = json:decode(blocjson)
 nom = jsonValeur.result[1].Name
 data = jsonValeur.result[1].Data

 print('****************')
 print(nom)
 print(data)
  

commandArray = {}
print('****************')
return commandArray

  • on incorpore le fichier JSON.lua
  • on appelle curl pour interroger le site web qui nous renverra ses données JSON  (ici mon Domoticz)
  • la variable ‘blocjson’ contient tout le pavé JSON, (enlevez les — devant pour voir ce que vous avez reçu)
  • puis l’appel de result[1].Name, result[1].Data nous permet d’assigner nos variables.

Oui, mais pourquoi result[1] ? , cette syntaxe correspond au fait qu’il s’agit du 1er « pavé » nommé ‘result’  dans mon JSON (même si l’y en a qu’un seul).

Weather Undergroud

La doc du wiki prend en exemple le site Weather Ungerground

On voit dans la documentation qu’il nous renvoie la météo sous cette forme JSON

{
  "response": {
  "version": "0.1",
  "termsofService": "http://www.wunderground.com/weather/api/d/terms.html",
  "features": {
  "conditions": 1
  }
  },
  "current_observation": {
  "image": {
  "url": "http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png",
  "title": "Weather Underground",
  "link": "http://www.wunderground.com"
  },
  "display_location": {
"full": "San Francisco, CA",
  "city": "San Francisco",
  "
  "country_iso3166": "US",
  "zip": "94101",
  "latitude": "37.77500916",
  "longitude": "-122.41825867",
  "elevation": "47.00000000"
  },

Le script du wiki retire longitude et latitude par un

latitude = jsonLocation.current_observation.display_location.latitude
longitude = jsonLocation.current_observation.display_location.longitude

car je dois aller à current_observation puis display_location pour « tomber sur » latitude et longitude, faites bien attention aux {} d’imbrication et au crochets.

Ça marche pas

Si votre script Lua ne vous renvoie rien :

  • vérifiez les noms des champs dans le JSON, attention aux majuscules/minuscules.
  • avez vous bien respecté le chemin vers votre valeur wwww. xxxx.yyyyy.zzzz
  • si comme pour Domoticz le champ que vous voulez extraire est dans un truc à crochets et accolades ->
"xxxxx" : [
      {
       "mon_champ" : 1.0,

il faut utiliser xxxxx[1].mon_champ pour extraire la valeur correspondante.

Conclusion

Loin d’avoir exploré tous les cas de figures d’utilisation de cette nouveauté de Domoticz, l’intérêt apporté est grand et nous permet encore plus d’ouverture et toujours plus de puissance dans notre box domotique préférée.

Résultat de recherche d'images pour "youpi"

 J’adore ces images des années 70

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Traduction en français de l’Api json Domoticz

Traduction de l’ API/JSON de Domoticz

Vous en rêviez, et bien voici la traduction en français des commandes que nous pouvons utiliser pour interroger et piloter Domoticz via les URL
Un rappel général de l’utilisation est ici https://easydomoticz.com/lapi-json-de-domoticz-demythifiee/
Comme d’habitude il s’agira d’une traduction « à ma sauce » de la page ici située https://www.domoticz.com/wiki/Domoticz_API/JSON_URL’s. Cette page anglophone reste la seule source valable et mise à jour régulièrement, merci de vous y reporter en cas de questions.
Si vous constatez des erreurs, merci d’en faire part dans les commentaires.

Contenu

Format

Le format général à respecter est de  la forme :

http://<username:password@>domoticz-ip<:port>/json.htm?api-call
  • <username:password@> = le login et le password de Domoticz (optionnel).
  • domoticz-ip =l’ IP-adresse de Domoticz.
  • <:port> =le port de votre Domoticz (optionnel).
  • api-call, la chaine à envoyer pour faire le job.

Ici api-call est donc  tout ce qui suit le ? de json.htm, donc type=command….

ex. http://192.168.1.2:8080/json.htm?type=command&param=udevice&idx=$idx&nvalue=0&svalue=79

A savoir

Si vous avez protégé vos périphériques via la case « Protégé » du widget, les modifs via JSON seront aussi interdites, il faut insérer tout au bout de l’URL  JSON le mot de passe de protection

&passcode=ton mdp

Mieux afficher les sorties

Par défaut votre navigateur internet affichera les valeurs JSON reçues depuis Domoticz dans un ordre quelconque.

Pour faire plus lisible vous pouvez utiliser des plugins qui affichent et reformatent lisiblement les valeurs.
Pour Google Chrome vous pouvez utiliser JSONView (Chrome web store). Pour les autres navigateurs l’identique doit exister, cherchez dans les extensions/add-on pour votre navigateur.

Il existe également ce site web qui reformate les JSON http://jsonviewer.stack.hu/

Autorisations

Lorsque nous utilisons d’autres méthodes que notre navigateur pour se connecter à Domoticz, il peut être nécessaire de s’identifier.

L’authentification HTTP utilise la requête Autorisation sur HTTP, cette authentification est en base 64 contenant le couple user/password. En utilisant votre propre application/script et si votre domoticz est protégé par mot de passe, il vous faudra vous identifier correctement (voir python requests et la méthode auth à ce sujet). Pensez également que l’on peut autoriser certaines ip à se connecter SANS mot de passe dans le paramétrage Domoticz : réseaux autorisés.

Voici le synopsis de la méthode d’identification :

  • Le nom d’utilisateur et le password sont combinés dans une chaine « username:password »
  • Cette chaine est encodée par RFC2045-MIME version en base64
  • Dans la méthode d’autorisation on envoie « Authorization: » un espace puis « Basic  » puis la chaine encodée ci-dessus.

Comme ceci :

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Maintenant sachez que l’envoi des  » http request headers » est dépendant du langage utilisé. Utilisez la documentation appropriée. Python request met à notre disposition des méthodes simples d’authentification.

Réponse

Chaque appel à l’API est suivie d’une réponse : status OK si la commande est réussie , sinon ERR

{
   "status" : "OK"
}

Fonctions Générales

Retrouver le status d’un dispositif précis

/json.htm?type=devices&rid=IDX
  • IDX = est l’idx de votre périphérique recherché (la colonne IDX dans les dispositifs)

Retrouver tous les dispositifs d’un certain type

/json.htm?type=devices&filter=all&used=true&order=Name

Avec le filter=all, vous récupérez la liste de tous les dispositifs. Si vous voulez retrouver les infos de certains types utilisez les filters suivants à la place du filter=all ci dessus .

light = toutes les lampes et switches
weather = tous les device météo
temp = tous les capteurs de température
utility = tous les utilitaires

Retrouver les dispositifs en favoris

/json.htm?type=devices&used=true&filter=all&favorite=1

Cela vous renvoie un tableau avec les dispositifs marqués en favoris (petite étoile jaune) présents sur la page « Tableau de bord ».

Obtenir les levers/couchers de soleil

/json.htm?type=command&param=getSunRiseSet
{
   "ServerTime" : "Sep 30 2013 17:15:21",
   "Sunrise" : "07:38:00",
   "Sunset" : "19:16:00",
   "status" : "OK",
   "title" : "getSunRiseSet"
}

Afficher un message dans le log Domoticz

Vous pouvez faire afficher vos propres textes dans le log Domoticz grâce à :

/json.htm?type=command&param=addlogmessage&message=MESSAGE
  • MESSAGE = contient le message que vous souhaitez afficher.

Lumières et Interrupteurs

Obtenir la liste de toutes les lumières/switches

/json.htm?type=command&param=getlightswitches

ou triés par noms

 /json.htm?type=devices&filter=light&used=true&order=Name

Exemple :

{
   "result" : [
      {
         "IsDimmer" : false,
         "Name" : "Bedroom lights",
         "SubType" : "Energenie",
         "Type" : "Lighting 1",
         "idx" : "43"
      },
      {
         "IsDimmer" : false,
         "Name" : "Hall",
         "SubType" : "Energenie",
         "Type" : "Lighting 1",
         "idx" : "30"
      },
      {
         "IsDimmer" : true,
         "Name" : "Lounge Light Front",
         "SubType" : "RGBW",
         "Type" : "Lighting Limitless/Applamp",
         "idx" : "32"
      },
      {
         "IsDimmer" : true,
         "Name" : "Lounge Lights All",
         "SubType" : "RGBW",
         "Type" : "Lighting Limitless/Applamp",
         "idx" : "66"
      },
      {
         "IsDimmer" : true,
         "Name" : "Lounge light back",
         "SubType" : "RGBW",
         "Type" : "Lighting Limitless/Applamp",
         "idx" : "33"
      }
   ],
   "status" : "OK",
   "title" : "GetLightSwitches"
}

Allumer une lumière, un switch

/json.htm?type=command&param=switchlight&idx=99&switchcmd=On

Éteindre une lumière, un switch

/json.htm?type=command&param=switchlight&idx=99&switchcmd=Off
  • idx = idx de votre dispositif (ici 99).
  • switchcmd = « On » or « Off » (Attention aux majuscules/minuscules !)

Si tout c’est bien passé on a :

{
   "status" : "OK",
   "title" : "SwitchLight"
}

Envoyer une valeur à un matériel dimmable

/json.htm?type=command&param=switchlight&idx=99&switchcmd=Set%20Level&level=6
  • Le champ level doit être une valeur entre 1 (0%) et 16 (100%). Si vous voulez utiliser les pourcentages et que 1 à 16 ne marche pas pour vous , utilisez 1 à 100.
  • Lorsque la lampe est à off , elle est passée à On
  • Le retour est :
{
   "status" : "OK",
   "title" : "SwitchLight"
}

Basculer un switch d’état

Cette commande permet de passer à On si c’est à Off et vice-versa sans que vous vous occupiez de son état actuel.

/json.htm?type=command&param=switchlight&idx=99&switchcmd=Toggle
{
   "status" : "OK",
   "title" : "SwitchLight"
}

Scènes / Groupes

Obtenir toutes les scènes et les groupes

/json.htm?type=scenes

Exemple :

{
   "result" : [
      {
         "Favorite" : 1,
         "HardwareID" : 0,
         "LastUpdate" : "2013-09-29 19:11:01",
         "Name" : "My Scene",
         "Status" : "Off",
         "Timers" : "true",
         "Type" : "Scene",
         "idx" : "9"
      },
      {
         "Favorite" : 1,
         "HardwareID" : 0,
         "LastUpdate" : "2013-09-30 11:49:13",
         "Name" : "My Group",
         "Status" : "Off",
         "Timers" : "false",
         "Type" : "Group",
         "idx" : "3"
      }
   ],
   "status" : "OK",
   "title" : "Scenes"
}

Passer une scène / groupe à on ou off

/json.htm?type=command&param=switchscene&idx=&switchcmd=On
  • idx = idx de votre scène/group (dans le menu « Dispositifs »).
  • switchcmd = « On » or « Off » (attention majuscules)
  • Les Scènes peuvent seulement être passées à On
{
   "status" : "OK",
   "title" : "SwitchScene"
}

Ajout d’une scène (0)

/json.htm?type=addscene&name=scenename&scenetype=0

Ajout d’un groupe (1)

/json.htm?type=addscene&name=scenename&scenetype=1

Détruire une scène ou un groupe

/json.htm?type=deletescene&idx=number

number est le numéro de la scéne (c.f paramètres)

Lister tous les dispositifs d’une scène

/json.htm?type=command&param=getscenedevices&idx=number&isscene=true

Ajout d’un dispositif à une scène

/json.htm?type=command&param=addscenedevice&idx=number&isscene=true&devidx=deviceindex&command=1&level=number&hue=number

Supprimer un device d’une scène

/json.htm?type=command&param=deletescenedevice&idx=number

Liste des horaires liés à une scène

/json.htm?type=scenetimers&idx=number

Exemple :

{
   "result" : [
      {
         "Active" : "true",
         "Cmd" : 0,
         "Date" : "07-02-2016",
         "Days" : 128,
         "Hue" : 0,
         "Level" : 100,
         "Randomness" : true,
         "Time" : "00:01",
         "Type" : 5,
         "idx" : "16"
      }
   ],
   "status" : "OK",
   "title" : "SceneTimers"
}

Ajout d’un horaire à une scène

/json.htm?type=command&param=addscenetimer&idx=number&active=&timertype=&date=&hour=&min=&randomness=&command=&level=&days=

idx = index de la scène, du groupe.

  • active = true/false
  • timertype = 0 =Avant lever soleil, 1 = Après lever Soleil, 2 =A l’heure indiquée, 3 = Avant coucher soleil, 4 = après coucher soleil, 5 = A une date ou heure précise.
  • date = MM-JJ-YYYY (mois sur 2 caractères-jour sur 2-année sur 4) Ex: 10-03-2016
  • hour = heure
  • min = minute
  • randomness = Aléatoire : avec le paramètre du paramétrage indiquant la dérive autour de cet horaire, pour faire une simulation de présence par exemple.
  • command = On/Off
  • level = 0..100 (%)
  • days = 0x80 = Tous les jours, 0x100 =Jours de semaine uniquement, 0x200 = Weekends, 0x01 = Lundi, 0x02 = Mardi, 0x04 = Mercredi, 0x08 = Jeudi, 0x10 = Vendredi, 0x20 = Samedi, 0x40 = Dimanche

Allez voir dans le bouton « Plannings » d’un interrupteur pour comprendre tous ces paramètres.

Commandes du serveur

Arrêt du système

/json.htm?type=command&param=system_shutdown
{
   "status" : "OK",
   "title" : "SystemShutdown"
}

Reboot

/json.htm?type=command&param=system_reboot
{
   "status" : "OK",
   "title" : "SystemReboot"
}

Les commandes de création

Créer un matériel virtuel

/json.htm?type=command&param=addhardware&htype=15&port=1&name=Sensors1&enabled=true

Ensuite pour obtenir un id, obtenez la page hardware pour le dernier ID :

 /json.htm?type=hardware

Créer un dispositif virtuel

Temp+Humidité (voir plus bas pour les valeurs)

/json.htm?type=createvirtualsensor&idx=29&sensorname=TempHum&sensortype=82

Electricité (voir plus bas pour les valeurs)

/json.htm?type=createvirtualsensor&idx=29&sensorname=Energy&sensortype=90

et maintenant obtenez les devices id avec la liste :

/json.htm?type=devices&filter=all&used=true&order=Name
1 Pressure (Bar) 0.0 	      	     nvalue=BAR (TBC)        
2 Percentage     0.0 	      	     nvalue=PCT (TBC)	        
80 TEMP          0.0     	     svalue=TEMP
81 HUM           1		     nvalue=HUM svalue=1 to 3
82 TEMP_HUM      0.0;50;1 	     svalue=TEMP;HUM;HUM_STATUS
84 TEMP_HUM_BARO 0.0;50;1;1010;1    svalue=TEMP;HUM;HUM_STATUS;BARO;BARO_FCST
85 RAIN          0;0		     svalue=RAIN;Rain in mm/h
86 WIND          0;N;0;0;0;0  	     svalue=WIN_SPD;WIND_DIR;?;?;?;?
87 UV            0;0		     svalue= (TBC)
113 RFXMeter     0		     Can have several values, another order has to be sent to set the sub type:	   
							type 3	Counter:   svalue=COUNTER
							type 2	Water:	   svalue=VOLUME
							type 1	Gas:
							type 0	Energy:
90 ENERGY        0;0.0		     svalue=POWER;ENERGY
249 TypeAirQuality    0	     nvalue=PPM

Pour le RFXMeter, une autre requête est nécessaire pour configurer le mode, l’url est:

/json.htm?type=setused&idx=DEVICE_ID&name=RFXMeter&switchtype=SUBTYPE_VALUE&used=true

dans lequel DEVICE_ID est le nom du device et SUBTYPE_VALUE est une de ces valeurs :

0 for Energy
1 for Gas
2 for Water
3 for Counter

Mettre à jour des capteurs

Soyez prudent en envoyant vos valeurs via JSON.
Il n’est pas exclu que vous crashiez Domoticz, si vos valeurs ne sont pas bonnes ou manquantes

Surtout sur des Domoticz version <=Beta 1.1634 ou stable <=1.1396 qui sont très sensibles. Les versions ultérieures sont plus sécurisées pour cela.

Vous aurez besoin de l’idx de votre capteur, allez le noter dans l’écran des dispositifs.

Temperature

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • TEMP = Température que vous souhaitez affecter à ce capteur.

Humidité

/json.htm?type=command&param=udevice&idx=IDX&nvalue=HUM&svalue=HUM_STAT
  • IDX =idx de votre capteur. A obtenir depuis l’écrans des dispositifs.
  • HUM = Humidité: 45 par exemple pour 45%
  • HUM_STAT = Humidity_status

Humidity_status peut être :

  • 0=Normal
  • 1=Confortable
  • 2=Sec
  • 3=Humide

Ce paramètre est obligatoire, si vous ne savez pas quoi mettre, mettez 0

Baromètre

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=BAR;BAR_FOR
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • BAR = Pression barométrique.
  • BAR_FOR = Météo selon la presion baro à choisir dans la liste ci-desous.
  • 0 = Stable
  • 1 = Soleil
  • 2 = Nuageux
  • 3 = Instable
  • 4 = Tempête
  • 5 = Inconnu
  • 6 = Nuageux/pluie

Ce paramètre est obligatoire, si vous ne savez pas quoi mettre, mettez 0

Température /humidité

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP;HUM;HUM_STAT
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • TEMP = Temperature
  • HUM = Humidité
  • HUM_STAT = Status de l’humidité parmi la liste ci-dessous.

 

  • 0=Normal
  • 1=Confortable
  • 2=Sec
  • 3=Humide

Température/humidité/baromètre

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP;HUM;HUM_STAT;BAR;BAR_FOR

Cette instruction permet de donner des valeurs aux capteurs Temp+Humidité+Baromètre

  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • TEMP = Temperature
  • HUM = Humidité
  • HUM_STAT = Status d’humidité
  • BAR = Pression barométrique
  • BAR_FOR = Météo selon la presion baro à choisir dans la liste ci-desous :

 

  • 0 = No info
  • 1 = Soleil
  • 2 = Partiellement nuageux
  • 3 = Nuageux
  • 4 = Pluie

Pluie

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=RAINRATE;RAINCOUNTER
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • RAINRATE = quantité de pluie depuis la dernière heure
  • RAINCOUNTER = cumul de pluie tombée en mm

Vent

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=WB;WD;WS;WG;22;24
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • WB = Angle du vent (0-359)
  • WD = Direction du vent (S, SW, NNW, etc.)
  • WS = 10 * Vitesse du vent [m/s]
  • WG = 10 * vitesse de la rafale[m/s]
  • 22 = Temperature
  • 24 = Temperature Windchill

les deux dernières valeurs sont TOUJOURS 22 et 24.

UV

 /json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=COUNTER;0
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • COUNTER = La valeur de l’UV avec un point décimal (obligatoire : exemple: 2.0)

Attention il y a un « ;0 » à la fin, c’est comme ça , ne l’oubliez pas.

Compteur

/json.htm?type=command&param=udevice&idx=IDX&svalue=COUNTER
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • COUNTER = Un nombre entier qui est votre comptage.

N’oubliez pas que ls compteurs Domoticz peuvent compter dans plusieurs unités :

  • Energie (kWh)
  • Gaz (m3)
  • Eau (m3)
  • Compteur (sans unité)

Et donc bien entendu pour les m 3 si vous passez des litres la valeur sera divisée par 1000 car l’unité est le m3. Le compteur affiche toujours 2 valeurs :

  • Le status est le total cumulé.
  • Le volume ou comptage du jour est affiché dabs le coin en haut à droite.

Électricité (instantané et compteur)

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=POWER;ENERGY
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • POWER = Puissance actuelle consommée.
  • ENERGY = cumul en Watt-heures (Wh) (c’est juste un « compteur virtuel », tous les cumuls doivent être faits par VOUS)

Électricité P1 smart meter

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=USAGE1;USAGE2;RETURN1;RETURN2;CONS;PROD
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • USAGE1= Conso en tarif 1
  • USAGE2= Conso en tarif 2
  • RETURN1= energy return meter tariff 1
  • RETURN2= energy return meter tariff 2
  • CONS= actual usage power (Watt)
  • PROD= actual return power (Watt)

USAGE et RETURN sont des compteurs qui ne peuvent que croitre. Vous devez y donner des valeurs en Wh sans virgule. Ainsi si votre valeur est USAGE1= 523,66 KWh vous devez envoyer 523660)

Qualité de l’air

/json.htm?type=command&param=udevice&idx=IDX&nvalue=PPM
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • PPM = CO2-concentration

Pression

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=BAR
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • BAR = Pression atmosphérique en Bar

Créer ce capteur dans « Matériel »/ »Créer capteur Virtuel »

Pourcentage

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=PERCENTAGE
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • PERCENTAGE = Le pourcentage à afficher dans le widget

Gaz

/json.htm?type=command&param=udevice&idx=IDX&svalue=0&svalue=USAGE
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • USAGE= Gaz en litre (1000 litres = 1 m³)

Ainsi si votre compteur de gaz affiche 145,332 m³ vous devez envoyer 145332.
La variable USAGE est le total des litres depuis la nuit des temps et non pas la consommation journalière.

Lux

/json.htm?type=command&param=udevice&idx=IDX&svalue=VALUE
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • VALUE = valeur de la luminosité en Lux.

Voltage

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=VOLTAGE
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • VALUE = valeur de volts a afficher sur le widget

Text sensor

Ceci permet d’afficher un texte sur un widget Domoticz.

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEXT
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • TEXT = Le texte à afficher.

 

  • Exemple http://IP:PORT/json.htm?type=command&param=udevice&idx=mon_idx&svalue=MONTEXTEAAFFICHER

 

Alert sensor

/json.htm?type=command&param=udevice&idx=IDX&nvalue=LEVEL&svalue=TEXT
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • LEVEL = (0=gris, 1=vert, 2=jaune, 3=orange, 4=rouge)
  • TEXT = Le texte à afficher.

 

Distance

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=DISTANCE

 

  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • DISTANCE = distance en ce que vous voulez comme unité, la valeur est affichée sans unité. Vous pouvez envoyer des décimales (12.6) avec un point.

Selector Switch

Il s’agit de piloter ce capteur virtuel nomme « Selector switch » ou l’on peut prédéfinir 4 niveaux (pour des dimmables par ex, ou des volets)

inter_sele

/json.htm?type=command&param=switchlight&idx=IDX&switchcmd=Set%20Level&level=LEVEL
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • LEVEL = Un nombre qui fait référence à celui défini dans le menu « Editer » du widget
  • sel_switch

Custom Sensor

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=VALUE
  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.
  • VALUE = Valeur avec un point décimal (12.345)

Paramètres additionnels (signal level & battery level)

Il y deux paramètres supplémentaires pour toutes les commandes ci dessus pour préciser la qualité de réception (radio) et le niveau de batterie.

Par défaut le niveau de signal est à 12 et le niveau de la batterie est à 255 (pas de batterie) sinon le niveau est entre 0 et 100.

Il faut ajouter ces lignes tout au bout de la chaine

exemple: &rssi=10&battery=89

User variables

Ajouter une nouvelle variable

/json.htm?type=command&param=saveuservariable&vname=uservariablename&vtype=uservariabletype&vvalue=uservariablevalue

uservariablename= le nom de la variable, évitez les accents.

  • uservariabletype = le type de valeur à stocker, entre 0 et 4 :
0 = Entier, e.g. -1, 1, 0, 2, 10 
1 = Float, e.g. -1.1, 1.2, 3.1
2 = chaine, ex coucou
3 = Date au format DD/MM/YYYY
4 = Heure au format 24hr HH:MM
  • uservariablevalue = la valeur à stocker dans cette variable

Tout cela est vérifié par l’API, si la variable n’est pas correcte , elle n’est pas enregistrée par Domoticz.

Par exemple , vous avez défini une variable stockant des nombres entiers et vous essayer d’y écrire 3.0

json.htm?type=command&param=saveuservariable&vname=code_porte_garage&vtype=2&vvalue="453aZVT"

ici je crée une variable nommée code_porte_garage en type chaine de caractères et j’uy mets « 453aZVT » dedans.

Modifier une variable

/json.htm?type=command&param=updateuservariable&vname=USERVARIABLENAME&vtype=USERVARIABLETYPE
&vvalue=USERVARIABLEVALUE
  • USERVARIABLENAME, le nom de la variable
  • USERVARIABLETYPE le type (cf ci-dessus)
  • USERVARIABLEVALUE la nouvelle valeur

Liste de toutes les variables

/json.htm?type=command&param=getuservariables

vous affiche toutes les variables.

Pour obtenir une seule variable et ses valeurs:

/json.htm?type=command&param=getuservariable&idx=IDX
  • IDX = idx de la variable, allez voir dans les varialbes utilisateur dans »Réglages/Plus d’options » c’est le numéro IDX

Détruire une variable

/json.htm?type=command&param=deleteuservariable&idx=IDX
  • IDX = idx de la variable, allez voir dans les varialbes utilisateur dans »Réglages/Plus d’options » c’est le numéro IDX

Plans

Lister les pièces

/json.htm?type=plans&order=name&used=true

Lister tous les devices d’une pièce

/json.htm?type=command&param=getplandevices&idx=IDX
  • IDX = idx de votre pièce

Historiques

On affiche gràce à ces instructions l’historique des capteurs. Alluamges,extenction avec les dates pour les switches, températures et dates pour les autres.

  • IDX = idx de votre capteur. A obtenir depuis l’écran des dispositifs.

Switch

/json.htm?type=lightlog&idx=IDX

Tempèratures

/json.htm?type=graph&sensor=temp&idx=IDX&range=day
/json.htm?type=graph&sensor=temp&idx=IDX&range=month
/json.htm?type=graph&sensor=temp&idx=IDX&range=year

Setpoint

See Temperature

Energie, Gaz, Eau

/json.htm?type=graph&sensor=counter&idx=IDX&range=day  (add &method=1 for instantaneous power consumption)
/json.htm?type=graph&sensor=counter&idx=IDX&range=month
/json.htm?type=graph&sensor=counter&idx=IDX&range=year

 

Pas encore documenté

Autoriser les nouveaux dispositifs

Cela correpond à la case « Autoriser les nouveaux dispositifs » du menu « Réglages/Paramètres »

/json.htm?type=command&param=allownewhardware&timeout=5

 

Tous les plannings

Retrouvez tout ce qui est planifié par :

../json.htm?type=schedules

Typical result :

{
   "result" : [
      {
         "Active" : "true",
         "Date" : "",
         "Days" : 128,
         "DevName" : "Porch Light",
         "DeviceRowID" : 52,
         "Hue" : 0,
         "IsThermostat" : "false",
         "Level" : 100,
         "MDay" : 0,
         "Month" : 0,
         "Occurence" : 0,
         "Randomness" : "false",
         "ScheduleDate" : "2016-04-01 20:33:00",
         "Time" : "00:20",
         "TimerCmd" : 0,
         "TimerID" : 9,
         "TimerType" : 4,
         "TimerTypeStr" : "After Sunset",
         "Type" : "Device"
      },

Afficher les plannings que pour les devices

../json.htm?type=schedules&filter=device

Afficher les plannings que pour les Scenes

../json.htm?type=schedules&filter=scene

Afficher les plannings que pour les Thermostats

../json.htm?type=schedules&filter=thermostat

Activer un planning spécifique ?

qu’est timerID ?

../json.htm?type=command&param=enabletimer&idx=timerID

Désactiver un planning spécifique

../json.htm?type=command&param=disabletimer&idx=timerID

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Commandes vocales via Jarvis

J’avais déjà parlé ici de reconnaissance vocale via imperihome Android ou YANA.

Je voudrais vous présenter ici un nouvel outil que j’ai découvert récemment nommé JARVIS.

Son grand avantage par rapport à d’autres outils : LE FRANCAIS est natif !!

jarvis Vous emballez quand même pas trop, on est pas dans Ironman. jarvis_logo_red

L’intérêt de ce Jarvis ci est de faire de la reconnaissance vocale et d’y enchaîner des actions :

  • « Jarvis » « météo » vous donnera vocalement la météo de weather Underground (plugin+enregistrement) ,
  • « Jarvis » « tu sais quelle heure il est ? » dira l’heure.

La reconnaissance se base sur des mots clés que vous définissez vous même. Ainsi dans le « tu sais quelle heure il est » le mot clé recherché peut être défini à *HEURE* et donc toute phrase contenant le mot heure donnera l’heure. Cette reconnaissance d’un mot permet de lancer des scripts bash qui font des actions. « Heure » lance une commande linux :

date +%H%M

En plus d’être extrêmement paramétrable car on peut programmer soit même les actions à effectuer à l’issue d’une phrase, on peut lancer des taches vocales via cron (toutes les 10 minutes dire « Bonjour votre Altesse »), il y a des plugins dont un destiné à de la domotique et bien plus.

La phase de reconnaissance vocale peut utiliser soit un moteur local (pocketsphynx) soit Bing.

La page de référence est ici http://domotiquefacile.fr/jarvis/ et Alexylem le concepteur du soft à bien fait les choses puisque explications d’ installation et d’utilisation du soft sont très claires et didactiques (comprenez par la que je ne détaillerai pas ces phases 😆 ).

Bien entendu nous verrons ici comment intégrer Jarvis à notre Domoticz.

A noter Jarvis ne fonctionne QUE sur Raspberry, il faut donc un micro et des enceintes reliés à celui-ci.

Les points forts

Énormément de choses sont paramétrables, plusieurs moteurs de synthèse ou reconnaissance vocable, liste de mots clés reconnus , actions à déclencher, des plugins météo, gmail, de domotique.

On peut aussi lancer Jarvis en ligne de commande pour lui faire faire des actions, on peut utiliser les scripts:/// de Action ON et Action OFF pour lancer des commandes au basculement d’un switch. jarvis.sh -s « Le salon vient de s’allumer » juste pour faire dire une phrase ou -x pour exécuter une commande interne Jarvis

Via Lua un petit os.execute fera le job./home/pi/jarvis/jarvis.sh -x « c’est comment la météo » lance la commande METEO de Jarvis.

Installation

Je vous laisse parcourir le site de Jarvis pour effectuer l’installation.

Sachez toutefois qu’il vous faudra installer sox, alsamixer,aplay, arecord,mpg123 et jq.

sudo apt-get install sox alsamixer aplay arecord mpg123

Pour jq vous trouverez la procédure ici https://easydomoticz.com/manipuler-les-donnees-json-de-domoticz-en-shell/

Sinon, pas d’inquiétude, la procédure d’installation vérifie tout cela et vous donne les commandes à taper.

Puis l’assistant d’installation vous guide dans tout le processus de configuration y compris la détection de vos micros et hauts-parleurs.

A noter : Les meilleurs résultats de reconnaissance que j’ai pu obtenir sont lors de l’utilisation de la reconnaissance vocale Microsoft Bing qui utilise Internet (à mon grand désespoir).

Alexylem à un joli tableau récapitulatif ici http://domotiquefacile.fr/jarvis/content/stt

Pensez à votre vie privée lorsque vous transmettez des commandes à des tiers sur Internet (Bing, Google, Wit)

Une fois familiarisé avec Jarvis, attaquons nous au coté Domoticz de façon à piloter quelque chose à la voix.

Intégration avec Domoticz

Nous allons utiliser un plugin générique Home Automation de Jarvis.

Ce plugin permet d’envoyer des requêtes http à la voix .

Dans le store Jarvis

jarvis_storeInstallez le plugin « Home Automation » puis « Home Control ».

De même n’hésitez pas à faire des mise à jour du plugin dans Store > Installed > Home Control > Update en attendant les mise à jour automatique des plugin (work in progress).

Il s’affiche une page d’aide que nous allons détailler et adapter à Domoticz.

Loading...
## Description
If your home automation system can be controlled via http requests, this Jarvis plugin is just for you.
It will allow you to simply turn on and off your devices.

## Configuration

1. Indicate the turn on and turn off http urls (with `[ADDRESS]` placeholder):

   ```
   pg_hc_turnon_url="http://192.168.1.1/home.php?action=on&device=[ADDRESS]"
   pg_hc_turnoff_url="http://192.168.1.1/home.php?action=off&device=[ADDRESS]"
   ```

2. List your device names & corresponding addresses in `json` format

   ```
   pg_hc_config='{ "devices":[
       { "name": "BEDROOM", "address": "A1"},
       { "name": "LIVING ROOM", "address": "A2"},
       { "name": "BAR", "address": "A3"}
   ]}'
   ```

## Usage
```
You: turn on the bar
> http://192.168.1.1/home.php?action=on&device=A3
Jarvis: Done
```

## Author
[alexylem](https://github.com/alexylem)
Press [Enter] to continue

On voit ici qu’il nous faudra adapter les url suivant les spécifications de l’API Json de Domoticz et indiquer dans le tableau pg_hc_config le nom à prononcer et l’idx domoticz.

Modifiez les turnon_url et turnoff_url avec vos ip:ports Domoticz et l’appel à l’api JSON qui vous convient en laissant [ADDRESS] à l’endroit ou vous devez envoyer l’idx Domoticz.

Rappel : l’idx c’est cette colonne :idx_domoticz

Faites les modifs  via le menu « Config » du plugin « Home Automation » de Jarvis pour obtenir quelque chose comme :

pg_hc_turnon_url="http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=[ADDRESS]&switchcmd=On"
pg_hc_turnoff_url="http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=[ADDRESS]&switchcmd=Off"


pg_hc_config='{ "devices":[
    { "name": "lumière", "address": "112"},
    { "name": "Volet cuisine", "address": "33"},
    { "name": "volet salon", "address": "34"}
]}'

Ou 192.168.181:8080 est mon Domoticz, lumière et 112 , le nom et l’idx de la lumière , volet cuisine, 33 …

En prononçant « allume lumière » on ira donc activer l’idx 112 de Domoticz  via « pg_hc_turnon_url »

N.B  Les plugins sont dans le dossier plugins, il y a un sous dossier par plugin, puis dans celui ci un readme.md qui donne quelques explications au sujet du plugin , puis des dossiers /fr ou /en ou se situent les commandes dans la langue correspondante. Ce sont des fichier texte bash. Vous pouvez agir directement sur ces fichiers. La modification est immédiate, pas besoin de relancer Jarvis sauf si vous avez changé un mot à reconnaitre..

Je vous conseille de prendre des mots vraiment discriminants , par exemple , la reconnaissance du mot « volets » donne souvent le verbe « voler » et donc la phrase « ouvre voler salon » n’existant pas …

alexylem vient de me préciser que en utilisant « vole » tout simplement (la comparaison vérifie si le nom du device est « inclue » dans la commande reçue) cela devrait fonctionner.

Et comme les plus perspicaces d’entre vous auront remarqué qu’il faut dire « Allume volet salon » ou « éteint volet salon » ce qui peut paraitre bizarre nous verrons prochainement comment améliorer cela en ajoutant les mots « Ouvre » et « Ferme ».

Un petit film de présentation ici

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Prévision de pluie pour Domoticz

Météo France propose un service bien pratique et qui de nombreuses fois m’a prouvé son efficacité lors de sortie sportives : le fameux « Va t’il pleuvoir dans l’heure ». http://www.meteofrance.com/previsions-meteo-france/previsions-pluie

Ainsi vous saurez pour une ville donnée si vous avez la malchance de voir tomber la pluie dans l’heure qui suit et ainsi vous éviter un inutile arrosage du jardin ou une ballade humide.

A force de chercher j’ai trouvé l’API en question chez Météo France. :mrgreen:

Vous trouverez ici  une extension Chrome : https://github.com/liorzoue/ext-meteo affichant le fameux  » ‘Va-t-il pleuvoir dans l’heure ?' », merci à l’auteur liorzoue pour son travail et dont je reprends en fin d’article le message de prudence quand à l’utilisation de cette API.

 

L’API

  • Récupérer le code insee de votre ville ici  (ce n’est pas le code postal!) ajoutez y le chiffre 0 à la fin

sinon rendez vous ici avec le nom de votre ville tout au bout.

http://www.meteofrance.com/mf3-rpc-portlet/rest/lieu/facet/pluie/search/ma_ville_

avec XXX le nom ou le CP de votre ville

  • Récupérer les prévisions via url

http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/330210

la réponse est du JSON , je ne sais pas tout en lire mais l’essentiel est

 "niveauPluieText" : [ "De19h35 à 20h35 : Pas de précipitations" ],
{
  "idLieu" : "330210",
  "echeance" : "201604241935",
  "lastUpdate" : "19h25",
  "isAvailable" : true,
  "hasData" : true,
  "niveauPluieText" : [ "De19h35 à 20h35 : Pas de précipitations" ],
  "dataCadran" : [ {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  }, {
    "niveauPluieText" : "Pas de précipitations",
    "niveauPluie" : 1,
    "color" : "ffffff"
  } ]
}

Un script bash + un switch virtuel

Je vais donc créer un switch virtuel qui passera à ON que si de la pluie est annoncée, une notification est associée à ce passage à ON

Après interrogation du site web, récupérons donc le contenu de niveauPluieText par utilisation de JQ  jdont l’installation est expliquée ici, supprimons les caractères indésirables de texte horaire, de ‘[‘ ‘]’ et espaces.

Dans ce script changez vos ip de votre Domoticz et votre CODE INSEE.

Dans la ligne curl http://192.168…..’ modifiez idx=215 par votre idx de votre switch virtuel.

#!/bin/bash
pl=$(curl -s "http://www.meteofrance.com/mf3-rpc-portlet/rest/pluie/773800"|jq -r .niveauPluieText|cut -d ' ' -f7|tr -d '['|tr -d ']'|tr -d ' '|sed 's/ //g'|cut -d ' ' -f1)
#echo $pl
pluie=$(echo $pl|cut -d ' ' -f1)
#echo $pluie
case $pluie in 

 "Pas" )
 curl 'http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=215&switchcmd=Off&level=0' 
 echo "Pas de pluie" ;;
 "Précipitations" )
 curl 'http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=215&switchcmd=On&level=0' 
 echo "Pluie Prevue" ;;

esac

Il faudra bien entendu lancer toutes les heures le script via crontab pour mettre à jour le widget

Attention !

L’extension utilise une API non documentée (à ma connaissance) de Météo France, cette extension peut donc cesser de fonctionner à tout moment. 🙂

Et hop, rangez vos parapluies

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/