Визуелно програмирање за Sonoff Basic

Визуелно програмирање за Sonoff Basic
Напис за тоа како да креирате програмабилен логички контролер од евтин кинески уред. Таков уред ќе најде употреба и во домашната автоматизација и како практична настава во училишната информатика.
За повикување, стандардно програмата Sonoff Basic работи со мобилна апликација преку кинеска облак услуга; по предложената модификација, целата понатамошна интеракција со овој уред ќе биде можна во прелистувачот.

Дел I. Поврзување на Sonoff со услугата MGT24

Чекор 1: Создадете контролен панел

Регистрирајте се на страницата mgt24 (ако веќе не сте регистрирани) и најавете се користејќи ја вашата сметка.
Пријавете се во системотВизуелно програмирање за Sonoff Basic

За да креирате контролен панел за нов уред, кликнете на копчето „+“.
Пример за креирање панелВизуелно програмирање за Sonoff Basic

Откако ќе се креира панелот, ќе се појави во вашата листа на панели.

Во табулаторот „Поставување“ на креираниот панел, пронајдете ги полињата „Идентификатор на уред“ и „Клуч за овластување“; во иднина, овие информации ќе бидат потребни при поставување на уредот Sonoff.
Пример за јазичеВизуелно програмирање за Sonoff Basic

Чекор 2. Повторно трепкајте го уредот

Користење на алатката XTCOM_UTIL преземете го фирмверот PLC Sonoff Basic на уредот, за ова ќе ви треба USB-TTL конвертор. Еве настава и Видео инструкција.

Чекор 3. Поставување на уредот

Напојувајте го уредот, откако ќе се запали ЛЕР, притиснете го копчето и држете го притиснато додека ЛЕР не почне да трепка периодично рамномерно.
Во овој момент, ќе се појави нова wi-fi мрежа наречена „PLC Sonoff Basic“, поврзете го вашиот компјутер на оваа мрежа.
Објаснување на LED индикација

LED индикација
Статус на уредот

периодично двојно трепкање
нема врска со рутер

сјае постојано
воспоставена врска со рутерот

периодично униформно трепкање
режим на Wi-Fi пристапна точка

изгаснат
Нема напојување

Отворете Интернет прелистувач и внесете го текстот „192.168.4.1“ во лентата за адреси, одете на страницата за мрежните поставки на уредот.

Пополнете ги полињата на следниов начин:

  • „Име на мрежата“ и „Лозинка“ (за поврзување на уредот со вашиот домашен рутер за Wi-Fi).
  • „Device ID“ и „Authorization key“ (за овластување на уредот на услугата MGT24).

Пример за поставување мрежни параметри на уредотВизуелно програмирање за Sonoff Basic

Зачувајте ги поставките и рестартирајте го уредот.
Тука Видео инструкција.

Чекор 4. Поврзување сензори (опционално)

Тековниот фирмвер поддржува до четири сензори за температура ds18b20. Еве Видео инструкција за инсталација на сензори. Очигледно, овој чекор ќе биде најтежок, бидејќи ќе бара прави раце и рачка за лемење.

Дел II. Визуелно програмирање

Чекор 1: Креирајте скрипти

Се користи како програмска средина Блок, околината е лесна за учење, така што не треба да сте програмер за да креирате едноставни скрипти.

Додадов специјализирани блокови за пишување и читање параметри на уредот. До секој параметар се пристапува по име. За параметрите на оддалечените уреди, се користат сложени имиња: „parameter@device“.
Паѓачка листа на опцииВизуелно програмирање за Sonoff Basic

Пример сценарио за циклично вклучување и исклучување на оптоварувањето (1Hz):
Визуелно програмирање за Sonoff Basic

Пример на скрипта што ја синхронизира работата на два посебни уреди. Имено, релето на целниот уред ја повторува работата на релето на далечинскиот уред.
Визуелно програмирање за Sonoff Basic

Сценарио за термостат (без хистереза):
Визуелно програмирање за Sonoff Basic

За да креирате посложени скрипти, можете да користите променливи, циклуси, функции (со аргументи) и други конструкции. Нема да го опишам сето ова детално овде; веќе има доста на мрежата. едукативен материјал за Blockly.

