Sonoff Basic-д зориулсан визуал програмчлал

Sonoff Basic-д зориулсан визуал програмчлал
Хямд хятад төхөөрөмжөөс программчлагдах логик хянагчийг хэрхэн бүтээх тухай нийтлэл. Ийм төхөөрөмж нь гэрийн автоматжуулалт болон сургуулийн компьютерийн шинжлэх ухааны практик ангиудад ашиглах болно.
Анхдагч байдлаар Sonoff Basic програм нь Хятадын үүлэн үйлчилгээгээр дамжуулан гар утасны програмтай ажилладаг бөгөөд санал болгож буй өөрчлөлтийн дараа энэ төхөөрөмжтэй цаашдын бүх харилцааг хөтөч дээр хийх боломжтой болно.

I хэсэг. Sonoff-г MGT24 үйлчилгээнд холбох

Алхам 1: Хяналтын самбар үүсгэ

Сайт дээр бүртгүүлнэ үү мгт24 (хэрэв бүртгүүлээгүй бол) болон бүртгэлээ ашиглан нэвтэрнэ үү.
Системд нэвтрэхSonoff Basic-д зориулсан визуал програмчлал

Шинэ төхөөрөмжид хяналтын самбар үүсгэхийн тулд "+" товчийг дарна уу.
Самбар үүсгэх жишээSonoff Basic-д зориулсан визуал програмчлал

Самбарыг үүсгэсний дараа энэ нь таны самбаруудын жагсаалтад харагдах болно.

Үүсгэсэн самбарын "Тохиргоо" таб дээрээс "Төхөөрөмжийн ID" болон "Зөвшөөрлийн түлхүүр" талбаруудыг олоорой, ирээдүйд Sonoff төхөөрөмжийг тохируулахад энэ мэдээлэл шаардлагатай болно.
Табын жишээSonoff Basic-д зориулсан визуал програмчлал

Алхам 2. Төхөөрөмжийг дахин асаана уу

Хэрэгслийг ашиглах XTCOM_UTIL програм хангамжийг татаж авах PLC Sonoff үндсэн төхөөрөмжид, үүний тулд танд USB-TTL хөрвүүлэгч хэрэгтэй болно. Энд гарын авлага и Видео заавар.

Алхам 3. Төхөөрөмжийн тохиргоо

Төхөөрөмжийг асааж, LED ассаны дараа товчлуурыг дараад LED үе үе жигд анивчих хүртэл дарна уу.
Энэ мөчид "PLC Sonoff Basic" нэртэй шинэ Wi-Fi сүлжээ гарч ирэх бөгөөд компьютерээ энэ сүлжээнд холбоно уу.
LED заалтын тайлбар

LED заалт
Төхөөрөмжийн төлөв

үе үе давхар анивчдаг
чиглүүлэгчтэй холбогдоогүй байна

тасралтгүй гэрэлтдэг
чиглүүлэгчтэй холбогдсон холболт

үе үе жигд анивчдаг
wi-fi хандалтын цэгийн горим

унтарсан
Цахилгаан хангамж байхгүй

Интернет хөтчийг нээгээд хаягийн мөрөнд "192.168.4.1" гэж бичээд төхөөрөмжийн сүлжээний тохиргооны хуудас руу очно уу.

Талбаруудыг дараах байдлаар бөглөнө үү.

  • "Сүлжээний нэр" ба "Нууц үг" (төхөөрөмжийг гэрийн Wi-Fi чиглүүлэгчтэй холбох).
  • "Төхөөрөмжийн ID" ба "Зөвшөөрлийн түлхүүр" (төхөөрөмжийг MGT24 үйлчилгээнд зөвшөөрөх).

Төхөөрөмжийн сүлжээний параметрүүдийг тохируулах жишээSonoff Basic-д зориулсан визуал програмчлал

Тохиргоог хадгалаад төхөөрөмжийг дахин ачаална уу.
энд Видео заавар.

