# Get Started
# Overview
EMQ X Edge is an open source, lightweight MQTT broker running at any resource constraint edge devices. It's written in Erlang/OTP, and Erlang/OTP is a concurrent, fault-tolerant, soft-realtime and distributed programming platform. MQTT is an extremely lightweight publish/subscribe messaging protocol powering IoT, M2M and Mobile applications.
Highlights of the EMQ X Edge Broker :
- It supports MQTT, TCP, WebSocket and different industry protocols such ModBus.
- It can be running at different kinds of resource constrained edge devices, such as Raspberry Pi, gateway and industrial servers.
- It provides local data processing and cloud synchronization which will automatically synchronize data with cloud service based on network status.
- Integrated with EMQ X Storm which provides central monitoring and management services.
# Features
- Lightweight - 20MB runtime memory with minimal resource consumption, which can run on ARM/x86 CPU, from Raspberry Pi to industrial X86 servers.
- Near real-time response - processing the data generated locally, so it can respond quickly to local events.
- Operate online or offline - it operate locally and can cache data when network is not available; when they’re back online it can synchronize data to the cloud and use the cloud for management, analysis and date persistence.
- Easy management & monitoring - central edge broker management, data synchronization, visualized monitoring tools based on web UI.
- Extensibility - Open APIs available to third party plugins to support more protocols, new functions and features.
# Quick Start
# Download and Install
The EMQ X Edge is cross-platform, which could be deployed on Raspberry Pi, Linux and FreeBSD.
Download binary package from: http://emqx.io/downloads (opens new window) .
Installing on Linux, for example:
unzip emqx-edge-centos7-v3.1.zip && cd emqx
# Start EMQ X Edge
./bin/emqx start
# Check Status
./bin/emqx_ctl status
# Stop EMQ X
./bin/emqx stop
2
3
4
5
6
7
8
9
10
# Installing from Source
Tip
The EMQ X Edge broker requires Erlang/OTP R21+ to build since 3.0 release.
git clone https://github.com/emqx/emqx.git
cd emqx && make rel
cd rel/emqx && ./bin/emqx console
2
3
4
5
# Plugins
The EMQ X Edge broker could be extended by Plugins. A plugin is an Erlang application that adds extra feature to the EMQ X Edge broker:
emqx_retainer (opens new window) | Store Retained Messages |
---|---|
emqx_auth_clientid (opens new window) | Authentication with ClientId |
emqx_auth_username (opens new window) | Authentication with Username and Password |
emqx_auth_http (opens new window) | Authentication/ACL with HTTP API |
emqx_auth_mysql (opens new window) | Authentication with MySQL |
emqx_sn (opens new window) | MQTT-SN Protocol Plugin |
emqx_coap (opens new window) | CoAP Protocol Plugin |
emqx_stomp (opens new window) | STOMP Protocol Plugin |
emqx_recon (opens new window) | Recon Plugin |
emqx_reloader (opens new window) | Reloader Plugin |
emqx_web_hook (opens new window) | Web Hook Plugin |
A plugin could be enabled by 'bin/emqx_ctl plugins load' command.
For example, enable 'emqx_auth_mysql' plugin:
./bin/emqx_ctl plugins load emqx_auth_mysql
# MQTT Client Libraries
GitHub: https://github.com/emqtt (opens new window)
emqttc (opens new window) | Erlang MQTT Client |
---|---|
emqtt_benchmark (opens new window) | MQTT benchmark Tool |
CocoaMQTT (opens new window) | Swift MQTT Client |
QMQTT (opens new window) | QT MQTT Client |
Eclipse Paho: https://www.eclipse.org/paho/ (opens new window)
MQTT.org: https://github.com/mqtt/mqtt.github.io/wiki/libraries (opens new window)