Pemrograman visual kanggo Sonoff Basic

Pemrograman visual kanggo Sonoff Basic
Artikel babagan carane nggawe pengontrol logika sing bisa diprogram saka piranti Cina sing murah. Piranti kasebut bakal digunakake ing otomatisasi omah lan minangka kelas praktis ing ilmu komputer sekolah.
Kanggo referensi, kanthi standar program Sonoff Basic bisa digunakake karo aplikasi seluler liwat layanan awan Cina; sawise modifikasi sing diusulake, kabeh interaksi luwih lanjut karo piranti iki bakal bisa ditindakake ing browser.

Bagean I. Nyambungake Sonoff menyang layanan MGT24

Langkah 1: Nggawe panel kontrol

Register ing situs mgt24 (yen durung ndhaptar) lan mlebu nganggo akun sampeyan.
MlebetPemrograman visual kanggo Sonoff Basic

Kanggo nggawe panel kontrol kanggo piranti anyar, klik tombol "+".
Tuladha nggawe panelPemrograman visual kanggo Sonoff Basic

Sawise panel digawe, bakal katon ing dhaptar panel sampeyan.

Ing tab "Persiyapan" ing panel sing digawe, temokake kolom "ID Piranti" lan "Kunci Wewenang"; ing mangsa ngarep, informasi iki bakal dibutuhake nalika nyetel piranti Sonoff.
Tuladha tabPemrograman visual kanggo Sonoff Basic

Langkah 2. Reflash piranti

Nggunakake sarana XTCOM_UTIL download firmware PLC Sonoff Basic menyang piranti, kanggo iki sampeyan butuh konverter USB-TTL. kene manual и instruksi video.

Langkah 3. Persiyapan piranti

Gunakake daya menyang piranti, sawise lampu LED munggah, pencet tombol terus pencet nganti LED wiwit kerlip periodik roto-roto.
Ing wektu iki, jaringan wi-fi anyar sing diarani "PLC Sonoff Basic" bakal katon, sambungake komputer menyang jaringan iki.
Panjelasan indikasi LED

indikasi LED
Status piranti

périodik pindho sumunar
ora ana sambungan menyang router

sumunar terus
sambungan digawe karo router

kelip-kelip seragam periodik
mode titik akses wi-fi

dipateni
Ora ana sumber daya

Bukak browser Internet lan ketik teks "192.168.4.1" ing baris alamat, pindhah menyang kaca setelan jaringan piranti.

Isi kolom ing ngisor iki:

  • "Jeneng jaringan" lan "Sandhi" (kanggo nyambungake piranti menyang router wi-fi omah).
  • "ID Piranti" lan "Kunci wewenang" (kanggo menehi wewenang piranti ing layanan MGT24).

Conto nyetel paramèter jaringan pirantiPemrograman visual kanggo Sonoff Basic

Simpen setelan lan urip maneh piranti.
iku instruksi video.

Langkah 4. Nyambungake sensor (opsional)

Perangkat kukuh saiki ndhukung nganti papat sensor suhu ds18b20. kene instruksi video kanggo instalasi saka sensor. Ketoke, langkah iki bakal dadi sing paling angel, amarga mbutuhake tangan lurus lan wesi solder.

Bab II. Pemrograman visual

Langkah 1: Nggawe Skrip

Digunakake minangka lingkungan pemrograman Blok, lingkungan iku gampang kanggo sinau, dadi sampeyan ora perlu dadi programmer kanggo nggawe script prasaja.

Aku nambahake blok khusus kanggo paramèter piranti nulis lan maca. Parameter apa wae diakses kanthi jeneng. Kanggo paramèter piranti remot, jeneng senyawa digunakake: "parameter @ piranti".
Dhaptar pilihan pilihanPemrograman visual kanggo Sonoff Basic

Conto skenario kanggo ngaktifake lan mateni beban siklik (1Hz):
Pemrograman visual kanggo Sonoff Basic

Conto skrip sing nyinkronake operasi rong piranti sing kapisah. Yaiku, relay saka piranti target mbaleni operasi relay saka piranti remot.
Pemrograman visual kanggo Sonoff Basic

Skenario kanggo termostat (tanpa histerisis):
Pemrograman visual kanggo Sonoff Basic

Kanggo nggawe skrip sing luwih rumit, sampeyan bisa nggunakake variabel, puteran, fungsi (karo argumen) lan konstruksi liyane. Aku ora bakal njlèntrèhaké kabeh iki kanthi rinci ing kene; wis ana akeh ing net. materi pendidikan babagan Blockly.

