Sonoff Basic için görsel programlama

Sonoff Basic için görsel programlama
Ucuz bir Çin cihazından programlanabilir bir mantık denetleyicisinin nasıl oluşturulacağı hakkında bir makale. Böyle bir cihaz hem ev otomasyonunda hem de okul bilgisayar bilimlerinde pratik derslerde kullanım alanı bulacaktır.
Referans olarak, Sonoff Basic programı varsayılan olarak Çin bulut hizmeti aracılığıyla bir mobil uygulamayla çalışır; önerilen değişiklikten sonra, bu cihazla daha fazla etkileşim tarayıcıda mümkün olacaktır.

Bölüm I. Sonoff'u MGT24 hizmetine bağlama

1. Adım: Bir kontrol paneli oluşturun

Siteye kayıt olun yönetim 24 (henüz kayıtlı değilseniz) ve hesabınızı kullanarak giriş yapın.
Giriş yapmakSonoff Basic için görsel programlama

Yeni bir cihaz için kontrol paneli oluşturmak için “+” düğmesine tıklayın.
Panel oluşturma örneğiSonoff Basic için görsel programlama

Panel oluşturulduktan sonra panel listenizde görünecektir.

Oluşturulan panelin "Kurulum" sekmesinde "Cihaz Kimliği" ve "Yetkilendirme Anahtarı" alanlarını bulun; gelecekte Sonoff cihazının kurulumunda bu bilgiler gerekli olacaktır.
Sekme örneğiSonoff Basic için görsel programlama

Adım 2. Cihazı yeniden başlatın

yardımcı programı kullanma XTCOM_UTIL Firmware'i indirin PLC Sonoff Temel cihaza, bunun için bir USB-TTL dönüştürücüye ihtiyacınız olacak. Burada talimat и video eğitimi.

3. Adım. Cihaz kurulumu

Cihaza güç verin, LED yandıktan sonra düğmeye basın ve LED periyodik olarak eşit şekilde yanıp sönmeye başlayana kadar basılı tutun.
Bu anda “PLC Sonoff Basic” adında yeni bir wi-fi ağı karşınıza çıkacak, bilgisayarınızı bu ağa bağlayın.
LED göstergesinin açıklaması

LED göstergesi
Cihaz durumu

periyodik çift yanıp sönme
yönlendiriciye bağlantı yok

sürekli parlıyor
yönlendiriciyle bağlantı kuruldu

periyodik üniforma yanıp sönüyor
kablosuz erişim noktası modu

sönmüş
Güç kaynağı yok

Bir İnternet tarayıcısı açın ve adres çubuğuna “192.168.4.1” metnini girin, cihazın ağ ayarları ayarları sayfasına gidin.

Alanları aşağıdaki gibi doldurun:

  • “Ağ adı” ve “Şifre” (cihazı evinizdeki kablosuz yönlendiriciye bağlamak için).
  • “Cihaz Kimliği” ve “Yetkilendirme anahtarı” (cihazı MGT24 servisinde yetkilendirmek için).

Cihaz ağ parametrelerini ayarlama örneğiSonoff Basic için görsel programlama

Ayarları kaydedin ve cihazı yeniden başlatın.
öyle video eğitimi.

Adım 4. Sensörlerin bağlanması (isteğe bağlı)

Mevcut ürün yazılımı dört adede kadar ds18b20 sıcaklık sensörünü destekler. Burada video eğitimi sensörlerin kurulumu için. Görünüşe göre bu adım en zoru olacak çünkü düz kollar ve bir havya gerektirecek.

Bölüm II. Görsel programlama

1. Adım: Komut Dosyaları Oluşturun

Programlama ortamı olarak kullanılır Blocklyortamın öğrenilmesi kolaydır, dolayısıyla basit komut dosyaları oluşturmak için programcı olmanıza gerek yoktur.

Cihaz parametrelerini yazmak ve okumak için özel bloklar ekledim. Herhangi bir parametreye isimle erişilir. Uzak cihazların parametreleri için bileşik adlar kullanılır: “parametre@cihaz”.
Seçeneklerin açılır listesiSonoff Basic için görsel programlama

Yükün döngüsel olarak açılıp kapatılmasına ilişkin örnek senaryo (1Hz):
Sonoff Basic için görsel programlama

İki ayrı cihazın çalışmasını senkronize eden bir komut dosyası örneği. Yani hedef cihazın rölesi, uzak cihazın rölesinin çalışmasını tekrarlar.
Sonoff Basic için görsel programlama

Termostat senaryosu (histerezissiz):
Sonoff Basic için görsel programlama

Daha karmaşık komut dosyaları oluşturmak için değişkenleri, döngüleri, işlevleri (argümanlarla birlikte) ve diğer yapıları kullanabilirsiniz. Tüm bunları burada ayrıntılı olarak anlatmayacağım, internette zaten oldukça fazla şey var. Blockly hakkında eğitim materyali.

