[Elixir] Nerves의 날씨로 가까운 날씨 정보 얻기
소개
Nerves은 Elixir의 IoT입니다 나우에서 영 cool 놀라운 녀석입니다 🚀
use Toolshed
그러면 사용할 수 있습니다 weather
의 소개입니다 하이라이트
iex> weather
Weather report: Xxxxx, Japan
_`/"".-. Patchy rain possible
,\_( ). 22..25 °C
/(___(__) → 3 km/h
‘ ‘ ‘ ‘ 9 km
‘ ‘ ‘ ‘ 2.0 mm
iex> weather
Weather report: Xxxxx, Japan
_`/"".-. Patchy rain possible
,\_( ). 22..25 °C
/(___(__) → 3 km/h
‘ ‘ ‘ ‘ 9 km
‘ ‘ ‘ ‘ 2.0 mm
준비
@ 타카 세히 선생님 Elixir에서 IoT#4.1: Nerves 개발 환경 준비에 대해 자세히 알아보기
1. 프로젝트 만들기 (에서 평소의 전망)
$ mix nerves.new hello_nerves
$ cd hello_nerves
$ export MIX_TARGET=rpi2
$ mix deps.get
$ mix nerves.new hello_nerves
$ cd hello_nerves
$ export MIX_TARGET=rpi2
$ mix deps.get
2. 조금 다시 쓰기
mix.exs def application do
[
mod: {HelloNerves.Application, []},
extra_applications: [:logger, :runtime_tools, :inets] # :inetsを追加
]
end
def application do
[
mod: {HelloNerves.Application, []},
extra_applications: [:logger, :runtime_tools, :inets] # :inetsを追加
]
end
:inets
의 지정은 지정하지 않고 실행하려고 하면 화가 났고, 그 때 추가하면 좋다는 메시지를 보고 눈치채는 대로입니다 Wi-Fi를 사용하는 경우 (선택 사항)
$ mix nerves.new hello_nerves
때 이런 식으로있는 부분이 있다고 생각합니다 config/target.exs
config :vintage_net,
regulatory_domain: "US",
config: [
{"eth0", %{type: VintageNetEthernet, ipv4: %{method: :dhcp}}},
{"wlan0", %{type: VintageNetWiFi}}
]
↓↓↓↓
config/target.exs
config :vintage_net,
regulatory_domain: "US",
config: [
{"usb0", %{type: VintageNetDirect}},
{"eth0",
%{
type: VintageNetEthernet,
ipv4: %{method: :dhcp}
}},
{"wlan0",
%{
type: VintageNetWiFi,
vintage_net_wifi: %{
networks: [
%{
key_mgmt: :wpa_psk,
ssid: "your_ssid", # ※ここにSSIDを追記
psk: "your_psk" # ※ここにパスフレーズを追記
}
]
},
ipv4: %{method: :dhcp}
}}
]
VintageNet Cookbook 참조
3. 빌드 ~ microSD에 태워
$ mix firmware
$ mix firmware
Build a firmware bundle
가 발생합니다. $ mix burn
Write a firmware image to an SDCard
가 발생합니다. 4. 실행
ping
가 지나갈 때가 있습니다 $ ping nerves.local
ssh
합시다 $ ssh nerves.local
Interactive Elixir (1.10.4) - press Ctrl+C to exit (type h() ENTER for help)
Toolshed imported. Run h(Toolshed) for more info.
RingLogger is collecting log messages from Elixir and Linux. To see the
messages, either attach the current IEx session to the logger:
RingLogger.attach
or print the next messages in the log:
RingLogger.next
iex(1)>
IEx
사용할 수 있으므로 사용합니다 iex> use Toolshed
Toolshed imported. Run h(Toolshed) for more info.
:ok
iex> weather
Weather report: Xxxxx, Japan
_`/"".-. Patchy rain possible
,\_( ). 22..25 °C
/(___(__) → 3 km/h
‘ ‘ ‘ ‘ 9 km
‘ ‘ ‘ ‘ 2.0 mm
Toolshed
에는 다른 용도가 있습니다.h(Toolshed)
에서 확인하십시오. weather
함수의 실체는 코코입니다.http://wttr.in/?An0
에 HTTP Get 중 lib/toolshed/http.ex
@doc """
Display the local weather
See http://wttr.in/:help for more information.
"""
@spec weather() :: :"do not show this result in output"
def weather() do
check_inets()
{:ok, {_status, _headers, body}} = :httpc.request('http://wttr.in/?An0')
body |> :binary.list_to_bin() |> IO.puts()
IEx.dont_display_result()
end
Wrapping Up
extra_applications: [:logger, :runtime_tools, :inets]
및 :inets
를 추가하면 weather
에서 가까운 날씨를 얻을 수 있습니다 Reference
이 문제에 관하여([Elixir] Nerves의 날씨로 가까운 날씨 정보 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/torifukukaiou/items/9be09f4c52918a348812텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)