Langkah 2: Urutan Skrip

Skrip terus-terusan, lan sawise tekan pungkasan, bakal diwiwiti maneh. Ing kasus iki, ana rong blok sing bisa ngaso sementara naskah, "tundha" lan "ngaso".
Blok "tundha" digunakake kanggo wektu tundha milidetik utawa mikrodetik. Blok iki kanthi ketat njaga interval wektu, ngalangi operasi kabeh piranti.
Blok "ngaso" digunakake kanggo wektu tundha kapindho (utawa kurang), lan ora ngalangi eksekusi proses liyane ing piranti kasebut.
Yen script dhewe ngemot daur ulang tanpa wates, awak kang ora ngemot "ngaso", interpreter independen miwiti ngaso cendhak.
Yen tumpukan memori sing diparengake kesel, interpreter bakal mandheg nglakokake skrip luwe daya kasebut (ati-ati karo fungsi rekursif).

Langkah 3: Debugging Scripts

Kanggo debug script sing wis dimuat menyang piranti, sampeyan bisa mbukak program tilak langkah dening langkah. Iki bisa banget migunani nalika prilaku saka script dadi beda saka apa sing penulis dimaksudaké. Ing kasus iki, nelusuri ngidini penulis kanggo cepet nemokake sumber masalah lan mbenerake kesalahan ing script.

Skenario kanggo ngitung faktorial ing mode debug:
Pemrograman visual kanggo Sonoff Basic

Alat debug banget prasaja lan kasusun saka telung tombol utama: "miwiti", "siji langkah maju" lan "mandheg" (ayo uga ora lali bab "ketik" lan "metu" mode debug). Saliyane nglacak langkah-langkah, sampeyan bisa nyetel breakpoint ing blok apa wae (kanthi ngeklik blok kasebut).
Kanggo nampilake nilai parameter saiki (sensor, relay) ing monitor, gunakake blok "print".
iku video ringkesan babagan nggunakake debugger.

Bagian kanggo penasaran. Apa ing ngisor hood?

Supaya skrip bisa digunakake ing piranti target, interpreter bytecode lan assembler kanthi 38 instruksi dikembangake. Kode sumber Blockly duwe generator kode khusus sing bisa ngowahi blok visual dadi instruksi perakitan. Sabanjure, program assembler iki diowahi dadi bytecode lan ditransfer menyang piranti kanggo eksekusi.
Arsitèktur mesin virtual iki cukup prasaja lan ora ana titik tartamtu kanggo njlèntrèhaké; ing Internet sampeyan bakal nemokake akeh artikel babagan ngrancang mesin virtual sing paling gampang.
Aku biasane nyedhiakke 1000 bait kanggo tumpukan saka mesin virtual, kang cukup kanggo nyisakke. Mesthine, rekursi jero bisa ngilangi tumpukan apa wae, nanging ora ana gunane praktis.

Bytecode sing diasilake cukup kompak. Contone, bytecode kanggo ngitung faktorial sing padha mung 49 bita. Iki minangka wujud visual:
Pemrograman visual kanggo Sonoff Basic

Lan iki program assembler dheweke:

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

Yen wangun perakitan perwakilan ora duwe nilai praktis, banjur tab "javascrit", sebaliknya, menehi tampilan sing luwih akrab tinimbang blok visual:

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

window.alert(factorial(10));

Babagan kinerja. Nalika aku mbukak script flasher paling prasaja, tak 47 kHz gelombang kothak ing layar oscilloscope (ing kacepetan jam prosesor 80 MHz).
Pemrograman visual kanggo Sonoff BasicPemrograman visual kanggo Sonoff Basic
Aku iki asil apik, paling kacepetan iki meh sepuluh kaping luwih cepet saka Lua и Espruino.

Bagean pungkasan

Kanggo ngringkes, aku bakal ngomong yen panggunaan skrip ngidini kita ora mung program logika operasi piranti sing kapisah, nanging uga bisa nyambungake sawetara piranti menyang mekanisme siji, ing ngendi sawetara piranti bisa mengaruhi prilaku wong liya.
Aku uga nyathet yen cara sing dipilih kanggo nyimpen skrip (langsung ing piranti dhewe, lan ora ing server) nyederhanakake ngalih piranti sing wis digunakake menyang server liyane, umpamane menyang Raspberry ngarep, kene manual.

Mekaten, kula badhe nyuwun pitedah saha kritik ingkang mbangun.

Source: www.habr.com

Add a comment