esp8266を改めて使い始めました。
以前に気が付かなかったのか、新しくなったのかわかりませんが、いままで知らなかったので健忘録としてここに記載します。
ちなみに、私はubuntu系のPCを使っています。Windowsではないので少し使い方が違うかもしれません。
いままで知らなかった機能とはmicropythonにあるmpremoteコマンドです。
ここで、確認してください。
以前、「シリアルターミナルを使ってREPLしていたこと」と「ampyでやっていたファイル転送」をこのコマンドでできるようだ。
micropythonは素晴らしい技術だと思うが、これまで使いづらいと思うのがデバック時に作成したスクリプトをデバイスに転送する→REPLをつなぐ→実行する→PCで修正する→REPLを切る→転送するを繰り返す。pythonのインタープリタとしての手軽さが生きないなぁと思っていました。
しかし、mpremoteのmountを使ったらこれは行けるのではないかと考えを改めました。
このmountは一般的に言うマウントとは逆でデバイス側がPC側のディレクトリーをマウントしています。この状態でデバイス側からPCに格納してあるスプリクトを直接起動することができます。そして、マウントした状態でREPLすることができます。
mpremote u0 mount .
REPLでスプリクトを直接起動することができませんが、importしてdef関数を起動する必要があります。
【注意1】
importすると再読込ができないため、スプリクトを修正したらCTL + Dでマウントを再起動した上で再度importしてください。
【注意2】
def関数部分は起動することができますが、スクリプトのメイン部分を実行することができないため、
def main():
メインのスクリプト
if __name__ == '__main__'
main()
という、フォーマットでスクリプトを作成してください。
REPL内で実行したいときは
import ファイル名
ファイル名.main()
です。
ESP8266で自動起動で実行したいときは
ファイル名をmain.pyに変更して、必ずesp8266に転送してください。