Je souhaiterais un avis concernant une valeur retournée par un sonde Piezo (Seeed studio S-YW-01B) en particulier la valeur « Read unit ». La valeur qui est retournée sur base de la config ci joint est 17 decimal or cette valeur n’est pas reprise dans la doc de la sonde. Doc ou la config incorrecte ?
Merci pour votre aide.
[2026-01-17 10:47:41][DEBUG] : send: 0x1a 0x3 0x0 0x2 0x0 0x1 0x26 0x21
[2026-01-17 10:47:41][DEBUG] : recv: 0x1a extra data:
[2026-01-17 10:47:41][DEBUG] : Processing: 0x1a
[2026-01-17 10:47:41][DEBUG] : Short frame: 0x1a wait for more data
[2026-01-17 10:47:41][DEBUG] : extra: unexpected data: 0x1a
[2026-01-17 10:47:41][DEBUG] : recv: 0x3 0x2 0x0 0x11 0x1c 0x4a extra data: 0x1a
[2026-01-17 10:47:41][DEBUG] : Processing: 0x1a 0x3 0x2 0x0 0x11 0x1c 0x4a
[2026-01-17 10:47:41][DEBUG] : decoded PDU function_code(3 sub -1) -> ReadHoldingRegistersResponse(dev_id=0, transaction_id=0, address=0, count=0, bits=[], registers=[17], status=1, retries=0)
[2026-01-17 10:47:41][DEBUG] : Sonde Piezo: 'process_read_response' launched for command id = 201
[2026-01-17 10:47:41][DEBUG] : Sonde Piezo: 'cmd_decode' launched for command id = 201
[2026-01-17 10:47:41][DEBUG] : Sonde Piezo: 'add_change' launched with payload = {'values::201': 17}
On voit que la sonde renvoie effectivement 0x11 donc 17 en décimal. Votre configuration est bonne.
Peut-être que l’octet qui contient la réponse est doublé (par erreur) et que la réponse est 0x01 soit 1 en décimal c’est à dire que l’unité est en cm ? Mais ce n’est qu’une supposition.
Aparté
Les requêtes que vous faites vous permettent de passer par une plage de registre. Je vous suggère de déclarer une lecture de plage de registres avec 0 [6], de sauvegarder pour que la commande existe et de modifier vos commandes de lecture de sorte d’utiliser cette plage. Le temps de rafraichissement s’en verra réduit et la charge système également.
Il y a un exemple d’utilisation de plage de registres dans la doc du plugin.