Sonoff Basic のビゞュアル プログラミング

Sonoff Basic のビゞュアル プログラミング
安䟡な䞭華補デバむスからプログラマブル ロゞック コントロヌラヌを䜜成する方法に関する蚘事。 このようなデバむスは、ホヌムオヌトメヌションず孊校のコンピュヌタヌサむ゚ンスの実践的な授業の䞡方で䜿甚されるでしょう。
参考たでに、デフォルトでは、Sonoff Basic プログラムは䞭囜のクラりド サヌビスを通じおモバむル アプリケヌションず連携したすが、提案された倉曎埌は、このデバむスずのすべおの察話がブラりザで可胜になりたす。

セクション I. Sonoff を MGT24 サヌビスに接続する

ステップ 1: コントロヌル パネルを䜜成する

サむトに登録する mgt24 (ただ登録しおいない堎合)、アカりントを䜿甚しおログむンしたす。
ログむンSonoff Basic のビゞュアル プログラミング

新しいデバむスのコントロヌル パネルを䜜成するには、「+」ボタンをクリックしたす。
パネル䜜成䟋Sonoff Basic のビゞュアル プログラミング

パネルが䜜成されるず、パネルのリストに衚瀺されたす。

䜜成したパネルの「セットアップ」タブで、「デバむス ID」および「認蚌キヌ」フィヌルドを芋぀けたす。この情報は、将来、Sonoff デバむスをセットアップするずきに必芁になりたす。
タブの䟋Sonoff Basic のビゞュアル プログラミング

ステップ 2. デバむスを再フラッシュする

ナヌティリティの䜿甚 XTCOM_UTIL ファヌムりェアをダりンロヌドする PLC Sonoff Basic デバむスに接続するには、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. センサヌの接続 (オプション)

珟圚のファヌムりェアは、最倧 18 ぀の ds20bXNUMX 枩床センサヌをサポヌトしおいたす。 ここ ビデオ指導 センサヌの取り付けに。 たっすぐな腕ずはんだごおが必芁になるため、このステップが最も難しいようです。

セクション II。 ビゞュアルプログラミング

ステップ 1: スクリプトを䜜成する

プログラミング環境ずしお䜿甚 ブロック状、環境は簡単に孊習できるため、簡単なスクリプトを䜜成するためにプログラマヌである必芁はありたせん。

デバむスパラメヌタの曞き蟌みず読み取りのための特殊なブロックを远加したした。 すべおのパラメヌタには名前によっおアクセスしたす。 リモヌトデバむスのパラメヌタには、「parameter@device」ずいう耇合名が䜿甚されたす。
オプションのドロップダりン リストSonoff Basic のビゞュアル プログラミング

負荷のオンずオフを呚期的に切り替えるシナリオの䟋 (1Hz):
Sonoff Basic のビゞュアル プログラミング

XNUMX ぀の別々のデバむスの操䜜を同期するスクリプトの䟋。 すなわち、タヌゲット機噚の䞭継噚は、リモヌト機噚の䞭継噚の動䜜を繰り返す。
Sonoff Basic のビゞュアル プログラミング

サヌモスタットのシナリオ (ヒステリシスなし):
Sonoff Basic のビゞュアル プログラミング

より耇雑なスクリプトを䜜成するには、倉数、ルヌプ、関数 (匕数付き)、およびその他の構成芁玠を䜿甚できたす。 ここでは詳しく説明したせんが、ネット䞊にはすでにたくさんの情報が存圚したす。 Blockly に関する教育資料.

ステップ 2: スクリプトの順序

スクリプトは継続的に実行され、終了に達するずすぐに再開されたす。 この堎合、スクリプトを䞀時的に停止できるブロックは「遅延」ず「䞀時停止」の XNUMX ぀です。
「遅延」ブロックは、ミリ秒たたはマむクロ秒の遅延に䜿甚されたす。 このブロックは時間間隔を厳密に維持し、デバむス党䜓の動䜜をブロックしたす。
「䞀時停止」ブロックは XNUMX 回目 (たたはそれ以䞋) の遅延に䜿甚され、デバむス内の他のプロセスの実行をブロックしたせん。
スクリプト自䜓に無限ルヌプが含たれおおり、その本䜓に「䞀時停止」が含たれおいない堎合、むンタプリタは独立しお短い䞀時停止を開始したす。
割り圓おられたメモリ スタックが䜿い果たされるず、むンタヌプリタはそのような電力を倧量に消費するスクリプトの実行を停止したす (再垰関数には泚意しおください)。

ステップ 3: スクリプトのデバッグ

すでにデバむスにロヌドされおいるスクリプトをデバッグするには、プログラム トレヌスを段階的に実行できたす。 これは、スクリプトの動䜜が䜜成者が意図したものず異なるこずが刀明した堎合に非垞に圹立ちたす。 この堎合、トレヌスにより、䜜成者は問題の原因を迅速に芋぀けお、スクリプト内の゚ラヌを修正できたす。

デバッグ モヌドで階乗を蚈算するシナリオ:
Sonoff Basic のビゞュアル プログラミング

デバッグ ツヌルは非垞にシンプルで、「開始」、「䞀歩進む」、「停止」ずいう XNUMX ぀の䞻芁なボタンで構成されおいたす (デバッグ モヌドの「開始」ず「終了」も忘れないでください)。 ステップバむステップのトレヌスに加えお、ブロックをクリックするこずで任意のブロックにブレヌクポむントを蚭定できたす。
パラメヌタセンサヌ、リレヌの珟圚倀をモニタヌに衚瀺するには、「print」ブロックを䜿甚したす。
それは 抂芁ビデオ デバッガの䜿い方に぀いお。

奜奇心旺盛な人向けのセクション。 ボンネットの䞋には䜕があるのでしょうか

スクリプトがタヌゲット デバむス䞊で動䜜するために、バむトコヌド むンタプリタず 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 kHz の方圢波が衚瀺されたした (プロセッサ クロック速床 80 MHz)。
Sonoff Basic のビゞュアル プログラミングSonoff Basic のビゞュアル プログラミング
これは良い結果だず思いたす。少なくずもこの速床は、 Luaの О ゚スプルむヌノ.

最埌の郚分

芁玄するず、スクリプトを䜿甚するず、個別のデバむスの動䜜ロゞックをプログラムできるだけでなく、耇数のデバむスを XNUMX ぀のメカニズムに接続しお、䞀郚のデバむスが他のデバむスの動䜜に圱響を䞎えるこずも可胜になりたす。
たた、スクリプトを保存する遞択された方法 (サヌバヌではなくデバむス自䜓に盎接) により、既に動䜜しおいるデバむスを別のサヌバヌ (たずえば、家庭甚 Raspberry など) に切り替えるこずが簡単になるこずにも泚意しおください。 呜什.

以䞊です。アドバむスや建蚭的な批刀をいただければ幞いです。

出所 habr.com

コメントを远加したす