Ces prises ne sont pas documentés, mais offre un bon potentiel pour le prix. J’avais donc participé à l’étude des commandes pour la piloter sans l’application IOS (sous le pseudo supermat).

Adresse du forum : http://www.dealabs.com/bons-plans/prise-wifi-/85521?page=12

Adresse du git (Pleins d’infos dans le Wiki) :https://github.com/supermat/SmartPlug

Finalement, j’avais parfaitement intégré ces prises (j’en ai 4 à ce jour) dans OpenHab, suivi de consommation, alerte et auto-extinction si le radiateur radiant de la SDB est resté allumé, idem pour le fer à repasser…

Depuis le 30/04/2018, j’ai créé un plugin python pour Domoticz :

https://matdomotique.wordpress.com/2018/04/30/plugin-smartplug-maginon-pour-domoticz/

Je pars donc de ce que j’avais mis en place pour l’adapter à Domoticz que j’utilise maintenant. Le but est simplement de créer un script python d’interrogation la page http qui répond la consommation instantanée et total, puis de mettre à jour capteur virtuel de consommation de Domoticz.

Pré-requis

Installation du package request, qui nous permettra d’interroger la prise en http pour les informations de consommation.

apt-get install python-requests

Création d’un interrupteur virtuel dans Domoticz

Allez dans la rubrique réglage puis matériel de Domoticz. Et depuis le matériel virtuel, cliquer sur « Créer capteur virtuel ».

domo1

Choisissez un nom puis le type de capteur Interrupteur.

domo2

Rendez vous dans la rubrique interrupteur et cliquer sur « Editer » celui-ci

domo3

Enfin, mettez dans les champs on et off les bonne URL, à savoir :

Pour l’allumage (On), en remplacant log et pwd par login et mot de passe, par défaut admin pour les deux. Et en mettant l’IP de la prise à la place de monip.

http://log:pwd@monip/goform/SystemCommand?command=GpioForCrond+1

Et pour éteindre (Off) :

http://log:pwd@monip/goform/SystemCommand?command=GpioForCrond+0

Puis sauvegarder et tester votre nouvel interrupteur. Ça fonctionne !

domo4

Création d’un capteur virtuel de mesure d’énergie dans Domoticz

Comme pour l’interrupteur nous allons créer un nouveau capteur virtuel, mais de type Electrique (Instant + Compteur).

domo5

Nous allons ensuite chercher dans réglages puis dispositifs de Domoticz, l’idx du nouveau capteur, ici 143, cela nous servira pour le script.

domo6

Note : Le capteur a été créé dans le menu Mesure de Domoticz.

Création du script

Il s’agit maintenant d’interroger la prise pour connaitre la consommation instantanée et la valeur du compteur depuis sa dernière initialisation.

La consommation instantanée se retrouve grâce à l’URL suivante (log:pwd@monip comme déjà vu plus haut) :

http://log:pwd@monip/goform/SystemCommand?command=GetInfo+W

Et le compteur

http://log:pwd@monip/goform/SystemCommand?command=GetInfo+E

Pour mettre à jour notre capteur virtuel Domoticz, il s’agit de la commande suivante (avec MONIDX correspondant à l’idx relevé plus haut et CONSOINST;CONSOTOT correspondant aux valeur instantanées et cumulées de l’energie) :

http://127.0.0.1:8080//json.htm?type=command&param=udevice&idx=MONIDX&nvalue=0&svalue=CONSOINST;CONSOTOT

Nous utiliserons donc le script python suivant, nommé smartplug.py, créer dans Domoticz/scripts/python et où il faudra modifier les valeurs en rouge pour utiliser les vôtres. (Il n’y a volontairement pas d’accents car sinon le script ne fonctionne pas).

#!/usr/bin/python

import json
import requests
from requests.auth import HTTPBasicAuth

############# Parametres #################################

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

