Universal Windows MQTT broker / device bridge with webserver and ISS (ImperiHome Standard System) REST API
Can be used simply as a regular MQTT broker.
Additionally, you can also define virtual devices in MesQTT, which are mapped to specific MQTT-connected real devices via their respective MQTT topic, so MesQTT "knows" them. When those real devices communicate via MQTT, the data they exchange is recorded into a tiny database, and the integrated webserver (on port 8800) then serves this data on request (ISS-API-compliant HTTP/JSON requests).
You can also send ISS-compliant commands to the web server via its REST API (like "http://yourdeviceIP:8800/api/devices/dev1/action/SetLevel/45") - the broker will then publish the received data to the appropriate MQTT topics configured for this particular device, in order to make the appropriate MQTT device(s) execute your REST command(s).
For controlling MQTT devices via REST web requests, you can conveniently use any ISS-compliant third-party app, like the original "ImperiHome" app (on Android or iOS) or "ImperiHomeControl" (on Windows 10), or anything that understands the ImperiHome Standard System (ISS) API in general (Hint: for connecting to MesQTT with ImperiHome, you should add a new system of type "Imperihome Standard System", and use "http://<YourMesQTTdevicesIP>:8800/api" as the base system URL).
MesQTT also runs on devices with ARM architecture, and has a low memory footprint.
To sum it up: MesQTT's purpose is to provide a central hub for all your MQTT-enabled devices, as well as an "ISS device server" to interface with. MesQTT can act as a bridge between ISS-compliant control interface apps (ImperiHome, "ImperiHomeControl") and MQTT-enabled network devices. It is both a MQTT broker and a web server (with included database, ISS REST API and MQTT client).
For the original ISS API specification, please visit:
Not all device types specified in the official ISS API are available (yet) in MesQTT. The following ISS device types are currently available:
For the broker component, the specifications are as follows:
- based on GnatMQ
- listens on standard port 1883
- MQTT protocol version 3.1.1-compliant
- uses integrated mqtt client, auto-connects to local broker
- client connects to all topics, writes received messages to console window
- runs on x86/x64 and also on ARM devices (tested on Windows 10 IoT Core and Windows 10 mobile)
- broker auto-starts when application starts up
- IP address (to connect your clients to) is displayed when broker starts up
NOT IMPLEMENTED are
- MQTT authentication
- anything certificate-related
Due to Windows 10 app container restrictions, this application cannot be used by connecting to 'localhost'. Only connections from/to other machines are possible. This app is a work in progress. If you have any suggestions or would like to submit bug reports or feature requests, please don't hesitate to contact the author via the provided support email address.