Pengaturcaraan visual untuk Sonoff Basic

Pengaturcaraan visual untuk Sonoff Basic
Artikel tentang cara mencipta pengawal logik boleh atur cara daripada peranti Cina yang murah. Peranti sedemikian akan mendapati penggunaannya dalam automasi rumah dan sebagai kelas praktikal dalam sains komputer sekolah.
Sebagai rujukan, secara lalai program Asas Sonoff berfungsi dengan aplikasi mudah alih melalui perkhidmatan awan Cina; selepas pengubahsuaian yang dicadangkan, semua interaksi lanjut dengan peranti ini akan dapat dilakukan dalam penyemak imbas.

Bahagian I. Menyambung Sonoff ke perkhidmatan MGT24

Langkah 1: Buat panel kawalan

Daftar di tapak mgt24 (jika belum berdaftar) dan log masuk menggunakan akaun anda.
Log masukPengaturcaraan visual untuk Sonoff Basic

Untuk membuat panel kawalan untuk peranti baharu, klik pada butang “+”.
Contoh membuat panelPengaturcaraan visual untuk Sonoff Basic

Setelah panel dibuat, ia akan muncul dalam senarai panel anda.

Dalam tab "Persediaan" pada panel yang dibuat, cari medan "ID Peranti" dan "Kunci Kebenaran"; pada masa hadapan, maklumat ini akan diperlukan semasa menyediakan peranti Sonoff.
Contoh tabPengaturcaraan visual untuk Sonoff Basic

Langkah 2. Pancarkan semula peranti

Menggunakan utiliti XTCOM_UTIL muat turun perisian tegar PLC Sonoff Asas ke peranti, untuk ini anda memerlukan penukar USB-TTL. Di sini arahan и Arahan video.

Langkah 3. Persediaan peranti

Gunakan kuasa pada peranti, selepas LED menyala, tekan butang dan tahan ia ditekan sehingga LED mula berkelip secara berkala secara sekata.
Pada masa ini, rangkaian wi-fi baharu yang dipanggil "PLC Sonoff Basic" akan muncul, sambungkan komputer anda ke rangkaian ini.
Penjelasan petunjuk LED

Petunjuk LED
Status Peranti

berkelip dua kali berkala
tiada sambungan ke penghala

bersinar secara berterusan
sambungan diwujudkan dengan penghala

berkelip seragam berkala
mod titik capaian wi-fi

dipadamkan
Tiada bekalan kuasa

Buka penyemak imbas Internet dan masukkan teks "192.168.4.1" dalam bar alamat, pergi ke halaman tetapan tetapan rangkaian peranti.

Isi ruangan seperti berikut:

  • "Nama rangkaian" dan "Kata Laluan" (untuk memautkan peranti ke penghala wi-fi rumah anda).
  • “ID Peranti” dan “Kunci kebenaran” (untuk membenarkan peranti pada perkhidmatan MGT24).

Contoh menetapkan parameter rangkaian perantiPengaturcaraan visual untuk Sonoff Basic

Simpan tetapan dan but semula peranti.
ia adalah Arahan video.

Langkah 4. Menyambung penderia (pilihan)

Perisian tegar semasa menyokong sehingga empat penderia suhu ds18b20. Di sini Arahan video untuk pemasangan sensor. Nampaknya, langkah ini akan menjadi yang paling sukar, kerana ia memerlukan lengan lurus dan besi pematerian.

Bahagian II. Pengaturcaraan visual

Langkah 1: Buat Skrip

Digunakan sebagai persekitaran pengaturcaraan Secara tersekat-sekat, persekitaran mudah dipelajari, jadi anda tidak perlu menjadi pengaturcara untuk mencipta skrip mudah.

Saya menambah blok khusus untuk menulis dan membaca parameter peranti. Sebarang parameter diakses mengikut nama. Untuk parameter peranti jauh, nama kompaun digunakan: "parameter@peranti".
Senarai juntai bawah pilihanPengaturcaraan visual untuk Sonoff Basic

Contoh senario untuk menghidupkan dan mematikan kitaran beban (1Hz):
Pengaturcaraan visual untuk Sonoff Basic

Contoh skrip yang menyegerakkan operasi dua peranti berasingan. Iaitu, geganti peranti sasaran mengulangi operasi geganti peranti jauh.
Pengaturcaraan visual untuk Sonoff Basic

Senario untuk termostat (tanpa histerisis):
Pengaturcaraan visual untuk Sonoff Basic

Untuk mencipta skrip yang lebih kompleks, anda boleh menggunakan pembolehubah, gelung, fungsi (dengan argumen) dan binaan lain. Saya tidak akan menerangkan semua ini secara terperinci di sini; sudah banyak di internet. bahan pendidikan tentang Blockly.

Langkah 2: Susunan Skrip

