- Supp.cz
- Последние сообщения
- Самый последний комментарий
- Архивы
- Рубрики
- Измерение и хранение данных в облаке (3.)
- 3. Экономия времени в базе данных
- 3.1 Установка собственной InfluxDB
- 3.2 InfluxDB vВоблако
- 3.3 Сохранение сообщения от брокера MQTT в InfluxDB
- 3.4 Node-RED как клиент MQTT, записывающий данные в InfluxDB
- Термометр через Bluetooth в CoreELEC
- Предпосылки
- Установка Entware
- PЕ™Гправо на язык Python
- Установка lywsd03mmc
- Измерение и хранение данных в облаке (2.)
- 2. Отправка данных по протоколу MQTT
- 2.1 Собственный брокер MQTT – Eclipse Mosquitto™
- 2.2 Брокер MQTT в облаке — HiveMQ Cloud
- 2.3 Отправка и получение сообщений данных MQTT
- 2.3.1 Программы mosquitto_pub и mosquitto_sub
- 2.3.2 В Python с использованием клиентской библиотеки Paho MQTT
- Измерение и хранение данных в облаке (1.)
- Или «Как на воробье с зайчиком покататься»
- 1. Измерение и сбор данных о целях с помощью компьютера
- Сравнение дешевых VPS до 100 крон в месяц
Supp.cz
Примечания, которых нет больше нигде
Последние сообщения
Самый последний комментарий
- А. Новое: прием DVB-T и DVB-T2 в Праге
- А. Новое: прием DVB-T и DVB-T2 в Праге
- Буки Мирослав: Я принимаю DVB-T и DVB-T2 в Праге
- Роман Студний: Я принимаю DVB-T и DVB-T2 в Праге
Архивы
Рубрики
Измерение и хранение данных в облаке (3.)
- Мы ищем и собираем данные о меди
- Мы отправляем данные и собираем их в облаке
- Мы храним собранные данные в базе данных
- Мы обработаем, отобразим и проанализируем данные из базы данных
3. Экономия времени в базе данных
База данных временных рядов (TSDB — База данных временных рядов) является наиболее подходящей для сбора измеренных данных, поскольку она адаптирована для оптимального хранения большого объема данных в базе данных временных рядов и имеет оптимизированные функции агрегирования для дальнейшей обработки. Очень часто используемой базой данных является InfluxDB, которая бесплатна и имеет полезные инструменты для обработки данных, а благодаря готовым библиотекам с ней легко работать на различных языках программирования.
3.1 Установка собственной InfluxDB
Ядро базы данных InfluxDB можно легко установить в популярную операционную систему Debian GNU/Linux или Ubuntu/Mint Linux из стандартного установочного пакета influxdb. Возможно на других платформах согласно инструкции по установке на сайте influxdata.com.
Необходимым условием является наличие большого свободного места для хранения, поскольку данные могут со временем увеличиваться до различных размеров.
Если нам не нужно записывать запросы и переводы по HTTP, мы можем отключить логирование в конфигурационном файле /etc/influxdb/influxdb.conf.
3.2 InfluxDB vВоблако
InfluxDB также можно использовать в облаке, и здесь мы рассмотрим платформу InfluxDB Cloud 2.0, которая предлагает работу модифицированного ядра базы данных в облаке AWS (в Европе, Франкфурт, Нью-Мексико), в Azure (в Европе, Амстердам). или в Google Cloud (Европа, Бельгия).
Бесплатный вариант доступен бесплатно с несколькими ограничениями: 5 МБ списка за 5 секунд, 300 МБ запросов за 5 минут, 10 000 строк данных и максимум 2 базы данных (сегменты) с хранением данных в течение 30 дней. Вполне подходит для домашнего использования в возрасте старше 10 лет.
Для дальнейшей работы с базой данных ключевыми являются следующие шаги с примечаниями, необходимыми для доступа к базе данных:
- Запишите URL-адрес узла кластера InfluxDB
- При установке или последующем создании базы данных (Bucket) на странице Data/Buckets
— обратите внимание на Bucket ID - Создайте токен доступа и установите проверку на странице Данные/токены
– обратите внимание на токен - Назовите организацию — Организация/О компании
— обратите внимание на идентификатор пользователя и идентификатор организации
в соответствии с выбранным местоположением.
.
.
3.3 Сохранение сообщения от брокера MQTT в InfluxDB
Существует несколько способов получения сообщений от брокера MQTT и сохранения данных в базе данных InfluxDB.
- Пользовательский скрипт/программа — в Python для подключения к брокеру MQTT и InfluxDB можно использовать клиент Paho MQTT и модули InfluxDB-Python. Например, в сценариях MQTT 2 InfluxDB Bridge или MQTTInfluxDBBridge.py.
- Программа Telegraf содержит модуль MQTT Consumer, который работает как клиент MQTT и записывает полученные сообщения в InfluxDB. В конфигурационном файле /etc/telegraf/telegraf.conf нужно только указать пару данных или сгенерировать необходимую конфигурацию в администрировании InfluxDB Cloud.
В файл /etc/default/telegraf вставляем токен для доступа к БД InfluxDB в форме, заданной медиасредой:
- Определение потока данных в средстве разработки Node-RED — я объясню этот вариант более подробно ниже.
3.4 Node-RED как клиент MQTT, записывающий данные в InfluxDB
Мы можем использовать нашу собственную установку Node-RED на компьютере или в облаке. Самый интересный из них запущен в IBM Cloud в рамках бесплатного уровня, где все можно использовать бесплатно (только версия Lite). Установку выполним после первичной регистрации по инструкции. Во время установки будет создана база данных Cloudant для хранения данных программы, будет запущен экземпляр приложения Node-RED и будут настроены некоторые другие службы, необходимые для работы среды.
Заглянув в редактор Node-RED, давайте установим:
- Меню/Управление палитрой/Установить — введите influxdb в поле поиска и установите плагин node-red-contrib-stackhero-influxdb-v2
- Мы создадим и переименуем новый поток
- Давайте создадим узел типа «mqtt-in» и установим:
- Сервер (Подключение — имя хоста, порт, Использовать TLS; Безопасность — имя пользователя и пароль)
- Тема
- Вывод — проанализированный объект JSON
- Давайте создадим узел «функция», назовем его «toFloat» и введем код в элемент onMessage:
- Давайте создадим узел «изменение», назовем его «подготовить поля» и установим правило:
- Задайте для msg.payload выражение
- Давайте создадим узел типа «Stackhero-InfluxDB-v2-write» и настроим данные о ходе работы с базой данных — хост, порт, TLS, токен, организация, сегмент по умолчанию
- Поэтапно будем подключать все созданные узлы с выхода первого на вход второго и т.д. При необходимости можем добавить «отладочный» узел дляввод информации.
- После создания полного потока используйте кнопку «Развернуть» в правом верхнем углу, и он должен начать работать.
Термометр через Bluetooth в CoreELEC
Как считывать текущие значения температуры и влажности с беспроводного термометра Xiaomi Temperature and Humidity Monitor 2 или аналогичного через Bluetooth в ТВ-боксе с системой CoreELEC.
Почему именно в ТВ-боксе? Потому что я бы дальше обрабатывал ряды температурных данных в наглядную статистику и графики, а для этого нужно постоянно работающее устройство, которое будет рассчитано на регулярное получение данных и отправку их для дальнейшей обработки на MQTT-брокере или в база данных. Мобильный телефон или Android вообще не очень подходят для этого, а другого подходящего устройства, совместимого с Bluetooth 4.2 Low Energy (BLE), в моем распоряжении нет.
Предпосылки
Что нам понадобится:
- Оборудован приемником Bluetooth минимум 4.2,
- установленная система CoreELEC со свободным местом в сети памяти, с включенным доступом по SSH и с работающим подключением к Интернету (LibreELEC также может работать в аналогичной системе),
- SSH-терминал,
- Беспроводной термометр Xiaomi LYWSD03MMC или аналогичный с модулем связи Bluetooth.
Как узнать, какая версия Bluetooth поддерживается устройством, где мы хотим считать температуру с термометра:
Здесь в список свойств включены HCI версии 0xa и LMP версии 0xa, что означает Bluetooth 5.1 согласно спецификации в таблице ниже.
Хост-контроллер Версия интерфейса (HCI) | Протокол Link Manager (LMP) Версия | Ядро Bluetooth Спецификация |
---|---|---|
0 | 0 | 1.0b |
1 | 1 | 1,1 |
2 | 2 | 1,2 |
3 | 3 | 2,0 + МЭД |
4 | 4 | 2,1 + МЭД |
5 | 5 | 3.0 + ГС |
6 | 6 | 4,0 |
7 | 7 | 4,1 |
8 | 8 | 4.2 |
9 | 9 | 5.0 |
10 (0xA) | 10 (0xA) | 5.1 |
11 (0xB) | 11 (0xB) | 5.2 |
12 (0xC) | 12 (0xC) | 5.3 |
Узнайте MAC-адрес беспроводного термометра и версию Bluetooth, которую поддерживает устройство:
Установка Entware
Entware — это репозиторий пакетов, из которого можно установить множество программ на любое поддерживаемое устройство с операционной системой на базе Linux — например, на NAS или WiFi-маршрутизатор с DD-WRT. На устройстве с CoreELEC базовая установка Entware запускается из командной строки с помощью встроенного скрипта installentware, а после перезагрузки программа opkg доступна для установки дополнительных программных пакетов.
PЕ™Гправо на язык Python
Мы начнем с редактирования виртуальной среды Python, чтобы все модули были в одном месте и изменения не повлияли на остальную часть системы.
В качестве альтернативы можно установить более новую версию Python 3.9 от Entware. С Python 3.7, запущенным в CoreELEC, у меня были проблемы с вычислениями с десятичными числами, когда результат деления 2347/100.0 был не красивым 23,47, а результатом было уродливое 23,4699999999999999, которое не показано на изображении температуры ench.
Теперь мы подготовили виртуальную среду Python для дальнейшей установки.
Установка lywsd03mmc
(Цель этой статьи не в том, чтобы описать, как это работает, а в том, чтобы задокументировать, что именно не работает и почему, поэтому я заранее извиняюсь за то, что был очень нетерпелив, если я буду изо всех сил стараться.)
Для считывания значений с термометра я выбрал скрипт lywsd03mmc, отвечающий всем требованиям. Есть возможность однократного считывания температуры и влажности или считывания и сохранения всей истории температур с момента включения термометра в CSV-файл.
Мы начнем согласно документации с установки необходимой библиотеки glib2 с помощью программы opkg, а программа pip3 обычно используется для установки скриптов и модулей Python.
Установка зависимости – модуля bluepy python – вылетела из-за того, что не установлена программа make, поэтому мы установим ее вместе с переводчиком и другими программами, которые также понадобятся для перевода модуля с языка C.
В конце нас попросят установить заголовочные файлы, как описано в документации. Пример команды из описания для скачивания и распаковки заголовочных файлов в каталог /opt/include нужно изменить на волшебную команду для нужд CoreELEC:
Еще одна попытка установить модуль bluepy снова не удалась, так как на этот раз заголовочный файл glib.h не был найден. Он находится не непосредственно в каталоге /opt/include, а в подкаталоге:
Теперь давайте вернемся к настройке компилятора и создадим файл gcc_env.sh с переменными, определяющими, где искать заголовочный файл и библиотеку glib-2.0. Полученный файл мы будем использовать перед установкой нового скрипта. (Еще один вариант — установить пакет pkg-config из Entware, но это потребует дополнительной настройки, поэтому я не пошел по этому пути.)
Теперь скрипт lywsd03mmc со многими необходимыми модулями успешно установлен и мы можем попробовать считать значения с термометра с MAC-адресом, который мы нашли в начале этой статьи.
Или мы можем сохранить историю температуры с момента включения термометра в файл CSV для дальнейшей обработки.
Измерение и хранение данных в облаке (2.)
- Мы ищем и собираем данные о меди
- Мы отправляем данные и собираем их в облаке
- Мы храним собранные данные в базе данных
- Мы обработаем, отобразим и проанализируем данные из базы данных
На предыдущих шагах мы показали, как измерять и собирать данные. Теперь давайте плавно перейдем и представим, как отправить заказ на дальнейшую обработку.
2. Отправка данных по протоколу MQTT
Есть несколько вариантов того, что делать с предполагаемыми значениями. Мы будем иметь дело только с двумя, отправкой на собственный MQTT-брокер, который будет работать на каком-то компьютере, и использованием MQTT-брокера в облаке, чтобы нам не пришлось беспокоиться о его работе. Брокер MQTT получает данные и отправляет их указанным подписчикам. Подробнее см. в разделе Что такое MQTT на веб-сайте RoboDoup®.
2.1 Собственный брокер MQTT – Eclipse Mosquitto™
Mosquitto можно скачать и установить по инструкции на сайте https://mosquitto.org/, или в большинстве дистрибутивов Linux доступен пакет для простой установки:
После установки необходимо изменить базовую конфигурацию с установленным пользователем и их проверкой в конфигурационных файлах по адресу /etc/mosquitto.
Включить отдельную настройку для каждого типа связи:
Конфигурация для протокола MQTT – включено анонимное подключение и определение файла с правами доступа.
Установитьправа доступа для анонимных пользователей (подробнее читайте в теме измерения/), пользователей измерения (читайте и перечисляйте в теме измерения/) и для других пользователей:
Конфигурация для протокола Websocket:
Определение авторизованных пользователей, осуществляющих доступ через протокол Websocket (изначально читается для анонимных и перечисляется для других пользователей):
Пароли пользователей, сохраненные программой mosquitto_passwd:
2.2 Брокер MQTT в облаке — HiveMQ Cloud
HiveMQ управляет общедоступным брокером MQTT, или после регистрации вы можете бесплатно использовать сервис MQTT Cloud Broker в базовой версии (до 100 подключенных клиентов и 10 ГБ данных в месяц, хранение данных в течение 3 дней ). Создание сервисного предложения с поставщиком AWS в Ирландии и Azure во Франкфурте, Новая Каролина
.
Его очень легко использовать – необходимые данные для входа четко указаны на одной странице и есть возможность создать несколько разных пользователей, но, к сожалению, нельзя ограничить авторизацию. Есть подробные инструкции по использованию сервиса с разных клиентов и языков программирования.
2.3 Отправка и получение сообщений данных MQTT
2.3.1 Программы mosquitto_pub и mosquitto_sub
В состав многих дистрибутивов Linux входят клиенты mosquitto.
Отправлено сообщение брокеру MQTT в тему измерения/температуры:
Быстрый доступ к коллекции и отображению содержимого всех отчетов в теме измерения/:
2.3.2 В Python с использованием клиентской библиотеки Paho MQTT
Установка в дистрибутиве Linux или с помощью установщика пакета Python (в этом примере для Python 3):
Сценарий mqtt-client для отправки сообщений брокеру MQTT (в данном случае HiveMQ Cloud):
Сценарий после запуска ожидает ввода данных в формате, показанном ниже, и после вводасимвол конца строки (Enter на клавиатуре) отправил значения в виде сообщений брокеру MQTT. Это делается путем ввода символа конца файла EOF (на клавиатуре Ctrl + D ).
Этот формат идеально подходит для представления данных, полученных в предыдущих главах этой серии.
Подробную информацию об обработке и отправке сообщений MQTT в Python можно найти на веб-сайте MQTT и Python для начинающих (на английском языке).
Измерение и хранение данных в облаке (1.)
Или «Как на воробье с зайчиком покататься»
- Мы ищем и собираем данные о меди
- Мы отправляем данные и собираем их в облаке
- Мы храним собранные данные в базе данных
- Мы обработаем, отобразим и проанализируем данные из базы данных
1. Измерение и сбор данных о целях с помощью компьютера
С помощью специальных деталей можно измерять различные продукты в окружающей среде. От температуры, влажности и давления воздуха, до измерения температуры воды в садовом пруду или в бойлере или водонагревателе, потребления электроэнергии и воды и всего, что мы можем придумать.
Для начала нас могут удовлетворить данные, которые можно измерить в компьютере или в одноплатном компьютере типа Raspberry Pi с операционной системой Linux. Лично я в основном использую Debian GNU/Linux, Ubuntu, Linux Mint, Armbian и CoreELEC, но это зависит от личного вкуса каждого товарища.
Целью этой статьи является документирование основ реализованного дизайна, поэтому измерения в других операционных системах не рассматриваются.
Температура процессора и воздуха в окошке, количество оборотов вентилятора и значения напряжения с программой датчиков из пакета lm-sensors.
Для автоматизированной обработки данных ключи -u для вывода в простом формате и -j для вывода вформат json.
С помощью простого awk-скрипта мы можем фильтровать и переформатировать интересующие нас значения из списка.
Температура жесткого диска или SSD программой smartctl из пакета smartmontools.
Переключатель -n sleep предотвращает пробуждение спящего диска, а переключатель -l scttempsts также получает температуру спящего диска (до сна).
При использовании переключателя -A, который отображает S.M.A.R.T. данных, включая температуру, спящие диски просыпаются. Регулярное чтение этих данных предотвращает успешное срабатывание диска после заданного периода бездействия (программой hdparm -S), а также его использование даже после перехода в спорный режим (определяется программой hdparm -C).
С помощью awk-скрипта записывается только текущая температура диска:
Измерение температуры с помощью внешнего датчика температуры Dallas DS18B20, подключенного к шине 1-Wire и к компьютеру через последовательный порт RS-232 или через преобразователь USB TTL UART.
Загрузка значений с помощью программы digitemp:
Перечислены только измеренные температуры в °C отдельных термометров:
Мы снова обработаем нужные данные и отправим их в облако.
Сравнение дешевых VPS до 100 крон в месяц
В конце апреля провайдер виртуального сервера сообщил мне, что работа услуги будет прекращена по окончании предоплаченного периода и предложил выгодный переход на другую услугу, больше похожую на 5— цена, которую я мог не принимаю, потому что у меня VPS в основном на стороне и работа некоммерческих сайтов, которые я субсидирую из своего кармана, а платить почти 315 KD в месяц не стоит цена. Поэтому я искал подходящую компенсацию с фиксированными ежемесячными расходами в размере не более 100 чешских крон.
Сравнение оригинального сервиса с альтернативами в понятной таблице:
SluЕѕba | Coolhousing VPS Lite | Forpsi Cloud VPS Smart Small | Пакет VPS-L02G |
---|---|---|---|
Ужин мД›сДЌнД› (без/с ДПХ) | – | 70/84,70 КДЌ (человек з кредит) | 75 К/90,75 К |
Cena roДЌнД› (без/с ДПХ) | 600/726 К | 840/1016,40 КДЌ | 837/1012,77 KДЌ (7% раб.) |
ОЗУ | 512 МБ | 1 ГБ | 2 ГБ |
ЦП | 1Г— 1100 МГц | 1Г— 1800 МГц | 1Г— 2200 МГц |
ГљлоЕѕiД› | 20 ГБ virtio | 20 ГБ SSD | 20 ГБ SSD virtio |
SГГ© pETMipojenГ | 100 Мбит/с virtio | 1000 Мбит/с vmxnet3 | 1000 Мбит/с rtl8139 |
Дата канала pETMenosy | neomezenД › | 2 ТБ mД›sДЌнД› | neomezenД› |
IPv4-адрес | 1 | 1 | 1 |
IPv6-адрес | rozsah/96 | rozsah/64 | Rozsah/121 |
Реверс nГ DNS pro IPv4 | другой | другой | другой |
РеверзнГ DNS pro IPv6 | не устраивает ( v администрация je v pЕTMehledu) | ne | ne |
брандмауэр | ne | ne | pro IPv4 |
Автоматическая установка фургона | ano | ano | ano |
Ручная установка | другая | с | другая |
обратите внимание | и | 8 ЦОД в 6 земч | и |
технология виртуализации | KVM | VMware | KVM |
Консоль KVM | Apache Guacamole для VNC | Apache Guacamole | noVNC/HTML5 WebSocket |
Снапшоты | 3 автоматических ключа kaЕѕdou noc, 1 руководство пользователя | 1 руководствостойкость 2 дня | 4 КДЌ/ГБ мД›сГДЌнД› |
Каковы преимущества и недостатки отдельных служб?
- Часть услуги VPS Lite была очень полезной функцией, подкрепляемой автоматически создаваемым снимком каждую ночь, который хранился в течение последних трех дней и удобно располагался в центре обработки данных в Праге (очень низкая задержка/RTT). Недостатком была низкая мощность процессора.
- С Forpsi Cloud большим недостатком является невозможность ручного запуска установки операционной системы — я предпочитаю выбирать разбитый на разделы диск и файловую систему вместе, а в дальнейшем можно будет запустить ее со своей Образ ISO на всякий случай экономит работу, но мне нравится создавать моментальный снимок бесплатно, что полезно перед большим обновлением операционной системы. Смущает разрозненное администрирование, которое разделено на три приложения и требует навигации для входа в систему — 1. администрирование домена и веб-хостинга, 2. администрирование облака и 3. пополнение кредита.
- Что мне больше всего нравится в Hukot, так это настройка брандмауэра у провайдера, который блокирует ненужную связь на VPS и большой объем оперативной памяти, которую я не использую, т.к. ее пока хватало для работы постфиксной почты сервер и веб-сервер nginx со статическими веб-страницами кварталов (и использование активных› составляло около 80 МБ). К сожалению, во время тестирования VPS, 31 мая 2021 года, после 16:00, VPS был полностью недоступен около 20 минут, а сайт хостинга даже не появился. После ремонта я посмотрел что получилось, но на странице статуса хостинга бодро написано «Все системы работают» и доступность SLA 100%, что не внушало мне особого доверия.
Остальные параметры очень похожи или мало от них зависят. Интересноизменит реальную производительность VPS и выяснит, насколько велика разница между ними.
Ориентировочная производительность VPS была определена с помощью простых тестов, и для интереса есть сравнение производительности с бесплатным виртуальным сервером (в рамках уровня OracleCloud Free Tier) и настольным ПК 12-летней давности с процессором Intel Core2 Duo 6700 @2,66 ГГц. и SSD первого поколения .
bc | 7zr | Пропускная способность | Диск | |
---|---|---|---|---|
VPS Lite | 69,4 с | 922/912 MIPS | 5 ГБ/с | 30 МБ/с |
VPS Smart Small | 28,5 с | 2251/2186 MIPS | 10,8 ГБ/с | 1,1 ГБ/с |
VPS-L02G | 29,1 с | 1908/1889 MIPS | 10,7 ГБ/с | 296 МБ/с |
OracleCloud VM.Standard.E2.1.Micro | 50,2 с | 746/1387 MIPS | 6,7 ГБ/с | 55 МБ/ s |
Настольный ПК | 28,3 с | 2562/4907 MIPS | 12,1 ГБ/с | 132 МБ/с |
- измеряется в bc (одиночное волокно)
- mД›Е™enГ 7zr
- mД›Е™enГ Пропускная способность
- mД›Е™enГ Диск
Измерение скорости показывает, что VPS Lite сильно тормозит, Hukot использует более старый/горячий/медленный ЦП, чем Forpsi, а самым быстрым является двенадцатилетний p, учитывая скорость только одного ядра ЦП.
И если вы спросите, почему нет проверенных вещей VPS, я не пробовал и нашел другие услуги менее чем за 100 крон в месяц.