domoticz_ip='127.0.0.1'
domoticz_port='8080'
user=''
password=''
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les IDX des switch "Alerte"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
periph_idx={'Smartplug1': 143
}

############### fin des parametres #############################
json_url_text1='/json.htm?type=command&param=udevice&idx='
json_url_text2='&nvalue=0&svalue='

def maj_widget(domoticz_idx,val):
   requete='http://'+domoticz_ip+':'+domoticz_port+json_url_text1+domoticz_idx+json_url_text2+val
   print (requete)
   r=requests.get(requete,auth=HTTPBasicAuth(user,password))
   if r.status_code != 200:
      print ("Erreur API Domoticz")
      print ("Erreur API Domoticz")

headers = {
   'User-Agent': 'Mozilla/5.0',
}

try:
   rW = requests.get('http://login:pwd@monip/goform/SystemCommand?command=GetInfo+W', headers=headers)
   rE = requests.get('http://login:pwd@monip/goform/SystemCommand?command=GetInfo+E', headers=headers)

   statusW=rW.status_code
   statusE=rE.status_code

   if statusW == 200 & statusE == 200:
      plugWResult=rW.text
      plugEResult=rE.text
      valW= plugWResult[1845:1849]+"."+plugWResult[1849:1852];
      valE= plugEResult[1845:1849]+"."+plugEResult[1849:1852];
      domoticz_idx=str(periph_idx['Smartplug1'])
      maj_widget (domoticz_idx,valW+';'+valE)
   else:
      print ("Erreur Api Plug Smartplug1")
except requests.exceptions.ConnectionError:
   print ("Erreur de connexion, la prise est elle branchee")

Testez le script grâce à

python ./domoticz/scripts/python/smartplug.py

Votre capteur Domoticz devrait se mettre à jour avec les valeurs relevées sur la prise. Vous pouvez vérifier l’heure de mise à jour du capteur :

domo7.png

Automatisation

Pour automatiser la mise à jour toutes les minutes, nous allons utiliser crontab. C’est un utilitaire qui permet de définir pour une ligne de commande à exécuter, une planification horaire.
Pour voir les taches planifiées actuellement :

crontab -l

Chaque ligne présentés (par défaut, il n’y aura aucune ligne) se comprends comme suit :

# m h jour mois js   commande
# * * * * *  commande à exécuter
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── jour de la semaine (0 - 7) (0 à 6 du dimanche au samedi)
# │ │ │ └────────── mois(1 - 12)
# │ │ └─────────────── jour du mois (1 - 31)
# │ └──────────────────── heure(0 - 23)
# └───────────────────────── minute (0 - 59)

Le caractère * signifie qu’il n’y a rien de défini pour ce critère donc est exécuté pour chaque valeur. Si aucune valeur n’est défini, ce sera toutes les minutes, ce sera notre cas.

Pour éditer la liste des taches :

crontab -e

Si c’est la première utilisation, il faudra choisir l’éditeur par défaut, nano pour moi.

Puis ajouter la ligne suivante :

* * * * * python ./domoticz/scripts/python/smartplug.py

Enregistrez, votre capteur se mettra maintenant à jour toutes les minutes.

Pour l’utilisation de plusieurs prises, il suffit de multiplier les capteurs et de compléter le script.

Si ça ne fonctionne pas !

Vérifier que votre prise répond correctement

Tester l’URL suivante dans votre navigateur (Chrome) :

http://login:pwd@monip/goform/SystemCommand?command=GetInfo+W

Si rien n’est branché sur la prise, vous devriez tomber sur l’écran suivant, où la ligne $01W0000007 correspond à 0.07Watt.

snip_20161106144706

Sources

Pour l’utilisation de request : http://easydomoticz.com/domoticz-prend-lair-de-paris-avec-airparif/

Pour l’utilisation de cron : https://www.raspberrypi.org/documentation/linux/usage/cron.md

Pour les infos sur la prise : https://github.com/supermat/SmartPlug