Aldes T.One AIR / AquaAIR

J’ai préparé un Raspberry Pi Zero W en mode USB gadget (slave) et en configurant l’USB pour qu’un dmesg donne exactement la même chose en le branchant sur PC qu’en branchant la passerelle sur PC. Ensuite sur le Zero W j’ai fait un script python qui vient lire le registre 1056 sur l’adresse 2.

Sur le PC, avec OpenMod Sim j’ai simulé un device modbus à l’adresse 2 et mis une valeur sur le registre 1056. J’arrive bien à lire la valeur depuis le Zero W.

Quand je branche le Zero W sur le T.One je n’obtiens rien du tout, l’exécution se bloque juste après client.connect().

A noter qu’en créant le client, tous les paramètres sont par défaut ceux qu’on veut, sauf la parité (sur le simulateur je n’ai rien mis en parité du coup). Mais dès que je mets la parité la connexion plante :

termios.error: (22, 'Invalid argument')

C’est un problème connu et apparemment au travers de l’USB de toute façon ni la vitesse ni la parité ne seraient pris en compte. Je ne suis pas sûr de ça mais ça pourrait bien, car dans le simulateur je peux mettre n’importe quelle vitesse et parité, j’arrive à lire.

Le script :

from pymodbus.client import ModbusSerialClient

client = ModbusSerialClient(port = "/dev/ttyGS0")

if client.connect():
        print("Connected")

        result = client.read_holding_registers(1056, slave = 2)
        if result.isError():
                print("Error reading Modbus")
        else:
                print(result.registers)

        client.close()
else:
        print("Not connected")

J’ai aussi essayé avec le Zero W en mode USB normal (hôte), au cas où la passerelle pouvait faire slave (sur PC) et hôte (sur T.One) mais rien n’est détecté, la passerelle est donc bien slave et le T.One host.