Aide pour récupérer des données sur une trame série.Modbus

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
marcus_54
Messages : 91
Inscription : 28 févr. 2018, 12:15

Aide pour récupérer des données sur une trame série.Modbus

Messagepar marcus_54 » 08 avr. 2018, 20:13

Bonjour,

Je suis vraiment débutant, je n'ai fait qu'un seul petit script depuis mon installation Domoticz.

J’ai un tracer solaire Eperver1210A qui envoie des trames RS485 sur l'état de la production solaire.
J'ai récupéré les informations série c'est du 115200 bd et j'ai un adaptateur série USB FTDI232.
Le câblage matériel ce n’est pas une difficulté.

La dernière partie est de réaliser un script pour extraire les données. Voici les informations :

La trame est composée d'un certain nombre d'octets :
Elle commence par 01 43 36 07
Les données se trouvent à un certain offset de ce début.
Les données sont constituées de mots de 16 bits, il faut donc concaténer l'octet de poids fort puis celui de poids faible.
Pour obtenir par exemple la tension de la batterie :
à l'offset 52 on à 0x05 0x03 soit 0x0503 (en uint16) ce qui donne en décimale 1283, divisé par 100 donne 12.83V.

Les données que j'aimerai extraire :
Tension, intensité, puissance du panneau photovoltaïque
Tension, intensité, puissance de la charge
Tension, intensité (en int16), niveau de charge, température.

Si vous avez déjà traité un script semblable, votre aide serait bien appréciée :)

Merci
Dernière édition par marcus_54 le 13 avr. 2018, 20:54, édité 1 fois.
Domoticz V 3.8153
Domoticz Maitre RPI 3B+ : RFlink DIY 433; Téléinfo ;Commande volets; Commande PAC ; 4 DS18B20 ;Capteur compteur eau.
Domoticz Esclave RPI 1B+ : Capteur 4 DS18B20; 3 Capteurs I2C

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


papoo
Messages : 1263
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Aide pour récupérer des données sur une trame série.

Messagepar papoo » 08 avr. 2018, 22:27

c'est du modbus
tu devrais pouvoir extraire tes données via pymodbus
https://github.com/riptideio/pymodbus
domoticz beta/RaspBerry PI3 jessie
https://pon.fr github

papoo
Messages : 1263
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Aide pour récupérer des données sur une trame série.

Messagepar papoo » 08 avr. 2018, 22:33

la valeur en 32 bits = HIGH*65536+LOW.
voila un exemple d'un de mes scripts script_time_modbus.py mais avec du modbus tcp/ip

Code : Tout sélectionner

#domoticz settings
import DomoticzEvents as DE
domoticz_host           = '127.0.0.1'    # Url domoticz
domoticz_port           = '8080'            # port
domoticz_url            = 'json.htm'        # Ne pas modifier

idx_compteur1 = '176'

from pymodbus.client.sync import ModbusTcpClient
import urllib, urllib2

client = ModbusTcpClient('192.168.1.21')
client.connect()
result = client.read_input_registers(1009,2) # Lire 24 compteurs 16 bits  adresse de debut 200 (16 Least et 16 Most)
# compteur1 = ((result.registers[0]*65536)+result.registers[1])  # (Least*65536)+ Most
compteur1 = ((result.registers[1])  # (Least*65536)+ Most
#print(compteur1)
# print ((result.registers[2]*65536)+result.registers[3])
# print ((result.registers[4]*65536)+result.registers[5])
# print ((result.registers[6]*65536)+result.registers[7])
# print ((result.registers[8]*65536)+result.registers[9])
# print ((result.registers[10]*65536)+result.registers[11])
# print ((result.registers[12]*65536)+result.registers[13])
# print ((result.registers[14]*65536)+result.registers[15])
# print ((result.registers[16]*65536)+result.registers[17])
# print ((result.registers[18]*65536)+result.registers[19])
# print ((result.registers[20]*65536)+result.registers[21])
# print ((result.registers[22]*65536)+result.registers[23])

# for compteurs in enumerate(result.registers):
    # print (compteurs)
   

client.close()
 
if idx_compteur1 != None:
    #uploading values to domoticz
    url = "http://" + domoticz_host + ":" + domoticz_port + "/" + domoticz_url + "?type=command&param=udevice&idx=" + idx_compteur1 + "&nvalue=0&svalue=" + str(compteur1)
    urllib2.urlopen(url , timeout = 5)
    DE.Log("Python: Compteur eau froide : " + str(compteur1))
domoticz beta/RaspBerry PI3 jessie
https://pon.fr github

marcus_54
Messages : 91
Inscription : 28 févr. 2018, 12:15

Re: Aide pour récupérer des données sur une trame série.

Messagepar marcus_54 » 09 avr. 2018, 09:03

Merci d'avoir répondu,

J'ai deux possibilités :
Le dialogue est initié par l'afficheur MT50, et je récupère dans la trame de réponse les informations qui m’intéresse (c'est ce que j'ai fait, mais sur Simulink Matlab sur PC et qui ne peut pas être utilisé sur RPI) J'ai opté pour cette solution, car c'est la plus simple à mon niveau. Je n'ai pas le détail du protocole, c'est donc en tâtonnant que j'ai trouvé les infos.

Image

J'ajoute un noeud avec un adaptateur RS485 et c'est Domoticz qui fait la requête et qui récupère l'information.
Solution possible à mon niveau uniquement s'il y a une gestion toute faire disponible dans Domoticz

Image
Domoticz V 3.8153
Domoticz Maitre RPI 3B+ : RFlink DIY 433; Téléinfo ;Commande volets; Commande PAC ; 4 DS18B20 ;Capteur compteur eau.
Domoticz Esclave RPI 1B+ : Capteur 4 DS18B20; 3 Capteurs I2C

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


papoo
Messages : 1263
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Aide pour récupérer des données sur une trame série.

Messagepar papoo » 09 avr. 2018, 18:13

marcus_54 a écrit : uniquement s'il y a une gestion toute faire disponible dans Domoticz

il n'y as pas grand chose de tout fait dans domoticz
il existe ce plugin modbus qui te permettra de remonter des infos
https://github.com/DomoticX/domoticz-modbus
http://www.domoticz.com/forum/viewtopic ... lit=modbus
domoticz beta/RaspBerry PI3 jessie
https://pon.fr github

papoo
Messages : 1263
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Aide pour récupérer des données sur une trame série.

Messagepar papoo » 09 avr. 2018, 18:23

à la lecture du forum officiel, un membre vient de poster un autre plugin d'un produit similaire au tiens
peut être pourrais tu t'en inspirer
http://www.domoticz.com/forum/viewtopic ... 65&t=23012
domoticz beta/RaspBerry PI3 jessie
https://pon.fr github

marcus_54
Messages : 91
Inscription : 28 févr. 2018, 12:15

Re: Aide pour récupérer des données sur une trame série.

Messagepar marcus_54 » 10 avr. 2018, 11:08

Merci pour les pistes.
il faut que je commande un adaptateur RS485 avant toute chose.
Domoticz V 3.8153
Domoticz Maitre RPI 3B+ : RFlink DIY 433; Téléinfo ;Commande volets; Commande PAC ; 4 DS18B20 ;Capteur compteur eau.
Domoticz Esclave RPI 1B+ : Capteur 4 DS18B20; 3 Capteurs I2C

marcus_54
Messages : 91
Inscription : 28 févr. 2018, 12:15

Re: Aide pour récupérer des données sur une trame série.

Messagepar marcus_54 » 13 avr. 2018, 19:23

Bonsoir,

J'ai reçu mon adaptateur RS485 Modbus.
Il fonctionne je l'ai testé avec l’application du tracer sur PC.
Je l'ai connecté sur mon Raspberry Pi sur lequel tourne Domoticz :)

J'ai copié dans plugins les fichiers de domoticz-modbus-master.

Dans la doc qui va avec il est indiqué :
Dependancies
For this plugin to work you need to install some dependancies
pymodbus AND pymodbusTCP
Install for python 3.x with: sudo pip3 install -U pymodbus pymodbusTCP


quand le lance cette commande dans PuTTY
j'ai "sudo: pip3: command not found"...

C'est quoi l'erreur ? SVP

Merci
Domoticz V 3.8153
Domoticz Maitre RPI 3B+ : RFlink DIY 433; Téléinfo ;Commande volets; Commande PAC ; 4 DS18B20 ;Capteur compteur eau.
Domoticz Esclave RPI 1B+ : Capteur 4 DS18B20; 3 Capteurs I2C

papoo
Messages : 1263
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Aide pour récupérer des données sur une trame série.Modbus

Messagepar papoo » 13 avr. 2018, 21:35

sudo apt-get install python3-pip
domoticz beta/RaspBerry PI3 jessie
https://pon.fr github

marcus_54
Messages : 91
Inscription : 28 févr. 2018, 12:15

Re: Aide pour récupérer des données sur une trame série.Modbus

Messagepar marcus_54 » 14 avr. 2018, 17:42

Merci
ca avance....

Il reste plus qu'à trouver comment bien paramétrer le truc.... :?
(Tracer_Solaire) Modbus error decoding or recieved no data (RTU/ASCII/RTU over TCP)!, check your settings!
Dernière édition par marcus_54 le 14 avr. 2018, 18:30, édité 1 fois.
Domoticz V 3.8153
Domoticz Maitre RPI 3B+ : RFlink DIY 433; Téléinfo ;Commande volets; Commande PAC ; 4 DS18B20 ;Capteur compteur eau.
Domoticz Esclave RPI 1B+ : Capteur 4 DS18B20; 3 Capteurs I2C

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.



Revenir vers « Scripts lua,blocky, shell, python, perl, »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 8 invités