Консультации по диагностике проблем с новой установкой Thingsboard в Windows и публикацией ESP8266

Я пытаюсь настроить локальную установку Thingsboard в Windows 10, на которую я могу отправлять данные о температуре с устройства ESP8266. Я знаю, что не понял, что для этого нужно, и мои эксперименты провалились.

Я думаю, что есть слишком много шагов для установки и настройки, чтобы предоставить их все здесь для диагностики. Но я был бы признателен за советы о том, как самостоятельно диагностировать свои проблемы, например, включить дополнительную трассировку отладки.

(Все IP-адреса, перечисленные ниже, являются частными и нечувствительными.)

Он-лайн ДЕМО-счет

Чтобы узнать о Thingsboard, я начал с настройки учетной записи в онлайн-демонстрационной системе с устройством и приборной панелью для отображения температуры. После того, как это работало с командой curl, я создал проект ESP8266, который успешно публикует данные в онлайн-демонстрационной установке Thingsboard. т.е. данные отображаются на моей онлайн-панели. Вот отрывок из соответствующих строк проекта WORKING ESP8266.

#include <PubSubClient.h>
#include <ESP8266WiFi.h>
#define TOKEN "BJ9nLTOAc3hEL3NOlGei"
char thingsboardServer[] = "demo.thingsboard.io"; // Online demo system 
int thingsboard_port = 1883;  // Online demo system

client.setServer( thingsboardServer, thingsboard_port  );
client.connect("ESP8266 Device", TOKEN, NULL);

String payload = "{";
payload += "\"temperature\":"; payload += temperature; 
payload += ",";
payload += "\"humidity\":"; payload += humidity;
payload += "}";

// Send payload
char attributes[100];
payload.toCharArray( attributes, 100 );
client.publish( "v1/devices/me/telemetry", attributes );

Локальная установка

Я установил локальную установку Thingsboard в соответствии с руководствами по началу работы с Thingboard, изменив токен доступа к устройству, чтобы он соответствовал токену для онлайн-установки. После того, как Thingsboard был установлен и настроен с устройством и приборной панелью, я смог отобразить данные на своей приборной панели с помощью этой команды:

curl -v -X POST -d "{\"temperature\": 25}" http://192.168.2.5:8080/api/v1/BJ9nLTOAc3hEL3NOlGei/telemetry --header "Content-Type: application / json"

Я изменил значения в моем проекте ESP8266 на следующие значения. Однако при запуске я ничего не вижу в моей локальной установке Windows панели инструментов Thingsboard.

IPAddress thingsboardServer(192, 168, 2, 5);// Local  laptop
int thingsboard_port = 1883;  // Local  laptop

Локальный шлюз и брокер

Читая дальше на сайте Thingsboard, я подозревал, что мне нужен шлюз и брокер (например, Mosquitto). Итак, я выполнил инструкции по установке шлюза и Mosquitto. Все шаги до конца "Шага 8.2" в этих инструкциях были выполнены https://thingsboard.io/docs/iot-gateway/getting-started/

Я заметил предупреждение о том, что Mosquitto и Thingsboard слушают 1883 по умолчанию, и изменили Mosquitto на прослушивание 1884. Я также изменил порт в mqtt-gui-extension-configuration.json на 1884. Чтобы команда mosquitto-pub 'work' Я изменил доступ в конфигурационном файле Mosquitto:

allow_anonymous true.

Используя два окна консоли, я могу видеть то, что я публикую с помощью mosquitto_pub в одном окне, и в mosquitto_sub, запущенном в другом окне.

Так

mosquitto_pub -h localhost -p 1884 -t "v1/device/me/telemetry" -m '{"temperature":36.6}'  -u BJ9nLTOAc3hEL3NOlGei

производит

C:\Program Files\mosquitto>mosquitto_sub -d -t "v1/device/me/telemetry" -h localhost -p 1884
Client mosq/nmafqF16uw5edvXJGA sending CONNECT
Client mosq/nmafqF16uw5edvXJGA received CONNACK (0)
Client mosq/nmafqF16uw5edvXJGA sending SUBSCRIBE (Mid: 1, Topic: v1/device/me/telemetry, QoS: 0, Options: 0x00)
Client mosq/nmafqF16uw5edvXJGA received SUBACK
Subscribed (mid: 1): 0
Client mosq/nmafqF16uw5edvXJGA received PUBLISH (d0, q0, r0, m0, 'v1/device/me/telemetry', ... (20 bytes))
'{temperature:36.6}'

Затем я изменил свой проект ESP8266, чтобы использовать порт Mosquitto 1884 года (вместо 1883 года).

int thingsboard_port = 1884;  // Local  laptop

Я запустил Mosquitto из командной строки, чтобы разрешить отображение журналов. Этот вывод был получен в ответ на вызовы ESP8266 для client.publish

1568132857: New client connected from 192.168.2.2 as ESP8266 Device (p2, c1, k15, u'BJ9nLTOAc3hEL3NOlGei').
1568132857: No will message specified.
1568132857: Sending CONNACK to ESP8266 Device (0, 0)
1568132857: Received PUBLISH from ESP8266 Device (d0, q0, r0, m0, 'v1/devices/me/telemetry', ... (38 bytes))
1568132880: Client ESP8266 Device has exceeded timeout, disconnecting.
1568132899: Received PINGREQ from mosq/nmafqF16uw5edvXJGA
1568132899: Sending PINGRESP to mosq/nmafqF16uw5edvXJGA

В tb-gateway.log несколько раз повторяется эта пара строк:

2019-09-10 17:56:41,980 [pool-3-thread-1] INFO  o.t.g.service.MqttMessageSender - Outgoing queue is not empty. [1] messages are still in progress
2019-09-10 17:56:41,981 [pool-3-thread-1] INFO  o.t.g.service.MqttMessageSender - Waiting until all messages are sent before going to the next bucket
  • Вопрос 1: Мне нужно было добавить Mosquitto и шлюз? Мне до сих пор неясно, было ли это важным или в Thingsboard есть встроенные возможности для обработки данных, отправляемых ESP8266.
  • Вопрос 2: Могу ли я включить какую-либо другую трассировку, чтобы увидеть, почему данные, полученные Mosquitto, не отображаются на моей локальной панели инструментов?
  • Вопрос 3. Должен ли я определять сопоставления в конфигурации шлюза для "v1/device/me/telemetry". Если да, то есть ли где-нибудь для этого пример?

0 ответов

Другие вопросы по тегам