SmartPlug AWOX
Publié : 17 janv. 2017, 02:43
Bonjour a tous,
Voici un petit script permettant d'interroger les SmartPlug de chez Awox pour remonter la consommation instantanée.

Pré-requis :
-Un dongle ou un Rpi3 avec le Bluetooth installé et fonctionnel.
-Les paquets gatttool et bluetoothctl
Identifié votre SmartPlug Awox
Tout d'abord vous devez récupérer l'Adresse Mac de votre SmartPlug, pour cela lancer un scan bluetooth avec la commande suivante:
patienter et vous devriez voir des nouvelles lignes apparaitres comme ceci :
Ici, l'adresse de votre SmartPlug est F4:C8:5E:E5:4F:FD.
Configuration de domoticz
Ajouter un capteur virtuel de type Utilisation (Electrique), noter bien son IDX, il sera utile à l'étape suivante
Ajout et configuration du script
Voici le script : Awox.py
Vous devez modifier votre Adresse de serveur, Votre Adresse de SmartPlug et l'IDX du capteur virtuel
Exécution automatique du script
En ligne de commande, avec l'utilisateur pi, lancer la commande :
Puis ajouter à la fin la ligne suivante :
Bien sur vous devez avoir placer votre script dans le répertoire /home/pi/domoticz/scripts/python/
Voila bon relevé à vous
Source : https://github.com/sourceperl/smartplugctl
Edit: comme vous pouvez le voir dans la source, il est également possible de faire du on/off, si vous le souhaitez je pourrais ajouter ces fonctionnialités à ce script par la suite
Voici un petit script permettant d'interroger les SmartPlug de chez Awox pour remonter la consommation instantanée.

Pré-requis :
-Un dongle ou un Rpi3 avec le Bluetooth installé et fonctionnel.
-Les paquets gatttool et bluetoothctl
Identifié votre SmartPlug Awox
Tout d'abord vous devez récupérer l'Adresse Mac de votre SmartPlug, pour cela lancer un scan bluetooth avec la commande suivante:
Code : Tout sélectionner
bluetoothctl
scan onCode : Tout sélectionner
bluetoothctl
[NEW] Controller C8:27:EB:34:AF:5A domoticz [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:34:AF:5A Discovering: yes
[NEW] Device F4:C8:5E:E5:4F:FD SMP-B16-FR
[CHG] Device F4:C8:5E:E5:4F:FD Connected: yes
[CHG] Device F4:C8:5E:E5:4F:FD Connected: no
[DEL] Device F4:C8:5E:E5:4F:FD SMP-B16-FR
[bluetooth]# scan off
[CHG] Controller C8:27:EB:34:AF:5A Discovering: no
Discovery stopped
[bluetooth]# exit
[DEL] Controller C8:27:EB:34:AF:5A domoticz [default]
Configuration de domoticz
Ajouter un capteur virtuel de type Utilisation (Electrique), noter bien son IDX, il sera utile à l'étape suivante
Ajout et configuration du script
Voici le script : Awox.py
Vous devez modifier votre Adresse de serveur, Votre Adresse de SmartPlug et l'IDX du capteur virtuel
Code : Tout sélectionner
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import print_function
# domoticz server & port information
domoticzserver = "192.168.1.7:8080"
# SmartPlug Adress
ble_addr="F4:B8:5E:E5:4F:FD"
# domoticz IDX
Idx="71"
#___________________________________________________________________________________________________
import pprint
import argparse
import urllib
import urllib2
import urlparse
import sys
import time
import pexpect
# some const
RET_CODE_OK = 0
RET_CODE_ERROR = 1
# some var
return_code = RET_CODE_OK
# format gatttool commands
cmd_prefix = 'gatttool -b {0}'.format(ble_addr)
cmd_status = cmd_prefix + ' --handle=0x2b --char-write-req --value=0f050400000005ffff --listen'
# launch command and wait notification
p = pexpect.spawn(cmd_status)
i = p.expect([pexpect.TIMEOUT, pexpect.EOF, r'0f 0f.*ff ff'], timeout=10.0)
p.terminate()
# print status
if i == 0 or i == 1:
print('error occur (gatttool say = \'%s\')' % p.before.rstrip(), file=sys.stderr)
return_code = RET_CODE_ERROR
elif i == 2:
# decode data (plug state at byte index 4, power in mW at bytes index 6 to 9)
data = p.after.split()
# print('RAW = %s' % data)
status = 'on' if int(data[4], 16) == 1 else 'off'
power = str(int(data[6]+data[7]+data[8]+data[9], 16) / 1000)
# print result
print('plug state = %s' % status)
print('plug power = %s W' % power)
url = 'http://'+domoticzserver+'/json.htm?type=command¶m=udevice&idx='+Idx+'&nvalue=0&svalue='+power+''
httpresponse = urllib.urlopen(url)
print ('Uploaded Instant Conso')
return_code = RET_CODE_OK
# return error code
sys.exit(return_code)
Exécution automatique du script
En ligne de commande, avec l'utilisateur pi, lancer la commande :
Code : Tout sélectionner
crontab -eCode : Tout sélectionner
*/5 * * * * /home/pi/domoticz/scripts/python/Awox.pyVoila bon relevé à vous
Source : https://github.com/sourceperl/smartplugctl
Edit: comme vous pouvez le voir dans la source, il est également possible de faire du on/off, si vous le souhaitez je pourrais ajouter ces fonctionnialités à ce script par la suite