на главную
Карта сайта
English version
Вы читаете:

Управление устройствами через блокчейн

Связь
2 года назад

Управление устройствами через блокчейн


Отправляясь в отпуск или другую длительную поездку, перед многими путешественниками встаёт вопрос кормления оставленных без попечения питомцев.

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

Блокчейн решит многие из вышеперечисленных проблем. Никаких серверов, никакой оплаты, никаких данных от пользователя при регистрации и минимум настроек! В статье описан способ удалённого управления устройствами с помощью технологии блокчейн.

Прежде чем познакомить читателей с анонсированным в предыдущей публикации "Блокчейн для всех" материалом об управлении устройствами через блокчейн, хочу рассказать об упущенной в прошлой статье теме. Речь идёт о тестовых сетях.

Поскольку запись в блокчейн любой информации требует расходов цифровых активов (в предыдущей публикации имелись в виду токены Emercoin), именно работа в тестовых сетях позволит читателям, решившим воспользоваться предложенными решениями, избежать ненужных трат.

Тестовые сети присутствуют во многих блокчейн-платформах, а не только в Emercoin, и предназначены они, как наверняка понятно из названия, для тестирования и проверки каких-либо действий в сети блокчейн. Этим сетям доступен весь функционал, как и основным. Единственное отличие тестовой сети от основной - это то, что в ней "крутятся" тестовые токены и весь блокчейн, т. е. все записи на некоторых платформах периодически обнуляются, ведь это, по сути, всего лишь черновик, и "раздувать" его нет смысла.

Для того чтобы открыть тестовый кошелёк и синхронизироваться с тестовой сетью, ничего скачивать не потребуется, если вы уже загрузили и установили Emercoin Core, описанный в статье "Блокчейн для всех", достаточно в файле конфигурации (о файле конфигурации emercoin.conf рассказано в вышеуказанной статье) дописать в начале строчку testnet=1. После этого станет открываться точно такой же кошелёк, что и основной, с пометкой в верхней части окна "[тестовая сеть]" рис. 1.

Вид окна Emercoin Core - кошелёк [тестовая сеть]

Рис. 1. Вид окна Emercoin Core - кошелёк [тестовая сеть]

 

Тестовые монеты Emercoin любезно предоставляют разработчики платформы, если к ним обратиться с такой просьбой через форму обратной связи на сайте emercoin.com. Укажите адрес, на который надо перевести тестовые монеты. Посмотреть и скопировать этот адрес можно в открытом кошельке, пройдя по вкладкам "получить". Для других платформ механизм распространения тестовых монет может быть иным.

Для работы в тестовых сетях необходимы токены, и распространяются они разработчиками платформ бесплатно. Тестовые токены не имеют монетарных свойств, т. е. они не продаются на биржах и не обмениваются на какую-либо валюту. Поэтому никакой финансовой подоплёки в их распространении нет.

Обратите внимание - в этом проекте используется блокчейн-платформа Waves, а не Emercoin. Скачивать и синхронизировать блокчейн на свой компьютер не требуется!

Адрес платформы - <https:// testnet.waves.exchange/>. После несложной регистрации (вариант "Программный доступ" не потребует ввода каких-либо персональных данных и адреса email - рис. 2) станет доступен весь функционал платформы. Пусть читателя не пугает интерфейс системы с наличием вкладок "Купить криптовалюту", "Торговля" и т. п. Ещё раз повторюсь - сеть тестовая, и все манипуляции в ней - с "ненастоящими" активами и валютами.

Рис. 2.

 

Тестовые токены можно получать один раз каждые десять минут, посещая страницу https://testnet. wavesexplorer.com/faucet/ платформы Waves и вводя адрес кошелька в поле Testnet Address (рис. 3).

Рис. 3.

 

Адрес или запишите при регистрации, или посмотрите в правом верхнем углу, кликнув на "галочку" (рис. 4).

Рис. 4.

 

Разрабатывая систему управления через блокчейн, хотелось экспортиро-вать код на миниатюрные устройства типа Arduino, но микроконтроллеры, установленные на этих платформах, не имеют мощностей для управления соединениями вида https, по которым идёт взаимодействие с блокчейном.

Проект можно реализовать с использованием миниатюрного компьютера Raspberry Pi. К тому же плата Raspberry Pi оснащена портами ввода/вывода GPIO, что решает вопрос с устройством сопряжения.

Но я остановил свой выбор на полноценном компьютере с операционной системой Windows, на который можно возложить много дополнительных функций, таких как охрана и видеонаблюдение. Для соединения компьютера с приводом кормушки я применил нестандартный и, по моему мнению, простой вариант сопряжения устройства с компьютером.

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

Рис. 5. Схема подключения к клавиатуре

 

Старая USB-клавиатура после небольшой доработки справится с задачей управления как минимум трёх реле. Как? Ведь на ней только кнопки! И с клавиатуры можно только ввести информацию в компьютер, а для управления необходимо выводить. Всё очень просто. Индикаторы NumLock, CapsLock и ScrollLock могут загораться и гаснуть не только при нажатии одноимённых клавиш, но и по сигналам от программ. На рис. 5 приведена схема подключения к клавиатуре, если ток срабатывания реле не превышает 50 мА. Схема на рис. 6 позволит реализовать управление в случае большего тока срабатывания. Излучающий диод оптрона подключают параллельно светодиоду клавиатуры или вместо него.