Skrip berjalan secara berterusan, dan sebaik sahaja ia mencapai penghujungnya, ia bermula semula. Dalam kes ini, terdapat dua blok yang boleh menjeda skrip buat sementara waktu, "tunda" dan "jeda".
Blok "kelewatan" digunakan untuk kelewatan milisaat atau mikrosaat. Blok ini mengekalkan selang masa dengan ketat, menyekat operasi keseluruhan peranti.
Blok "jeda" digunakan untuk kelewatan kedua (atau kurang), dan ia tidak menyekat pelaksanaan proses lain dalam peranti.
Jika skrip itu sendiri mengandungi gelung tak terhingga, yang kandungannya tidak mengandungi "jeda", jurubahasa secara bebas memulakan jeda pendek.
Jika timbunan memori yang diperuntukkan telah kehabisan, penterjemah akan berhenti melaksanakan skrip lapar kuasa sedemikian (berhati-hati dengan fungsi rekursif).

Langkah 3: Menyahpepijat Skrip

Untuk nyahpepijat skrip yang telah dimuatkan ke dalam peranti, anda boleh menjalankan jejak program langkah demi langkah. Ini boleh menjadi sangat berguna apabila tingkah laku skrip ternyata berbeza daripada yang dimaksudkan oleh pengarang. Dalam kes ini, pengesanan membolehkan pengarang mencari sumber masalah dengan cepat dan membetulkan ralat dalam skrip.

Senario untuk mengira faktorial dalam mod nyahpepijat:
Pengaturcaraan visual untuk Sonoff Basic

Alat nyahpepijat sangat mudah dan terdiri daripada tiga butang utama: "mula", "satu langkah ke hadapan" dan "berhenti" (jangan lupa tentang mod nyahpepijat "masuk" dan "keluar". Selain pengesanan langkah demi langkah, anda boleh menetapkan titik putus pada mana-mana blok (dengan mengklik pada blok).
Untuk memaparkan nilai semasa parameter (sensor, geganti) dalam monitor, gunakan blok "cetak".
ia adalah video gambaran keseluruhan tentang menggunakan penyahpepijat.

Bahagian untuk yang ingin tahu. Apa yang ada di bawah tudung?

Untuk membolehkan skrip berfungsi pada peranti sasaran, penterjemah kod bait dan pemasang dengan 38 arahan telah dibangunkan. Kod sumber Blockly mempunyai penjana kod khusus terbina di dalamnya yang menukar blok visual kepada arahan pemasangan. Selepas itu, atur cara pemasang ini ditukar kepada kod bait dan dipindahkan ke peranti untuk dilaksanakan.
Seni bina mesin maya ini agak mudah dan tidak ada maksud khusus untuk menerangkannya; di Internet anda akan menemui banyak artikel tentang mereka bentuk mesin maya yang paling mudah.
Saya biasanya memperuntukkan 1000 bait untuk timbunan mesin maya saya, yang cukup untuk ganti. Sudah tentu, rekursi dalam boleh meletihkan sebarang timbunan, tetapi ia tidak mungkin mempunyai sebarang kegunaan praktikal.

Bytecode yang dihasilkan agak padat. Sebagai contoh, kod bait untuk mengira faktorial yang sama hanya 49 bait. Ini adalah bentuk visualnya:
Pengaturcaraan visual untuk Sonoff Basic

Dan ini adalah program penghimpunnya:

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 perhimpunan perwakilan tidak mempunyai sebarang nilai praktikal, maka tab "javascrit", sebaliknya, memberikan rupa yang lebih biasa daripada blok visual:

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

window.alert(factorial(10));

Berkenaan prestasi. Apabila saya menjalankan skrip flasher yang paling mudah, saya mendapat gelombang persegi 47 kHz pada skrin osiloskop (pada kelajuan jam pemproses 80 MHz).
Pengaturcaraan visual untuk Sonoff BasicPengaturcaraan visual untuk Sonoff Basic
Saya fikir ini adalah keputusan yang baik, sekurang-kurangnya kelajuan ini hampir sepuluh kali lebih cepat daripada Lua и Espruino.

Bahagian akhir

Untuk meringkaskan, saya akan mengatakan bahawa penggunaan skrip membolehkan kita bukan sahaja memprogramkan logik operasi peranti berasingan, tetapi juga memungkinkan untuk menyambung beberapa peranti ke dalam satu mekanisme, di mana sesetengah peranti mempengaruhi tingkah laku orang lain.
Saya juga perhatikan bahawa kaedah yang dipilih untuk menyimpan skrip (secara langsung dalam peranti itu sendiri, dan bukan pada pelayan) memudahkan penukaran peranti yang sudah berfungsi ke pelayan lain, contohnya ke Raspberry rumah, di sini arahan.

Itu sahaja, saya akan gembira mendengar nasihat dan kritikan yang membina.

Sumber: www.habr.com

Tambah komen