Чекор 2: Редослед на скрипти

Сценариото работи непрекинато, а штом ќе дојде до својот крај, почнува повторно. Во овој случај, постојат два блока кои можат привремено да ја паузираат скриптата, „одложување“ и „паузирање“.
Блокот „одложување“ се користи за доцнења од милисекунда или микросекунда. Овој блок строго го одржува временскиот интервал, блокирајќи ја работата на целиот уред.
Блокот „пауза“ се користи за секундарни (или помалку) одложувања и не го блокира извршувањето на други процеси во уредот.
Ако самата скрипта содржи бесконечна јамка, чие тело не содржи „пауза“, толкувачот самостојно иницира кратка пауза.
Ако доделениот мемориски оџак е исцрпен, толкувачот ќе престане да извршува таква скрипта што е гладна за енергија (бидете внимателни со рекурзивните функции).

Чекор 3: Дебагирање скрипти

За да дебагирате скрипта што е веќе вчитана во уредот, можете да извршите програмско следење чекор по чекор. Ова може да биде исклучително корисно кога однесувањето на сценариото се покажало различно од она што го замислил авторот. Во овој случај, следењето му овозможува на авторот брзо да го пронајде изворот на проблемот и да ја поправи грешката во сценариото.

Сценарио за пресметување на факториел во режим на отстранување грешки:
Визуелно програмирање за Sonoff Basic

Алатката за отстранување грешки е многу едноставна и се состои од три главни копчиња: „старт“, „еден чекор напред“ и „стоп“ (да не заборавиме и на режимот за отстранување грешки „влез“ и „излез“). Покрај следењето чекор-по-чекор, можете да поставите точка на прекин на кој било блок (со кликнување на блокот).
За прикажување на тековните вредности на параметрите (сензори, релеи) на мониторот, користете го блокот „печатење“.
Тука преглед на видео за користење на дебагерот.

Дел за љубопитните. Што има под хаубата?

За да можат скриптите да работат на целниот уред, развиен е преведувач на бајтекод и асемблер со 38 инструкции. Изворниот код на Blockly има вграден специјализиран генератор на код кој ги претвора визуелните блокови во инструкции за склопување. Последователно, оваа програма за асемблер се претвора во бајтекод и се пренесува на уредот за извршување.
Архитектурата на оваа виртуелна машина е прилично едноставна и нема посебна смисла да се опише; на Интернет ќе најдете многу статии за дизајнирање на наједноставните виртуелни машини.
Обично издвојувам 1000 бајти за магацинот на мојата виртуелна машина, што е доволно за поштеда. Се разбира, длабоките рекурзии можат да го исцрпат секој куп, но веројатно нема да имаат практична употреба.

Добиениот бајтекод е прилично компактен. Како пример, бајтекодот за пресметување на истиот фактор е само 49 бајти. Ова е неговата визуелна форма:
Визуелно програмирање за Sonoff Basic

И ова е неговата асемблер програма:

shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret

Ако формата на склопување на претставување нема практична вредност, тогаш табулаторот „јаваскрит“, напротив, дава попознат изглед од визуелните блокови:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

Во врска со перформансите. Кога ја активирав наједноставната скрипта за блиц, добив квадратен бран од 47 kHz на екранот на осцилоскопот (при процесорски часовник од 80 MHz).
Визуелно програмирање за Sonoff BasicВизуелно програмирање за Sonoff Basic
Мислам дека ова е добар резултат, барем оваа брзина е речиси десет пати поголема од Луа и Еспруино.

Завршен дел

Сумирајќи, ќе кажам дека употребата на скрипти ни овозможува не само да ја програмираме логиката на работата на посебен уред, туку овозможува и поврзување на неколку уреди во еден механизам, каде што некои уреди влијаат на однесувањето на другите.
Забележувам и дека избраниот метод за складирање скрипти (директно во самите уреди, а не на серверот) го поедноставува префрлувањето на веќе работат уреди на друг сервер, на пример на домашен Raspberry, овде настава.

Тоа е се, ќе ми биде драго да слушнам совети и конструктивни критики.

Извор: www.habr.com

Додадете коментар