**Технології індустрії 4.0. Лабораторний практикум. ** Автор і лектор: Олександр Пупена
<- до лаборних робіт | на основну сторінку курсу |
---|---|
Завдання лабораторної роботи навчитися писати дані в базу даних часових рядів Influxdb та ознайомитися з основами роботи з інтерфейсом користувача Influxdb (Influxdb UI) з метою налаштування бази даних, побудови запитів та перегляду даних часових рядів.
Зверніть увагу, зовнішній вигляд та функції можуть відрізнятися від наведених у даних методичних рекомендаціях. У будь якому випадку курс не передбачає використання платних сервісів. За будь яких відмінностей проконсультуйтеся у викладача!
Перейдіть на сторінку реєстрації InfluxDB Cloud та заповніть форму або використайте Google чи Microsoft акаунти.
Введіть довільну назву компанії та організації/проекту та натисніть Continue.
Оберіть план використання InfluxDB Cloud – free tier.
У наступному вікні відмітьте найбільші відповідні опції та натисніть “continue”
У головному вікні ліва бічна панель надає доступ до навігації по всім розділам. На це вікно можна завжди перейти лівої верхньої кнопки.
Наступна кнопка “Load Data” дає можливість перейти до вікон керування завантаженням даних.
Зокрема там доступні:
Бакет – це іменована локація зберігання даних часових рядів. Усі бакети мають період збереження, тривалість часу, протягом якого кожен елемент даних зберігається. InfluxDB скидає всі елементи даних з мітками часу, старшими за період зберігання бакету. Бакет належить організації.
firstbucket
. У плані використання InfluxDB Cloud free tier максимальний період збереження 30 днів, тому налаштування Delete Data залиште за замовчуванням.Після створення, новий бакет з’явиться у списку бакетів.
Токени API InfluxDB забезпечують безпечну взаємодію між користувачами та даними. Токен належить організації та визначає дозволи InfluxDB в організації. Токен – це ключ до даних (бакетів, файлів телеграфу). Influxdb надає два типи токенів: All-Access token, Read/Write token.
All-Access token – надає повний доступ для читання та запису до всіх ресурсів організації.
Read/Write token – надає доступ для читання, запису або і те й інше до певних бакетів в організації.
my all access token
та натисність save
Після цього з’явиться повідомлення про успішне створення токену
У цьому пункті ви спробуєте два способи збору та запису даних в InfluxDB. Перший спосіб (4.1) передбачає збір та запис даних з використанням Node-RED та спеціальних вузлів бібліотеки. Другий спосіб (4.2) - використовуючи службу Telegraf.
node-red-contrib-stackhero-influxdb-v2
.[{"id":"760f23939087cb96","type":"tab","label":"OPC UA to influxdb","disabled":false,"info":"","env":[]},{"id":"ab472f9b460178a2","type":"function","z":"760f23939087cb96","name":"multiplesubscribe","func":"msg.payload=10000;\nfor(i=1;i<11;i++){\n msg.topic=`ns=3;s=AirConditioner_${i}.Temperature`;\n node.send(msg);\n }\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":80,"wires":[["a21fad02e87d5aa8"]]},{"id":"c8770202d16a3012","type":"inject","z":"760f23939087cb96","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payloadType":"date","x":110,"y":80,"wires":[["ab472f9b460178a2"]]},{"id":"c79ed1b84a742571","type":"debug","z":"760f23939087cb96","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1090,"y":200,"wires":[]},{"id":"a21fad02e87d5aa8","type":"OpcUa-Client","z":"760f23939087cb96","endpoint":"501a96153c7c8d57","action":"subscribe","deadbandtype":"a","deadbandvalue":1,"time":"10","timeUnit":"s","certificate":"n","localfile":"","localkeyfile":"","securitymode":"None","securitypolicy":"None","folderName4PKI":"","name":"","x":500,"y":80,"wires":[["1ef5bdfa8f62c7a1"]]},{"id":"d3727b6cd9633b8f","type":"Stackhero-InfluxDB-v2-write","z":"760f23939087cb96","server":"","name":"InfluxDBwrite","x":1010,"y":80,"wires":[["c79ed1b84a742571"]]},{"id":"24c0e70e64d3ab41","type":"join","z":"760f23939087cb96","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"10","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":735,"y":80,"wires":[["769db09ab15b6d24"]],"l":false},{"id":"1ef5bdfa8f62c7a1","type":"switch","z":"760f23939087cb96","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"ns=3;s=AirConditioner","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":615,"y":80,"wires":[["53fdf054dc0c9e9f"]],"l":false},{"id":"53fdf054dc0c9e9f","type":"function","z":"760f23939087cb96","name":"","func":"let str=\"\";\nlet obj={};\nstr=msg.topic.replace(\"ns=3;s=\",\"\");\nobj.device=str.replace(\".Temperature\",\"\");\nobj.fields={Temperature:msg.payload};\nobj.timestamp=msg.serverTimestamp;\nmsg={};\nmsg.payload=obj;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":675,"y":80,"wires":[["24c0e70e64d3ab41"]],"l":false},{"id":"769db09ab15b6d24","type":"function","z":"760f23939087cb96","name":"msgtoinflux","func":"let datastore=[];\nclass sample {\n constructor(payload) {\n this.data={\n measurement:'Building',\n tags: {\n device: payload.device,\n },\n fields: payload.fields,\n timestamp: new Date(payload.timestamp).getTime()\n }\n }\n}\nfor (let i=0; i<msg.payload.length;i++){\n dataobj=new sample(msg.payload[i]);\n datastore.push(dataobj.data);\n}\nmsg.payload = {\n bucket:'firstbucket',\n precision: 'ms',\n data:datastore,\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":80,"wires":[["d3727b6cd9633b8f"]]},{"id":"501a96153c7c8d57","type":"OpcUa-Endpoint","endpoint":"","secpol":"None","secmode":"None","login":false,"credentials":{}}]
OPC UA Client
, прописавши відповідний URL.Host
необхідно взяти з посилання у консолі (див. рис. нижче) між https://
та /org
. Наприклад на рисунку нижче це буде us-east-1-1.aws.cloud2.influxdata.com
.Port
– необхідно залишити стандартний https port – 443
.Token
вставте рядок, скопійований та збережений в пункті 3 при створені токену повного доступу.Значення властивості Organization
також береться з рядку підключення. Цей Organization ID йде після orgs
(див. рис. вище).
Default bucket
вкажіть назву бакету “firstbucket”, створеного в пункті 2.Налаштування матимуть вигляд приблизно як на рисунку нижче.
msg.payload bucket
повинна відповідати назва бакету, створеного в пункті 2.
""
. У іншому випадку буде видавати помилки.Telegraf – серверний агент, який збирає та надсилає метрики з різних джерел даних (баз даних, систем та IoT). Перед тим як збирати дані з OPC UA server за допомогою Telegraf, необхідно його інсталювати на комп’ютер, на якій ви запускаєте UaCPPServer. Для цього необхідно завантажити Telegraf.
Нижче наведений перелік кроків для встановлення Telegraf на 64-розрядній ОС Windows.
wget http://dl.influxdata.com/telegraf/releases/telegraf-1.22.1_windows_amd64.zip -UseBasicParsing -OutFile telegraf-1.22.1_windows_amd64.zip
Ця команда завантажить телеграф конкретної версії.
Expand-Archive .\telegraf-1.22.1_windows_amd64.zip -DestinationPath 'C:\Program Files\InfluxData\telegraf'
C:\Program Files\InfluxData\telegraf
. Закрийте Power ShellЯкщо ви працюєте з іншою операційною системою, тоді слідуйте вказівкам із сторінки завантажень InfluxDB, обравши Telegraf v1.22 та відповідну платформу.
Створіть конфігурацію для Telegraf в інтерфейсі користувача InfluxDB cloud. Пункт меню “Load Data” -> Telegraf -> Create Configuration.
Оберіть попередньо створений бакет у випадальному списку “firstbucket”.
В полі пошуку плагінів для телеграфу, напишіть “opcua”. Це прискорить пошук вхідного плагіну, який дозволяє налаштувати телеграф для передачі даних із OPC UA серверу в бакет influxdb.
Оберіть плагін “OPC UA Client”. Натисніть кнопку “Continue Configuring”.
OPC UA server
.Сконфігуруйте плагін, прибираючи потрібні параметри (прибрати “#”) та змінюючи їх значення, зокрема:
Змініть конфігурацію вхідного плагіну (inputs
) як це показано на рисунку нижче. Враховуйте, що значенню параметра endpoint
відповідає URL OPC UA Вашого сервера. Значення параметру Nodes скопіюйте звідси:
Змініть налаштування розділу [[inputs.opcua.group]]
як показано на рис нижче, перелік items наведено нижче рисунку
[
{name="Humidity", tags=[["device", "AirConditioner_1" ]], identifier="AirConditioner_1.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_2" ]], identifier="AirConditioner_2.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_3" ]], identifier="AirConditioner_3.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_4" ]], identifier="AirConditioner_4.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_5" ]], identifier="AirConditioner_5.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_6" ]], identifier="AirConditioner_6.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_7" ]], identifier="AirConditioner_7.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_8" ]], identifier="AirConditioner_8.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_9" ]], identifier="AirConditioner_9.Humidity"},
{name="Humidity", tags=[["device", "AirConditioner_10" ]], identifier="AirConditioner_10.Humidity"},
]
INFLUX_TOKEN
, яка буде зберігати токен доступу, який ви щойно скопіювали. Якщо ви працюєте на ОС Windows: Панель керування -> Система -> Додаткові параметри системи -> Змінні середовища -> Змінні середовища користувача -> Створити. Ім’я змінної – “INFLUX_TOKEN”, значення змінної – скопійований токен.За замовчуванням інтервал запису даних, зазначений у конфігураційному файлі телеграфу, дорівнює 20 секунд. Щоб його змінити, потрібно відкрити конфігураційний файл в інтерфейсі користувача Influxdb: пункт меню “Load data” –> Telegraf, обрати необхідну конфігурацію (в нашому випадку OPC UA server
). Параметр, який відповідає за інтервал запису, називається “Interval”.
Змінювати інтервал не потрібно, залиште конфігураційний файл без змін, натиснувши кнопку Cancel.
C:\Program Files\InfluxData\telegraf\telegraf-1.22.1
. Запустіть з папки командний рядок, прописавши в шлях провідника “cmd”. В командному рядку виконайте команду для запуску телеграфу, скопійовану у попередньому пункті. ПовинноСеред повідомлень у вас зявиться попередження, на яке не потрібно звертати увагу:
W! [inputs.opcua] Failed to load certificate: open /etc/telegraf/cert.pem: The system cannot find the path specified.
401
спробуйте перезавантажити комп’ютер і спробувати знову.Інтерфейс користувача InfluxDB UI це інструмент для роботи з даними часових рядів та InfluxDB. Інтерфейс користувача InfluxDB дозволяє:
Варто зауважити що повний перелік наведених функцій доступний тільки в платній підписці.
Data Explorer в інтерфейсі користувача InfluxDB дозволяє створювати, виконувати та візуалізувати запити SQL. Query Builder (конструктор запитів) дозволяє створювати SQL запити без написання коду на мові SQL.
7) Подивіться на таблицю з отриманими результатами
8) Виберіть режим відображення “Graph”, у бічній панелі в якості відображення параметр “Temperature” і подивіться лінійний тренд.
SELECT *
FROM "Building"
WHERE
time >= now() - interval '15 minutes'
AND
("Temperature" IS NOT NULL)
AND
"device" IN ('AirConditioner_1','AirConditioner_10','AirConditioner_2')