Разработка IIoT Edge с WebSockets: безопасная связь в реальном времени
Примечание редактора: Промышленный интернет вещей (IIoT) обещает глубокую прозрачность промышленных операций и повышение эффективности подключённых машин и систем. Крупномасштабные IIoT-приложения опираются на многослойные архитектуры для сбора данных с широкого спектра датчиков, надёжной и безопасной передачи данных в облако и выполнения аналитики, необходимой для получения этой прозрачности и эффективности. В книге «Industrial Internet Application Development» авторы детально рассматривают архитектуру IIoT и обсуждают подходы к удовлетворению широких требований к таким системам.
Адаптировано из Industrial Internet Application Development, авторы: Алена Траукина, Джаянт Томас, Прашант Тяги, Кишор Реддипалли.
Глава 3. Разработка IIoT Edge (продолжение)
Авторы: Алена Траукина, Джаянт Томас, Прашант Тяги, Кишор Реддипалли
Протоколы прикладного уровня — WebSocket
В этом разделе мы построим простое IoT-приложение для передачи данных с модуля датчика освещённости XD-80 на приёмное устройство, используя хаб Raspberry Pi и протокол WebSocket:

Поток данных от датчика XD-80 к приёмному устройству
WebSocket наиболее широко используется, когда нужна быстрая передача данных в реальном времени. Протокол позволяет двустороннее взаимодействие между клиентом и сервером, а также стриминг множественных сообщений по одному TCP-соединению, снижая накладные расходы на коммуникацию.
В таблице ниже более детальное описание протокола для понимания его пригодности для ваших нужд:
| Ключ | Значение |
|---|---|
| Open source | Yes |
| OSI layer | Application |
| Data types | String |
| Limitations | Не подходит для больших объёмов бинарных данных |
| Possible operations | Send/receive data |
| Latency | Very low |
| Usage | Real-time communication |
| Security | Yes |
| Compression | Yes |
Таблица 3: Спецификации протокола WebSocket
Необходимые компоненты
Необходимое ПО:
- Node.js 6+ (https://nodejs.org/en/download/)
- RPIO (https://www.npmjs.com/package/rpio)
- WebSocket (https://www.npmjs.com/package/ws)
- Docker (https://docs.docker.com/engine/installation/)
Необходимое железо:
- Raspberry Pi 3 (модель B)
- Блок питания (2А/5В)
- microSD карта (8 ГБ+) и SD-адаптер
- Модуль датчика освещённости XD-80
- Макетная плата и набор проводов Dupont
- Ethernet-кабель для проводного подключения
Сборка устройства
Перед созданием приложения подключите датчик XD-80 к Raspberry Pi через макетную плату.
Подготовка SD-карты
- Скачайте последний образ Raspbian LITE (доступен на https://raspberrypi.org/downloads/raspbian/).
- Подключите SD-карту к компьютеру и используйте Etcher (https://www.balena.io/etcher/) для записи образа Raspbian
.imgна SD-карту. - Включите SSH командой:
cd /Volumes/boot
touch ssh
- Для включения Wi-Fi создайте файл
wpa_supplicant.confсо следующим содержимым:
network={
ssid="YOUR_SSID"
psk="YOUR_WIFI_PASSWORD"
}
Для создания файла в консоли Linux можно использовать редактор GNU nano. Он предустановлен в большинстве дистрибутивов. Нужно запустить команду nano ИМЯ_ФАЙЛА и следовать инструкциям.
- Создайте директорию
/home/pi/sensor - Создайте файл
/home/pi/sensor/package.jsonсо следующим содержимым:
{
"name": "sensor",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"rpio": "^0.9.16",
"ws": "^2.3.1"
}
}
- Создайте файл
/home/pi/sensor/index.jsсо следующим содержимым, заменивREMOTE-SERVER-ADDRESS.comна реальное значение:
var WebSocket = require('ws');
var rpio = require('rpio');
var ws;
var receiver = 'ws://REMOTE-SERVER-ADDRESS.com:8080';
rpio.open(11, rpio.INPUT);
var establishConnection = function () {
ws = new WebSocket(receiver);
ws.on('close', establishConnection);
ws.on('error', establishConnection);
};
establishConnection();
var sendStatus = function () {
var status = rpio.read(11) === 0;
console.log('light status: ' + status);
var data = JSON.stringify({
device: 'raspberry',
timestamp: Date.now(),
light: status
});
try { ws.send(data); }
catch (e) {console.log('failed to send data to ' + receiver);}
setTimeout(sendStatus, 1000);
};
sendStatus();
- Создайте файл
/home/pi/sensor/Dockerfileсо следующим содержимым:
FROM hypriot/rpi-node:boron-onbuild
Интернет вещей
- Навигация в Интернете всего: лучшие практики для успешной гиперконнективности
- Периферийные вычисления: 5 потенциальных подводных камней — и как их преодолеть
- Будущий взгляд: продвижение Industrial IoT для производственного превосходства
- Подъем Индустрии 4.0: использование пограничной аналитики для более умного, быстрого производства
- Определительное руководство по топ-10 промышленным ИоТ-платформам (2024)
- Тренды и вызовы IIoT: перегрузка данных, сдвиги в производстве и кадровый дефицит
- Пограничные вычисления и ППИ: трансформация промышленной стратегии данных
- Промышленный интернет вещей (IIoT): определение, область и промышленное влияние
- Периферийные вычисления: новое сердцебение эпохи облака
- Раскрытие действенных инсайтов на периферии с ИИ и ML