Page 1 sur 2

SmartPlug AWOX

Publié : 17 janv. 2017, 02:43
par zaraki673
Bonjour a tous,

Voici un petit script permettant d'interroger les SmartPlug de chez Awox pour remonter la consommation instantanée.

Image

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 on
patienter et vous devriez voir des nouvelles lignes apparaitres comme ceci :

Code : 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]
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

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&param=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 -e
Puis ajouter à la fin la ligne suivante :

Code : Tout sélectionner

*/5 * * * * /home/pi/domoticz/scripts/python/Awox.py
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

Re: SmartPlug AWOX

Publié : 17 janv. 2017, 15:45
par deennoo
Super ! Un futur plugin !

https://www.domoticz.com/wiki/Developin ... hon_plugin

Indispensable le on/off a mon avis

Encore gatttool, pour utiliser ton script, il ne faut pas avoir la detection de presence par ebeacon de jml.

Il y a bluepy qui semble tres bien gerer le bluetooth (presence, action) sans etre bloquant.
https://github.com/IanHarvey/bluepy

Qu'en penses tu ?

Re: SmartPlug AWOX

Publié : 18 janv. 2017, 23:26
par zaraki673
euh futur plugin, t'es dur :lol: mais pourquoi pas effectivement ca serais bien mieux, je vais regarder ça

pour le on/off, j avoue, j ai été paresseux sur le coup (j en ai pas besoin, la prise me sert juste a monitorer ma baie info), je vais le rajouter c'est rapide

pour bluepy, je connaissais pas, mais la source que j'ai utilisé pour faire ce script l'utilise également dans une v2, du coup le passage devrait se faire facilement

je m'occupe de tt ça ASAP

Re: SmartPlug AWOX

Publié : 19 janv. 2017, 05:38
par zaraki673
hummm

pourrais tu me guider pour activer ce repertoire plugins sur la beta :oops:

j'ai ça :

Code : Tout sélectionner

Error: PluginList: Error 'Error document empty.' at line 0 column 0 in XML ''.
je vois pas comment MildaGenius à fait après avoir eu ce message d'erreur

je viens d installer un PI3 avec jessie lite et compile domoticz en suivant le wiki (en rajoutant les packets manquant et demandé pendant le cmake)
du coup je suis sur une version v3.6371 et sur le canal beta

je sèche un peu pour cette nuit :cry:

Edit : en fait c est mon debut de plugin le problème, ca avance ... :roll:

Re: SmartPlug AWOX

Publié : 20 janv. 2017, 01:20
par zaraki673
Bon je seche sur l'import du module bluepy ... j ai demandé des infos sur le framework python de domoticz :cry:

Re: SmartPlug AWOX

Publié : 21 janv. 2017, 01:34
par zaraki673
Bon des ptites news,

alors pour les Plugins python, ca marche nickel :D (tester avec les plugins fournis en exemple)

et voila mon premier plugin en piece jointe pour le Smartplug avec Bluepy qu'il faut avoir installer au préalable

Code : Tout sélectionner

sudo apt-get install python3-pip libglib2.0-dev
pip3 install bluepy
Et comme bluepy est pas dans les répertoires python utilisé par Domoticz

Code : Tout sélectionner

sudo cp -r /usr/local/lib/python3.4/dist-packages/bluepy/ /usr/lib/python3.4/
ou plus propre :

Code : Tout sélectionner

sudo ln -s /usr/local/lib/python3.4/dist-packages/bluepy /usr/lib/python3.4/bluepy/
(si je ne me trompe pas)

Le On/off est de la partie :D

Re: SmartPlug AWOX

Publié : 14 mars 2017, 22:00
par deennoo
beau boulot !

Re: SmartPlug AWOX

Publié : 10 août 2017, 14:41
par kekeoo
BOnjour à tous!

Je me permets de relancer un peu ce topic.
J'ai acheter le smartplug Awox et j'aimerais le lié à Domoticz. J'ai un Raspi 2B+ + un dongle bluetooth qui normalement fonctionne. j'ai installé les paquets gattool et bluetoothctl

Hors quand je lance le scan :

Code : Tout sélectionner

bluetoothctl
scan on
il ne me trouve rien...

Y a t'il une action à effectué sur la prise??

Merci de votre réponse et merci pour le script :)


EDIT: Y'a t'il une possibilité d’incompatibilité Dongle BLuetooth 2.0/ Smartplug Awox (qui semble être en bluetooth 4.0 LE)???

Re: SmartPlug AWOX

Publié : 11 août 2017, 17:55
par deennoo
Oui bt2 et bt 4le ne sont pas la même chose, change de dongle.

La commande pour un scan de bt le est
Sudo hcitool lescan

Re: SmartPlug AWOX

Publié : 12 août 2017, 00:04
par zaraki673
et pour avoir la dernière version du plugin compatible domoticz v3.8153 et sup (pour le moment) : https://github.com/sasu-drooz/Domoticz-AwoxSMP