amqp-mqtt swap now enabled

pull/363/head
connor rigby 2017-11-27 13:48:07 -08:00
parent 94314cce9d
commit 31ea283015
8 changed files with 31 additions and 15 deletions

View File

@ -21,8 +21,8 @@ config :farmbot, :init, [
# Transports.
config :farmbot, :transport, [
Farmbot.BotState.Transport.GenMQTT,
# Farmbot.BotState.Transport.AMQP,
# Farmbot.BotState.Transport.GenMQTT,
Farmbot.BotState.Transport.AMQP,
Farmbot.BotState.Transport.HTTP,
]

View File

@ -44,8 +44,8 @@ config :farmbot, :init, [
]
config :farmbot, :transport, [
Farmbot.BotState.Transport.GenMQTT,
# Farmbot.BotState.Transport.AMQP,
# Farmbot.BotState.Transport.GenMQTT,
Farmbot.BotState.Transport.AMQP,
Farmbot.BotState.Transport.HTTP,
]

View File

@ -115,7 +115,7 @@ defmodule Farmbot.Bootstrap.Supervisor do
# get a token
case @auth_task.authorize(email, pass, server) do
{:ok, token} ->
Logger.info(2, "Successful authorization: #{@auth_task} - #{email} - #{server}")
Logger.success(2, "Successful authorization: #{@auth_task} - #{email} - #{server}")
ConfigStorage.update_config_value(:bool, "settings", "first_boot", false)
ConfigStorage.update_config_value(:string, "authorization", "token", token)
ConfigStorage.update_config_value(:string, "authorization", "last_shutdown_reason", nil)

View File

@ -7,6 +7,7 @@ defmodule Farmbot.BotState.Transport.AMQP do
alias Farmbot.System.ConfigStorage
alias Farmbot.CeleryScript
alias CeleryScript.AST
import Farmbot.BotState.Utils
@exchange "amq.topic"
@ -24,7 +25,7 @@ defmodule Farmbot.BotState.Transport.AMQP do
def init([]) do
token = ConfigStorage.get_config_value(:string, "authorization", "token")
with {:ok, %{bot: device, mqtt: mqtt_server, virtual_host: vhost}} <- Farmbot.Jwt.decode(token),
with {:ok, %{bot: device, mqtt: mqtt_server, vhost: vhost}} <- Farmbot.Jwt.decode(token),
{:ok, conn} <- AMQP.Connection.open([host: mqtt_server, username: device, password: token, virtual_host: vhost || "/"]),
{:ok, chan} <- AMQP.Channel.open(conn),
queue_name <- Enum.join([device, UUID.uuid1()], "-"),
@ -56,7 +57,7 @@ defmodule Farmbot.BotState.Transport.AMQP do
def handle_log_events(logs, state) do
for %Farmbot.Log{} = log <- logs do
if log.module == nil or (Module.split(log.module || Elixir.Logger) |> List.first == "Farmbot") do
if should_log?(log.module, log.verbosity) do
location_data = Map.get(state.state_cache || %{}, :location_data, %{position: %{x: -1, y: -1, z: -1}})
meta = %{type: log.level, x: nil, y: nil, z: nil}
log_without_pos = %{created_at: log.time, meta: meta, channels: log.meta[:channels] || [], message: log.message}

View File

@ -4,6 +4,7 @@ defmodule Farmbot.BotState.Transport.GenMQTT do
use Farmbot.Logger
alias Farmbot.BotState.Transport.GenMQTT.Client
alias Farmbot.CeleryScript.AST
import Farmbot.BotState.Utils
@doc false
def start_link do
@ -36,7 +37,7 @@ defmodule Farmbot.BotState.Transport.GenMQTT do
def handle_log_events(logs, {%{client: client} = internal_state, old_bot_state}) do
for %Farmbot.Log{} = log <- logs do
if log.module != nil or Module.split(log.module || Elixir.Logger) |> List.first == "Farmbot" and (log.verbosity || 0) < 3 do
if should_log?(log.module, log.verbosity) do
location_data = Map.get(old_bot_state || %{}, :location_data, %{position: %{x: -1, y: -1, z: -1}})
meta = %{type: log.level, x: nil, y: nil, z: nil, verbosity: log.verbosity}
log_without_pos = %{created_at: log.time, meta: meta, channels: log.meta[:channels] || [], message: log.message}

View File

@ -0,0 +1,13 @@
defmodule Farmbot.BotState.Utils do
@moduledoc "Utility functions for handling bot_state data"
def should_log?(module, verbosity)
def should_log?(nil, verbosity) when verbosity < 3, do: true
def should_log?(nil, _), do: false
def should_log?(module, verbosity) when verbosity < 3 do
List.first(Module.split(module)) == "Farmbot"
end
def should_log?(_, _), do: false
end

View File

@ -6,7 +6,7 @@ defmodule Farmbot.Jwt do
:exp,
:iss,
:mqtt,
:virtual_host,
:vhost,
:os_update_server
]
@ -16,7 +16,8 @@ defmodule Farmbot.Jwt do
exp: number,
iss: binary,
mqtt: binary,
os_update_server: binary
os_update_server: binary,
vhost: binary,
}
@doc "Decode a token."

View File

@ -43,12 +43,12 @@ defmodule Farmbot.Logger.Console do
end
defp maybe_log(%Farmbot.Log{module: module} = log) do
should_log = List.first(Module.split(module)) == "Farmbot"
if should_log do
# should_log = List.first(Module.split(module)) == "Farmbot"
# if should_log do
IO.inspect log
else
:ok
end
# else
# :ok
# end
end
def handle_call({:set_verbosity_level, num}, _from, state) do