Վիզուալ ծրագրավորում Sonoff Basic-ի համար

Վիզուալ ծրագրավորում Sonoff Basic-ի համար
Հոդված այն մասին, թե ինչպես ստեղծել ծրագրավորվող տրամաբանական վերահսկիչ էժան չինական սարքից: Նման սարքն իր կիրառումը կգտնի ինչպես տան ավտոմատացման, այնպես էլ դպրոցական համակարգչային գիտության գործնական պարապմունքների մեջ:
Տեղեկատվության համար, լռելյայնորեն Sonoff Basic ծրագիրը աշխատում է բջջային հավելվածի հետ չինական ամպային ծառայության միջոցով, առաջարկվող փոփոխությունից հետո այս սարքի հետ հետագա բոլոր փոխգործակցությունը հնարավոր կլինի դիտարկիչում:

Բաժին I. Sonoff-ի միացում MGT24 ծառայությանը

Քայլ 1. Ստեղծեք կառավարման վահանակ

Գրանցվեք կայքում մգտ24 (եթե արդեն գրանցված չեք) և մուտք գործեք՝ օգտագործելով ձեր հաշիվը:
Մուտք գործելՎիզուալ ծրագրավորում Sonoff Basic-ի համար

Նոր սարքի համար կառավարման վահանակ ստեղծելու համար սեղմեք «+» կոճակը:
Վահանակի ստեղծման օրինակՎիզուալ ծրագրավորում Sonoff Basic-ի համար

Վահանակը ստեղծելուց հետո այն կհայտնվի ձեր վահանակների ցանկում:

Ստեղծված վահանակի «Կարգավորում» ներդիրում գտեք «Սարքի ID» և «Լիազորման բանալի» դաշտերը, ապագայում այս տեղեկատվությունը կպահանջվի Sonoff սարքը կարգավորելիս:
Ներդիրի օրինակՎիզուալ ծրագրավորում Sonoff Basic-ի համար

Քայլ 2. Թարմացրեք սարքը

Օգտագործելով կոմունալ XTCOM_UTIL ներբեռնեք որոնվածը PLC Sonoff Basic սարքին, դրա համար ձեզ հարկավոր է USB-TTL փոխարկիչ: Այստեղ հրահանգավորում и Վիդեո հրահանգ.

Քայլ 3. Սարքի կարգավորում

Սարքի վրա հոսանք միացրեք, լուսադիոդը վառվելուց հետո սեղմեք կոճակը և սեղմած պահեք այն, մինչև LED-ը սկսի պարբերաբար հավասարաչափ բռնկվել:
Այս պահին կհայտնվի նոր wi-fi ցանց, որը կոչվում է «PLC Sonoff Basic», միացրեք ձեր համակարգիչը այս ցանցին:
LED ցուցիչի բացատրություն

LED ցուցում
Սարքի կարգավիճակը

պարբերական կրկնակի թարթում
կապ չկա երթուղիչի հետ

փայլում է անընդհատ
կապ հաստատված երթուղիչի հետ

պարբերական համազգեստի փայլատակում
wi-fi մուտքի կետի ռեժիմ

դուրս հանել
Էլեկտրաէներգիայի մատակարարում չկա

Բացեք ինտերնետ բրաուզերը և մուտքագրեք «192.168.4.1» տեքստը հասցեագոտում, գնացեք սարքի ցանցի կարգավորումների էջ:

Լրացրեք դաշտերը հետևյալ կերպ.

  • «Ցանցի անուն» և «Գաղտնաբառ» (սարքը տան wi-fi երթուղիչին կապելու համար):
  • «Սարքի ID» և «Լիցենզավորման բանալի» (սարքը MGT24 ծառայության վրա լիազորելու համար):

Սարքի ցանցի պարամետրերը սահմանելու օրինակՎիզուալ ծրագրավորում Sonoff Basic-ի համար

Պահպանեք կարգավորումները և վերագործարկեք սարքը:
Այստեղ Վիդեո հրահանգ.

Քայլ 4. Սենսորների միացում (ըստ ցանկության)

