Sonoff Basic üçün vizual proqramlaşdırma

Sonoff Basic üçün vizual proqramlaşdırma
Ucuz Çin cihazından proqramlaşdırıla bilən məntiq nəzarətçisinin necə yaradılması haqqında məqalə. Belə bir cihaz həm ev avtomatlaşdırmasında, həm də məktəb kompüter elmində praktiki dərslər kimi istifadəsini tapacaqdır.
Arayış üçün, defolt olaraq Sonoff Basic proqramı Çin bulud xidməti vasitəsilə mobil proqramla işləyir; təklif olunan modifikasiyadan sonra bu cihazla bütün sonrakı qarşılıqlı əlaqə brauzerdə mümkün olacaq.

Bölmə I. Sonoff-un MGT24 xidmətinə qoşulması

Addım 1: İdarəetmə paneli yaradın

Saytda qeydiyyatdan keçin mgt24 (əgər qeydiyyatdan keçməyibsə) və hesabınızdan istifadə edərək daxil olun.
Daxil olSonoff Basic üçün vizual proqramlaşdırma

Yeni bir cihaz üçün idarəetmə paneli yaratmaq üçün "+" düyməsini basın.
Panel yaratmaq nümunəsiSonoff Basic üçün vizual proqramlaşdırma

Panel yaradıldıqdan sonra o, panellər siyahısında görünəcək.

Yaradılmış panelin "Quraşdırma" sekmesinde "Cihaz ID" və "Authorization Key" sahələrini tapın, gələcəkdə bu məlumat Sonoff cihazını qurarkən tələb olunacaq.
Tab nümunəsiSonoff Basic üçün vizual proqramlaşdırma

Addım 2. Cihazı yenidən yandırın

Köməkçi proqramdan istifadə XTCOM_UTIL firmware proqramını yükləyin PLC Sonoff Basic cihaza, bunun üçün sizə USB-TTL çeviricisi lazımdır. Budur təlim и Video təlimat.

Addım 3. Cihazın quraşdırılması

Cihaza enerji verin, LED yandıqdan sonra düyməni basın və LED vaxtaşırı bərabər yanıb-sönməyə başlayana qədər onu basıb saxlayın.
Bu anda “PLC Sonoff Basic” adlı yeni wi-fi şəbəkəsi görünəcək, kompüterinizi bu şəbəkəyə qoşun.
LED göstəricisinin izahı

LED göstəricisi
Cihaz statusu

dövri ikiqat yanıb-sönmə
marşrutlaşdırıcıya qoşulma yoxdur

davamlı olaraq parlayır
marşrutlaşdırıcı ilə əlaqə quruldu

dövri uniformanın yanıb-sönməsi
wi-fi giriş nöqtəsi rejimi

söndürmək
Enerji təchizatı yoxdur

İnternet brauzerini açın və ünvan çubuğuna “192.168.4.1” mətnini daxil edin, cihazın şəbəkə parametrləri səhifəsinə keçin.

Sahələri aşağıdakı kimi doldurun:

  • "Şəbəkə adı" və "Parol" (cihazı ev wi-fi marşrutlaşdırıcınızla əlaqələndirmək üçün).
  • "Cihaz ID" və "Avtorizasiya açarı" (cihazı MGT24 xidmətində avtorizasiya etmək üçün).

Cihaz şəbəkə parametrlərinin qurulması nümunəsiSonoff Basic üçün vizual proqramlaşdırma

Parametrləri yadda saxlayın və cihazı yenidən başladın.
Burada Video təlimat.

Addım 4. Sensorların qoşulması (isteğe bağlı)

Cari proqram təminatı dörd ds18b20 temperatur sensorunu dəstəkləyir. Budur Video təlimat sensorların quraşdırılması üçün. Göründüyü kimi, bu addım ən çətin olacaq, çünki düz qollar və lehimləmə dəmiri tələb olunacaq.

Bölmə II. Vizual proqramlaşdırma

Addım 1: Skriptlər yaradın

Proqramlaşdırma mühiti kimi istifadə olunur Tıxacla, mühiti öyrənmək asandır, ona görə də sadə skriptlər yaratmaq üçün proqramçı olmağa ehtiyac yoxdur.

Cihaz parametrlərini yazmaq və oxumaq üçün xüsusi bloklar əlavə etdim. İstənilən parametrə adla daxil olur. Uzaq cihazların parametrləri üçün mürəkkəb adlar istifadə olunur: “parameter@device”.
Seçimlərin açılan siyahısıSonoff Basic üçün vizual proqramlaşdırma

Yükü (1Hz) siklik yandırmaq və söndürmək üçün nümunə ssenari:
Sonoff Basic üçün vizual proqramlaşdırma

İki ayrı cihazın işini sinxronlaşdıran skript nümunəsi. Məhz, hədəf cihazın rölesi uzaq cihazın rölesinin işini təkrarlayır.
Sonoff Basic üçün vizual proqramlaşdırma

Termostat üçün ssenari (histerezsiz):
Sonoff Basic üçün vizual proqramlaşdırma

