Автор оригинала: FreeCodeCamp Community Member.
Амир выключен
В этой статье я буду обсуждать, как я построил умную систему автоматизации домашней автоматизации с угловым и Node.js на Raspberry Pi, не полагаясь на любые внешние облачные сервисы.
вступление
За последние несколько дней я провел некоторые ночи проектирование и разработав систему домашней автоматизации на основе JavaScript, с использованием угловых и Node.js. И, как и с любым другим проектом, планирование привлекло некоторые глубокие исследования в Интернете.
Оказалось, что в море есть множество рыб – множество решений о том, как реализовать систему автоматизации домашней автоматизации. Некоторые предлагают платные услуги в «Облако» и другие объясняют, как создать свои собственные, используя технологию, называемую MQTT.
Ни один из решений не имеет смысла для меня. Все варианты были либо дорогими, либо имели неудобные реализации или даже недостатки безопасности.
Но, прежде чем мы пойдем дальше, давайте объясним, что такое MQTT. MQTT означает MQ Telemetry Transport Отказ Это публикация/подписка, чрезвычайно простые и легкие протокол обмена сообщениями. MQTT предназначен для ограниченных устройств и низкой пропускной способности, высокой задержки или ненадежных сетей.
Принципы дизайна заключаются в том, чтобы минимизировать потребность в области пропускной способности сети и ресурсов устройства, в то время как пытается обеспечить надежность и некоторую степень гарантии доставки. Эти принципы также оказываются, чтобы сделать протокол Идеально подходит для Выходящая «машина для машины» (M2M) или «Интернет вещей» мира подключенных устройств, а также для мобильных приложений, где пропускная способность и питание батареи находятся на премии.
Почему я не был убежден в использовании MQTT, либо по любому из решений, которые я нашел в Интернете? Две причины:
- В то время как технология MQTT кажется очень удобной для устройств IoT, я все еще думал, что это ненужно. Система, которую я буду продемонстрировать в следующем руководстве, работает в той же среде, где живут устройства IoT. Все преимущества, которые MQTT для того, чтобы быть «быстрым» и имея «низкую пропускную способность», становится неактуальным. Кроме того, есть все хлопоты, которые участвуют в ее реализации, и все дополнительные накладные расходы с дополнительными пакетами NPM, которые необходимы для его работы в среде JavaScript. Вместо этого я буду использовать универсальные библиотеки JavaScript и Node.js, больше ничего!
- Как насчет охранной части? Ну, я не большой поклонник «облака» или облачных вычислений в целом. В некоторых случаях это может быть очень полезным, но в большинстве случаев это просто ненужно. Подумайте об этом: зачем у вас есть услуга, необходимая для контроля ваших бытовых приборов, которые будут размещены где-то еще в «Облако», а не в вашей собственной сети?
Можно подумать, что «облако» дает возможность получить доступ к вашей бытовой технике из любой точки мира через Интернет.
Но подумайте об этом: когда ваша домашняя сеть не имеет подключения к Интернету, «Облако» становится избыточным. Что еще более важно, вы все равно можете сделать вашу домашнюю систему автоматизации доступной из Интернета, используя портопередачу, даже если он размещен в вашей локальной сети.
Это когда он «щелкнул» для меня, и я подумал о хостинге всей системы на малине PI и сохраняя его в моей локальной сети.
Технология
- Программное обеспечение: Причина, по которой я выбрал угловую и у Node.js, потому что они основаны на JavaScript, и я уже знаком с этим. В конце концов, я хотел разработать и разработать прогрессивное веб-приложение, которое связывается с моими устройствами IoT через HTTP – и JavaScript предлагал все необходимые функции.
- Оборудование: Система работает с микроконтроллерами, такими как Arduino UNO/MEGA/DU/MKR1000, Adafruit Huzzah CC3000 и любой другой микроконтроллер с подключением WiFi. Я использую ESP8266. в качестве базового компонента для моей системы домашней автоматизации. Это недорогой микрочип WiFi с возможностью микроконтроллера. У этого есть все, что мне нужно, и по дешевой цене! Наконец, нам нужно провести систему где-то в нашей локальной сети – так что лучше, чем Raspberry Pi?
Это не будет учебным пособием, где я погружаюсь в кодировку, поскольку этот проект является открытым источником, и я буду публиковать все на Github. Я продемонстрирую только как реализовать свою собственную систему автоматизации дома и будет проходить через каждый шаг. Если вы разработчик, пожалуйста вилка репозиторий и участвовать в улучшении его.
Настройка
Оцедавая, что это займет около 40 минут, чтобы закончить всю целую настройку плюс в любое время, потраченное в Интернете поиск решений для ошибок установки.
Что нужно?
Требуется малина PI. В моем примере я использую Raspberry Pi 3, но она должна работать с большинством версий. Необходимые компоненты:
- Raspberry Pi Board.
- Карточка MicroSD (рекомендуется класс 10 с 16 ГБ или выше)
- USB-ридер карта MicroSD или адаптер SD-карты
- Монитор HDMI и USB-клавиатура (требуется только для первой загрузки Raspberry Pi)
- Кабель Ethernet (не нужен для Raspberry Pi 3, как он встроен в WiFi)
Установка раскладной ОС на Raspberry Pi
Raspbian – это бесплатная операционная система на основе Debian Linux, и она оптимизирована для Raspberry Pi.
Я рекомендую Версия без головы “Lite”. Он не имеет никакой среды для рабочего стола или любой графический интерфейс пользователя, и он удаленно доступен с компьютера или устройства в той же сети через SSH. Мы сохраняем вещи простыми, поскольку это единственный способ получить доступ к Raspberry Pi. Версия Lite имеет все функции, которые мы ищем.
- Скачать Последние Распабское изображение с официального сайта Raspberry Pi.
- Flash The Raspbian изображение ОС на SD-карту с Etcher или любое другое программное обеспечение сжигания изображений ОС по вашему выбору.
Настройка Raspberry Pi
Чтобы подготовить PI Raspberry Pi для загрузки, нам нужно:
- Вставьте карту microSD в Raspberry Pi
- Подключите клавиатуру USB и кабель HDMI
- Подключите кабель Ethernet или у вас есть Raspberry Pi 3, и хотите использовать WiFi, вы должны настроить сеть в следующем разделе
Когда Raspberry Pi завершил загрузку, войти в систему, используя имя пользователя PI
и пароль малина
Включение Wi-Fi и подключение к сети
Пропустить этот шаг Если вы решили подключиться к кабелю Ethernet.
- Откройте файл конфигурации «WPA-Suglicantant»
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
2. Добавьте следующее в нижней части файла во время добавления вашего имени WiFi и пароль:
network={
ssid="your_networks_name" psk="your_networks_password"
}
3. Нажмите Ctrl + X
Чтобы сохранить код. Подтвердите с Уход
Тогда Входить
4. Перезагрузите Raspberry Pi со следующей командой:
$ sudo reboot
Включение SSH и изменение имени пользователя и пароля
Теперь, когда Raspberry Pi подключается к Интернету, рекомендуется изменить пароль по умолчанию.
- Откройте инструмент конфигурации Raspberry PI и щелкните второй параметр «Изменить пароль пользователя» и следуйте инструкциям
$ sudo raspi-config
2. Выберите опцию 5 «Включение параметров», затем активируйте SSH
3. Перезагрузите Raspberry Pi. Когда он работает, у вас есть SSH включен, и он готов к работе удаленно с вашего настольного компьютера
$ sudo reboot
Настройка удаленного доступа к Raspberry Pi
Теперь, наконец, часть, когда мы устанавливаем необходимое программное обеспечение на Raspberry Pi. Эта часть может быть выполнена непосредственно на PI через терминал с помощью монитора HDMI и USB-клавиатуры. Для удобства – и поскольку мы включаем удаленный SSH-соединение – мы собираемся подключиться к другой среде настольных компьютеров. Это лучший и простой способ удаленного доступа и контроля PI всякий раз, когда требуются изменения и конфигурации.
Итак, в основном, именно то, как вы можете получить доступ к интерфейсу командной строки Raspberry Pi удаленно с другого компьютера или любого устройства в той же сети, используя SSH. Это можно сделать двумя способами:
- Использование командной строки или PowerShell (я использую Windows на настольном компьютере), замените ваше имя пользователя и IP-адрес
$ ssh username@ipaddress
Если вы не знаю IP-адрес, тип ” Имя хоста --i "
в командной строке Raspberry Pi.
2. Второй метод использует клиентскую программу, как Замазка или любой Другое Функционирующее программное обеспечение Client SSH. Вот легко Руководство для использования замазки.
Установка требуемого программного обеспечения на Raspberry Pi
Прежде чем установить что-либо, рекомендуется обновлять операционную систему Raspberry Pi и пакеты. Это регулярно будет держать его в курсе.
- Обновите список пакетов системы, используя следующую команду:
$ sudo apt-get update
2. Обновите все свои установленные пакеты на свою последнюю версию:
$ sudo apt-get dist-upgrade
3. Загрузите и установите последнюю версию Node.js:
// To download$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
// To install$ sudo apt-get install -y nodejs
// Check if the installation was successful:$ node -v
4. Установите угловой CLI глобально:
$ npm install -g @angular/cli
5. Установите систему управления GIT-версией:
$ sudo apt-get install git
Установка базы данных (MongoDB)
Нам нужна база данных для хранения зарегистрированных пользователей и их учетных данных. Вот необходимые шаги:
- Установите MongoDB
$ sudo apt-get install mongodb
2. Запустите процесс MongoDB
$ sudo service mongodb start
3. Запустите оболочку Mongo
$ mongo
3. Создать базу данных под названием «SmartHaus»
$ use smarthaus
В Mongodb база данных по умолчанию тестирует. Если вы не создали никакой базы данных, то коллекции будут сохранены в тестовой базе данных.
Установка умного Haus.
1. Проверьте текущий рабочий каталог, используя эту команду:
$ pwd
/* It will probably print "/home/pi" where "pi" is the current user directory */
Рекомендуется Чтобы клонировать репозиторий проекта в пользовательском каталоге PI PI, но вы можете перемещаться где-то еще, если вы уверены.
2. Клонировать репозиторий из:
$ git clone https://github.com/ameer157/smarthaus.git
Обязательно перемещаться внутри каталога, используя:
$ cd smarthaus
Перед установкой любых пакетов NPM используют «NPM Install», пожалуйста, обратитесь к Руководство НПМ, чтобы исправить разрешения Чтобы узнать, как исправить любую « EACCESS » ошибки, которые вы можете столкнуться во время установки. Это Очень важно Поскольку он предотвратит ошибки разрешений NPM и позволяет устанавливать пакеты во всем мире без использования Sudo. Использование Sudo с NPM не рекомендуется и следует избегать Отказ
3. Установите все необходимые пакеты для проекта:
$ npm install
Запуск сервера Node.js
Перед запуском сервера нам нужно создать проект, используя угловой CLI. И, наконец, мы настраиваем Raspberry Pi так, чтобы она запускала сервер всякий раз, когда он загружается.
- Создайте проект, используя:
$ ng build --prod
2. Изменить rc.local
Файл с использованием . нано
:
$ sudo nano /etc/rc.local
3. Добавьте следующее на строке перед Выход 0
Затем выйдите и сохраните файл:
su pi -c 'cd /home/pi/smarthaus/backend && sudo node server.js > log.txt &'
Сервер Node.js теперь готов! Он будет работать в каждой загрузке системы и сохранять журналы в том же каталоге в файле «log.txt».
Давайте запустим его сейчас и посмотрим, работает ли это, используя эту команду:
$ sudo node server
Система в настоящее время доступна с любого устройства в вашей сети через IP-адрес Raspberry Pi.
Пожалуйста, продолжайте и вилка Этот проект и участвовать в разработке недостающихся частей?
Конец
Мы получили себя рабочей системой автоматизации домашней автоматизации, бегущей безопасно на малине PI в нашей локальной сети без использования «облака» или другого другого сервера.
Моя малина PI сидит рядом с моим Кокски И роутер в гостиной?
Я надеюсь, что вы наслаждались чтением, Пожалуйста, Следуйте за и Поделиться Для более технических вещей ??
Оригинал: “https://www.freecodecamp.org/news/the-most-robust-and-secure-home-automation-system-6d0ddbb39f29/”