LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Organization

Nerves.Runtime.revert を楽しんでみる (Elixir)

知行合一

Advent Calendar 2022 29日目1の記事です。
I'm ready for 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
I'm looking forward to 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
I can't wait for 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
私のAdvent Calendar 2022 一覧


はじめに

Elixirを楽しんでいますか:bangbang::bangbang::bangbang:

Nerves.Runtime.revert/1を試してみます。

Nervesをやったことがある方に向けて書いています。
以下のコマンドを使ったことがあるくらいの知識で大丈夫です。

$ mix local.hex
$ mix local.rebar
$ mix archive.install hex nerves_bootstrap
$ mix nerves.new hello_nerves
$ cd hello_nerves
$ export MIX_TARGET=rpi4
$ mix deps.get
$ mix firmware
$ mix burn

Nerves.Runtime.revert/1

Nervesには、A面とB面がありまして2つのファームウェアを書き込むことができます。
どちらか一方がアクティブになります。
ふつうはOTA(Over the Air)でファームウェアを書き換えたときに、自動でアクティブ面が切り替わります。
Nerves.Runtime.revert/1を使うことで、任意のタイミングでアクティブな面を切り替えることができます。
Jon Jonさんのツイートで私ははじめて知りました。

実際に使ってみる :rocket::rocket::rocket:

Nerves Livebookを使います。
以下に予めビルドされたファームウェアがあります。

私は、nerves_livebook_rpi4.fwをダウンロードして使いました。
v0.5.1v0.5.0を焼いてみます。

以下の手順でやってみました。

  1. fwupで、Nerves Livebookv0.5.1を焼く
  2. ./upload.shで、Nerves Livebookv0.5.0
  3. Nerves Livebookv0.5.0でグラフが動かないことを確認する
  4. Nerves.Runtime.revert/1 でB面のv0.5.1に切り替える
  5. v0.5.1のため、グラフ表示ができることを確認する

ちなみに

  • v0.5.0はグラフが表示できない不具合があります
  • v0.5.1で解消しています

なにを隠そう、私がIssueを書いて、 @mnishiguchi さんが追試と解析をしてくれて、v0.5.1で解決しています。
$\huge{その一歩は我々人類にとって大きな進撃になる!!}$

バンドメンバを紹介します〜

Screen Shot 2022-01-25 at 7.37.33 AM.png

なんちゃって。
上記がグラフが表示できなくなってしまった問題の解決に立ち向かったメンバーです。

とまれ、Nerves.Runtime.revert/1を使ってみる話に戻します。
以下、詳細です。

Nerves Livebook v0.5.1を焼いて動かす

$ fwup nerves_livebook_rpi4.fw # v0.5.1

microSDカードを挿し込んでRun!
v0.5.1が動き始めます。

upload.shをつくる

適当なNervesプロジェクトが必要です(たぶん:sweat_smile:)

$ export MIX_TARGET=rpi4
$ mix firmware.gen.script

Nerves Livebook v0.5.0をOTA(Over the Air)で焼く

$ ./upload.sh nerves.local nerves_livebook_rpi4.fw # v0.5.0

passwordは、nervesです。
さら〜っと書いていますが、
$\huge{Over\ the\ Air🚀}$
ですよ!、奥さん!

一度再起動がかかります。
10秒くらい待ちましょう。
焦りは禁物です。

Nerves Livebook v0.5.0でグラフが表示されないことを確認する

さきほどの手順で、v0.5.0が動いています。
このv0.5.0では、グラフ表示ができない問題があります。

スクリーンショット 2022-01-29 23.25.08.png

うん、表示されないね :sob::sob::sob:

ssh nerves.local

$ ssh nerves.local

passwordは、nervesです。
sshでNervesに接続できたら、あとは一生Elixirを楽しめます。

Nerves.Runtime.revert/1

今日は、Nerves.Runtime.revert/1楽しんでみます

iex> Nerves.Runtime.revert

上記のコマンドで、v0.5.0 => v0.5.1に変わります。
もちろん、一度再起動がかかります。
10秒ほどお待ちください。
焦りは禁物です。

Nerves Livebook v0.5.1でグラフが表示されることを確認する :tada:

さきほどの手順で、v0.5.1が動くようになりました。
このv0.5.1では、グラフ表示ができるはずです。
確かめてみます。

スクリーンショット 2022-01-29 23.25.46.png

表示されました!
:tada::tada::tada:

Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm:

Enjoy Elixir:bangbang::bangbang::bangbang:
$\huge{Enjoy\ Elixir🚀}$

Nerves.Runtime.revert/1を使ってみました。
楽しみました
デバッグでいろいろ使えそうです。


2022年に流行る技術予想 ーー それは、ElixirPhoenix LiveViewLivebookNerves Livebookです:rocket::rocket::rocket:

Elixirの誕生日は、2012年5月24日です。
そのため、今年の2022年5月24日は10周年を迎えます。

iex> Date.diff(~D[2022-05-24], ~D[2022-01-29])
115

そうそう!
2月24日発売予定のWEB+DB PRESSで、ElixirPhoenixの特集がでますよ〜


I organize autoracex.
And I belong to NervesJP, fukuoka.ex, EDI.
I hope someday you'll join us.

We Are The Alchemists, my friends!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2