This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

HifiBerry API GET
#1
Hi.

Now that i have somewhat control over how to POST to the API, i'm having problems understanding how to use GET from the API. I have made a Resident script with 2 sec. sleep interval. The goal is to retrive volume % status on my HifiBerry amplifier, and write it to a group adress.

Code:
http = require('socket.http')
ltn12 = require('ltn12')

Volume_status                = grp.find        ('25/2/12')


--body = require('json').encode({
--  percent = tostring(event.getvalue())
--})

res, code = http.request({
  url = 'http://192.168.1.91:81/api/volume',
    method = 'GET',
headers = {
    ['Content-Length'] = #body,
    ['Content-Type'] = 'application/json',
  },
  source = ltn12.source.string(body)
})

Volume_status            :write(GET_Volume)

log(res, code)

The code above is a mess. Any ideas how to do this?
BR
Kai-Roger
Reply
#2
See if you can get a response using simple request command:
Code:
res, code = require('socket.http').request('http://192.168.1.91:81/api/volume')
log(res, code)

Otherwise you need a sink variable to store the response. Similar example: https://forum.logicmachine.net/showthrea...1#pid21631
Reply
#3
(10.05.2021, 12:01)admin Wrote: See if you can get a response using simple request command:
Code:
res, code = require('socket.http').request('http://192.168.1.91:81/api/volume')
log(res, code)

Otherwise you need a sink variable to store the response. Similar example: https://forum.logicmachine.net/showthrea...1#pid21631

Yes i get a response. How do i retract the percent from this and write it to a group adress?

* arg: 1
  * string: {"percent": 47.0}
* arg: 2
  * number: 200
BR
Kai-Roger
Reply
#4
Code:
if res then
  res = require('json').pdecode(res)
  if type(res) == 'table' and res.volume then
    grp.checkupdate('1/2/3', res.volume)
  end
end
Reply
#5
(10.05.2021, 12:30)admin Wrote:
Code:
if res then
  res = require('json').pdecode(res)
  if type(res) == 'table' and res.volume then
    grp.checkupdate('1/2/3', res.volume)
  end
end

Thanks a lot. The code below works perfectly.

Code:
res, code = require('socket.http').request('http://192.168.1.91:81/api/volume')
--log(res, code)

if res then
  res = require('json').pdecode(res)
  if type(res) == 'table' and res.percent then
    grp.checkupdate('25/2/12', res.percent)
  end
end
BR
Kai-Roger
Reply


Forum Jump: