Pemrograman visual untuk Sonoff Basic

Pemrograman visual untuk Sonoff Basic
Artikel tentang cara membuat pengontrol logika yang dapat diprogram dari perangkat Cina yang murah. Perangkat semacam itu akan digunakan baik dalam otomatisasi rumah maupun sebagai kelas praktis dalam ilmu komputer sekolah.
Sebagai referensi, secara default program Sonoff Basic bekerja dengan aplikasi seluler melalui layanan cloud Tiongkok; setelah modifikasi yang diusulkan, semua interaksi lebih lanjut dengan perangkat ini akan dimungkinkan di browser.

Bagian I. Menghubungkan Sonoff ke layanan MGT24

Langkah 1: Buat panel kontrol

Daftarkan secara online mgt24 (jika belum terdaftar) dan login menggunakan akun Anda.
LoginPemrograman visual untuk Sonoff Basic

Untuk membuat panel kontrol untuk perangkat baru, klik tombol “+”.
Contoh pembuatan panelPemrograman visual untuk Sonoff Basic

Setelah panel dibuat, panel tersebut akan muncul di daftar panel Anda.

Di tab "Pengaturan" pada panel yang dibuat, temukan bidang "ID Perangkat" dan "Kunci Otorisasi"; di masa mendatang, informasi ini akan diperlukan saat menyiapkan perangkat Sonoff.
Contoh tabPemrograman visual untuk Sonoff Basic

Langkah 2. Reflash perangkat

Menggunakan utilitas XTCOM_UTIL unduh firmwarenya PLC Sonoff Dasar ke perangkat, untuk ini Anda memerlukan konverter USB-TTL. Di Sini pengajaran и instruksi video.

Langkah 3. Pengaturan perangkat

Berikan daya pada perangkat, setelah LED menyala, tekan tombol dan tahan hingga LED mulai berkedip merata secara berkala.
Saat ini, jaringan wi-fi baru bernama “PLC Sonoff Basic” akan muncul, sambungkan komputer Anda ke jaringan ini.
Penjelasan indikasi LED

indikasi LED
Status Perangkat

berkedip ganda secara berkala
tidak ada koneksi ke router

bersinar terus menerus
koneksi dibuat dengan router

berkedip seragam secara berkala
mode titik akses wi-fi

padam
Tidak ada catu daya

Buka browser Internet dan masukkan teks “192.168.4.1” di bilah alamat, buka halaman pengaturan pengaturan jaringan perangkat.

Isi kolom sebagai berikut:

  • “Nama jaringan” dan “Kata Sandi” (untuk menghubungkan perangkat ke router wi-fi rumah Anda).
  • “ID Perangkat” dan “Kunci Otorisasi” (untuk mengotorisasi perangkat pada layanan MGT24).

Contoh pengaturan parameter jaringan perangkatPemrograman visual untuk Sonoff Basic

Simpan pengaturan dan reboot perangkat.
Di sini instruksi video.

Langkah 4. Menghubungkan sensor (opsional)

Firmware saat ini mendukung hingga empat sensor suhu ds18b20. Di Sini instruksi video untuk pemasangan sensor. Tampaknya, langkah ini akan menjadi yang tersulit, karena memerlukan lengan lurus dan besi solder.

Bagian II. Pemrograman visual

Langkah 1: Buat Skrip

Digunakan sebagai lingkungan pemrograman blokly, lingkungannya mudah dipelajari, jadi Anda tidak perlu menjadi seorang programmer untuk membuat skrip sederhana.

Saya menambahkan blok khusus untuk menulis dan membaca parameter perangkat. Parameter apa pun diakses berdasarkan nama. Untuk parameter perangkat jarak jauh, nama gabungan digunakan: “parameter@device”.
Daftar pilihan tarik-turunPemrograman visual untuk Sonoff Basic

Contoh skenario untuk menghidupkan dan mematikan beban secara siklik (1Hz):
Pemrograman visual untuk Sonoff Basic

Contoh skrip yang menyinkronkan pengoperasian dua perangkat terpisah. Yaitu, relai perangkat target mengulangi pengoperasian relai perangkat jarak jauh.
Pemrograman visual untuk Sonoff Basic

Skenario untuk termostat (tanpa histeresis):
Pemrograman visual untuk Sonoff Basic

Untuk membuat skrip yang lebih kompleks, Anda dapat menggunakan variabel, loop, fungsi (dengan argumen) dan konstruksi lainnya. Saya tidak akan menjelaskan semua ini secara rinci di sini; sudah ada cukup banyak di internet. materi pendidikan tentang Blockly.

Langkah 2: Urutan Skrip

Skrip berjalan terus menerus, dan segera setelah mencapai akhir, skrip dimulai lagi. Dalam hal ini, ada dua blok yang dapat menghentikan sementara skrip, “delay” dan “pause”.
Blok "penundaan" digunakan untuk penundaan milidetik atau mikrodetik. Blok ini secara ketat mempertahankan interval waktu, memblokir pengoperasian seluruh perangkat.
Blok “jeda” digunakan untuk penundaan kedua (atau kurang), dan tidak memblokir eksekusi proses lain di perangkat.
Jika skrip itu sendiri berisi loop tak terbatas, yang isi skripnya tidak berisi "jeda", penerjemah secara mandiri memulai jeda singkat.
Jika tumpukan memori yang dialokasikan habis, penerjemah akan berhenti menjalankan skrip yang haus kekuasaan (hati-hati dengan fungsi rekursif).

Langkah 3: Men-debug Skrip

Untuk men-debug skrip yang sudah dimuat ke perangkat, Anda dapat menjalankan pelacakan program langkah demi langkah. Ini bisa sangat berguna ketika perilaku naskah ternyata berbeda dari apa yang dimaksudkan penulisnya. Dalam hal ini, penelusuran memungkinkan penulis dengan cepat menemukan sumber masalahnya dan memperbaiki kesalahan pada skrip.

Skenario penghitungan faktorial dalam mode debug:
Pemrograman visual untuk Sonoff Basic

Alat debug sangat sederhana dan terdiri dari tiga tombol utama: “mulai”, “satu langkah maju” dan “berhenti” (jangan lupa juga tentang “masuk” dan “keluar” mode debug). Selain pelacakan langkah demi langkah, Anda dapat mengatur breakpoint pada blok mana pun (dengan mengklik blok tersebut).
Untuk menampilkan nilai parameter saat ini (sensor, relai) di monitor, gunakan blok “cetak”.
Di sini video ikhtisar tentang menggunakan debugger.

Bagian untuk yang penasaran. Apa yang ada di balik terpal?

Agar skrip dapat bekerja pada perangkat target, penerjemah bytecode dan assembler dengan 38 instruksi dikembangkan. Kode sumber Blockly memiliki generator kode khusus yang mengubah blok visual menjadi instruksi perakitan. Selanjutnya, program assembler ini diubah menjadi bytecode dan ditransfer ke perangkat untuk dieksekusi.
Arsitektur mesin virtual ini cukup sederhana dan tidak ada gunanya menjelaskannya secara khusus, di Internet Anda akan menemukan banyak artikel tentang merancang mesin virtual paling sederhana.
Saya biasanya mengalokasikan 1000 byte untuk tumpukan mesin virtual saya, yang cukup untuk disisihkan. Tentu saja, rekursi mendalam dapat menghabiskan tumpukan apa pun, tetapi kemungkinan besar tidak ada gunanya secara praktis.

Bytecode yang dihasilkan cukup kompak. Misalnya bytecode untuk menghitung faktorial yang sama hanya 49 byte. Ini adalah bentuk visualnya:
Pemrograman visual untuk Sonoff Basic

Dan ini program assemblernya:

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

Jika bentuk representasi rakitan tidak memiliki nilai praktis, maka tab “javascrit”, sebaliknya, memberikan tampilan yang lebih familiar daripada blok visual:

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

window.alert(factorial(10));

Mengenai kinerja. Ketika saya menjalankan skrip flasher paling sederhana, saya mendapatkan gelombang persegi 47 kHz di layar osiloskop (pada kecepatan jam prosesor 80 MHz).
Pemrograman visual untuk Sonoff BasicPemrograman visual untuk Sonoff Basic
Menurut saya ini adalah hasil yang bagus, setidaknya kecepatan ini hampir sepuluh kali lebih cepat daripada Lua и Espruino.

Bagian terakhir

Ringkasnya, saya akan mengatakan bahwa penggunaan skrip memungkinkan kita tidak hanya memprogram logika pengoperasian perangkat yang terpisah, tetapi juga memungkinkan untuk menghubungkan beberapa perangkat ke dalam satu mekanisme, di mana beberapa perangkat memengaruhi perilaku perangkat lain.
Saya juga mencatat bahwa metode penyimpanan skrip yang dipilih (langsung di perangkat itu sendiri, dan bukan di server) menyederhanakan peralihan perangkat yang sudah berfungsi ke server lain, misalnya ke Raspberry rumah, di sini pengajaran.

Itu saja, saya akan dengan senang hati mendengar saran dan kritik yang membangun.

Sumber: www.habr.com

Tambah komentar