Схема, которая позволит реализовать управление в случае большего тока срабатывания

Рис. 6. Схема, которая позволит реализовать управление в случае большего тока срабатывания

 

Использовать можно либо всю клавиатуру, либо только плату, на которой размещены индикаторы NumLock, CapsLock и ScrollLock.

Можно воспользоваться готовым решением от китайских производителей - фотореле в виде модуля XH-M131 (рис. 7).

Модуль XH-M131

Рис. 7. Модуль XH-M131

 

Фотоэлемент закрепляют вплотную к штатному индикатору клавиатуры и све-тоизолируют, например фольгой. Какого-либо вмешательства в клавиатуру в этом случае не требуется.

Теперь, подключив к контактам реле какую-либо нагрузку, уже локально можно без всяких программ включать и выключать её, нажимая на клавишу, на которую реагирует задействованный светодиод.

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

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

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

Одновибратор с оптронной развязкой можно рализовать на базе Arduino. Скетч single_vibrator.ino для загрузки в Arduino находится здесь. В двух местах скетча можно менять значения задержки delay(3000), увеличивая или уменьшая время, на которое будет включён привод кормушки, регулируя порцию выдаваемого за один раз корма.

В строках if (int(sensorValue) >100 && sost == 0) и if (int(sensorValue) <100 && sost == 1) скетча значение после знаков ">" и "<" надо подобрать таким, чтобы чётко и однозначно указать порог освещённости фоторезистора светодиодом клавиатуры, при котором включается реле. Узнать это значение, включив монитор порта в программной оболочке IDE Arduino после загрузки скетча, можно так. Включая и выключая светодиод клавиатуры, к которому "пристыкован" фоторезистор (ещё раз напомню, что эта фотопара должна быть хорошо светоизолирована от внешних засветок), обратите внимание на числа, выводимые в окне монитора. Минимальное число при включённом светодиоде и будет искомым значением.

Конечно, Arduino можно подключить к компьютеру через физический USB-порт, Bluetooth или по Wi-Fi, а реализация, предложенная в этой статье, - это всего лишь один из интересных, по моему мнению, вариантов сопряжения компьютера и устройства. Ещё один нестандартный вариант я предлагал в этой статье. Основным же в этом материале остаётся не способ сопряжения устройства с компьютером, а способ управления через Интернет.

Итак, войдите в систему Waves, узнайте адрес кошелька и получите тестовые токены на него.

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

Программа control_keyboard_ indicators.exe и файл её настройки ConfigLOCK.ini расположены на ftp-сервере журнала.

Программа control_keyboard_ indicators.exe периодически проверяет баланс кошелька и, в зависимости от его состояния в соответствии с условием, даёт команду на включение определённого индикатора клавиатуры.

Все настройки программы сводятся к изменению файла конфигурации ConfigLOCK.ini под ваши потребности. На рис. 8 показан пример программы.

Пример программы

Рис. 8. Пример программы

 

Для настройки достаточно поменять значения ключей всего в трёх подчёркнутых строках.
В ключ address после знака равенства впишите адрес кошелька сети Waves, от состояния которого будет зависеть сценарий управления.

Ключ lock указывает, каким именно индикатором клавиатуры будет управлять программа.
Ключ condition - это условие изменения состояния выбранного индикатора.

Если значение ключа condition = "<", то сигнал на изменение состояния индикатора подаётся при уменьшении баланса, т. е. управлять может только владелец кошелька, ведь изменять баланс на уменьшение может только он сам.

Значение ключа condition = ">" приведёт к тому, что сигнал на изменение состояния индикатора будет подан только при увеличении баланса, т. е. управлять может любой пользователь, кто отправит на адрес из ключа address любое число токенов.

В седьмой строке под ключом var для информации указаны все варианты ключей lock и condition.

Для управления тремя индикаторами клавиатуры можно запускать три экземпляра программы control_keyboard_ indicators.exe, скопировав их вместе с файлами конфигурации в отдельные папки. Ключи lock в файлах ConfigLOCK.ini, конечно же, должны быть разными. А ключи condition и address могут быть любыми для управления индикаторами независимо друг от друга и по разным сценариям.

Само управление непосредственно можно выполнить или с другого удалённого компьютера или даже со смартфона всё через тот же Web-интерфейс платформы Waves. Используя тот же аккаунт, что уже зарегистрирован, или заведя новый, совершите исходящую или входящую транзакцию на адрес из файла конфигурации ConfigLOCK.ini и на клавиатуре компьютера с запущенной программой control_keyboard_ indicators.exe обязательно изменит состояние индикатор, указанный под ключом lock (рис. 9).

Рис. 9.

 

Web-интерфейс для управления, конечно, не очень удобен, но при желании можно воспользоваться API, предоставляемым создателями платформы, и создать свой простой, удобный интерфейс для управления.

Упомянутые в статье программы размещены здесь.

Автор: Ю. Шомников, пгт Верховье Орловской обл.