In the office we have an automation system that talks in modbus. Right now I have Node Red that receives data from modbus (via IP), sends it to MQTT and send messages from MQTT to modbus. In HA I have 15 MQTT climates that works. I want to bypass Node Red; I’ve added an automation that gets triggered when a MQTT values arrives and sends the new value to mobus:

alias: Climate_update_modbus_setpoint_studio1
description: ""
triggers:
  - trigger: mqtt
    topic: home_assistant/thermostat/setpoint/Studio1
actions:
  - data:
      hub: picnet
      address: 1099
      value: "{{ (trigger.payload | float * 10) | int }}"
    action: modbus.write_register
mode: queued

The problem is that the modbus change takes a lot.

  • I change the climate setpoint, after about 0.5 seconds the MQTT value changes and the automation gets triggered
  • the modbus register changes in a range of about 0.5-3 seconds
  • sometimes the automation gets triggered and I see the trigger bar yellow instead of blue and the modbus register changes after longer

With Node Red I have no problem with modbus. What can I check to try to find the source of the problem?