7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめに

What is Nerves ?

環境構築

Nervesアプリの開発

いつものおなじみごった煮プロジェクトTORIFUKUKaiou/hello_nervesプロジェクトにおしこみます

依存しているHex

今日は何が捨てられるの?

lib/hello_nerves/trash_day.ex
defmodule HelloNerves.TrashDay do
  def run do
    now = Timex.now() |> Timex.shift(hours: 9)
    day_of_week = Date.day_of_week(now)
    week_of_month = Timex.week_of_month(now)

    do_run(day_of_week, week_of_month)
  end

  defp do_run(day_of_week, _week_of_month) when day_of_week == 1 or day_of_week == 4 do
    msg("可燃ごみ")
    |> post()
  end

  defp do_run(3, week_of_month) when week_of_month == 2 or week_of_month == 4 do
    msg("空き缶・空き瓶")
    |> post()
  end

  defp do_run(3, 1) do
    msg("不燃ごみ")
    |> post()
  end

  defp do_run(_day_of_week, _week_of_month), do: nil

  defp msg(trash), do: "#{trash}の日です。忘れずに捨てましょう!"

  defp post(msg), do: HelloNerves.LineNotify.post(msg)
end
  • day_of_weekは曜日で、1が月曜日〜7が日曜日です
  • week_of_monthは月の何週目かを表しています
  • 私が住んでいる地域ではこれらの2つでゴミ収集の内容がきまるのでdo_run/2でパターンを書きました

Lineで通知

lib/hello_nerves/line_notify.ex
defmodule HelloNerves.LineNotify do
  @url "https://notify-api.line.me/api/notify"
  @token System.get_env("HELLO_NERVES_LINE_NOTIFY_TOKEN")
  @headers [Authorization: "Bearer #{@token}"]

  def post(msg) do
    HTTPoison.post(@url, {:form, [message: msg]}, @headers)
  end
end

cronライク

config/config.exs
config :hello_nerves, HelloNerves.Scheduler,
  jobs: [
    {"1 22 * * *", {HelloNerves.TrashDay, :run, []}}
  ]
  • 今回の記事の肝は上記3つのファイルです
    • とはいえ、すでにあるプロジェクトに足したのでいろいろ省略しているところがあります
  • 省略しているところは、ごった煮プロジェクトTORIFUKUKaiou/hello_nervesをご参照ください :pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

Wrapping Up :lgtm::lgtm::lgtm::lgtm::lgtm:

  • configでゴミ収集日を変更したりできるようにすれば汎用的になるのかもしれませんが、私の家だけで使っているごった煮プロジェクトですので一番簡単な実装方法を採りました
  • Enjoy Elixir :rocket::rocket::rocket:

(最後の最後に)Elixirってなによ?、Nervesってなによ? という方へ

image.png

  • :point_up::point_up_tone1::point_up_tone2::point_up_tone3::point_up_tone4::point_up_tone5: 2020/12/26時点くらいのスクリーンショット
  • Elixirについてもっと知りたい方は下記の本:books:をオススメします
  • 手前味噌ですが、毎週月曜日にautoracexというもくもく会を開催しております
    • Slack elixirjp.slack.com#autoracexというチャンネルにおります
    • わからないことなどお気軽におたずねください
    • そのほかconnpassElixirで検索していただくといろいろなコミュニティがみつかります

ありがとナイス:flag_cn:

Nervesが気になったあなたへ

れっつじょいなす(Let's join us) :bangbang::bangbang::bangbang:
:point_down::point_down_tone1::point_down_tone2::point_down_tone3::point_down_tone4::point_down_tone5:
NervesJP Slackへの参加URL
:point_up::point_up_tone1::point_up_tone2::point_up_tone3::point_up_tone4::point_up_tone5:

愉快なfolksたちがあなたの訪れをお待ちしております :tada::tada::tada::tada::tada:

https___qiita-user-contents.imgix.net_https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F240349%2F5ef22bb9-f357-778c-1bff-b018cce54948.png_ixlib=rb-1.2.png

7
1
0

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
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?