SlideShare a Scribd company logo
Роман
Романовский
1
Сергей
Рак
О чем мы сегодня поговорим
2
● Поделимся своим опытом в области IoT
● Расскажем о своем проекте Restroom Revolution
● Немного покодим
● Расскажем о перспективах JavaScript в IoT
● Ответим на ваши вопросы и разыграем пару маек
С чего все начиналось
3
4
5
6
Как мы представляли себе процесс
прототипирования
1. Взять какие-то железки
2. Скопировать откуда-то примеры кода
3. ???
4. PROFIT!!!
7
8
Ожидание Реальность
Как создать прототип устройства
1. Купить какие-то железки
2. Скопировать откуда-то примеры
3. А еще:
● Настроить среду разработки
● Изучить основы С/С++
● Узнать о работе микроконтроллера
● Узнать, что такое Push-Pull/Analog pin/тактирование шины
● Узнать, что такое прерывания
● Узнать, что за интерфейс SPI/I2C/UART
● Узнать, что дебага нет
● Узнать, что такое инверсия приоритетов
● ...
4. PROFIT!!!
9
Никогда не сдавайся
10
Только JavaScript, только hardcore
11
Проекты совмещающие скриптовые
языки с прикладным ПО
12
Топ проектов, совмещающих
скриптовые языки и прикладное ПО
13
Duktape Espruino JerryScript eLua
Run on MCU
Full support ES5.1,
Partially ES6/ES7
Run on MCU
Full support ES5.1,
Partially ES6
Run on MCU
Full support ES5.1,
+IoT.js = Max
Node.js compatibility
Run on MCU
Lua 5.1,
Async Model
Best C/C++ API
Топ проектов, совмещающих
скриптовые языки и прикладное ПО
14
Duktape Espruino JerryScript eLua
Run on MCU
Full support ES5.1,
Partially ES6/ES7
Run on MCU
Full support ES5.1,
Partially ES6
Run on MCU
Full support ES5.1,
+IoT.js = Max
Node.js compatibility
Run on MCU
Lua 5.1,
Async Model
Best C/C++ API
Espruino
15
Espruino Firmware Espruino Web IDE Espruino devices
Как работает Espruino
16
Как работает Espruino
17
Как работает Espruino
18
Как работает Espruino
19
Как работает Espruino
20
Как работает Espruino
21
Как это было
22
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Как это было
23
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Загрузили прошивку
24
Что нам понадобилось?
1. Screen - sudo apt-get install screen
2. Pip - sudo apt-get install python-pip
3. Esptool - pip install esptool
4. Espruino - http://www.espruino.com/Download
Загрузили прошивку
25
sudo esptool.py --port /dev/ttyUSB0 --baud 115200 
write_flash --flash_freq 80m --flash_mode qio --flash_size 32m 
0x0000 "boot_v1.6.bin" 0x1000 espruino_esp8266_user1.bin 
0x3FC000 esp_init_data_default.bin 0x3FE000 blank.bin
http://www.espruino.com/ESP8266_Flashing
Загрузили прошивку
26
Как это было
27
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Настроили Wi-Fi на устройстве
28
sudo screen /dev/ttyUSB0 115200
var wifi = require("Wifi");
wifi.connect("my-ssid", { password: "my-password" }, function (error) {
console.log(error || "connected!");
});
wifi.getIP();
wifi.save();
Как это было
29
1. Загрузили прошивку
2. Настроили Wi-Fi на устройстве
3. Настроили Web IDE
Настроили Web IDE
30
Espruino
Web IDE
https://chrome.google.com/web
store/detail/espruino-web-ide/bl
eoifhkdalbjfbobjackfdifdneehpo
31
32
33
34
35
36
37
Пример кода
38
39
Давайте пошкодим
40
Пример подключения
“произвольного” датчика
41
Live Coding
1. Подключим библиотеку «IRReceiver»
и научимся принимать коды нажатий кнопок пульта
2. Подключим библиотеку «RGBLed»
и помигаем светодиодом в ответ на определенные нажатия
кнопок пульта
Демонстрация Restroom Revolution
42
43
44
Фоторезистор RGB
светодиод
45
Батарейка
«Крона»
Импульсный
преобразователь
напряжения
46
Итоговая стоимость устройства
47
Witty Cloud
~$5
Импульсный
преобразователь
напряжения
~$2
Батарейка
«Крона»
~$2
Муляж
камеры для
видеонаблюдения
~$8
~$17
48
Проблемы с которыми мы столкнулись
49
Энергопотребление
Потребление (мА)
Tx 802.11g,OFDM 54Mbps,Pout=+15dBm 140
Tx 802.11n, MCS7, Pout=+13dBm 120
Rx 802.11g, 1024 bytes packet length, -70dBm 56
Rx 802.11n, 1024 bytes packet length, -65dBm 56
Modem-Sleep 15
Light-Sleep 0.5
Deep-Sleep 0.01
50
Энергопотребление
Потребление (мА)
Принять пакет данных 140
Отправить пакет данных 56
Поддержание соединения 15
Выключить WiFi и процессор 0.5
Глубокий сон 0.01
51
Энергопотребление
require("ESP8266").deepSleep(5000);
Если хочется повторить
52
Всё начиналось не так...
53
Что выбрать?
Хотим компактное устройство с WiFi
54
Raspberry Pi 3b
(Zero W)
Arduino
+ Wi-Fi Shield
ESP8266
Witty Cloud
Linux + Node.js
Питание
~ 20$
Не все типы подходят,
Большой размер
~ 40$
Малый размер,
Малое потребление,
~ 5$
Поддерживаемые
устройства
проектом
Espruino
55
http://www.espruino.com/Other+Boards
https://www.espruino.com/Order
Поддерживаемые датчики
56
http://www.espruino.com/Sensors
Поддержка
из коробки
Поддерживаемые датчики
57
Любой
SPI/I2C датчик
совместимый
с Arduino или
Raspberry Pi
Безграничные возможности
58
Перспективы
59
Перспективы: JavaScript IoT
60
● Низкий порог входа – большее число доступных программистов
● Overhead производительности за счёт интерпретатора
незначительный для задач управления
● Оперативность и продуктивность – на рынок за выходные :)
● Возможность загружать код динамически по сети - upgrade
прошивки OTA из коробки
● Безопасность – JS в своей песочнице
Перспективы: JavaScript IoT
61
Задавайте любые вопросы :)
62
Роман Романовский
rromanovsky@klika-tech.com
Репозиторий проекта:
https://github.com/rromanovsky/r
estroom-revolution
Версия кода с презентации
находится на ветке
united-dev-conf-2017
Ссылка на эту презентацию:
http://goo.gl/jDN7Id
Сергей Рак
sergrak@klika-tech.com

