Merge staging
This commit is contained in:
commit
724ded3e5c
|
@ -8,7 +8,11 @@ config :logger, [
|
|||
utc_log: true,
|
||||
# handle_otp_reports: true,
|
||||
# handle_sasl_reports: true,
|
||||
backends: []
|
||||
# backends: []
|
||||
]
|
||||
|
||||
config :farmbot, :logger, [
|
||||
# backends: [Elixir.Logger.Backends.Farmbot]
|
||||
]
|
||||
|
||||
config :elixir, ansi_enabled: true
|
||||
|
|
|
@ -125,7 +125,6 @@ defmodule Farmbot.Bootstrap.Supervisor do
|
|||
|
||||
children = [
|
||||
worker(Farmbot.Bootstrap.AuthTask, []),
|
||||
worker(Farmbot.CeleryScript.EstopTimer, []),
|
||||
supervisor(Farmbot.HTTP.Supervisor, []),
|
||||
worker(Farmbot.Bootstrap.SettingsSync, [], [restart: :transient]),
|
||||
supervisor(Farmbot.Firmware.Supervisor, []),
|
||||
|
|
|
@ -3,7 +3,6 @@ defmodule Farmbot.CeleryScript.AST.Node.Sequence do
|
|||
use Farmbot.CeleryScript.AST.Node
|
||||
use Farmbot.Logger
|
||||
import Farmbot.System.ConfigStorage, only: [get_config_value: 3]
|
||||
alias Farmbot.CeleryScript.EstopTimer
|
||||
allow_args [:version, :label, :locals, :is_outdated]
|
||||
|
||||
def execute(%{label: name}, body, env) do
|
||||
|
@ -12,7 +11,6 @@ defmodule Farmbot.CeleryScript.AST.Node.Sequence do
|
|||
end
|
||||
env = mutate_env(env)
|
||||
if Farmbot.BotState.locked? do
|
||||
maybe_send_email("[#{name}] - Sequence failed. Bot is locked!")
|
||||
{:error, :locked, env}
|
||||
else
|
||||
do_reduce(body, env, name)
|
||||
|
@ -27,9 +25,7 @@ defmodule Farmbot.CeleryScript.AST.Node.Sequence do
|
|||
{:ok, new_env} -> do_reduce(rest, new_env, name)
|
||||
{:error, reason, env} ->
|
||||
case Farmbot.Firmware.emergency_lock() do
|
||||
:ok ->
|
||||
maybe_send_email("[#{name}] - Sequence failed. Locking bot!")
|
||||
:ok
|
||||
:ok -> :ok
|
||||
{:error, :emergency_lock} -> :ok
|
||||
{:error, reason} ->
|
||||
Logger.error 1, "Failed to lock the firmware! #{inspect reason}"
|
||||
|
@ -44,14 +40,4 @@ defmodule Farmbot.CeleryScript.AST.Node.Sequence do
|
|||
end
|
||||
{:ok, env}
|
||||
end
|
||||
|
||||
defp maybe_send_email(msg) do
|
||||
Logger.error(1, msg)
|
||||
if get_config_value(:bool, "settings", "email_on_estop") do
|
||||
if !EstopTimer.timer_active? do
|
||||
EstopTimer.start_timer(msg)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
defmodule Farmbot.CeleryScript.EstopTimer do
|
||||
defmodule Farmbot.Firmware.EstopTimer do
|
||||
@moduledoc """
|
||||
Module responsible for timing emails about E stops.
|
||||
"""
|
||||
|
@ -17,8 +17,8 @@ defmodule Farmbot.CeleryScript.EstopTimer do
|
|||
end
|
||||
|
||||
@doc "Starts a new timer if one isn't started."
|
||||
def start_timer(msg) do
|
||||
GenServer.call(__MODULE__, {:start_timer, msg})
|
||||
def start_timer do
|
||||
GenServer.call(__MODULE__, :start_timer)
|
||||
end
|
||||
|
||||
@doc "Cancels a timer if it exists."
|
||||
|
@ -40,7 +40,7 @@ defmodule Farmbot.CeleryScript.EstopTimer do
|
|||
{:reply, is_timer_active?(state.timer), state}
|
||||
end
|
||||
|
||||
def handle_call({:start_timer, _msg}, _from, state) do
|
||||
def handle_call(:start_timer, _from, state) do
|
||||
if !is_timer_active?(state.timer) do
|
||||
{:reply, :ok, %{state | timer: do_start_timer(self())}}
|
||||
else
|
|
@ -3,7 +3,7 @@ defmodule Farmbot.Firmware do
|
|||
|
||||
use GenStage
|
||||
use Farmbot.Logger
|
||||
alias Farmbot.Firmware.Vec3
|
||||
alias Farmbot.Firmware.{Vec3, EstopTimer}
|
||||
|
||||
# If any command takes longer than this, exit.
|
||||
@call_timeout 500_000
|
||||
|
@ -413,6 +413,7 @@ defmodule Farmbot.Firmware do
|
|||
|
||||
defp handle_gcode(:done, state) do
|
||||
maybe_cancel_timer(state.timer)
|
||||
Farmbot.BotState.set_busy(false)
|
||||
if state.current do
|
||||
do_reply(state, :ok)
|
||||
{nil, %{state | current: nil}}
|
||||
|
@ -423,6 +424,7 @@ defmodule Farmbot.Firmware do
|
|||
|
||||
defp handle_gcode(:report_emergency_lock, state) do
|
||||
Farmbot.System.GPIO.Leds.led_status_err
|
||||
maybe_send_email()
|
||||
if state.current do
|
||||
do_reply(state, {:error, :emergency_lock})
|
||||
{:informational_settings, %{locked: true}, %{state | current: nil}}
|
||||
|
@ -508,7 +510,7 @@ defmodule Farmbot.Firmware do
|
|||
case state.current do
|
||||
%Current{fun: :emergency_unlock, from: from} ->
|
||||
# i really don't want this to be here..
|
||||
Farmbot.CeleryScript.EstopTimer.cancel_timer()
|
||||
EstopTimer.cancel_timer()
|
||||
:ok = GenServer.reply from, reply
|
||||
%Current{fun: :emergency_lock, from: from} ->
|
||||
:ok = GenServer.reply from, {:error, :emergency_lock}
|
||||
|
@ -520,4 +522,13 @@ defmodule Farmbot.Firmware do
|
|||
:error
|
||||
end
|
||||
end
|
||||
|
||||
defp maybe_send_email do
|
||||
import Farmbot.System.ConfigStorage, only: [get_config_value: 3]
|
||||
if get_config_value(:bool, "settings", "email_on_estop") do
|
||||
if !EstopTimer.timer_active? do
|
||||
EstopTimer.start_timer()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,6 +9,7 @@ defmodule Farmbot.Firmware.Supervisor do
|
|||
|
||||
def init([]) do
|
||||
children = [
|
||||
worker(Farmbot.Firmware.EstopTimer, []),
|
||||
worker(Farmbot.Firmware, [])
|
||||
]
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ defmodule Farmbot.Logger do
|
|||
|
||||
defp maybe_espeak(_message, _channels, nil), do: :ok
|
||||
defp maybe_espeak(message, channels, exe) do
|
||||
if :espeak in channels do
|
||||
if Enum.find(channels, fn(ch) -> (ch == :espeak) || (ch == "espeak") end) do
|
||||
spawn System, :cmd, [exe, [message]]
|
||||
end
|
||||
:ok
|
||||
|
|
|
@ -15,8 +15,10 @@ defmodule Farmbot.Target.Network.TzdataTask do
|
|||
|
||||
def handle_info(:do_checkup, _) do
|
||||
dir = @fb_data_dir
|
||||
for obj <- File.ls!(dir) do
|
||||
File.rm_rf!(obj)
|
||||
if File.exists?(dir) do
|
||||
for obj <- File.ls!(dir) do
|
||||
File.rm_rf!(obj)
|
||||
end
|
||||
end
|
||||
{:noreply, restart_timer(self()), :hibernate}
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue