 
     case handler_mod.start_link() do
       {:ok, handler} ->
+        initial = Map.merge(needs_home_on_boot(), %{handler: handler, handler_mod: handler_mod})
         Process.flag(:trap_exit, true)
         {
           :producer_consumer,
-          %State{handler: handler, handler_mod: handler_mod},
+          struct(State, initial),
           subscribe_to: [handler], dispatcher: GenStage.BroadcastDispatcher
         }
       {:error, reason} ->

      initializing: false,
      current: nil,
      timeout_ms: 150_000,
      queue: :queue.new()
    ]
  end

  def init([]) do
    handler_mod =


  defp maybe_update_param_from_report(param, val) when is_binary(param) do
    real_val = if val, do: (val / 1), else: nil
    # Logger.debug 3, "Firmware reported #{param} => #{val || -1}"
    update_config_value(:float, "hardware_params", to_string(param), real_val)
  end

