Scenic with Nerves(Elixir)


はじめに

  • Scenicは、Elixir/Erlang/OTP stackで直接書けるアプリケーションフレームワークです
  • Nervesは、ElixirのIoTでナウでヤングなcoolなすごいヤツ! です

準備(公式)

参考記事

私が使ったバージョン

$ asdf current
erlang 23.0.1
elixir 1.10.3-otp-23

Getting Started with Nervesを参考になぞってみる

$ mix scenic.new.nerves my_app
$ cd my_app
$ export MIX_TARGET=rpi2
  • mix scenic.new.nervesしたときにconfig/rpi3.exsはできてはいます
  • 私はRaspberry Pi 2しかもっていない。。。
  • config/rpi2.exsがない状態でmix deps.getすると、以下のエラーが発生しました
$ mix deps.get
** (Code.LoadError) could not load /Users/torifuku/Documents/13_Elixir/Scenic_with_Nerves/my_app/config/rpi2.exs
    (elixir 1.10.3) lib/code.ex:1397: Code.find_file/2
    (elixir 1.10.3) lib/code.ex:871: Code.eval_file/2
    (mix 1.10.3) lib/mix/config.ex:158: anonymous fn/2 in Mix.Config.__import__!/2
    (elixir 1.10.3) lib/enum.ex:2111: Enum."-reduce/3-lists^foldl/2-0-"/3
    (mix 1.10.3) lib/mix/config.ex:157: Mix.Config.__import__!/2
    (stdlib 3.12.1) erl_eval.erl:680: :erl_eval.do_apply/6
  • 気を取り直して
  • コピーすればいいのだろう、きっと!
$ cp config/rpi3.exs config/rpi2.exs 
$ mix deps.get
$ mix firmware
$ mix firmware.burn
  • こんがりやきあがったmicroSDカードをRaspberry Pi 2に差し込んで、HDMIでテレビとつなげてみました
  • lib/scenes/sys_info.exにかいてある文字列がテレビに写りました!
MIX_TARGET: rpi2
MIX_ENV: dev
Scenic version: 0.10.2
Please note: because Scenic
draws over the entire screen
in Nerves, IEx has been routed
to the UART pins.

Wrapping Up

  • とりあえず(たぶん)、Nerves上でScenicを動かせました
  • Enjoy!