domoticz et prise connecté smart life

Forum dédié à l'accès à DomoticZ depuis l'extérieur de chez vous : routage de ports, VPN, VPS ...
La sécurité, c'est important !!
Keros
Messages : 3320
Enregistré le : 23 juil. 2019, 20:57

Re: domoticz et prise connecté smart life

Message par Keros »

Le dossier Domoticz-TUYA est bien créé dans le dossier plugin de DomoticZ ?

vulbas
Messages : 411
Enregistré le : 24 janv. 2017, 18:45

Re: domoticz et prise connecté smart life

Message par vulbas »

ha oui efeectivement, le dossier s'etait mal placé. desolé .
merci pour ton aide.


du coup j'ai d'autre question.
j'ai une clim avec un module wifi qui passe par tuya.
quand j'agit via smart life sur mon tel je vois bien des trucs passer dans les log de DZ.
la question c'est quoi en faire des ces info ?
comment les exploiter pour gerer ma clim ?

par exemple

Code : Tout sélectionner

2021-09-22 12:03:23.531 tuya: (tuya) TUYA plugin started
2021-09-22 12:03:23.532 tuya: (tuya) Debug logging mask set to: PYTHON CONNECTION
2021-09-22 12:03:23.532 tuya: (tuya) 'HardwareID':'52'
2021-09-22 12:03:23.532 tuya: (tuya) 'HomeFolder':'/home/pi/domoticz/plugins/Domoticz-TUYA-Plugin/'
2021-09-22 12:03:23.532 tuya: (tuya) 'StartupFolder':'/home/pi/domoticz/'
2021-09-22 12:03:23.532 tuya: (tuya) 'UserDataFolder':'/home/pi/domoticz/'
2021-09-22 12:03:23.532 tuya: (tuya) 'Database':'/home/pi/domoticz/domoticz.db'
2021-09-22 12:03:23.532 tuya: (tuya) 'Language':'fr'
2021-09-22 12:03:23.532 tuya: (tuya) 'Version':'1.0.12'
2021-09-22 12:03:23.532 tuya: (tuya) 'Author':'Wagner Oliveira contributed Xenomes'
2021-09-22 12:03:23.532 tuya: (tuya) 'Name':'tuya'
2021-09-22 12:03:23.532 tuya: (tuya) 'Port':'0'
2021-09-22 12:03:23.532 tuya: (tuya) 'Username':'xxxxxxxxxx@free.fr'
2021-09-22 12:03:23.532 tuya: (tuya) 'Password':'xxxxxxxxxxxx'
2021-09-22 12:03:23.532 tuya: (tuya) 'Key':'tuya'
2021-09-22 12:03:23.532 tuya: (tuya) 'Mode1':'1'
2021-09-22 12:03:23.532 tuya: (tuya) 'Mode2':'tuya'
2021-09-22 12:03:23.532 tuya: (tuya) 'Mode6':'18'
2021-09-22 12:03:23.532 tuya: (tuya) 'DomoticzVersion':'2021.1 (build 13482)'
2021-09-22 12:03:23.532 tuya: (tuya) 'DomoticzHash':'e8eb6e363'
2021-09-22 12:03:23.532 tuya: (tuya) 'DomoticzBuildTime':'2021-08-24 17:14:18'
2021-09-22 12:03:23.533 tuya: (tuya) Device count: 0
2021-09-22 12:03:23.534 tuya: (tuya) in handlethread
2021-09-22 12:03:23.638 tuya: (tuya) onHeartbeat called time=1632305003.6379702
2021-09-22 12:03:23.639 tuya: (tuya) in handlethread
2021-09-22 12:03:23.639 tuya: (tuya) Device count: 0
2021-09-22 12:03:33.055 tuya: (tuya) onHeartbeat called time=1632305013.0551653
2021-09-22 12:03:43.074 tuya: (tuya) onHeartbeat called time=1632305023.07472
2021-09-22 12:03:53.093 tuya: (tuya) onHeartbeat called time=1632305033.093152
2021-09-22 12:04:03.069 tuya: (tuya) onHeartbeat called time=1632305043.0695364
2021-09-22 12:04:13.089 tuya: (tuya) onHeartbeat called time=1632305053.089601
2021-09-22 12:04:23.057 tuya: (tuya) onHeartbeat called time=1632305063.056877

