Обзор

По мере того, как новый thethingsstack продолжает развиваться и достигает желаемой надежности для всех, начиная с TheThings Industries и заканчивая сообществами производителей и предприятий, возникла проблема интеграции нового TTN V3 с MySQL, в отличие от предшествующего сервера LoRaWAN TTN. V2, который, казалось, очень легко сделать. AEQ-web сделали отличную публикацию по интеграции TTN v2 в MySQL в своем блоге здесь. Ранее я также опубликовал статью о том, как добиться http-интеграции V2 с сервера LoRaWAN в Google Firebase здесь. В этой статье я рассказываю об интеграции нового стека thethings (TTS) в MySQL через http. Эта статья следует за предыдущей публикацией Миграция с версии 2 на версию 3 на TheThingsNetwork, опубликованной ранее в этом году 19 апреля. Несмотря на то, что многие обсуждения на форуме thethingsnetworks продолжаются по этой теме, я просто хочу поделиться своими выводами и опытом как с менее технической, так и с технической аудиторией.

В своем эксперименте я использовал датчик DHT22, подключенный к Uno (эксперимент helloworld), чтобы продемонстрировать случай определения температуры и влажности окружающей среды с помощью датчика DHT22. Для установки я подключил модуль LoRa RN2483 (который использует интерфейс UART) для передачи обнаруженных значений температуры и влажности на сервер LoRaWAN стека вещей. Моя установка показана на рисунке 1 здесь.

Программирование установки оборудования

Рис. 1. Настройка оборудования с модулем LoRa RN2483.

Я запрограммировал эту установку на C++, используя Platformio и библиотеку Arduino. Код находится на Github, его можно найти на Github по этой Ссылке.

Регистрация устройства в TTN V3 (TTS)

Поскольку RN2483 недоступен автоматически (в разделе Из репозитория устройств LoRaWAN) на TTS (TTN V3), мне пришлось зарегистрировать его вручную (следуя описанию, предоставленному thethingsindustries на этом связь"). Выбранная версия LoRaWAN — 1.0.4. Это получается из устройства при использовании последовательного чтения UART с использованием инструкций, предоставленных командой Semtech для документации чипа «здесь. Для его получения используется базовая инструкция sys get ver. Обратите внимание, что вы можете выполнить регистрацию, настроив новое приложение или добавив устройство в существующее приложение. Я размещаю здесь скриншоты для добавления нового приложения и устройства только для общего руководства, но это довольно просто сделать.

Рисунок 2: Интерфейс для создания нового приложения в TTS

Рисунок 3: Интерфейс для регистрации вашего устройства

Рисунок 4: Интерфейс для ручной регистрации

Настройка среды MySQL

Подробная информация о MySQL, PHP, Apcahe и других связанных разработках широко освещается в Интернете и во многих книгах, поэтому в этом разделе я просто расскажу о прямой настройке MySQL на моем экземпляре EC2 на базе AWS для хранения данных. На первом этапе я установил веб-сервер Apache. Затем я установил PHP, который традиционно тесно связан с программным обеспечением Apache. Также можно использовать Python или Perl. Используемая версия PHP — PHP7, а версия MySQL — 8. Инструкции по установке можно найти по этой ссылке. Инструкции, которые я использовал для настройки всего этого в экземпляре на базе Ubuntu, показаны ниже:

$ sudo apt установить apache2 php5 libapache2-mod-php5

$ sudo apt установить mysql-сервер mysql-клиент

$ mysql — — версия

$ судо mysql_secure_installation

$ sudo /etc/init.d/mysql начать

Если вход в систему происходит с ошибкой и не позволяет вам запустить MySQL, это означает, что db_users, использующие его, имеют конфигурацию «auth» под учетными данными системного пользователя. Вы можете проверить, настроен ли пользователь root таким образом, выполнив следующую команду:

$ sudo mysql –u root #используйте sudo для новой установки MySQL

Начнется приглашение MySQL, после чего вы наберете следующие команды:

mysql› USE mysql;

mysql> ВЫБЕРИТЕ ПОЛЬЗОВАТЕЛЯ, ХОСТА, ПЛАГИНА ИЗ mysql.user;

Если результат этого запроса показывает, что пользователь root использует подключаемый модуль auth_socket, вы можете использовать следующие два подхода для решения этой проблемы:

1. Вы можете настроить пользователя root на использование подключаемого модуля mysql-native-password. Или

2. Вы можете создать нового пользователя db_user (это более рекомендуется и проще).

Поэтому, работая с вариантом 2, вы будете делать следующее:

$ sudo mysql –u корень

mysql› USE mysql;

mysql> СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЯ «ВАШЕ_ПРЕДПОЧТИТЕЛЬНОЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ» @ «localhost», ИДЕНТИФИЦИРОВАННОЕ «ВАШИМ_ПРЕДПОЧТИТЕЛЬНЫМ_ПАРОЛЕМ»;

mysql> ОБНОВЛЕНИЕ НАБОРА ПОЛЬЗОВАТЕЛЯ PLUGIN = 'auth_socket', ГДЕ ПОЛЬЗОВАТЕЛЬ = «ВАШЕ_ПРЕДПОЧТИТЕЛЬНОЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ»;

mysql> FLUSH PRIVILEGES;

mysql› ВЫХОД;

Затем вы можете перезапустить mysql с помощью следующей команды.

$ перезапуск службы sudo mysql

Если вы предпочитаете установить PhpMyAdmin, чтобы легко настроить свою базу данных, вы все равно можете использовать его. Я предпочитаю инструкции, представленные по этой ссылке. В противном случае вы все еще можете использовать запросы MySQL в своей командной строке.

Написание сценариев PHP

  1. PHP-скрипт для доступа к базе данных — его можно редактировать в зависимости от ваших предпочтений. Я сохранил свой скрипт как DB_config.php, который вызывается в скрипте insert_dht.php.

Рисунок 4: PHP-скрипт для доступа к базе данных

2. PHP-скрипт для хранения данных в базе данных dht22 MySQL с платформы TTS. Этот скрипт добавлен в раздел веб-хуков. Подробности о веб-хуках и о том, как они работают в стеке вещей (TTS), можно найти по этой ссылке.

Рисунок 4: Интерфейс для интеграции веб-хука TTS

Рисунок 5: PHP-скрипт, который вставляет данные из TTS в базу данных MySQL (это скрипт, на который указывает URL-адрес веб-перехватчика)

В дизайне моей таблицы MySQL я создал пять столбцов — device_id, application_id, Receive_at, температуры и влажности. Это определено в сценарии insert_data.php и извлекает данные в реальном времени из живых событий журналов на TTS в MySQL. Сценарий можно расширить, если есть необходимость хранить другие соответствующие данные, появляющиеся в журнале JSON живых событий TTS. Моя таблица показана на рисунке 5, в которой хранятся данные в реальном времени (с интервалом 2000 мс) с сенсорного узла DHT22.

Рисунок 6: Фрагмент моей таблицы MySQL, получающей данные в реальном времени от аппаратной установки DHT22

Выводы

Для интеграции thethingsstack (TTS) или TTN V3 для хранения ваших данных в вашей пользовательской базе данных MySQL вам просто нужно сделать следующее:

1. Понять, как работать с http-интеграцией (через вебхуки) на новой платформе TTS.

2. Правильно настройте свою среду MySQL, чтобы она была надежной и способной получать и хранить данные.

3. Напишите работающий PHP-скрипт, который выбирает данные с сетевого сервера LoRaWAN для сохранения в настроенной базе данных MySQL.