Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hivemq/hivemq-edge

HiveMQ Edge is an MQTT gateway that enables interoperability between OT devices and IT systems. It translates diverse protocols into MQTT for streamlined communication and helps organize data into a unified namespace, making managing and streaming data across your infrastructure easier.
https://github.com/hivemq/hivemq-edge

ads bacnet data-governance edge ethernet-ip http java javascript modbus mqtt mqtt-sn opc-ua open-source s7 transformation

Last synced: about 4 hours ago
JSON representation

HiveMQ Edge is an MQTT gateway that enables interoperability between OT devices and IT systems. It translates diverse protocols into MQTT for streamlined communication and helps organize data into a unified namespace, making managing and streaming data across your infrastructure easier.

Awesome Lists containing this project

README

        

++++




++++

== HiveMQ Edge

image:https://img.shields.io/github/actions/workflow/status/hivemq/hivemq-edge/check.yml?branch=master[GitHub Workflow Status (with branch),link=https://github.com/hivemq/hivemq-edge/actions/workflows/check.yml?query=branch%3Amaster]

HiveMQ Edge is a Java-based open-source, modular, secure by design platform which consolidates industrial workloads, unifying them into open-standards MQTT to connect to the enterprise.
Seamlessly defining UNS by deployment, using targeted data model & transformation plugins, allows IT and OT to unify and ‘control by policy’, data collected at the Edge.

It is a Java-based open source MQTT and MQTT-SN broker that fully supports MQTT 3.x,5 and MQTT-SN 1.2.

image::docs/edge-intro.gif[title=Edge Intro, align="center"]

* Website: https://www.hivemq.com/
* Documentation: https://docs.hivemq.com/hivemq-edge/index.html
* Community Forum: https://community.hivemq.com/
* Contribution guidelines: link:CONTRIBUTING.adoc[Contributing.adoc]
* License: The source files in this repository are made available under the link:LICENSE[Apache License Version 2.0].

When you deploy HiveMQ Edge using Docker, you will have a preview of commercially licensed features.

== Features

* Converters for OPC UA, Modbus, and other protocols into MQTT messages
* All MQTT 3.1, 3.1.1 and MQTT 5.0 features
* MQTT over TCP, TLS, WebSocket and Secure WebSocket transport
* Integrated MQTT-SN gateway allowing constrained devices to access the MQTT broker.
* Bidirectional MQTT bridge functionality to connect to enterprise MQTT brokers
* Java Extension SDK for:
** Authentication
** Authorization
** Client Initializers
** MQTT Packet Interceptors
** Interacting with Publishes, Retained Messages, Clients and Subscriptions
* Running on Windows, Linux and MacOS (Linux is recommended)

=== MQTT Broker

HiveMQ Edge incorporates a fully standards compliant MQTT broker.
Connect your devices to the broker to subscribe and gain access to data obtained from devices on the Edge.

HiveMQ Edge is compatible with all MQTT 3.x and MQTT 5 clients, including Eclipse Paho and https://github.com/hivemq/hivemq-mqtt-client[HiveMQ MQTT Client].

=== MQTT-SN Gateway

HiveMQ Edge incorporates an MQTT-SN gateway allowing constrained devices to access the MQTT broker.

MQTT-SN is an optimized version of the MQTT specification designed for use on small, low powered, sensor devices, often running on the edge of the network; typical of the IoT.

=== Protocol Adapters

A protocol adapter contributes code to connect to PLCs and converts the data retrieved from these devices into MQTT messages which are PUBLISHED into the local MQTT broker.
More Protocol adapters will be added to the project over time.

* OPC UA
* Modbus
* Siemens S7
* Beckhoff ADS
* Allen-Bradley Ethernet/IP
* HTTP
* File-input
* and many more

=== MQTT Bridging

HiveMQ allows you to backhaul your data into an enterprise broker using MQTT bridges.
Connect any number of bridges to transport Edge data upstream. By connecting Edge to enterprise MQTT brokers like https://www.hivemq.com/[HiveMQ] you can build a flexible https://www.hivemq.com/unified-namespace-uns-essentials-iiot-industry-40/[Unified Namespace (UNS)] solution based on open standards.

== Documentation

The documentation for the HiveMQ Edge can be found https://docs.hivemq.com/hivemq-edge/index.html[here].

