Hello! I’m currently building a weather station with sensors for wind, rain and temperature in elixir with Circuits.GPIO lib.
So far it has been a blast but I’ve gotten stuck on reading two sensors (eg buttons) and I assume it’s because the functional nature of elixir. My code:
defmodule WeatherStation do
use GenServer
require Logger
@wind_sensor_pin 5
@rain_sensor_pin 6
def start_link(_opts) do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
def init(_opts) do
{:ok, _gpio} = Circuits.GPIO.open(@rain_sensor_pin, :input)
{:ok, gpio} = Circuits.GPIO.open(@wind_sensor_pin, :input)
Circuits.GPIO.set_interrupts(gpio, :falling)
{:ok, gpio}
end
def handle_info({:circuits_gpio, @rain_sensor_pin, _timestamp, _value}, state) do
# handle stuff
end
Obviously above don’t work (button presses is not sent) as I intended so my question is how to organize your code when you have more than one button/sensor in the GPIO lib.
Should I have a genserver for each sensor?