Алхам 4. Мэдрэгчийг холбох (заавал биш)

Одоогийн програм хангамж нь дөрвөн ds18b20 температур мэдрэгчийг дэмждэг. Энд Видео заавар мэдрэгч суурилуулах зориулалттай. Энэ алхам нь хамгийн хэцүү байх болно, учир нь шулуун гар, гагнуурын төмөр шаардлагатай болно.

II хэсэг. Визуал програмчлал

Алхам 1: Скрипт үүсгэх

Програмчлалын орчин болгон ашигладаг Blockly, орчин нь сурахад хялбар тул энгийн скрипт үүсгэхийн тулд програмист байх шаардлагагүй.

Би төхөөрөмжийн параметрүүдийг бичих, унших тусгай блокуудыг нэмсэн. Аливаа параметрт нэрээр ханддаг. Алсын төхөөрөмжүүдийн параметрүүдийн хувьд нийлмэл нэрийг ашигладаг: "parameter@device".
Сонголтуудын унадаг жагсаалтSonoff Basic-д зориулсан визуал програмчлал

Ачааллыг асаах, унтраах циклийн жишээ хувилбар (1Гц):
Sonoff Basic-д зориулсан визуал програмчлал

Хоёр тусдаа төхөөрөмжийн ажиллагааг синхрончлох скриптийн жишээ. Тухайлбал, зорилтот төхөөрөмжийн реле нь алсын төхөөрөмжийн релений ажиллагааг давтана.
Sonoff Basic-д зориулсан визуал програмчлал

Термостатын хувилбар (гистерезисгүй):
Sonoff Basic-д зориулсан визуал програмчлал

Илүү төвөгтэй скрипт үүсгэхийн тулд та хувьсагч, гогцоо, функц (аргументтай) болон бусад бүтцийг ашиглаж болно. Би энэ бүгдийг энд дэлгэрэнгүй тайлбарлахгүй; сүлжээнд аль хэдийн маш их зүйл бий. Blockly-ийн тухай боловсролын материал.

Алхам 2: Скриптүүдийн дараалал

Скрипт нь тасралтгүй ажилладаг бөгөөд төгсгөлдөө хүрмэгц дахин эхэлдэг. Энэ тохиолдолд скриптийг түр зогсоох боломжтой "саатал" ба "түр зогсоох" гэсэн хоёр блок байдаг.
"Саатал" блок нь миллисекунд эсвэл микросекундын сааталд ашиглагддаг. Энэ блок нь бүхэл бүтэн төхөөрөмжийн ажиллагааг хааж, цаг хугацааны интервалыг чанд баримталдаг.
"Түр зогсоох" блок нь хоёр дахь (эсвэл түүнээс бага) сааталд ашиглагддаг бөгөөд энэ нь төхөөрөмж дээрх бусад процессуудын гүйцэтгэлийг хаадаггүй.
Хэрэв скрипт нь өөрөө хязгааргүй давталт агуулж байгаа бөгөөд түүний үндсэн хэсэгт "түр завсарлага" агуулаагүй бол орчуулагч бие даан богино завсарлагаа эхлүүлнэ.
Хэрэв хуваарилагдсан санах ойн стек дууссан бол орчуулагч ийм хүчирхэг скриптийг гүйцэтгэхээ болино (рекурсив функцээс болгоомжил).

Алхам 3: Скриптүүдийг дибаг хийх

Төхөөрөмжид аль хэдийн ачаалагдсан скриптийг дибаг хийхийн тулд та програмын мөрийг алхам алхмаар ажиллуулж болно. Скриптийн зан байдал нь зохиогчийн бодож байснаас өөр болсон үед энэ нь маш ашигтай байж болох юм. Энэ тохиолдолд мөшгих нь зохиогчийн асуудлын эх сурвалжийг хурдан олж, скрипт дэх алдааг засах боломжийг олгодог.

Дибаг хийх горимд факториалыг тооцоолох хувилбар:
Sonoff Basic-д зориулсан визуал програмчлал