Additional Resources

* https://www.hivemq.com/mqtt-essentials/[MQTT Essentials]
* https://www.hivemq.com/mqtt-5/[MQTT 5 Essentials]
* https://www.hivemq.com/unified-namespace-uns-essentials-iiot-industry-40/[UNS Essentials]

== HiveMQ Community Forum

The ideal place for questions or discussions about the HiveMQ Edge Edition is our brand new https://community.hivemq.com/[HiveMQ Community Forum].

== How to Use

=== Quick Start

* Download the latest https://github.com/hivemq/hivemq-edge/releases/latest[HiveMQ Edge binary package].
* Unzip the package.
* Run the run.sh (Linux/OSX) or run.bat (Windows) in the bin folder of the package.

[source,bash]
----
cd hivemq-edge-
bin/run.sh
----

[IMPORTANT]
At least Java version 11 is required to run HiveMQ Edge.
If you are in doubt, you can check the installed Java version by entering `java -version` on your command line.

You can now connect MQTT clients to `:1883`.

[CAUTION]
If you want to connect devices on external networks to HiveMQ Edge, please make sure your server is reachable from those networks and the required ports (default: 1883) are accessible through your firewall.

=== Run with Docker

All releases are available in the https://hub.docker.com/r/hivemq/hivemq-edge[hivemq/hivemq-edge] repository on DockerHub.
To execute this image, simply run the following command:

[source,bash]
----
docker run --name hivemq-edge -d -p 1883:1883 -p 8080:8080 hivemq/hivemq-edge
----

When the container is running you can connect MQTT clients at port 1883 and access the UI at http://localhost:8080/.

Default credentials for the UI are user: `admin`, password: `hivemq`

To run the current state of `master` branch instead of the latest released version you can use the `snapshot` tag.
----
docker run --name hivemq-edge -p 1883:1883 -p 8080:8080 hivemq/hivemq-edge:snapshot
----

To change the default log level you can set the environment variable `HIVEMQ_LOG_LEVEL` when running the container:

[source,bash]
----
docker run --name hivemq-edge -e HIVEMQ_LOG_LEVEL=INFO -d -p 1883:1883 -p 8080:8080 hivemq/hivemq-edge

----

=== Building from Source

==== Building the Binary Package

Check out the git repository and build the binary package.

[source,bash]
----
git clone https://github.com/hivemq/hivemq-edge.git

cd hivemq-edge

./gradlew :hivemqEdgeZip
----

The package `hivemq-edge-.zip` is created in the sub-folder `build/distributions/`.

==== Building the Docker Image

Check out the git repository and build the Docker image.

[source,bash]
----
git clone https://github.com/hivemq/hivemq-edge.git

cd hivemq-edge

docker/build.sh
----

The Docker image `hivemq/hivemq-edge:snapshot` is created locally.

For further development instructions see the link:CONTRIBUTING.adoc[contribution guidelines].

== Contributing

If you want to contribute to HiveMQ Edge, see the link:CONTRIBUTING.adoc[contribution guidelines].

== License

HiveMQ Edge is licensed under the `APACHE LICENSE, VERSION 2.0`.
A copy of the license can be found link:LICENSE[here].

== Privacy settings

HiveMQ Edge uses a limited number of tracking technologies within the web application. These technologies enable us to analyse usage behavior within the Edge product, in order to measure and improve performance.

The following technologies are currently configured:

- https://www.heap.io/[Heap Analytics], check their information regarding the data collected https://help.heap.io/getting-started/how-heap-works/autocaptured-data/[by the auto-capture configuration]

A consent form will be displayed in the browser at first usage. Opt-in or pot-out will be recorded into the local storage of the browser and the tracker activated - or not - accordingly.

There are two ways you can opt-out before installation and running:

- modify the Edge configuration via the `config.xml` (the `usage-tracking` property allows corporate-wide consent)

[#dissable-tracking]
.Example configuration to disable usage tracking centrally for all users
[source,xml]
----


false

----

- modify the frontend configuration (the `VITE_MONITORING_?????` properties in the `./.env` file contains HiveMQ unique application id required to activate the different trackers).

Note that you can also change the `VITE_MONITORING_?????` values to your own account(s) if you use any. It will allow you to collect behaviour on your own infrastructure