LogicMachine Forum
Meater BBQ thermometer - Printable Version

+- LogicMachine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Meater BBQ thermometer (/showthread.php?tid=5295)



Meater BBQ thermometer - gjniewenhuijse - 10.03.2024

Hello,

I read  GitHub - apption-labs/meater-cloud-public-rest-api: MEATER Cloud REST API documentation. 

But i don't know how to get the data from that cloud thermometer. Anyone done this before?


RE: Meater BBQ thermometer - admin - 11.03.2024

There are many similar examples with REST communication on the forum: https://forum.logicmachine.net/showthread.php?tid=3756&pid=26977#pid26977


RE: Meater BBQ thermometer - gjniewenhuijse - 11.03.2024

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')