Дибаг хийх хэрэгсэл нь маш энгийн бөгөөд "эхлэх", "нэг алхам урагшлах", "зогсоох" гэсэн гурван үндсэн товчлуураас бүрдэнэ (мөн "орох", "гарцах" дибаг хийх горимын талаар мартаж болохгүй). Алхам алхмаар мөрдөхөөс гадна та ямар ч блок дээр таслах цэгийг тохируулж болно (блок дээр дарж).
Монитор дээрх параметрүүдийн (мэдрэгч, реле) одоогийн утгыг харуулахын тулд "хэвлэх" блокыг ашиглана уу.
энд тойм видео дибаглагчийг ашиглах тухай.

Сонирхолтой хүмүүст зориулсан хэсэг. Бүрээсний доор юу байгаа вэ?

Зорилтот төхөөрөмж дээр скриптүүдийг ажиллуулахын тулд байт код тайлбарлагч, 38 заавар бүхий ассемблер боловсруулсан. Blockly-ийн эх код нь харааны блокуудыг угсралтын заавар болгон хувиргадаг тусгай код үүсгэгчтэй. Дараа нь уг ассемблер програмыг байт код болгон хувиргаж, гүйцэтгэх төхөөрөмж рүү шилжүүлдэг.
Энэхүү виртуал машины архитектур нь маш энгийн бөгөөд үүнийг тайлбарлах нь чухал биш бөгөөд Интернетээс та хамгийн энгийн виртуал машинуудыг зохион бүтээх талаар олон нийтлэлийг олох болно.
Би виртуал машиныхаа стекэд ихэвчлэн 1000 байт хуваарилдаг бөгөөд энэ нь нөөцлөхөд хангалттай юм. Мэдээжийн хэрэг, гүнзгий рекурсууд нь ямар ч стекийг шавхаж чаддаг ч практик хэрэглээгүй байх магадлал багатай.

Үүссэн байт код нь нэлээд нягт юм. Жишээлбэл, ижил хүчин зүйлийг тооцоолох байт код нь ердөө 49 байт байна. Энэ бол түүний харааны хэлбэр юм:
Sonoff Basic-д зориулсан визуал програмчлал

Энэ бол түүний ассемблер програм юм:

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

Хэрэв төлөөллийн угсралтын хэлбэр нь ямар ч практик ач холбогдолгүй бол "javascrit" таб нь эсрэгээрээ харааны блокуудаас илүү танил дүр төрхийг өгдөг.

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

window.alert(factorial(10));

Гүйцэтгэлийн тухайд. Би хамгийн энгийн анивчдаг скриптийг ажиллуулахдаа осциллографын дэлгэц дээр 47 кГц квадрат долгион (процессорын 80 МГц давтамжтай) авсан.
Sonoff Basic-д зориулсан визуал програмчлалSonoff Basic-д зориулсан визуал програмчлал
Энэ нь сайн үр дүн гэж би бодож байна, наад зах нь энэ хурд нь бараг арав дахин хурдан юм Луа и Эспруино.

Эцсийн хэсэг

Дүгнэж хэлэхэд скрипт ашиглах нь зөвхөн тусдаа төхөөрөмжийн үйл ажиллагааны логикийг програмчлах боломжийг олгодог төдийгүй хэд хэдэн төхөөрөмжийг нэг механизмд холбох боломжийг олгодог бөгөөд зарим төхөөрөмж бусдын зан төлөвт нөлөөлдөг.
Скриптүүдийг хадгалах сонгосон арга нь (сервер дээр биш харин төхөөрөмжид шууд) аль хэдийн ажиллаж байгаа төхөөрөмжийг өөр сервер, жишээлбэл, гэрийн Raspberry руу шилжүүлэх ажлыг хялбаршуулдаг гэдгийг би бас тэмдэглэж байна. гарын авлага.

Энэ бол зөвлөгөө, бүтээлч шүүмжлэлийг сонсоход таатай байх болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх