https://github.com/dicagno/guacamole
Virtual MODBUS Slave enabling most PLCs to publish messages to a PubSub infrastructure.
https://github.com/dicagno/guacamole
industrial-automation iot messaging modbus mqtt plc
Last synced: about 2 months ago
JSON representation
Virtual MODBUS Slave enabling most PLCs to publish messages to a PubSub infrastructure.
- Host: GitHub
- URL: https://github.com/dicagno/guacamole
- Owner: dicagno
- License: mit
- Created: 2023-11-18T08:17:37.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-18T09:25:19.000Z (over 2 years ago)
- Last Synced: 2025-10-19T17:34:21.069Z (8 months ago)
- Topics: industrial-automation, iot, messaging, modbus, mqtt, plc
- Language: Go
- Homepage:
- Size: 916 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# Guacamole - seasoning for automation
## Description
This tool connects any PLCs supporting MODBUS TCP or RTU to an MQTT broker, effectively enabling realtime messaging in already existing devices without impacting them.
It comes from a project from 2019, but still useful in several contexts.
## Features
* Emulates a MODBUS slave
* Low footprint
* Can be run either on a gateway or on the PLC itself
* Cross-platform, cross-architecture
* Supports both TCP and Serial MODBUS masters
* Forwards register write requests (either single, `FC 6` or multiple, `FC 16`) to the configured PubSub broker (and topic)
## Building artifacts
```bash
make
```
## Installation
```bash
make install
```
Compile for different architectures, i.e. MIPS Little Endian
```bash
GOOS=linux GOARCH=mipsle go build -o ./release/guacamole-mipsel main.go
```
## Installation on remote device
This method makes use of SSH, key-based auth
```bash
make deploy USER=myuser IP=192.168.1.1
```
## Usage
```bash
service modbus-mqtt enable
service modbus-mqtt start
```