Ներկայիս որոնվածն աջակցում է մինչև չորս ds18b20 ջերմաստիճանի տվիչների: Այստեղ Վիդեո հրահանգ սենսորների տեղադրման համար. Ըստ երևույթին, այս քայլը կլինի ամենադժվարը, քանի որ դրա համար կպահանջվեն ուղիղ ձեռքեր և զոդող երկաթ։

Բաժին II. Տեսողական ծրագրավորում

Քայլ 1. Ստեղծեք սցենարներ

Օգտագործվում է որպես ծրագրավորման միջավայր Շրջափակված, միջավայրը հեշտ է սովորել, ուստի պարզ սցենարներ ստեղծելու համար ձեզ հարկավոր չէ ծրագրավորող լինել:

Ես ավելացրեցի մասնագիտացված բլոկներ սարքի պարամետրերը գրելու և կարդալու համար: Ցանկացած պարամետր հասանելի է անունով: Հեռավոր սարքերի պարամետրերի համար օգտագործվում են բարդ անվանումներ՝ «parameter@device»:
Ընտրանքների բացվող ցանկՎիզուալ ծրագրավորում Sonoff Basic-ի համար

Բեռի ցիկլային միացման և անջատման օրինակ սցենար (1 Հց).
Վիզուալ ծրագրավորում Sonoff Basic-ի համար

Երկու առանձին սարքերի աշխատանքը համաժամացնող սցենարի օրինակ: Մասնավորապես, թիրախային սարքի ռելեը կրկնում է հեռակառավարվող սարքի ռելեի աշխատանքը:
Վիզուալ ծրագրավորում Sonoff Basic-ի համար

Սցենար թերմոստատի համար (առանց հիստերեզի).
Վիզուալ ծրագրավորում Sonoff Basic-ի համար

Ավելի բարդ սկրիպտներ ստեղծելու համար կարող եք օգտագործել փոփոխականներ, հանգույցներ, ֆունկցիաներ (արգումենտներով) և այլ կառուցվածքներ։ Ես այս ամենը մանրամասն չեմ նկարագրի այստեղ, ցանցում արդեն բավականին շատ բան կա: ուսումնական նյութ Բլոկլիի մասին.

Քայլ 2. Սցենարների հերթականություն

Սցենարը շարունակաբար աշխատում է, և հենց որ հասնում է իր ավարտին, այն նորից սկսում է։ Այս դեպքում կա երկու բլոկ, որոնք կարող են ժամանակավորապես դադարեցնել սցենարը՝ «հետաձգել» և «դադարեցնել»:
«Հապաղման» բլոկը օգտագործվում է միլիվայրկյան կամ միկրովայրկյան ուշացումների համար: Այս բլոկը խստորեն պահպանում է ժամանակային միջակայքը՝ արգելափակելով ամբողջ սարքի աշխատանքը։
«Դադար» բլոկը օգտագործվում է երկրորդ (կամ ավելի քիչ) ուշացումների համար, և այն չի արգելափակում սարքում այլ գործընթացների կատարումը:
Եթե ​​սցենարն ինքնին պարունակում է անսահման օղակ, որի մարմինը չի պարունակում «դադար», թարգմանիչը ինքնուրույն նախաձեռնում է կարճ դադար:
Եթե ​​հատկացված հիշողության կույտը սպառված է, թարգմանիչը կդադարեցնի նման ուժային սկրիպտի կատարումը (զգույշ եղեք ռեկուրսիվ գործառույթների հետ):

Քայլ 3. Սկրիպտների վրիպազերծում

Սարքում արդեն բեռնված սկրիպտը վրիպազերծելու համար կարող եք քայլ առ քայլ գործարկել ծրագրի հետքը: Սա կարող է չափազանց օգտակար լինել, երբ սցենարի վարքագիծը տարբերվում է հեղինակի մտադրությունից: Այս դեպքում հետագծումը թույլ է տալիս հեղինակին արագ գտնել խնդրի աղբյուրը և ուղղել սցենարի սխալը։

Վրիպազերծման ռեժիմում գործոնը հաշվարկելու սցենար.
Վիզուալ ծրագրավորում Sonoff Basic-ի համար