Adım 2: Komut Dosyalarının Sırası

Betik sürekli olarak çalışır ve sona erdiğinde yeniden başlar. Bu durumda betiği geçici olarak duraklatabilecek iki blok vardır; “gecikme” ve “duraklatma”.
"Gecikme" bloğu milisaniye veya mikrosaniyelik gecikmeler için kullanılır. Bu blok, tüm cihazın çalışmasını engelleyerek zaman aralığını sıkı bir şekilde korur.
“Pause” bloğu ikinci (veya daha az) gecikmeler için kullanılır ve cihazdaki diğer işlemlerin yürütülmesini engellemez.
Komut dosyasının kendisi, gövdesi "duraklatma" içermeyen sonsuz bir döngü içeriyorsa, yorumlayıcı bağımsız olarak kısa bir duraklama başlatır.
Tahsis edilen bellek yığını tükenirse, yorumlayıcı bu kadar çok güce ihtiyaç duyan bir komut dosyasını çalıştırmayı durduracaktır (özyinelemeli işlevlere dikkat edin).

3. Adım: Komut Dosyalarında Hata Ayıklama

Cihaza önceden yüklenmiş olan bir komut dosyasında hata ayıklamak için adım adım program izlemeyi çalıştırabilirsiniz. Senaryonun davranışının yazarın amaçladığından farklı olduğu ortaya çıktığında bu son derece yararlı olabilir. Bu durumda izleme, yazarın sorunun kaynağını hızlı bir şekilde bulmasına ve komut dosyasındaki hatayı düzeltmesine olanak tanır.

Hata ayıklama modunda faktöriyel hesaplama senaryosu:
Sonoff Basic için görsel programlama

Hata ayıklama aracı çok basittir ve üç ana düğmeden oluşur: "başlat", "bir adım ileri" ve "durdur" ("gir" ve "çıkış" hata ayıklama modunu da unutmayalım). Adım adım izlemeye ek olarak, herhangi bir blokta (bloğa tıklayarak) bir kesme noktası ayarlayabilirsiniz.
Parametrelerin (sensörler, röleler) mevcut değerlerini monitörde görüntülemek için “yazdır” bloğunu kullanın.
öyle genel bakış videosu hata ayıklayıcıyı kullanma hakkında.

Meraklısı için bölüm. Kaputun altında ne var?

Komut dosyalarının hedef cihazda çalışabilmesi için bir bayt kodu yorumlayıcısı ve 38 talimat içeren bir çevirici geliştirildi. Blockly'nin kaynak kodu, görsel blokları montaj talimatlarına dönüştüren özel bir kod oluşturucuya sahiptir. Daha sonra bu assembler programı bytecode'a dönüştürülür ve çalıştırılmak üzere cihaza aktarılır.
Bu sanal makinenin mimarisi oldukça basittir ve onu tanımlamanın özel bir anlamı yoktur; İnternette en basit sanal makinelerin tasarımıyla ilgili birçok makale bulacaksınız.
Sanal makinemin yığınına genellikle 1000 bayt ayırıyorum, bu da yedeklemeye yetiyor. Elbette, derin özyinelemeler herhangi bir yığını tüketebilir, ancak bunların herhangi bir pratik kullanıma sahip olması pek olası değildir.

Ortaya çıkan bayt kodu oldukça kompakttır. Örnek olarak, aynı faktöriyelin hesaplanmasına yönelik bayt kodu yalnızca 49 bayttır. Bu onun görsel şeklidir:
Sonoff Basic için görsel programlama

Bu da onun montajcı programı:

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

Gösterimin montaj biçiminin pratik bir değeri yoksa, “javascrit” sekmesi tam tersine görsel bloklardan daha tanıdık bir görünüm verir:

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

window.alert(factorial(10));

Performansla ilgili. En basit flaşör komut dosyasını çalıştırdığımda, osiloskop ekranında (47 MHz işlemci saat hızında) 80 kHz kare dalga elde ettim.
Sonoff Basic için görsel programlamaSonoff Basic için görsel programlama
Bence bu iyi bir sonuç, en azından bu hız neredeyse on kat daha hızlı. Lua и Espruino.

Son bölümü

Özetlemek gerekirse, komut dosyalarının kullanımının yalnızca ayrı bir cihazın çalışma mantığını programlamamıza izin vermekle kalmayıp, aynı zamanda bazı cihazların diğerlerinin davranışını etkilediği birkaç cihazı tek bir mekanizmaya bağlamayı da mümkün kıldığını söyleyeceğim.
Ayrıca, seçilen komut dosyalarını saklama yönteminin (sunucuda değil, doğrudan cihazların kendisinde), halihazırda çalışan cihazların başka bir sunucuya, örneğin bir ev Raspberry'sine geçişini kolaylaştırdığını da not ediyorum. talimat.

Hepsi bu, tavsiye ve yapıcı eleştiriyi duymaktan memnuniyet duyarım.

Kaynak: habr.com

Yorum ekle