はじめてNerves(0) ElixirによるIoTフレームワークNervesがとにかく動くようになるためのリンク集

Nerves は Elixir で IoT をやるための便利なプラットフォームです。開発がまだまだ続いているのと、日本語のドキュメントが少ないのと、何をやってもすぐ忘れる自分のためにリンク集を作っています。

# 公式ドキュメント
なにはともあれ公式ドキュメントを読むのは大事です。

- [Nerves project](https://nerves-project.org)
  - [Nerves Installation](https://hexdocs.pm/nerves/installation.html)
  - [Nerves Getting Started](https://hexdocs.pm/nerves/getting-started.html)

この「インストール」と「始め方」のページはわかりやすいので（あと Elixir は英語を避けては通れないこともありますので）一度読んでみましょう。

# 基本リンク集
Nerves を動かすときの基本的なTipsを集めて行きます。

- [Nerves Time Zones](https://github.com/nerves-time/nerves_time_zones)
- [Elixirのバージョン管理環境をasdfを使って作った](https://qiita.com/nishiuchikazuma/items/b9d319732ddb540fd990)
 - Elixir を使ったり Nerves を使ったりで、Elixir と Erlang のバージョン管理が必要になります。MacOS をお使いの方は asdf コマンドというのがあって便利です。
- [nerves_pack（vintage_net含む）を使ってNervesのネットワーク設定をした〜SSHログインまで〜](https://qiita.com/nishiuchikazuma/items/01f5df5472ec0feceb5f)
 - Nerves トレーニングとかだとネットワーク設定がよろしくされていますが、自分でやろうとするとなかなか分かりません。そんな方はこちらをどうぞ。
 - この Vintage network が出る前の情報は [Nervesのネットワーク環境を整えた](https://qiita.com/nishiuchikazuma/items/1341b32c4ce997fc362d) をどうぞ
- [NervesのSSH環境を整えた　〜upload.shを使ってファームウェア更新も〜](https://qiita.com/nishiuchikazuma/items/6773d8f1d351d9355738)
 - ネットワークに繋がったあとで Nerves のターゲットマシンに ssh で入りたいですよね。その方法はこちらを。ssh できるようになるとファームウェアの verup もリモートでできるようになります。超便利。
- [Nervesのnode_nameとnode_hostとcookieを設定した](https://qiita.com/nishiuchikazuma/items/1ae314c47b635d9a1ce8)
 - 複数の Nerves ターゲットを扱うようになるとそろそろ名前などを付けたくなりますね。
- [NervesでShellに落ちた](https://qiita.com/nishiuchikazuma/items/ceafee4bd265cfc50501)
 - Nerves ターゲットマシンに ssh するといきなり iex が動きます。それはそれで清々しいのですが、やっぱり shell でないと中で何が起こってるのかわからないですよね。そんなときにはこちらを。

# 広域分散にむけて
複数の Nerves ノードを使って協調して動作するシステムを作りたいですね。そんなことに関する技術ネタを集めていきます。

- [複数の Nerves マシンを通信させる](https://qiita.com/kikuyuta/items/c402d594ab55cbd883e7)
 - Nerves マシン同士を通信させようとしました。これはサーバ経由ですので、直接通信する技が待たれます
- [Nervesで起動時に`Node.connect()`するようにした](https://qiita.com/nishiuchikazuma/items/f6b0ef85fbd5257bcb19)
 - 他のノードとのコネクトは起動後に手でやるのは普通にできますが、起動直後に自動でやろうとすると色々な条件が整うまでが結構大変です。そんなときにはこちらをどうぞ。
- [Elixirのノード、プロセス間通信](https://qiita.com/32hero/items/a26cc3be6315fe698db5)
 - さあ複数ノードでの協調動作。プロセスの登録には Erlang の :global.register_name を使ってます。

# Elixir で IoT 連載
@takasehideki センセの記事をまとめようと思ってたらすでにご自身でまとめてらっしゃいました。
- [ElixirでIoT：連載目次](https://qiita.com/takasehideki/items/8f43f1853ce88cbbe82e)

# Nerves を使わない IoT
Nerves を使わないと IoT ができないというわけではありません。ここでは Nerves なしでの Elixir IoT のネタをご紹介。

- [Elixir Circuitsを使用してLEDを操作する](https://qiita.com/32hero/items/d71cd74713d4d975600e)
- [ElixirでラズパイのLEDをチカ〜RaspbianOSインストールから〜](https://qiita.com/nishiuchikazuma/items/cce6152430467cffba56)

# はじめてNerves シリーズ
これから記事を積み重ねていこうと思います。

- [はじめてNerves(13) Elixir API の Zenohex を使って Zenoh で Pub/Sub してみる](https://qiita.com/kikuyuta/items/8e89efb8b35aebbdf66c)
- [はじめてNerves(12) I2C デバイス INA226 で電流・電圧・電力を測ってみる (3/3)](https://qiita.com/kikuyuta/items/7cf9ff993671b770d10c)
- [はじめてNerves(11) I2C デバイス INA226 で電流・電圧・電力を測ってみる (2/3)](https://qiita.com/kikuyuta/items/dd1c76059454fbfd3957)
- [はじめてNerves(10) I2C デバイス INA226 で電流・電圧・電力を測ってみる (1/3)](https://qiita.com/kikuyuta/items/25da0c73ea8fbe2f8a2b)
- [はじめてNerves(9) GenStage での Pub/Sub でボタチカしてみる](https://qiita.com/kikuyuta/items/2f7feb6531d50c65bf81)
- [はじめてNerves(8) 単一ホストで動くシステムを複数ホストに分散する](https://qiita.com/kikuyuta/items/4b8326d0584fe26083a6)
- [はじめてNerves(7) I2C で液晶表示する](https://qiita.com/kikuyuta/items/58f56af3614571af0d7e)
- [はじめてNerves(6) GPIO入力のエッジを使ってイベントドリブンなボタチカをする](https://qiita.com/kikuyuta/items/a19eb70f8b798ad112d4)
- [はじめてNerves(5) SPIを使ったA/D変換結果をGPIOのPWMでLチカ](https://qiita.com/kikuyuta/items/a5a0dd72ef926299be7e)
- [はじめてNerves(4) 独立したプロセスでボタチカをする](https://qiita.com/kikuyuta/items/6e4b30673abb111d25d4)
- [はじめてNerves(3) GPIO入力を追加してボタチカをする](https://qiita.com/kikuyuta/items/904acd2ce4117168d22a)
- [はじめてNerves(2) GenServer を使ってLチカをする](https://qiita.com/kikuyuta/items/5779da9f14f4639ebdbe)
- [はじめてNerves(1) 電源ONでLチカアプリを起動させる](https://qiita.com/kikuyuta/items/6c8debcfe7741ef48dd3)
- [はじめてNerves(0) ElixirによるIoTフレームワークNervesがとにかく動くようになるためのリンク集](https://qiita.com/kikuyuta/items/9dee85c32004c8e827e7)

# 書物をするときのヒント
Tips をちょっとずつ溜めていこうと思います。

## 動画をmotion Gif にする
動画撮影して Qiita に掲載する前に、以下のコマンドとかで Gif にしてます。縦方向（ポートレイト）で、対象は上半分、やや左寄りにして撮影。ファイルは小さくなりますが、かなり荒くなります。

```
$ ffmpeg -i IMG_7044.MOV -r 10 -vf scale=320:-1 out1.gif
$ ffmpeg -i out1.gif -r 10 -filter:v "crop=240:240:0:0" out2.gif
```

[それFFmpegで出来るよ！](https://qiita.com/cha84rakanal/items/e84fe4eb6fbe2ae13fd8)
[ffmpegコマンドメモ](https://qiita.com/lassy423/items/05e7f2ef5abd6a3abea6)

# 参考文献

- [Nerves Project](https://nerves-project.org/)