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}'
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号