Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
VMC Brink Renovent Modbus
#1
Bonjour,

sur le modèle d'un post comparable sur une autre référence de VMC : http://www.knx-fr.com/showthread.php?tid=3455

n'ayant pas réussi a récupérer d'infos avec la mienne de marque différente ...
j'ai donc une VMC Brink Renoven Excellent 300 avec un module Brink Connect permettant donc de s'interfacer en Rs485 / Modbus
avec la doc ici : http://www.brinkclimatesystems.fr/wp-con...Modbus.pdf

j'ai également un stick usb/Rs485 ("chinois") branché sur Raspberry Pi
https://www.amazon.fr/SODIAL-USB-485-ada...B00K67XKVI

après avoir essayé en vain et farfouillé un peu sur le net et le post cité précédemment je n'arrive à rien ...

j'aimerais donc dans un premier temps récupérer des infos températures, état des filtres ...
et dans un deuxième temps pourvoir piloter "la bête"

à priori la solution la plus simple serait sous la forme de petits script python soit avec minimalmodbus soit pymodbus ...

Merci d'avance pour votre aide
Anthony.
Répondre
#2
Bonjour Anthony,

De ce que je retire comme expérience de mon côté sur cette interfacage avec du modbus, c'est qu'il y a 3 parties :

LA première concerne le cablage, de memoire on cable bien A sur A et B sur B.

La seconde concerne la communication. Il est important de connaitre les bon paramètres (avec les valeurs issues de ta doc):
  • ID de la VMC : 11
  • Baud rate : 9600
  • Parité : paire (even)
  • Mode : rtu ?
  • data size : ?
  • bit d’arrêt: 1
Je ne vois pas dans la doc la valeur de data size (chez moi, c'est 8). Et je suppose que c'est du RTU (sinon, c'est du ASCII que je ne connais pas) où ton RPI sera le maitre et la VMC l'esclave (ID 11)

Et enfin, tenter de lire les infos sur les registres:
exemple à tester (issue de l'autre post) avec pymodbus pour lire la temperature exterieure (4009):
Code :
#!/usr/bin/env python
from pymodbus.client.sync import ModbusSerialClient

client = ModbusSerialClient(method='rtu', port='/dev/ttyUSB0', baudrate=9600, bytesize=8, stopbits=1, parity='E')
client.connect()

result = client.read_holding_registers(address=4009, count=1, unit=11) (j'ai un doute sur le 11, à voir si faut pas le passer en hexadécimal)
print result.registers

client.close()

En espérant t'avoir aider,

Vincent
Répondre
#3
Salut vincent,

merci pour ton retour super rapide
et en effet cela m'aide me confirme que je suis dans la "bonne direction" ...

alors pour les 3 phases :
- cablage je pense que cela doit être ok cela correspond en effet A/A et B/B
- la com avec ce que tu donne comme infos qui sont en effet dans la doc sauf pour 2 paramètres je sais pas trop comment le tester à part avec l'étape d'après
- lire les infos ça semble pas marcher ... je creuse en regardant la doc de pymodbus déjà
voici un des tests que j'ai fait
Code :
#!/usr/bin/env python
from pymodbus.client.sync import ModbusSerialClient
import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
client = ModbusSerialClient(method='rtu', port='/dev/ttyAMA0', baudrate=9600, bytesize=8, stopbits=1, parity='E')
client.connect()
print '-->requete read_holding_registers '
result = client.read_holding_registers(address=4009, count=1, unit=0x0B)
print '-->result'
print result
print '-->result.registers'
print result.registers
print '--fin--'
client.close()
et le résultat
Code :
-->requete read_holding_registers
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:getting transaction 1
-->result
None
-->result.registers
Traceback (most recent call last):
  File "test3.py", line 23, in <module>
    print result.registers
AttributeError: 'NoneType' object has no attribute 'registers'
donc ça retourne "None" puis après forcément bug ...

je continue a chercher merci encore

@+
Anthony.
Répondre
#4
C'est un peu HS, mais j'ai une Vmc brink.
Je la pilote comme ça :
http://www.knx-fr.com/showthread.php?tid...7#pid22537
Amicalement
Répondre
#5
Salut,

non ce n'est pas hors sujet, cela fonctionne en effet seulement c'est limité à la commande de la vitesse e un état sur le changement de filtre
je souhaite vraiment avoir beaucoup plus d'infos comme les températures et faire un peu de "stats" en parralèle avec le chauffage

la machine intègre en natif une interface I2C sur la carte (connecteur X4) vu que le module Brink Connect dont j'ai mis un lien vers la doc plus haut est une interface I2C/Modbus

j'ai donc essayé aussi de connecter le Pi et la VMC en I2C mais là pas de doc du tout donc encore plus compliqué ...

@+
Anthony.
Répondre
#6
J'ai un doute sur les adresses, le 4009, je ne sais pas trop comment l'expliquer mais est ce le bon format ? est-ce que cette valeur n'embarque pas un 0x0.. quelque chose correspondant au type de registre que tu force déjà en faisant read_holding_registers?

Bref, peut être faut il essayer en simplifiant l'adresse comme : 
print client.read_holding_registers(address=9, count=1, unit=0x0B).registers

De mon côté, j'avais réussi à avoir plus d'infos en contactant directement le support du fabricant de ma VMC, pour bien comprendre à quoi correspondent les adresses indiquées et tenter d'avoir un exemple fonctionnel, une capture d'écran ou tout autre infos permettant de bien comprendre la doc.

Vincent
Répondre
#7
Salut,

Merci en tout cas de ton aide et ton temps
je vais continuer a creuser et en effet un contact avec le support sera certainement nécessaire, il sont en hollande je crois avec mon "Franglais" ça va pas être simple de ce comprendre ...

@+
Anthony.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)