Задний план

Когда я возвращаюсь с работы на велосипеде, процесс парковки велосипеда в гараже был следующим.

  1. Откройте входную дверь в дом.
  2. Выключи будильник.
  3. Откройте дверь гаража с помощью пульта дистанционного управления.
  4. Припаркуйте байк в гараже.

Мотор порта гаража

Мотор, используемый в гараже, имеет два разъема, которые работают как кнопка, если они соединены вместе. При подключении состояние порта переключается, и это означает, что если он закрыт, он откроется, а если он открыт, он закроется. Я попытался сократить путь в гараж с помощью этих разъемов, а также некоторого оборудования и программного обеспечения.

Дубль 1

Моей первой попыткой было использовать Arduino Uno, подключенную к считывателю RFID. Это решение позволило бы спрыгнуть с велосипеда перед портом гаража и прикоснуться к считывателю RFID с помощью предоставленного модуля RFID. Я использовал транзистор Mosfit, чтобы попытаться подключить мотор, открывающий порт. Он работал нормально, когда на Arduino Uno подавалось питание от компьютера, но переставал работать, когда для питания использовался источник питания USB. Я пробовал много других решений, чтобы заставить его работать с моими минимальными знаниями электричества, но порт оставался закрытым.

Дубль 2

Через некоторое время, зализывая раны, я получил на свой почтовый ящик заказ проекта Kickstartered Onion Omega2. Это небольшой компьютер с Linux и цитата из его кампании по кикстартеру.

Он сочетает в себе крошечный форм-фактор и энергоэффективность Arduino с мощностью и гибкостью Raspberry Pi.

Приятно то, что он создает собственную точку доступа Wi-Fi, и вы можете получить к ней доступ через SSH. Когда я играл с Omega2, я также наткнулся на видео от ItKindaWorks, где он показывал, как он решает ту же проблему, что и я. В своем решении он использовал релейный модуль, который изолировал гаражный двигатель от электричества. Я купил один из этих модулей, подключил его к Omega2 и смог открыть порт гаража! УСПЕХ :)

(Релейный модуль заставил бы меня впервые решить эту проблему. Но я продолжил путь Omega2.)

Это команда оболочки, которую я запускал на Omega2 для переключения порта гаража.

gpioctl dirout-high 0 && sleep 1 && gpioctl dirout-low 0

Команда устанавливает на выводе 0 IO Omega2 высокий уровень, затем ждет одну секунду, а затем устанавливает низкий уровень на выводе 0. Эта серия имитирует кнопку и переключает текущее состояние порта гаража. Если порт закрыт, он откроется, если он полностью открыт, он закроется, если порт закрывается / открывается, он останавливается, а если он был закрыт на пути вниз, он поднимается и наоборот.

После серии тестов я решил усовершенствовать решение Omega2 с датчиком герконового переключателя, чтобы знать, был ли порт закрыт или открыт. Добавьте протокол MQTT для управления портом, а также для того, чтобы знать его текущий статус. Добавьте веб-страницу, чтобы открыть / закрыть порт из любого места, а также узнать, открыт порт или закрыт.

Аппаратное обеспечение

One Onion Omega2 - сердце проекта.

One Onion Omega dock - обнажить контакты ввода-вывода и USB-разъем питания

Один модуль реле - разделяет питание Omega2 и гаражного порта.

Один геркон - указывает, открыт порт или закрыт

Один магнит - устанавливает высокое или низкое переключение язычка.

Четыре кабельных стяжки« папа-мама - соединяет релейный модуль и герконовый переключатель с док-станцией Omega.

Одно зарядное устройство USB - питает Omega2

Один биполярный кабель - соединяет модуль реле с двигателем, который открывает гараж.

Настраивать

Программное обеспечение

москит - клиент MQTT.

MQTT - это легкий протокол публикации / подписки, который упрощает отправку событий от одного или нескольких издателей, где один или несколько подписчиков могут прослушивать события.

Счет у MQTT-брокера (в моем случае Shiftr.io).

Два скрипта cmd.sh и status.sh, которые будут взаимодействовать с выводами ввода-вывода на Omega2 и брокере MQTT. Я черпал вдохновение из этой публикации Stackexchange при создании скриптов.

Веб-страница с текущим статусом порта гаража и местом, где его можно переключить.

Настраивать

Подключитесь к Omega2 по SSH

Установить москит

opkg update 
opkg install mosquitto mosquitto-client libmosquitto

Загрузите два сценария cmd.sh и status.sh в корневую папку /.

cd /root
wget https://gist.githubusercontent.com/hallgren/c68e0cb648e2abc701b85f483d5902e9/raw/e0a6a0805dd755ac658b685e9ae8239899ba6138/cmd.sh
wget https://gist.githubusercontent.com/hallgren/8cec28707047ec0a20750bdc3aaf1661/raw/3c6e3d03d70608bee613370d51142eb42b66c0b9/status.sh
#Make the scripts executable
chmod +x cmd.sh
chmod +x status.sh

Добавьте свою информацию MQTT в два файла. cmd.sh подписывается только на тему и ему нужен только доступ для чтения, в то время как status.sh публикуется и ему нужен доступ для записи в тему.

#!/bin/ash
# MQTT SETTINGS
host="<mqtt_broker_url>"
user="<user>"
password="<password>"
port=1883
topic="<topic>"
.
.

Добавьте два файла в /etc/rc.local, чтобы файлы запускались при загрузке Omega2.

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
ash /root/cmd.sh &
ash /root/status.sh &
exit 0

Если все работает правильно, вы должны увидеть, как по теме начинают течь статусные события. Вот как выглядит моя тема. Https://shiftr.io/morgan/garage

Чтобы переключить порт гаража, мы должны отправить toggle событие в тему. Вы можете сделать это вручную с помощью клиента mosquitto.

mosquitto_pub -h $host -u $user -P $password -p $port -t $topic -m "toggle"

Я создал небольшую программу на Ruby, которая открывает веб-страницу, подключенную к брокеру MQTT. На веб-странице событие переключения может быть инициировано с помощью кнопки, и отображается текущий статус порта гаража. Ниже приведены два изображения, на которых показаны два возможных состояния веб-страницы.

Довольно просто разместить на Heroku, и если вы хотите поэкспериментировать с исходным кодом, вы найдете его на Github.

Take 2.1 - интеграция часов Kronaby

Я владелец часов Kronaby от Anima, аналоговых часов, которые подключаются к вашему смартфону, что делает их наполовину умными.

Приятно то, что вы можете использовать его вместе с IFTTT для управления вещами в вашем окружении. Я использую апплет веб-перехватчика в IFTTT для отправки HTTP-запроса Post, когда я нажимаю одну из кнопок на боковой стороне часов. Запрос запускает событие переключения MQTT с помощью тех же функций, что и кнопка отправки на сборке веб-страницы в Take 2.

Вот видео с финальным результатом. Https://www.youtube.com/watch?v=N_0D8SKBXrE

Удачного взлома.