baboun2807
Messages : 40
Enregistré le : 30 déc. 2015, 23:43

Re: domoticz et prise connecté smart life

Message par baboun2807 »

Bonjour,

Certains d'entre vous ont-ils réussi à remonter les infos de consommation électrique du Hiking DDS238-2 Wifi?
Je peux contrôler le module (https://github.com/Xenomes/Domoticz-TUYA-Plugin.git) mais ce plugin ne permet pas de remonter les autres informations.

je suis tombé là dessus (https://githubmemory.com/repo/sincze/Do ... lug-Plugin) mais je n'arrive pas à le mettre en oeuvre.

Merci par avance de vos retours :)
Domoticz sur Raspberry Pi 2/ ECO DEVICE / compteur d'eau à impulsion / Plusieurs sondes Oregon / Chacon ON/OFF encastrable CH54555 ou CH54755

yannig
Messages : 53
Enregistré le : 04 oct. 2018, 14:34

Re: domoticz et prise connecté smart life

Message par yannig »

Hello,

J'ai bien galéré mais j'ai enfin réussis à remonter les conso de prises connectés Tuya Smart :D

Impossible de passer par les anciens plugins, je n'ai jamais réussis à les faire fonctionner.

Par contre j'ai réussis à remonter des infos avec le script de test get_dps.py fourni par le dev Sincze https://github.com/sincze/Domoticz-Tuya ... lug-Plugin et modifié pour dans ce sujet du forum https://www.domoticz.com/forum/viewtopi ... &start=260 pour fonctionner avec le protocole 3.3.

Je voyais bien apparaitre l'intensité (Ampère), le voltage (Volts) et la puissance (Watts).
Parfois j'ai un problème de connexion qui m'empêche de me connecter à mes devices, il faut soit couper l'appli TUYA sur le smartphone soit débracher et rebrancher manuellement le device de la prise.

Je remonte les infos sur deux prises NOUS de base et une prise générique sans marque toutes en firmware v1.1.8.

Vu mon peu de connaissance en python, j'ai bricolé un script qui mets à jour des virtual devices créés à la main et lancé dans un cron.

Ca marche sur un Domoticz en container sur un NAS Synology.
production solaire le 5 juillet
production solaire le 5 juillet
Capture d’écran 2022-07-05 à 17.26.14.png (277.43 Kio) Vu 694 fois
Modifié en dernier par yannig le 05 juil. 2022, 17:28, modifié 3 fois.
Objets connectés :
- 7 interfaces Sauter cozytouch fil pilote
- 2 radiateurs Sauter Malao
- Bridge Cozytouch
- caméra Heden Cloud v5.6
- tondeuse Landroid Worx
- Netatmo Home Coach
Semi connecté :
- Ballon d'eau chaude Sauter Prodigio

yannig
Messages : 53
Enregistré le : 04 oct. 2018, 14:34

Re: domoticz et prise connecté smart life

Message par yannig »

Pour installer mes compteurs Tuya j'ai effectué les manipulations suivantes :

1 - installé la crypto libraries pyaes à la place de pycrypto "pip3 install pyaes"

2 - installé le plugin de Sincze : https://github.com/sincze/Domoticz-Tuya ... lug-Plugin
cd ~/domoticz/plugins
git clone https://github.com/sincze/Domoticz-Tuya ... lug-Plugin
cd Domoticz-Tuya-SmartPlug-Plugin
git clone https://github.com/clach04/python-tuya.git
ln -s ~/domoticz/plugins/Domoticz-Tuya-SmartPlug-Plugin/python-tuya/pytuya pytuya
# restart domoticz:
sudo /etc/init.d/domoticz.sh restart

3 - afin de pouvoir connecter mes Devices Tuya, j'ai modifié les scripts get_dps, turnON et turnOFF afin d'ajouter Set_Version(3.3) comme décrit dans ce thread : https://www.domoticz.com/forum/viewtopi ... 46#p224446

4 - il faut également récupérer les ID des prise connectée Tuya avec la méthode suivante : https://github.com/codetheweb/tuyapi/bl ... -life-apps (il faut bien commencer par les point 1 a 3 de "Linking a Tuya device with Smart Link" hui suivre les points 2 à 4 de "Listing Tuya devices from the Tuya Smart or Smart Life apps"

5 - Ensuite vous pouvez tester l'accès à la lecture des prises connectée get_dps.py <IP> <DevID> <DevKey>, ou <IP> est bien l'IP locale en 192.16.8.X.Y que votre box a assigné à la prise. Si vous obtenez un message d'erreur de connexion, éteindre la prise en la débranchant et fermer l'appli Tuya Smart sur votre téléphone. Cela donne un résultat qui ressemble à la ça :

Code : Tout sélectionner

Plug State Information:
{'dps': {'1': True, '9': 0, '17': 100, '18': 1292, '19': 2907, '20': 2281, '21': 1, '22': 590, '23': 27702, '24': 15312, '25': 2720, '26': 0, '38': 'memory', '39': False, '42': '', '43': ''}}

Plug DPS List:
1;39
ici :
- '18': 1292 correspond aux ampères à diviser par 1000 (18 c'est l'index),
- '19': 2907 au watts à diviser par 10,
- '20': 2281 aux volts à diviser par 10.
Objets connectés :
- 7 interfaces Sauter cozytouch fil pilote
- 2 radiateurs Sauter Malao
- Bridge Cozytouch
- caméra Heden Cloud v5.6
- tondeuse Landroid Worx
- Netatmo Home Coach
Semi connecté :
- Ballon d'eau chaude Sauter Prodigio

yannig
Messages : 53
Enregistré le : 04 oct. 2018, 14:34

Re: domoticz et prise connecté smart life

Message par yannig »

J'ai modifié le script get_dps.py comme suit pour pouvoir intégrer les données dans Domoticz :

Il s'utilise de la façon suivante dans un cron : script.py <IP> <DevID> <DevKey> <butwatid> <butvolid> <butintid> <butkwhid>
où :
IP : IP local du device
DEvID : ID Tuya du device
DevKey : local key du device Tuya
butwatid : ID du capteur virtuel utilisation électrique
butvolid : ID du capteur virtuel tension
butintid : ID du capteur virtuel ampere monophasé
butkwhid : ID du capteur virtuel électrique instantané + compteur (modifié en mode compute)

a noter que les index 18, 19 et 20 précédemment récupérés avec le script get-dps.py sont en durs dans le script.

Veuillez excuser mon piètre niveau de codage : c'est mon premier prog en python :P

Dernières remarques : je lance le script toutes les minutes pour le panneau photovoltaïque en autoconsommation et toutes les 5 minutes pour mes autres prises connectées. Testé sur deux prises NOUS A1 16A et une prise WIFI smart plug générique 10A toutes 3 compatibles Tuya Smart.

Code : Tout sélectionner

#!/usr/bin/python3

########################################################################################
#       Domoticz Tuya Smart Plug Python script                                         #
#                                                                                      #
#                                                                                      #
#                                                                                      #
#       Copyright (c) 2022 Wallb35                                                     #
#                                                                                      #
#       Permission is hereby granted, free of charge, to any person obtaining a copy   #
#       of this software and associated documentation files (the "Software"), to deal  #
#       in the Software without restriction, including without limitation the rights   #
#       to use, copy, modify, merge, publish, distribute, sublicense, and/or sell      #
#       copies of the Software, and to permit persons to whom the Software is          #
#       furnished to do so, subject to the following conditions:                       #
#                                                                                      #
#       The above copyright notice and this permission notice shall be included in all #
#       copies or substantial portions of the Software.                                #
#                                                                                      #
#       THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR     #
#       IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,       #
#       FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE    #
#       AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER         #
#       LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,  #
#       OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  #
#       SOFTWARE.                                                                      #
#                                                                                      #
########################################################################################

#v0.6 - 5 JUL 2022

import sys
import pytuya
import socket #needed for socket.timeout exception
import urllib.request
import base64

UPDATEOK = "success"
UPDATEFAILED = "FAILED"

DOMSERVER   = "http://localhost:8084" # domoticz local IP + port
DOMUSER = "domoticzuser" # !!!
DOMPASS = "Domoticzpassword" # !!!

BASE64STR = base64.encodebytes(('%s:%s' % (DOMUSER, DOMPASS)).encode()).decode().replace('\n', '')

def domrequest (url):
  request = urllib.request.Request(url)
  request.add_header("Authorization", "Basic %s" % BASE64STR)
  response = urllib.request.urlopen(request)
  return response.read()

if(len(sys.argv)!=8):
        print("usage: " + sys.argv[0] + " <IP> <DevID> <DevKey> <butwatid> <butvolid> <butintid> <butkwhid>")
        exit(1)

ip       = sys.argv[1]
devid    = sys.argv[2]
devkey   = sys.argv[3]
butwatid = sys.argv[4]
butvolid = sys.argv[5]
butintid = sys.argv[6]
butkwhid = sys.argv[7]

device   = pytuya.OutletDevice(devid,ip,devkey)

data = 0 #stub for the try except
try:
        device.set_version(3.3)
        data = device.status()
except (ConnectionResetError, socket.timeout, OSError)  as e:
        print("A problem occur please retry...")
        exit(1)

values = data["dps"]
amp = int(values["18"])/1000
watt = int(values["19"])/10
volt= int(values["20"])/10

req = domrequest(
     DOMSERVER + "/json.htm?type=command&param=udevice&idx=" + butwatid + "&nvalue=0&svalue=" 
     + str(watt) 
    )

if "OK" in str(req):
     res = "OK"
else:
     res = "FAILED"
     
req = domrequest(
     DOMSERVER + "/json.htm?type=command&param=udevice&idx=" + butkwhid + "&nvalue=0&svalue=" 
     + str(watt) + ";0"
    )

if "OK" in str(req):
     res = "OK"
else:
     res = "FAILED"

print("watts : domoticz update =>", (UPDATEOK if "OK" in str(req) else UPDATEFAILED))

req = domrequest(
     DOMSERVER + "/json.htm?type=command&param=udevice&idx=" + butvolid + "&nvalue=0&svalue="
     + str(volt)
    )

if "OK" in str(req):
     res = "OK"
else:
     res = "FAILED"

print("volt : domoticz update =>", (UPDATEOK if "OK" in str(req) else UPDATEFAILED))

req = domrequest(
     DOMSERVER + "/json.htm?type=command&param=udevice&idx=" + butintid + "&nvalue=0&svalue="
     + str(amp)
    )

if "OK" in str(req):
     res = "OK"
else:
     res = "FAILED"

print("amp : domoticz update =>", (UPDATEOK if "OK" in str(req) else UPDATEFAILED))
Objets connectés :
- 7 interfaces Sauter cozytouch fil pilote
- 2 radiateurs Sauter Malao
- Bridge Cozytouch
- caméra Heden Cloud v5.6
- tondeuse Landroid Worx
- Netatmo Home Coach
Semi connecté :
- Ballon d'eau chaude Sauter Prodigio

Répondre