Daha mürəkkəb skriptlər yaratmaq üçün siz dəyişənlərdən, döngələrdən, funksiyalardan (arqumentlərlə) və digər konstruksiyalardan istifadə edə bilərsiniz. Bütün bunları burada təfərrüatlı təsvir etməyəcəyəm; artıq şəbəkədə kifayət qədər çox şey var. Blockly haqqında maarifləndirici material.

Addım 2: Skriptlərin sırası

Skript fasiləsiz işləyir və sonuna çatan kimi yenidən başlayır. Bu vəziyyətdə, skripti müvəqqəti olaraq dayandıra bilən iki blok var, "gecikmə" və "fasilə".
"Gecikmə" bloku millisaniyə və ya mikrosaniyə gecikmələri üçün istifadə olunur. Bu blok vaxt intervalını ciddi şəkildə saxlayır, bütün cihazın işini bloklayır.
"Pauza" bloku ikinci (və ya daha az) gecikmələr üçün istifadə olunur və cihazdakı digər proseslərin icrasına mane olmur.
Skriptin özündə sonsuz bir döngə varsa, onun gövdəsində “fasilə” yoxdursa, tərcüməçi müstəqil olaraq qısa fasilə verir.
Ayrılmış yaddaş yığını tükənərsə, tərcüməçi belə gücə ehtiyacı olan skriptin icrasını dayandıracaq (rekursiv funksiyalarla diqqətli olun).

Addım 3: Skriptlərin sazlanması

Artıq cihaza yüklənmiş bir skripti sazlamaq üçün, addım-addım bir proqram izi işlədə bilərsiniz. Bu, ssenarinin davranışının müəllifin nəzərdə tutduğundan fərqli olduğu ortaya çıxanda son dərəcə faydalı ola bilər. Bu halda izləmə müəllifə problemin mənbəyini tez tapmağa və skriptdəki xətanı düzəltməyə imkan verir.

Sazlama rejimində faktorialın hesablanması ssenarisi:
Sonoff Basic üçün vizual proqramlaşdırma

Sazlama aləti çox sadədir və üç əsas düymədən ibarətdir: “start”, “bir addım irəli” və “dayan” (həmçinin “giriş” və “çıxış” debug rejimini də unutmayaq). Addım-addım izləmə ilə yanaşı, istənilən blokda kəsilmə nöqtəsi təyin edə bilərsiniz (blokun üzərinə klikləməklə).
Parametrlərin (sensorlar, relelər) cari dəyərlərini monitorda göstərmək üçün "çap" blokundan istifadə edin.
Burada ümumi baxış videosu sazlayıcıdan istifadə haqqında.

Maraqlananlar üçün bölmə. Başlıq altında nə var?

Skriptlərin hədəf cihazda işləməsi üçün bayt kodu tərcüməçisi və 38 təlimatdan ibarət assembler hazırlanmışdır. Blockly-nin mənbə kodunda vizual blokları montaj təlimatlarına çevirən xüsusi kod generatoru var. Sonradan bu assembler proqramı baytkoda çevrilir və icra üçün cihaza ötürülür.
Bu virtual maşının arxitekturası olduqca sadədir və onu təsvir etmək üçün xüsusi bir məqam yoxdur, İnternetdə ən sadə virtual maşınların dizaynı ilə bağlı çoxlu məqalələr tapa bilərsiniz.
Mən adətən virtual maşınımın yığını üçün 1000 bayt ayırıram, bu ehtiyat üçün kifayətdir. Əlbəttə ki, dərin rekursiyalar hər hansı bir yığını tükədə bilər, lakin onların praktiki istifadəsi ehtimalı azdır.

Nəticədə bayt kodu olduqca yığcamdır. Məsələn, eyni faktorialın hesablanması üçün bayt kodu cəmi 49 baytdır. Bu onun vizual formasıdır:
Sonoff Basic üçün vizual proqramlaşdırma

Və bu onun assembler proqramıdır:

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

Təqdimatın montaj formasının praktiki dəyəri yoxdursa, "javaskrit" nişanı, əksinə, vizual bloklardan daha tanış bir görünüş verir:

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

window.alert(factorial(10));

Performansla bağlı. Ən sadə flasher skriptini işlədəndə osiloskop ekranında 47 kHz kvadrat dalğa əldə etdim (prosessorun 80 MHz tezliyində).
Sonoff Basic üçün vizual proqramlaşdırmaSonoff Basic üçün vizual proqramlaşdırma
Düşünürəm ki, bu yaxşı nəticədir, ən azı bu sürət ondan təxminən on dəfə yüksəkdir Lua и Espruino.

Son hissəsi

Xülasə etmək üçün deyim ki, skriptlərdən istifadə yalnız ayrı bir cihazın işinin məntiqini proqramlaşdırmağa imkan vermir, həm də bəzi cihazların başqalarının davranışına təsir etdiyi bir neçə cihazı bir mexanizmə birləşdirməyə imkan verir.
Həm də qeyd edirəm ki, skriptlərin saxlanması üçün seçilmiş üsul (birbaşa cihazların özündə, serverdə deyil) artıq işləyən cihazların başqa bir serverə, məsələn, ev Moruquna keçidini asanlaşdırır. təlim.

Hamısı budur, məsləhət və konstruktiv tənqid eşitməkdən şad olaram.

Mənbə: www.habr.com

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