Վրիպազերծման գործիքը շատ պարզ է և բաղկացած է երեք հիմնական կոճակներից՝ «սկսել», «մեկ քայլ առաջ» և «դադարեցնել» (չմոռանանք նաև «մուտք» և «ելք» կարգաբերման ռեժիմների մասին): Բացի քայլ առ քայլ հետագծումից, ցանկացած բլոկի վրա կարող եք սահմանել ընդմիջման կետ (կտտացնելով բլոկի վրա):
Մոնիտորում պարամետրերի (սենսորներ, ռելեներ) ընթացիկ արժեքները ցուցադրելու համար օգտագործեք «տպել» բլոկը:
Այստեղ ակնարկ տեսանյութ վրիպազերծիչի օգտագործման մասին:

Բաժին հետաքրքրասերների համար. Ի՞նչ կա գլխարկի տակ:

Որպեսզի սկրիպտները աշխատեն թիրախային սարքի վրա, մշակվել են բայթկոդերի թարգմանիչ և 38 հրահանգներով հավաքող։ Blockly-ի սկզբնական կոդը ունի մասնագիտացված կոդերի գեներատոր, որը ներկառուցված է, որը տեսողական բլոկները վերածում է հավաքման հրահանգների: Հետագայում այս assembler ծրագիրը վերածվում է բայթկոդի և փոխանցվում սարքին կատարման համար:
Այս վիրտուալ մեքենայի ճարտարապետությունը բավականին պարզ է, և առանձնահատուկ իմաստ չկա այն նկարագրելու համար, ինտերնետում դուք կգտնեք բազմաթիվ հոդվածներ ամենապարզ վիրտուալ մեքենաների նախագծման մասին:
Ես սովորաբար հատկացնում եմ 1000 բայթ իմ վիրտուալ մեքենայի կույտի համար, ինչը բավական է խնայելու համար: Իհարկե, խորը ռեկուրսիաները կարող են սպառել ցանկացած կույտ, բայց դժվար թե դրանք գործնական կիրառություն ունենան:

Ստացված բայթկոդը բավականին կոմպակտ է: Որպես օրինակ՝ նույն ֆակտորիալը հաշվարկելու բայթկոդն ընդամենը 49 բայթ է։ Սա նրա տեսողական ձևն է.
Վիզուալ ծրագրավորում Sonoff Basic-ի համար

Եվ սա նրա assembler ծրագիրը.

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

Եթե ​​ներկայացման հավաքման ձևը որևէ գործնական արժեք չունի, ապա «javascrit» ներդիրը, ընդհակառակը, ավելի ծանոթ տեսք է տալիս, քան տեսողական բլոկները.

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

window.alert(factorial(10));

Կատարման վերաբերյալ. Երբ ես գործարկեցի ամենապարզ ֆլեշ սկրիպտը, ես ստացա 47 կՀց քառակուսի ալիք օսցիլոսկոպի էկրանին (80 ՄՀց պրոցեսորի ժամացույցի արագությամբ):
Վիզուալ ծրագրավորում Sonoff Basic-ի համարՎիզուալ ծրագրավորում Sonoff Basic-ի համար
Կարծում եմ՝ սա լավ արդյունք է, համենայն դեպս այս արագությունը գրեթե տասն անգամ ավելի արագ է, քան Լուա и Էսպրուինո.

Եզրակացության եզրափակիչ մասը

Ամփոփելով, ես կասեմ, որ սկրիպտների օգտագործումը թույլ է տալիս ոչ միայն ծրագրավորել առանձին սարքի շահագործման տրամաբանությունը, այլև հնարավորություն է տալիս մի քանի սարքեր միացնել մեկ մեխանիզմի մեջ, որտեղ որոշ սարքեր ազդում են մյուսների վարքագծի վրա:
Ես նաև նշում եմ, որ սկրիպտները պահելու ընտրված մեթոդը (ուղղակիորեն իրենց սարքերում, և ոչ սերվերի վրա) պարզեցնում է արդեն աշխատող սարքերի անցումը այլ սերվերի, օրինակ՝ տան Raspberry-ի, այստեղ հրահանգավորում.

Այսքանը, ուրախ կլինեմ լսել խորհուրդներ և կառուցողական քննադատություն:

Source: www.habr.com

Добавить комментарий