More Related Content

PPTX
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
PDF
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
PPTX
Вредные советы для разработчиков
PDF
Фронтенд разработка без боли
PDF
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
PDF
Разработка API для большого, нагруженного сервиса
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
PDF
Бэкенд, фронтенд — всё смешалось (nodkz)
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Вредные советы для разработчиков
Фронтенд разработка без боли
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Разработка API для большого, нагруженного сервиса
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Бэкенд, фронтенд — всё смешалось (nodkz)

What's hot (20)

PPTX
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
PDF
Конструктор / Денис Паясь (Яндекс)
PPT
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
PDF
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
PDF
dont badmouth mojo
PPTX
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
PDF
Как анимировать тысячи объектов на карте и не подвесить браузер
PPTX
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)
PDF
Введение в maven
PDF
D2D Pizza JS Илья Беда "Куда мы все катимся?"
PDF
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
PPTX
Maven 3 : уличная магия
PDF
Денис Паясь
PPTX
Знакомство с WebAssembly
PDF
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PDF
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
PDF
Как приручить реактивное программирование
PDF
Performance engineering stories from #fdminicon Saransk
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Конструктор / Денис Паясь (Яндекс)
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
dont badmouth mojo
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
Как анимировать тысячи объектов на карте и не подвесить браузер
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)
Введение в maven
D2D Pizza JS Илья Беда "Куда мы все катимся?"
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Maven 3 : уличная магия
Денис Паясь
Знакомство с WebAssembly
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Иван Крутов - Автоматизация сборки Java-проекта
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Как приручить реактивное программирование
Performance engineering stories from #fdminicon Saransk
Ad

Similar to Roman Romanovsky, Sergey Rak - "JavaScript в IoT " (20)

PDF
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)
PDF
Игорь Павлов и Глеб Головин
PPTX
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
PDF
Linux Terminal Server Project
PPT
Sencha Complete: Kharkiv JS #1
PDF
Алексей Андросов - Debugger: Отладка кода
PDF
How to cook a blockchain and not get burned
PDF
Модуль доверенной загрузки "Соболь". Новая версия флагманского продукта
PDF
Wi-Fi Hacking 101 – How to Hack WPA2 and Defend Against These Attacks.pdf
PDF
Инструментируй это
PPTX
«EspSky – Online IDE для NodeMCU», Александр Селищев
PPTX
Open source technologies in Microsoft cloud - MS SWIT 2014
PPTX
Стек протоколов для IoT. Пример использования SNMP
PPTX
IoT Meetup 2015: готовимся к хакатону в Москве
PDF
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
PDF
Cовременный станок верстальщика
PDF
Питон в малине
PDF
Drupal code sprint для новичков
PPTX
Windows Azure and node js
PPTX
A step-by-step approach toward high quality OutOfMemoryError analysis
Масштабируемые кроссплатформенные веб-приложения / Илья Пухальский (Epam)
Игорь Павлов и Глеб Головин
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Linux Terminal Server Project
Sencha Complete: Kharkiv JS #1
Алексей Андросов - Debugger: Отладка кода
How to cook a blockchain and not get burned
Модуль доверенной загрузки "Соболь". Новая версия флагманского продукта
Wi-Fi Hacking 101 – How to Hack WPA2 and Defend Against These Attacks.pdf
Инструментируй это
«EspSky – Online IDE для NodeMCU», Александр Селищев
Open source technologies in Microsoft cloud - MS SWIT 2014
Стек протоколов для IoT. Пример использования SNMP
IoT Meetup 2015: готовимся к хакатону в Москве
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Cовременный станок верстальщика
Питон в малине
Drupal code sprint для новичков
Windows Azure and node js
A step-by-step approach toward high quality OutOfMemoryError analysis
Ad

More from IT Event (20)

PDF
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
PDF
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
PDF
Max Voloshin - "Organization of frontend development for products with micros...
PDF
Konstantin Krivlenia - "Continuous integration for frontend"
PDF
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
PDF
Vladimir Grinenko - "Dependencies in component web done right"
PDF
Dmitry Bartalevich - "How to train your WebVR"
PDF
Aleksey Bogachuk - "Offline Second"
PDF
James Allardice - "Building a better login with the credential management API"
PDF
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
PPTX
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
PPTX
Алексей Рагозин "Java и linux борьба за микросекунды"
PPTX
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
PDF
Наш ответ Uber’у
PDF
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
PDF
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
PDF
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
PDF
Mete Atamel "Resilient microservices with kubernetes"
PDF
Andrew Stain "User acquisition"
PDF
Anna Lavrova "How to build a mutually beneficial relationships with the clien...
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Max Voloshin - "Organization of frontend development for products with micros...
Konstantin Krivlenia - "Continuous integration for frontend"
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
Vladimir Grinenko - "Dependencies in component web done right"
Dmitry Bartalevich - "How to train your WebVR"
Aleksey Bogachuk - "Offline Second"
James Allardice - "Building a better login with the credential management API"
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Алексей Рагозин "Java и linux борьба за микросекунды"
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Наш ответ Uber’у
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Mete Atamel "Resilient microservices with kubernetes"
Andrew Stain "User acquisition"
Anna Lavrova "How to build a mutually beneficial relationships with the clien...

Roman Romanovsky, Sergey Rak - "JavaScript в IoT "