 
   def handle_cast(:trigger, %{pin_binding: %{special_action: "power_off"} = pin_binding} = state) do
     FarmbotCore.Logger.info(1, "Pinbinding triggered: #{pin_binding}")
-    ref =
+    {:ok, ref} =
       AST.Factory.new()
       |> AST.Factory.rpc_request("pin_binding.#{pin_binding.pin_num}")
       |> AST.Factory.power_off()


  def handle_cast(:trigger, %{pin_binding: %{special_action: "dump_info"} = pin_binding} = state) do
    FarmbotCore.Logger.info(1, "Pinbinding triggered: #{pin_binding}")
    ref =
      AST.Factory.new()
      |> AST.Factory.rpc_request("pin_binding.#{pin_binding.pin_num}")
      |> AST.Factory.dump_info()

defimpl FarmbotCore.AssetWorker, for: FarmbotCore.Asset.PinBinding do
  @moduledoc """
  Worker for monitoring hardware GPIO. (not related to the mcu firmware.)

  Upon a button trigger, a `sequence`, or `special_action` will be executed by
  the CeleryScript Runtime. 

  This module also defines a behaviour that allows for abstracting and testing 
  independent of GPIO hardware code.
  """
  
  use GenServer
  require Logger
  require FarmbotCore.Logger
