====== IoT (Интернет вещей) — дополнение к набору «Йодо» ====== Электронная версия инструкции из набора «[[amp>product/yodo-iot?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|IoT (Интернет вещей)]]». Здесь собраны все исходные коды экспериментов, подсказки и хаки по прохождению набора. {{ :iot:iot4wiki.png?nolink&600 |}} ===== Электронная версия ===== * {{:iot:iot-yodo.pdf|Книга}} в формате .pdf ===== Видеообзор набора «Интернет вещей» ===== {{youtube>uBkJ70qMLQk?large}} ===== Обновление прошивки ===== Если прошивка твоей платы ниже 1v91, обнови её. Обновить версию прошивки до самой свежей можно непосредственно в IDE. Для этого перейди в Настройки {{:js:ide:settings-icon.png?nolink|}} Flasher , нажми кнопку Flash Firmware и следуй инструкциям на экране. Более подробную информацию ты найдешь [[http://wiki.amperka.ru/js:ide#обновление_прошивки|в разделе про обновление прошивки Iskra JS]]. ===== Необходимые модули из набора «Йодо» ===== {{ :iot:iotyodocomp.png?nolink&600 |}} Для проектов IoT тебе потребуются платы и модули из базового набора «Йодо»: * [[amp>product/iskra-js?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Iskra JS]] * [[amp>product/troyka-temperature-sensor?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Датчик температуры (Troyka-модуль)]] * [[amp>product/troyka-potentiometer?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Потенциометр (Troyka-модуль)]] * [[amp>product/troyka-button?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Кнопка (Troyka-модуль)]] * [[amp>product/troyka-buzzer?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Зуммер (Troyka-модуль)]] * [[amp>product/troyka-light-sensor?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Датчик освещённости (Troyka-модуль)]] * [[amp>product/troyka-5mm-led-module?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Светодиод (Troyka-модуль)]] Если ты уже используешь эти модули и платы в своих крутых проектах, а разбирать их не хочется — закажи недостающие! ===== Файлы на флеш-карте ===== На флешке в составе набора уже есть файлы. Они понадобятся тебе для проектов, не изменяй и не удаляй их. Но если всё-таки что-то пошло не так — ты всегда сможешь скачать {{:iot-m:sd-content.zip|архив с файлами}}. Распакуй архив и скопируй файлы на SD-карту. Iskra JS работает только с картами, отформатированными в FAT32. ===== Настройка точки доступа на смартфоне ===== Иногда в прямой досягаемости нет Wi-Fi сети, а сделать эксперименты из набора очень хочется. Что же делать в таком случае? Поднять такую сеть самому при помощи смартфона! Некоторые операторы блокируют возможность раздавать Wi-Fi с телефона. Если у тебя в меню нет нужных пунктов — свяжись со службой поддержки оператора и попроси активировать эту функцию. Обычно операторы восстанавливают эту возможность в течение часа после обращения. ==== iOS ==== Настройки общего доступа к сотовой сети твоего телефона находятся в меню «Настройки» «Сотовая связь» «Режим модема» . В этом меню можно включить режим точки доступа и задать ей пароль. Именем (SSID) точки доступа будет имя телефона. Рекомендуем не закрывать это меню до тех пор, пока клиент не подключится к точке доступа. {{ :iot:настройка_точки_доступа_иос.png?nolink&300 |}} После первого включения режима модема такой пункт скорее всего появится в главном меню настроек телефона. ==== Android ==== Особенность телефонов на ОС Android — практически у каждого производителя свой интерфейс. Это значит, что невозможно точно сказать, где в твоем телефоне находится кнопка «Раздать интернет» (или даже как она называется). Обычно её можно найти в настройках под названиями вроде «Режим модема и переносная точка доступа». {{ :iot:ap.png?nolink&700 |}} ===== Эксперименты ===== ==== 1. Удалённый термометр ==== Плату Iskra JS в интернет выходить научи. Информацию о температуре в комнате своей в виде графиков на сайте [[https://dweetpro.io|dweet.io]] наблюдай. **Видеоурок с прохождением эксперимента** {{youtube>RmDlxyIMc3c?large}} Для этого эксперимента подключи к твоей Iskra JS модуль Wi-Fi и датчик температуры. ** Схема сборки устройства ** {{ :iot:yodo-iot-1.png |}} ** Код эксперимента** var SSID = 'имя_твоего_wi-fi'; var PASSWORD = 'пароль_твоего_wi-fi'; var NAME = 'твой_уникальный_ключ'; var temp = require('@amperka/thermometer').connect(A2); var dweet = require('@amperka/dweetio').connect(NAME); function run() { setInterval(function() { dweet.send({ temperature: temp.read('C') }); }, 1000); } var wifi = require('@amperka/wifi').setup(function(err) { wifi.connect(SSID, PASSWORD, function(err) { print('Click this link', dweet.follow()); run(); }); }); На нашей вики ты сможешь узнать подробнее о функциях библиотек [[http://wiki.amperka.ru/js:dweet|@amperka/dweetio]], [[http://wiki.amperka.ru/js:thermometer|@amperka/thermometer]] и [[http://wiki.amperka.ru/js:wifi|@amperka/wifi]]. ==== 2. Восьмибитный аудиоплеер ==== Музыки проигрыватель сделаем себе. На флеш-карте треки хранить будем, зуммером их воспроизводить и кнопкой одной лишь переключать. Потребуется модуль [[http://amperka.ru/product/troyka-sd?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|SD-картридер]] нам. **Видеоурок с прохождением эксперимента** {{youtube>EXtADkkapAU?large}} Интересный факт — музыка на твоей флеш-карте хранится в формате **RTTTL** (англ. «Ring Tone Text Transfer Language» — текстовый язык для использования в рингтонах). Это формат, изобретённый компанией Nokia для использования в сотовых телефонах. Звук в этом формате хранится в виде текста. Процессор (Iskra JS в нашем случае) использует этот текст как своеобразную партитуру для проигрывания мелодии. ** Схема сборки устройства ** {{ :iot:yodo-iot-2.png |}} ** Код эксперимента** var sdCard = require('@amperka/card-reader').connect(P8); var player = require('@amperka/ringtone').create(A2); var shuffle = require('@amperka/button').connect(P12); shuffle.on('click', function() { player.stop(); var melody = sdCard.readRandomFile('/music'); player.play(melody); }); shuffle.on('hold', function() { player.stop(); }); На нашей вики ты сможешь узнать подробнее о функциях библиотек [[http://wiki.amperka.ru/js:card-reader|@amperka/card-reader]],[[http://wiki.amperka.ru/js:ringtone|@amperka/ringtone]] и [[http://wiki.amperka.ru/js:button|@amperka/button]]. ==== 3. Браузерный Dendy ==== Роботом управлять будем в игре браузерной. С флеш-карты её загрузим и мастерством гоночным овладеем! Для этого эксперимента мы будем использовать модули Wi-Fi и SD-картридера. Iskra JS будет выполнять роль сервера, при подключении к которому в браузере появляется страница ''race.html''. Внутри этой страницы и расположена игра. **Видеоурок с прохождением эксперимента** {{youtube>Rdsv0DBdf70?large}} ** Схема сборки устройства ** {{ :iot:yodo-iot-3.png |}} ** Код эксперимента** var SSID = 'имя_твоего_wi-fi'; var PASSWORD = 'пароль_твоего_wi-fi'; var sdCard = require('@amperka/card-reader').connect(P8); var server = require('@amperka/server').create(); server.on('/', function(req, res) { var content = sdCard.readFile('race.html'); res.send(content); }); var wifi = require('@amperka/wifi').setup(function(err){ wifi.connect(SSID, PASSWORD, function(err) { wifi.getIP(function(err, ip) { server.listen(); print('Game is ready! http://'+ip+'/'); }); }); }); ==== 4. Умный дом ==== Дом свой разумом надели. [[http://amperka.ru/product/troyka-mini-relay?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Мини-реле]] освой для этого, которое напряжением высоким управлять может. **ВНИМАНИЕ! РАБОТА С ВЫСОКИМ НАПРЯЖЕНИЕМ ОПАСНА ДЛЯ ЗДОРОВЬЯ И ЖИЗНИ.** Если тебе ни разу не приходилось работать с напряжением 220 вольт, оставь зелёные клеммы неподключёнными. Вместо этого используй светодиод на реле. Если горит — реле включено. Если нет — выключено. var sdCard = require('@amperka/card-reader').connect(P8); var relay = require('@amperka/relay').connect(P12); var server = require('@amperka/server').create(); var SSID = 'имя_твоего wi-fi'; var PASSWORD = 'пароль_wi-fi'; server.on('/', function(req, res) { var content = sdCard.readFile('light.html'); res.send(content); }); server.on('/turnOn', function() { relay.turnOn(); }); server.on('/turnOff', function() { relay.turnOff(); }); var wifi = require('@amperka/wifi').setup(function(err) { wifi.connect(SSID, PASSWORD, function(err) { wifi.getIP(function(err, ip) { server.listen(); print('Relay control is ready! http://'+ip+'/'); }); }); }); На нашей вики ты сможешь узнать подробнее о функциях библиотеки [[http://wiki.amperka.ru/js:relay|@amperka/relay]]. ==== 5. Интерактивный дом ==== На содержимое веб-страницы силами природы и волей своей в реальном времени влиять будем. Прибор для этого с датчиками освещения и температуры соберем. А для волей контроля потенциометр добавим. var sdCard = require('@amperka/card-reader').connect(P8); var light = require('@amperka/light-sensor').connect(A1); var pot = require('@amperka/pot').connect(A2); var temp = require('@amperka/thermometer').connect(A4); var SSID = 'имя_твоего_wi-fi'; var PASSWORD = 'пароль_wi-fi'; var server = require('ws').createServer(function(req, res) { var content = sdCard.readFile('home.html'); res.end(content); }); function prepareData() { var data = { speed: Math.floor(pot.read() * 41) - 20, light: Math.floor(light.read('lx') / 640), temperature: Math.floor(temp.read('C')) }; return JSON.stringify(data); } server.on('websocket', function(ws) { setInterval(function() { ws.send(prepareData()); }, 200); }); var wifi = require('@amperka/wifi').setup(function(err) { wifi.connect(SSID, PASSWORD, function(err) { wifi.getIP(function(err, ip) { print('I\'m ready! http://'+ip+'/'); server.listen(80); }); }); }); На нашей вики ты сможешь узнать подробнее о функциях библиотек [[http://wiki.amperka.ru/js:relay|@amperka/relay]], [[http://wiki.amperka.ru/js:light-sensor|@amperka/light-sensor]] и [[http://wiki.amperka.ru/js:pot|@amperka/pot]]. ==== 6. Напоминальник ==== Важные события жизни своей в почте оставляй. Кота покормил? В почту себе напоминание пришли, чтобы в тонусе падавана держать. Использовать для этого сервисы [[https://ifttt.com|IFTTT]] и Webhooks будем, а о событии сообщать простым кнопки нажатием. var SSID = 'имя_твоего wi-fi'; var PASSWORD = 'пароль_wi-fi'; var trigger = require('@amperka/button').connect(P12); var maker = require('@amperka/ifttt-webhooks').create({ token: 'токен_сервиса_webhooks', action: 'feed' }); var wifi = require('@amperka/wifi').setup(function(err) { wifi.connect(SSID, PASSWORD, function(err) { print('Ok, hold button.'); }); }); var data = { value1: 'I did it!' }; trigger.on('hold', function() { maker.send(data, function(response) { print(response); }); }); Подробнее о функциях библиотеки @amperka/ifttt-webhooks [[http://wiki.amperka.ru/js:ifttt-webhooks|ты можешь узнать из нашей статьи на вики]]. ==== 7. Telegram bot ==== Mессенджером [[https://telegram.org/|Telegram]] овладеем. Iskra JS ему обучим и сложные интерактивные системы строить с ним будем. А для начала научимся света включением из чата управлять. === Установка Node-RED в Windows 10 === - Загрузите последнюю LTS версию Node.js с официальной страницы: [[https://nodejs.org/en/]] - Запустите скачанный MSI файл. При установке оставьте все настройки по умолчанию. - Чтобы проверить, что установка завершилась корректно, откройте командную строку: * Нажмите клавиши **Win+R**. * В появившемся окне введите **cmd**. * Нажмите «ОК» * В командной строке введите команду: node --version && npm --version Вы должны увидеть текущие версии установленных программ: v12.15.0 6.14.5 - Выполните следующую команду в командной строке:npm install -g --unsafe-perm node-red - Как только установка завершится, вы сможете запускать Node-RED c помощью командной строки:node-red === Установка Node-RED в системах Ubuntu, Debian, Raspberry Pi OS === - Если вы используете Raspberry Pi OS или любую операционную систему на основе Debian, включая Ubuntu, выполните в командной строке следующую команду:bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)Cкрипт делает следующее: * Удаляет предустановленные Node-RED и Node.js, если они есть. * Устанавливает текущую LTS версию Node.js. * Устанавливает последнюю версию Node-RED. - Если по каким-то причинам скрипт завершился с ошибкой, сделайте следующее: * Установите Node JS с помощью команды: sudo apt install nodejs * Установите менеджер пакетов npm: sudo apt install npm * Установите Node-RED: sudo npm install -g --unsafe-perm node-red - Как только установка завершится, вы сможете запускать Node-RED c помощью команды:node-red === Установка Node-RED в Mac OS === - Загрузите последнюю LTS версию Node.js с официальной страницы: [[https://nodejs.org/en/]] - Запустите скачанный pkg файл. При установке оставьте все настройки по умолчанию. - Чтобы проверить, что установка завершилась корректно, откройте терминал: * Нажмите значок **Launchpad** в панели **Dock**.{{:iot:mac_os_dock_launchpad.png?nolink|}} * Введите «Terminal» в поле поиска и нажмите значок **Терминала**.{{:iot:launchpad-terminal_search.png?nolink|}} * В терминале выполните команду: node --version && npm --version Вы должны увидеть текущие версии установленных программ: v12.15.0 6.14.5 - Чтобы установить Node-RED, выполните следующую команду в терминале:npm install -g --unsafe-perm node-red - Как только установка завершится, вы сможете запускать Node-RED c помощью команды:node-red === Протокол MQTT === MQTT — это легковесный протокол, применяемый для общения между устройствами (M2M — machine-to-machine). Он использует модель издатель-подписчик для передачи сообщений поверх протокола TCP/IP. Центральная часть MQTT-протокола это MQTT-сервер или брокер, который имеет доступ к издателю и подписчику. Используя MQTT можно построить сеть датчиков, где они публикуют свои данные в форме сообщений, уникальных для каждого из них. Исполнительные устройства подписываются на сообщения, на которые им необходимо реагировать. MQTT-брокер будет заботиться о перенаправлении сообщений от издателя к подписчику. В качестве MQTT-брокера используем **mosquitto**. === Установка mosquitto в Windows 10 === - Скачайте установочный файл с официального сайта mosquitto: https://mosquitto.org/download/ - Запустите скачанный exe-файл. При установке оставьте все настройки по умолчанию. - После окончания установки перезапустите компьютер. - Чтобы проверить, что установка завершилась корректно, откройте командную строку: * Нажмите клавиши **Win+R**. * В появившемся окне в нижнем левом углу экрана введите команду **services.msc**. * Нажмите «ОК». Откроется окно **Службы**. * Найдите в открывшемся окне службу **Mosquitto Broker** и убедитесь, что её состояние помечено как **Выполняется**.{{:iot:services_mosquitto.png?nolink&700|}} * Если служба **Mosquitto Broker** не выполняется, запустите её вручную. Для этого дважды щёлкните по строке с названием **Mosquitto Broker** в списке служб и в открывшемся окне нажмите кнопку **Запустить**. Убедитесь, что в поле **Тип запуска** установлено значение **Автоматически**.\\ {{:iot:mosquitto_service_settings.png?nolink|}} === Установка mosquitto в системах Ubuntu, Debian, Raspberry Pi OS === - Установите mosquitto с помощью командной строки:sudo apt install mosquitto - После установки проверьте, запущен ли mosquitto, как служба:sudo service mosquitto status В терминале вы должны увидеть следующее:● mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-12-03 12:49:04 MSK; 2min 10s ago Docs: man:mosquitto.conf(5) man:mosquitto(8) Main PID: 2069 (mosquitto) Tasks: 1 (limit: 4150) CGroup: /system.slice/mosquitto.service └─2069 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf Убедитесь, что в строке **Active** указан статус **active (running)**. Если это не так, запустите сервис mosquitto с помощью команды: sudo systemctl start mosquitto.service === Установка mosquitto в Mac OS === - Если у вас не установлен пакетный менеджер Homebrew, установите его следующей командой в терминале:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" - Введите в терминале команду:brew install mosquitto === Первый запуск Node-RED === - Запустите Node-RED в терминале: node-red Запуск может занять несколько секунд. Вы увидите, что сервер Node-RED запущен по адресу http://127.0.0.1:1880{{:iot:server_running.png?nolink|}} Внимание! Вы должны держать терминал с запущенным Node-RED открытым. Чтобы завершить работу с Node-RED нажмите клавиши **Ctrl-C** или просто закройте терминал, нажав на крестик. - Откройте любой браузер и введите в поисковой строке адрес http://127.0.0.1:1880 - Перед вами появится рабочее поле программы: {{:iot:node-red.png?nolink&700|}} - Чтобы настроить проект на выполнение какой-либо задачи, необходимо подключить друг к другу блоки кода, которые называются «нодами». Список доступных нод располагается в левой части экрана.{{:iot:node-red_nodes.png?nolink&700|}} - Система из подключенных друг к другу нод называется «потоком», который и составляет рабочую программу.{{:iot:node-red_flow.png?nolink&700|}} - Справа располагается информация о созданных потоках и составляющих их нодах.{{:iot:node-red_flow_settings.png?nolink&700|}} - Потоки запускаются кнопкой **Deploy** в правой верхней части экрана.{{:iot:node-red_deploy_button.png?nolink&700|}} === Создание бота === - Откройте мессенджер. В поиске найдите главного бота — «@botfather». Заведите с ним диалог и отправьте сообщение «/start».\\ {{:iot:bot_father.png?nolink|}} - Выберите пункт «/newbot».\\ {{:iot:new_bot.png?nolink|}} - Придумайте имя своему боту.\\ {{:iot:bot_name.png?nolink|}} - Теперь придумайте уникальный логин бота. Он обязательно должен заканчиваться на «bot».{{:iot:bot_username.png?nolink|}} - Скопируйте специальный токен, который вам выдал @BotFather. Он потребуется для авторизации. Токен — это уникальный ключ для доступа к сервису. Не сообщайте его никому!\\ {{:iot:bot_token.png?nolink|}} === Установка библиотек Node-RED === - Запустите Node-RED в терминале: node-red Запуск может занять несколько секунд. Вы увидите, что сервер Node-RED запущен по адресу http://127.0.0.1:1880 Внимание! Вы должны держать терминал с запущенным Node-RED открытым. - Для работы с Telegram требуется установить необходимые библиотеки. Щелкните на иконке меню «**≡**» в правом верхнем углу экрана. В выпадающем меню выберите пункт **Manage Palette**.{{:iot:node-red_manage_palette.png?nolink&700|}} - В открывшемся окне выберите вкладку **Install**.{{:iot:node-red_palette_install.png?nolink&700|}} - В строке поиска введите **node-red-contrib-telegrambot**. Щёлкните кнопку **Install**, чтобы установить библиотеку. Нажмите на кнопку **Close**, чтобы вернуться в окно потока.\\ {{:iot:node-red_telegram_bot_install.png?nolink&700|}} - Теперь в списке доступных нод появились ноды для работы с Telegram-ботом.{{:iot:node-red_after_install_telegram_bot.png?nolink&700|}} === Создание потока === - Перетащите в рабочее пространство ноды **Telegram receiver** и **mqtt out**. Соедините верхний вывод ноды **Telegram receiver** и вход **mqtt out**.{{:iot:telegram_receiver_mqtt_out.png?nolink&700|}} - Щёлкните дважды по ноде **Telegram receiver**. В открывшемся окне нажмите кнопку с изображением карандаша для добавления нового бота.{{:iot:add_telegram_bot.png?nolink&700|}} - Откроется окна настройки вашего бота. Введите в поле **Bot-Name** уникальный логин вашего бота. В поле **Token** введите скопированный вами ранее уникальный токен бота. Нажмите кнопку **Add**.{{:iot:telegram_bot_settings.png?nolink&700|}} - Дважды щёлкните по ноде **mqtt out**. В открывшемся окне нажмите кнопку с изображением карандаша для добавления mqtt-брокера.{{:iot:add_mqtt_broker.png?nolink&700|}} - Введите в поле **Server** строку **localhost**. Поле **Port** оставьте без изменений. Нажмите кнопку **Add**.{{:iot:mqtt_broker_settings.png?nolink&700|}} - В поле **Topic** введите **led/set**. Топик – это канал, по которому передаются сообщения. Устройство может подписаться на этот канал, чтобы читать сообщения, либо может само отправлять сообщения по этому каналу. В данном случае **Telegram receiver** отправляет сообщения в канал **led/set**.\\ По завершении настройки нажмите кнопку **Done**.{{:iot:mqtt_out_topic_settings.png?nolink&700|}} - Добавьте ещё несколько нод в рабочее пространство: **mqtt in**, **json** и **Telegram sender**. Соедините их между собой.{{:iot:telegram_bot_full_flow.png?nolink&700|}} - Дважды щёлкните по ноде **mqtt in**. В поле **Topic** введите **led/status**, а затем нажмите кнопку **Done**.{{:iot:mqtt_in_topic_settings.png?nolink&700|}} - Дважды щёлкните по ноде **Telegram sender**. В поле **Bot** щелкните на галочку в углу и в выпадающем списке выберите вашего бота. Нажмите **Done**.\\ {{:iot:telegram_sender_bot_choice.png?nolink&700|}} - Ноду **json** оставьте без изменений.\\ {{:iot:json_node.png?nolink&700|}} - Нажмите кнопку **Deploy**, чтобы развернуть ваше приложение. Статусы всех подключённых устройств изменятся на **connected**.{{:iot:press_deploy.png?nolink&700|}}{{:iot:all_nodes_connected.png?nolink&700|}} === Схема устройства === {{:iot:telegram_bot_scheme.png?nolink|}} === Код устройства === var SSID = 'имя_вашей_wi-fi_сети'; var PASSWORD = 'пароль_вашей_wi_fi_сети'; var MQTT_HOST = 'ip_адрес_вашего_компьютера'; var TOPIC = 'led/'; var led = require('@amperka/led').connect(P6); var wifi = require('@amperka/wifi').setup(function(err) { wifi.connect(SSID, PASSWORD, function(err) { if (err) { console.log(err); } else { console.log('Connected to Wifi'); mqttConnect(); } }); }); function mqttConnect() { mqtt = require('MQTT').connect({ host: MQTT_HOST, }); mqtt.on('connected', function() { console.log('MQTT connected'); mqtt.subscribe(TOPIC + 'set'); }); mqtt.on('disconnected', function() { console.log("MQTT disconnected"); }); mqtt.on('publish', function(pub) { if (pub.topic == TOPIC + 'set') { var message = JSON.parse(pub.message); if (message.content == 'On') { led.turnOn(); message.content = 'LED is turned on'; } else if (message.content == 'Off') { led.turnOff(); message.content = 'LED is turned off'; } else { message.content = 'I don\'t understand'; } mqtt.publish(TOPIC + 'status', JSON.stringify(message)); } }); } Не забудьте заменить в коде значения переменных //SSID//, //PASSWORD//, //MQTT_HOST// на имя вашей Wi-fi сети, пароль и IP-адрес вашего компьютера соответственно. === Загрузка кода в устройство и тестирование бота === - Запустите Espruino IDE и скопируйте код, приведенный выше, в рабочее поле. Сделайте необходимые изменения. Как узнать IP-адрес вашего компьютера, вы можете прочитать в разделе ниже. - Подключите собранное устройство к компьютеру и загрузите в него код. Дождитесь ответа от Espruino.\\ {{:iot:response_from_iskra.png?nolink|}} - Если вы получили сообщение **MQTT Disconnected**, возможно, у вас закрыт порт, на котором работает MQTT-брокер. Чтобы его открыть, читайте инструкцию [[articles:net-port-opening|Как открыть сетевой порт на Windows 10]].\\ {{:iot:mqtt_disconnected.png?nolink|}} - Теперь перейдите в диалог со своим ботом в Telegram. Отправьте боту сообщение **On** – светодиод на плате должен загореться, бот ответит вам, что светодиод включен. Чтобы выключить светодиод, отправьте сообщение **Off**. Если вы попытаетесь отправить боту сообщение с другим содержанием, он ответит, что не понимает вас.\\ {{:iot:bot_message.png?nolink&400|}} === Как узнать IP-адрес своего компьютера === - С помощью командной строки * Нажмите клавиши **Win+R**. * В появившемся окне введите **cmd**. * Нажмите «ОК» * В командной строке введите команду:ipconfig * В появившемся выводе найдите строку **IPv4-адрес**{{:iot:ipconfig_output.png?nolink|}} - С помощью PowerShell: * В строке поиска введите **PowerShell**. Запустите консоль PowerShell, щелкнув ярлык **Windows PowerShell**.\\ {{:iot:powershell_search.png?nolink|}} * В консоли наберите команду **gip**. * В появившемся выводе найдите строку **IPv4Address**.{{:iot:gip_output.png?nolink|}} ===== Идеи проектов ===== Прошел набор «IoT»? Молодец! Лови идеи для приборов, которые пригодятся тебе в быту. Применяй знания, полученные из набора, комбинируй различные модули, придумывай и твори с Амперкой! {{ :iot:wiki_meteo.png?nolink&300 |}} Используя Troyka-модули [[amp>product/troyka-barometer?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|барометра]] и [[amp>product/troyka-temperature-humidity-sensor-dht11?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|цифрового датчика температуры и влажности]], можно создать свою собственную метеостанцию. При помощи пары [[amp>product/rf-433-transmitter?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|беспроводной передатчик]] — [[amp>product/rf-433-receiver?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|беспроводной приёмник]] на частоте 433 МГц ты сможешь собрать свою метеостанцию в герметичном корпусе и, придумав для неё питание на [[amp>product/arduino-power-shield-li-ion?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Power Shield]], создать автономное устройство. Оно не будет бояться воды и будет точно сообщать тебе данные о погоде за окном. А модуль в своей комнате ты сможешь оснастить [[amp>product/itead-display-1n8in?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|LCD-экраном]], чтобы на показания датчиков было приятно смотреть. И, разумеется, ты сможешь получать все эти данные с помощью созданного тобой Telegram-бота! {{ :iot:wiki_water.png?nolink&300 |}} При помощи [[amp>product/sensor-soil-moisture-capacitive?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|датчиков влажности почвы]] ты сможешь всегда быть уверенным, что твои редкие растения не засохнут от недостатка воды. А даты поливов ты сможешь регистрировать с помощью сервиса Webhooks! {{ :iot:wiki_fire.png?nolink&300 |}} [[amp>product/troyka-mq9-gas-sensor?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Датчик горючих и угарного газов MQ-9]] даст тебе уверенность в безопасности твоего жилья. В случае, если он обнаружит в воздухе присутствие опасных газов, он сможет прислать сообщение тебе прямо в Telegram! {{ :iot:wiki_light.png?nolink&300 |}} [[amp>product/ws2811-led-strip-sealed?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Цветная адресуемая светодиодная лента WS2811]] позволит тебе создать освещение в комнате, цвет которого ты сможешь контролировать со смартфона, или даже сделать его реагирующим на музыку, которая играет в твоей комнате. {{ :iot:wiki_grabber.png?nolink&300 |}} [[amp>product/troyka-sound-loudness-sensor?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|Датчик шума]] и [[amp>product/hc-sr04-ultrasonic-sensor-distance-module?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|ультразвуковой дальномер]] позволят тебе построить систему сигнализации в твоей комнате — ты всегда будешь знать, если в ней появятся непрошеные гости. А [[amp>product/df-player-mp3-module?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|модуль MP3-плеера]] в комбинации с модулем [[amp>product/troyka-line-out-mini-jack?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|аудиовыхода]] сможет твоим голосом вежливо попросить их покинуть твою территорию. Если ты захочешь еще сильнее защитить свою комнату от незваных гостей — ты сможешь воспользоваться [[amp>product/troyka-rfid-nfc-1356?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|сканером RFID/NFC]], выполненном все в том же формате Troyka-модуля. При помощи этого датчика можно сконструировать не только замок на дверь в комнату, но и запереть секретный ящик шкафа и даже реализовать включение компьютера по приближению к датчику NFC-карты или смартфона! {{ :iot:wiki_auto.png?nolink&300 |}} [[amp>product/arduino-gprs-shield?utm_source=man&utm_campaign=yodo-iot&utm_medium=wiki|GPRS Shield]], совместимый с Iskra JS, позволит тебе создавать ещё более автономные приборы — ведь теперь они будут выходить в сеть не с помощью Wi-Fi роутера, а напрямую с помощью сотовой сети. Не забудь приобрести SIM-карту с безлимитным трафиком!