Point the gateway at your RS-485 meters, drives, and PLCs. It polls the registers you list, scales and timestamps every reading, and publishes them to your MQTT broker — plain values on clean topics, TLS optional.
or view the full specifications →
The gateway sits between the field bus and the broker: it polls each tag you listed, scales and timestamps the reading, then publishes it on your topic tree. Everything downstream is just an MQTT subscriber.
← swipe the diagram to follow the data →
Polling loops, register scaling, reconnect logic, topic naming, buffering — the plumbing between a serial field bus and an MQTT broker is all done and configurable from a browser.
Each row is one tag: slave ID, register address, function code, multiplier, and the name it publishes under. Up to 30 tags, stored in flash — no rebuild to add a meter.
Standard MQTT client — host, port, client ID, username and password. Publishes plain values on a topic prefix you choose, so it drops straight into an existing topic tree.
Turn on MQTT TLS and point the gateway at a certificate file for encrypted transport to cloud brokers. Plain TCP on 1883 when you're inside the plant network.
Every reading is timestamped and appended to a 10,000-record log in flash, alongside a live value table — so a broker outage doesn't mean a blind spot.
Password-protected pages for network, serial, Modbus and MQTT settings, plus live tables that refresh every second. Nothing to install on the laptop.
Built on Tibbo's TPP2W(G2) and AppBlocks. Need a JSON payload, a different topic scheme, or an extra protocol? The logic is open to extend.
The gateway doesn't care what the equipment is — a slave ID, a register address, and a function code are enough. These are the applications engineers bring to us most often; each one shows a slice of the register map you would type into the console, and the values that land on your broker.
Chillers, air handlers, VRF controllers, and floor-level meters already speak Modbus RTU. Publish their temperatures, setpoints, and run states to a BMS dashboard or analytics platform without paying per point.
FC3 40001 ×0.1 → supply_temp 18.4 FC3 40105 ×1 → setpoint 21 FC1 00034 → fan_run 1
Read cycle counters, machine states, drive speed, and load from the PLCs and VFDs already on the line. Poll fast for a responsive process and still publish a tidy update every 30 s to your OEE or downtime dashboard.
FC3 40020 ×1 → cycle_count 84213 FC3 40044 ×0.1 → vfd_hz 47.5 FC1 00009 → fault 0
Poll power meters across a site and publish kWh totals, voltage, current, and power factor in engineering units — the per-tag multiplier turns raw counts into billable figures before they ever leave the gateway.
FC3 30002 ×.01 → kwh_total 10432.75 FC3 30010 ×0.1 → volts_l1 231.4 FC3 30016 ×.01 → power_fact 0.98
Unmanned sites with flow meters, pressure and level transmitters, and pump starters. The 10,000-sample on-device log keeps the history intact through a cellular or broker outage, so remote doesn't mean blind.
FC4 30007 ×1 → flow_rate 18 FC3 40012 ×0.1 → tank_level 62.5 FC1 00003 → pump_run 1
Temperature and humidity controllers on refrigeration plant, drying rooms, and storage. Every reading is timestamped against the device's SNTP-synced clock, then published for alerting and long-term retention.
FC3 40001 ×0.1 → chamber_t -18.6 FC3 40003 ×0.1 → humidity 41.2 FC2 10005 → door_alarm 0
String and hybrid inverters, battery management systems, and genset controllers all expose Modbus RTU. Feed DC and AC power, state of charge, fuel level, and alarm registers into an O&M portal over TLS.
FC3 40072 ×1 → dc_power 4820 FC3 40085 ×1 → soc 78 FC1 00021 → inv_fault 0
Data centre power chains (UPS, PDU, and CRAC units) · greenhouse and irrigation control · EV charger fleets · compressed air and process utilities · commercial laundry and kitchen equipment · marine and offshore auxiliaries · OEM machine builders adding cloud telemetry to an existing controller without touching its firmware.
Tell us which devices you need to read and we'll confirm the register map →
Field polling and cloud publishing run on separate timers, so you can read a fast process at 1 s and still publish a tidy update every 30 s — or the other way around.
Add each register to the Devices table from the web console — slave ID, address, function code, multiplier, name.
On every poll interval it walks the table, issuing one Modbus RTU read per tag with a 1 s response timeout.
Each raw value is multiplied by the tag's factor, written to the live value table, and appended to the on-device history log.
On the publish interval every tag goes out as prefix/tag_name with the value as the payload.
# id addr function code mult name 1 40001 holding (FC3) 0.1 boiler_temp 1 40007 input reg (FC4) 1 flow_rate 3 00012 coil (FC1) 1 pump_run 7 30002 holding (FC3) 0.01 kwh_total
# topic prefix: plant1/line2 plant1/line2/boiler_temp 72.4 plant1/line2/flow_rate 18 plant1/line2/pump_run 1 plant1/line2/kwh_total 10432.75 # one topic per tag, value as payload, QoS 0
Topic prefix, publish interval, and every tag name are settings — nothing above is hard-coded. Need a JSON envelope or per-tag topics instead? That's an AppBlocks edit, not a new product.
Point a browser at the gateway's IP and you get the full configuration — grouped exactly as below — plus live data tables that refresh every second. Here is every field the console exposes and what it ships with.
The Device Console. Password-protected settings pages and live data tables, served straight from the gateway.
| Setting | Control | Default |
|---|---|---|
| Web Admin Password | Text — protects the console | (empty) |
| Device Time Zone | Drop-down, UTC−12:00 → UTC+14:00 | UTC+08:00 |
| Setting | Control | Default |
|---|---|---|
| Ethernet DHCP | Drop-down — DHCP or static | static |
| Ethernet IP | IP address field | 192.168.1.40 |
| Ethernet Netmask | IP address field | 255.255.255.0 |
| Ethernet Gateway | IP address field | 1.0.0.1 |
| Setting | Control | Default |
|---|---|---|
| Tibbit 05 Baud Rate | Drop-down, 1200 → 921600 | 9600 |
| Tibbit 05 Parity | Drop-down — none / even / odd | none |
| Tibbit 05 Data Bits | Drop-down — 7 or 8 bits | 8 |
| Poll Interval (seconds) | Number, 0 – 600 | 5 |
| Setting | Control | Default |
|---|---|---|
| MQTT Server Host Address/IP | Text, up to 50 chars — hostname or IP | 1.0.0.1 |
| MQTT Server Port | Number | 1883 |
| MQTT TLS | Drop-down — off / on | off |
| MQTT TLS Certificate File Path | File picker on the device's flash | (empty) |
| MQTT Publish Topic Prefix | Text, up to 240 chars | (empty) |
| MQTT Client ID | Text, up to 50 chars | Client_ID_1 |
| MQTT Username | Text, up to 50 chars | MQTT_Name_1 |
| MQTT Password | Masked text | Password |
| MQTT Publish Interval (seconds) | Number, minimum 5 | 30 |
| Table | Fields | Capacity |
|---|---|---|
| Devices | Device ID (1–255), Address (0–65535), Function Code (coil, discrete input, holding register, input register), Multiplier, Name (30 chars) | 30 rows, flash |
| Register Values | Name, Value — the latest reading for every tag | 30 rows, live in RAM |
| Modbus Values | Timestamp, Name, Value — the historical sample log | 10,000 rows, flash |
| Log | Timestamp, message — device events and diagnostics | 200 rows, flash |
General. Set the console password and the device time zone — the time zone is what makes the timestamps in the sample log line up with your plant clock.
prefix/tag topics, values as payloadsConfirm exact model configuration and certifications for your region with our engineering team before you spec.
| Parameter | Detail |
|---|---|
| Platform | Tibbo TPP2W(G2) programmable device, Zephyr runtime, configured with Tibbo AppBlocks |
| Function | Modbus master and MQTT publisher — polls Modbus registers and publishes each value to an MQTT broker |
| Field bus | Modbus RTU over RS-485 via Tibbit 05; baud rate, parity, and data bits configurable from the console (default 9600, none, 8) |
| Function codes | Read coils (FC1), read discrete inputs (FC2), read holding registers (FC3), read input registers (FC4) |
| Register map | Up to 30 tags, each with slave ID (1–255), register address (0–65535), function code, scale multiplier, and 30-character tag name; stored in flash |
| Polling | Configurable interval 0–600 s (default 5 s), 1000 ms Modbus response timeout, up to 10 outstanding requests |
| MQTT | Broker host and port (default 1883), client ID, username and password, optional TLS with certificate file, 30 s keep-alive, topic prefix up to 240 characters, publish interval ≥ 5 s (default 30 s), QoS 0 |
| Topic format | <topic prefix>/<tag name>, scaled value as the payload |
| Data storage | 10,000-record timestamped sample log and 200-record event log in flash; live value table in RAM; SNTP time sync with time-zone setting |
| Network | Ethernet — DHCP or static IP, netmask, and gateway; DNS resolver for named brokers |
| Web console | Built-in HTTP server on port 80, password protected, 1 s live refresh, settings pages plus editable and viewable data tables |
| Firmware / logic | Tibbo AppBlocks project (extensible); this build: Modbus MQTT Gateway, v0.1.19 |
Power, environmental ratings, dimensions, and regional certifications depend on the final hardware configuration — see the datasheet for the exact figures for your build. This build exposes Ethernet networking; the TPP2W(G2) platform is also Wi-Fi capable, and Modbus TCP as well as Wi-Fi can be enabled in AppBlocks on request.
Tell us which devices you need to read and where the data has to land. An application engineer will come back with pricing, lead time, and a recommended configuration — usually within one business day.
Prefer email? sales@tibbo.com