**********************************************************************
セッションS3d ワーク
テーマ:Nerves Training: NervesHubによるOTAデプロイ
コーディネータ:高瀬 英希 氏(京都大学/JSTさきがけ),
菊池 豊 氏(高知工科大学 地域連携機構)
日時:2019/9/6(金) 10:30~11:40
参加人数:19名
**********************************************************************
■概要
・Nerves Trainingを行う
・Elixir.Circuitsでデバイスを制御する(前半)
・mixでNervesアプリを開発する NervesHubでOTAを実行する(後半・本セッション)
(セッションS2dからの続き)
■ホストで開発したファームウェアをUSB接続(ssh経由)でデプロイする
・正解データのGitHubからのclone
https://github.com/nerves-training/nerves_team
ブランチが14まで切られており、適宜正解の挙動を確認できる
・nerves_training\mynerves_teamに自分のプロジェクトを作る
・sshkeyをconfig/target.exsファイル内に書き込む
・export MIX_TARGET=rpi0
・mix deps.get 依存関係を解決する
・mix firmware ファームウェアを作る
・mix firmware.gen.script upload.shが作られる
・./upload.sh ファームウェアを書き込む→再起動(30秒ほど時間がかかる)
・ファームウェアを更新したことでiex上でNervesTeamDevice.hello()関数に対して :world が返る
◆最初にファームを書くとき・・・
Nervesのランタイムが入っていないのでnerves.localなどのコマンドを使えないため、SDカードをPCに刺して直接焼く(mix burn)
◆Elixirではmixというコマンドを使ってプロジェクト開発する
mix.exsには依存環境を書く
ソースコードはlibの中に書く
libの中にモジュールと、モジュール名のディレクトリがある
(この中にサブモジュールを置く)
■NervesHub
・NervesHubアカウントを作る
・X509による認証の設定を行う
OTAをセキュアに行うため
・NervesHubへのデバイスやファームの登録、デプロイメントの作成を行う
■NervesTrainingの後ろの方の解説(今回は時間がないためできない)
・Scenicで画面に表示させる
・Phoenixチャネルを使ってサーバとクライアントを通信する
■その他の情報の紹介
・Slack ツイッター ElixirForumなどでNervesの質問が可能
・ラズパイカメラ powered by Nervesの紹介
カメラのライブラリ、phoenix、グラフQLが入っている
リアルタイムでカメラの解像度の変更が可能、スナップショットも取れる
画像処理もリアルタイムでできる
■まとめ
・ssh接続できないケースが多かった
Nervesホスト開発はmacとLinuxのみ対応
WindowsはVMで対応する必要があるが,設定によってうまくいかないことが多い
・NervesHubの途中までできた
以降は自習してもらい、ぜひNervesの素晴らしさを体験して欲しい
なにか困りごとがあれば講師まで Twitter等でも受け付けます