< >
Home » Farmbot开发入门教程 » farmbot开发入门教程-Lua API

farmbot开发入门教程-Lua API

说明:

  • 介绍FarmBot OS 中的 API Lua 函数列表

api(选项)

  • 对 FarmBot API执行HTTP 请求。此便捷函数提供了http()帮助程序功能的子集。请注意以下主要区别:

    • 您不需要运行json.encode输入。
    • 您不需要json.decode在输出上运行。
    • 唯一支持的请求格式是 JSON。
    • 您不需要auth_token()在标题中传递。
    • 基本 URL 不可配置。https://my.farm.bot是唯一受支持的 URL。
    • body对于请求来说是可选的GET。
    • nil如果有错误则返回。
    • 错误被发送到日志流(如果有)。
  • 发出请求
    对 API 发出 GET 以外的请求将永久更改您帐户中的数据。对单个资源(如 /device 端点)发出 DELETE 请求和 POST 请求时要特别小心,因为 API 会破坏无法恢复的数据。通过 API 更改数据可能会导致帐户不稳定。

-- Create a new point at (200, 200, 0) with a radius of 100
result = api({
    method = "post",
    url = "/api/points",
    body = {
        x = 200,
        y = 200,
        z = 0,
        radius = 100,
        pointer_type = "GenericPointer"
    }
})

if result then
    toast("Point creation ok", "debug")
else
    toast("Error - See logs for details", "error")
end


    -- Fetch all points from the API
points = api({
    method = "get",
    url = "/api/points"
})


-- Update the color and size of point with ID 1
api({
    method = "put",
    url = "/api/points/1",
    body = {
        meta = {
            color = "red"
        },
        radius = 250
    }
})

验证令牌()

  • 返回设备的授权令牌(字符串)。此值可用于访问 API 资源,而无需在 Lua 代码或 ENV 变量中存储账户密码。
-- Fetch all points from the API
resp_json, err = http({
    method = "GET",
    url = "https://my.farm.bot/api/points",
    headers = {
        Authorization = ("bearer " .. auth_token()),
        Accept = "application/json"
    }
})

points = json.decode(resp_json)

http(参数)

执行HTTP 请求。

发出请求
对 API 发出 GET 以外的请求将永久更改您帐户中的数据。对单个资源(如 /device 端点)发出 DELETE 请求和 POST 请求时要特别小心,因为 API 会破坏无法恢复的数据。通过 API 更改数据可能会导致帐户不稳定。

response, error = http({
  -- REQUIRED
  url="https://my.farm.bot/api/farmware_envs",
  -- OPTIONAL. Default value is "get".
  method="POST",
  -- OPTIONAL. Only strings and numbers.
  headers={
    Authorization="bearer eyJ....4cw",
    Accept="application/json"
  },
  -- OPTIONAL. Must be a string. Use included JSON library for JSON APIs
  body=json.encode({
  })
})

if error then
  -- The `error` object is reserved for non-HTTP errors.
  -- Example: missing URL.
  -- `error` will be `nil` if no issues are found.
  send_message("info", "Unknown error: " .. inspect(error))
else
  -- The `response` object has three properties:
    -- `status`: Number               - Response code. Example: 200.
    -- `body`: String                 - Response body. Always a string.
    -- `headers`: Map<String, String> - Response headers.
end



-- Get today's precipitation forecast from Open Meteo
request_url =
    "https://api.open-meteo.com/v1/forecast" ..
    "?latitude=" .. get_device("lat") ..
    "&longitude=" .. get_device("lng") ..
    "&timezone=auto&daily=precipitation_sum"
debug(request_url)
api_response = http({
  url=request_url
})
forecast = json.decode(api_response.body)

-- Display the result
toast("Daily precipitation: " .. forecast.daily.precipitation_sum[1] .. "mm")

json.decode(字符串)

  • 将 JSON 编码的字符串转换为 Lua 表。
lua_data = json.decode('{"foo":"bar","example":123}')
-- { foo="bar", example=123 }

json.encode(任意)

  • 将 Lua 变量转换为字符串化的 JSON。
json_data = json.encode({ foo="bar", example=123 })
-- => '{"foo":"bar","example":123}'

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: none