Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure

Компоненты и материалы

Raspberry Pi 2 Model B (или Orange Pi — дешевле) ×1
XBee (или дешёвый радиопереceiver) ×1
Arduino UNO ×1

Облачные сервисы

О проекте

Введение

Рассмотрим создание системы умного дома на базе MediaTek LinkIt. Железную часть (подключение датчиков) опустим — здесь много экспертов. Сосредоточимся на создании API и развёртывании ультрадешёвого локального сервера ($15 на Orange Pi) для сбора данных с датчиков. Опционально — логирование в Azure.

Архитектура системы

Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure

Датчики передают данные по радиоканалу (XBee или другой трансивер) на MediaTek LinkIt. LinkIt упаковывает сырые данные в JSON с помощью библиотеки ArduinoJson и отправляет POST-запрос на локальный сервер. Локальный сервер (Node.js на Orange Pi/Raspberry Pi) принимает JSON, добавляет UTC-время и подпись, выполняет валидацию/фильтрацию/конвертацию, затем пересылает данные в облако (Azure Table Storage).

Локальный сервер выступает препроцессором. Можно полностью отказаться от облака и хранить данные в локальной NoSQL-БД. LinkIt также может слать данные напрямую в Azure — локальный сервер добавлен для демонстрации, что $15-PC способен обрабатывать поток данных.

Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure
Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure
Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure

Демонстрация

 (видео-демо в оригинале)

Предварительные требования

Предполагается, что вы умеете читать данные с датчиков на Arduino/MediaTek. Чтобы сузить рамки, считаем, что данные уже доступны на LinkIt. Для передачи можно использовать XBee или дешёвые радиомодули. Новичкам удобно стартовать с Grove Starter Kit для MediaTek LinkIt (температура, влажность, свет и т.д.).

JSON-формат данных

JSON стал де-факто стандартом для IoT. Основная идея — передавать максимум данных на сервер, где происходят аналитика, конвертация, ML. Поле desired — желаемое состояние датчика/актуатора. Например, "temperature": "24" означает целевую температуру 24°C. Клиенты (веб/мобильное приложение) используют это состояние для отображения.

Примеры JSON-объектов:

// Температура и влажность
{ "deviceid": "iot/myhome/livingroom/thermostat",
  "desired": { "temperature": "24", "humidity": "80" },
  "timeutc": "2015-11-23T00:41:48.824Z", "signedBy": "localserver" }

// Микрофон
{ "deviceid": "iot/myhome/livingroom/mic",
  "desired": { "intensity": "66" },
  "timeutc": "2015-11-23T00:41:48.824Z", "signedBy": "localserver" }

// Ультразвуковой датчик расстояния
{ "deviceid": "iot/myhome/livingroom/obstacle",
  "desired": { "proximity": "150" },
  "timeutc": "2015-01-01", "signedBy": "localserver" }

// PIR (движение)
{ "deviceid": "iot/myhome/livingroom/pir",
  "desired": { "motion start": "2500", "motion end": "5345" },
  "timeutc": "2015-11-23T00:41:48.824Z", "signedBy": "localserver" }

// GPS
{ "deviceid": "iot/mydevice/location",
  "desired": { "lat": "25.5", "long": "32.2" },
  "timeutc": "2015-11-23T00:41:48.824Z", "signedBy": "localserver" }

// Влажность почвы
{ "deviceid": "/iot/myhome/garden/moisture",
  "desired": { "moisture": "20" },
  "timeutc": "2015-11-23T00:41:48.824Z", "signedBy": "localserver" }

// Газ
{ "deviceid": "/iot/myhome/kitchen/gas",
  "desired": { "leak": "No" },
  "timeutc": "2015-11-23T00:41:48.824Z", "signedBy": "localserver" }

// Свет
{ "deviceid": "/iot/myhome/livingroom/light",
  "desired": { "intensity": "60" },
  "timeutc": "2015-11-23T00:41:48.824Z", "signedBy": "localserver" }

// Комнатные агрегаты
{ "deviceid": "/iot/myhome/livingroom",
  "desired": { "temperature": "25", "humidity": "80", "window": "open", "door": "closed", "light": "80", "noise": "low" } }

{ "deviceid": "/iot/myhome/bedroom",
  "desired": { "temperature": "24", "humidity": "70", "window": "closed", "door": "closed", "light": "80", "ac": "on", "noise": "low" } }

MediaTek LinkIt — приёмник (скетч)

См. файл MediaTekRx.ino в разделе кода. Данные датчиков симулируются (random), замените на реальные чтения.

Локальный сервер (Node.js на Orange Pi / Raspberry Pi)

Крошечный ПК + Node.js — отличный выбор. Я использовал Orange Pi ($15) с Arch Linux ARMv7. Установлен Node.js и npm. Клонируйте репозиторий iotapp с GitHub, npm install, сервер слушает порт 3000. Проверьте https://local-ip:3000.

API эндпоинты для приёма данных:

Настройка: клонируйте iotapp, в index.js укажите IP/домен облачного приложения (ASP.NET 5 на Azure).

Удалённый сервер (ASP.NET 5 на Azure)

Публикация данных в облако популярна. Выбрал Azure. Аналитика, Data Mining, ML — в облаке. Клонируйте iotwebapp с GitHub (Visual Studio 2015, ASP.NET 5). API логируют данные в Azure Table Storage. Создайте таблицу в Azure, в IoTController.cs укажите Account Name и Key. Этот домен/IP пропишите в локальном сервере.

API эндпоинты облака:

Заключение

Код требует рефакторинга — модифицируйте под свои нужды. Пишите, если застрянете.

Исходный код

Полный репозиторий (MediaTek, Node.js, ASP.NET 5):
https://github.com/syediddi/iot-mediatek-linkIt

Схемы подключения датчиков к Arduino для радио-передачи

Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure
Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure
Умный дом на Raspberry Pi / Orange Pi и MediaTek LinkIt: бюджетная IoT-система с локальным сервером и Azure

Производственный процесс

  1. Умные данные: навигация по следующей границе IoT и Big Data
  2. Создание умного домашнего контроллера 433 МГц с Sensorflare и Raspberry Pi
  3. Создайте систему домашней автоматизации на Raspberry Pi для удаленного управления
  4. Умный бармен: создайте свою Raspberry Pi-станцию для коктейлей
  5. Умные больницы будущего: Критическая роль интеллектуального ПО
  6. Преодоление разрыва навыков умного дома: почему Британия отстает от Европы
  7. Как взаимосвязность повышает эффективность, безопасность и устойчивость современных рабочих мест
  8. Эволюция умного дома: что будущее готовит для коннектед жилья
  9. Умные фабрики: от видения к реальности — почему большинство британских бизнесов всё ещё промахиваются
  10. Умный дом: 3 проверенных шага для преодоления главных препятствий