Сборка шлюза MQTT

Шлюз MQTT — сделан на основе Ethernet шлюза с модификацией программы, которое заставляет его работать как клиент MQTT. Начните с создания шлюза, следуя инструкциям Ethernet-шлюза.

Шлюз W5100 MQTT отправляет данные по радиосетям (или локальным датчикам) вашему брокеру MQTT. Узел также прослушивает MY_MQTT_TOPIC_PREFIX и отправляет эти сообщения в радио сеть.

Конфигурация

Эскиз шлюза MQTT содержит некоторую статическую конфигурацию, такую ​​как ip- и номер порта. Замените эти значения, чтобы они соответствовали вашим требованиям перед загрузкой.

// Enable these if your MQTT broker requires usenrame/password
//#define MY_MQTT_USER "username"
//#define MY_MQTT_PASSWORD "password"

// Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP)
#define MY_IP_ADDRESS 192,168,178,87

// If using static ip you need to define Gateway and Subnet address as well
#define MY_IP_GATEWAY_ADDRESS 192,168,178,1
#define MY_IP_SUBNET_ADDRESS 255,255,255,0

// MQTT broker ip address or url. Define one or the other.
//#define MY_CONTROLLER_URL_ADDRESS "m20.cloudmqtt.com"
#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68

// The MQTT broker port to to open
#define MY_PORT 1883

Пример MQTTGateway

Это полностью рабочий пример эскиза.


Шлюз MQTT также может быть собран на основе модуля ESP8266. См. Комментарии в коде MQTTClient.ino.


Дополнительные сведения о «Кнопке включения» и светодиодах см. В разделе Дополнительные параметры сборки.

Настройка и тестирование шлюза

Вы можете запустить шлюз MQTT в Ethernet Arduino + W5100 или в ESP8266. Подключите радио- и ethernet-модуль точно так же, как для обычного шлюза.

Заголовок похож на протокол последовательного порта. Вы должны определить предпочитаемую подписку и опубликовать префикс в эскизе. Заголовок описывается так: MY_MQTT_PUBLISH_TOPIC_PREFIX/FROM-NODE-ID/SENSOR-ID/CMD-TYPE/ACK-FLAG/SUB-TYPE

Подробнее о протоколе последовательного порта см. Здесь. Пример данных, полученных с вашего шлюза, может выглядеть следующим образом:

mygateway1-out/2/1/1/0/49

Если вы хотите отправить данные своим датчикам, используйте MY_MQTT_SUBSCRIBE_TOPIC_PREFIX, определенный в вашем эскизе. Должно выглядеть так (используя эскиз по умолчанию):

mygateway1-in/2/1/1/0/49

Вы можете протестировать свой шлюз, используя mosquitto в качестве брокера.

Убедитесь, что вы установили MY_IP_GATEWAY_ADDRESS в шлюзе, указали на ваш ip-адрес компьютера (в той же сети LAN).

Запустите брокер (команда запуска): > mosquitto

Теперь запустите свой шлюз, и вы должны увидеть что-то подобное в журнале шлюза. Обратите внимание, что у меня в моей радиосети есть датчик GPS, который все время передает данные на шлюз:

0;0;3;0;9;gateway started, id=0, parent=0, distance=0
0;0;3;0;9;Attempting MQTT connection...
0;0;3;0;9;MQTT connected
0;0;3;0;9;read: 2-2-0 s=1,c=1,t=49,pt=0,l=22,sg=0:55.722519;13.018120
0;0;3;0;9;Sending message on topic: mygateway1-out/2/1/1/0/49
0;0;3;0;9;read: 2-2-0 s=1,c=1,t=49,pt=0,l=22,sg=0:55.722519;13.018121
0;0;3;0;9;Sending message on topic: mygateway1-out/2/1/1/0/49

Подпишитесь на сообщения (в консоли другого компьютера) > mosquitto_sub -v -t 'mygateway1-out/#'

Вы должны увидеть сообщения, которые вы видели в журнале шлюза, как показано ниже:

mygateway1-out/2/1/1/0/49 55.722519;13.018121;13
mygateway1-out/2/1/1/0/49 55.722519;13.018114;12
mygateway1-out/2/1/1/0/49 55.722527;13.018120;11
mygateway1-out/2/1/1/0/49 55.722534;13.018122;10

Отправите (публично) сообщение в вашу радио сеть: > mosquitto_pub -t 'mygateway1-in/2/1/1/0/49' -m '0,29'