Here my first version
Code:
--[[
https://github.com/apption-labs/meater-cloud-public-rest-api
Rate limit:
Recommended: 2 requests per 60 seconds.
Maximum: 60 requests per 60 seconds.
There may be a delay between the MEATER Cloud seeing your device and it being returned in this endpoint.
- Device must be seen by the MEATER Cloud. Ensure you've completed a cook while connected to MEATER Cloud.
- The MEATER app or Block must have an active Bluetooth connection with the device.
- The MEATER app or Block must have an active MEATER Cloud connection.
--]]
https = require('ssl.https')
json = require('json')
ltn12 = require('ltn12')
iDebug = false
cloudUrl = 'https://public-api.cloud.meater.com/v1'
cloudEmail = 'myemail@address.nl'
cloudPwd = 'mypassword'
-- get token
function getToken()
tbl = {}
local iData = {}
iData['email'] = cloudEmail
iData['password'] = cloudPwd
local iData = json.encode(iData)
res, code = https.request({
url = cloudUrl..'/login',
method = 'POST',
headers = {
['content-type'] = 'application/json',
['content-length'] = #iData,
},
source = ltn12.source.string(iData),
sink = ltn12.sink.table(tbl),
})
if iDebug then log(res, code) end
if res and code == 200 then
resp = table.concat(tbl)
resp = json.pdecode(resp)
return resp.data.token
end
end
-- get device(s)
function getData(iEndpoint)
vToken = getToken()
if vToken then
res, code = https.request({
url = cloudUrl..iEndpoint,
method = 'GET',
headers = {
['authorization'] = 'Bearer ' .. vToken
}
})
if iDebug then log(res, code) end
if res and code == 200 then
return res
else
log(res,code)
end
end
end
log(getData('/devices'))
--getData('/devices/DEVICEID')