Logic Machine Forum
sending data to thingsboard.io - Printable Version

+- Logic Machine 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: sending data to thingsboard.io (/showthread.php?tid=5106)



sending data to thingsboard.io - gdimaria - 22.11.2023

hi, I would use the platform Thingsboard.io to send and collect value data from LM objects.

they allows to do it by 2 ways: 

HTTP request ( es.  curl -v -X POST http://demo.thingsboard.io/api/v1/eoKkkZ6JL7UbmyOHGX9L/telemetry --header Content-Type:application/json --data "{temperature:25}")    or 

MQTT (es. curl -v -X POST http://demo.thingsboard.io/api/v1/eoKkkZ6JL7UbmyOHGX9L/telemetry --header Content-Type:application/json --data "{temperature:25}")

how could I implement everything on LM?

Thanks in advance

Peppe


RE: sending data to thingsboard.io - admin - 22.11.2023

For HTTP use this:
Code:
require('json')
require('ltn12')
require('socket.http')

body = json.encode({ temperature = 25 })
response = {}

res, code = socket.http.request({
  url = 'http://demo.thingsboard.io/api/v1/eoKkkZ6JL7UbmyOHGX9L/telemetry',
  method = 'POST',
  headers = {
    ['Content-Type'] = 'application/json',
    ['Content-Length'] = #body,
  },
  source = ltn12.source.string(body),
  sink = ltn12.sink.table(response),
})

if res and code == 200 then
  log('request ok')
else
  log('request error', code, table.concat(response))
end

For MQTT search the forum, there are many examples of how to use it. The data must be encoded using JSON, same as for HTTP requests.


RE: sending data to thingsboard.io - gdimaria - 22.11.2023

(22.11.2023, 11:12)admin Wrote: For HTTP use this:
Code:
require('json')
require('ltn12')
require('socket.http')

body = json.encode({ temperature = 25 })
response = {}

res, code = socket.http.request({
  url = 'http://demo.thingsboard.io/api/v1/eoKkkZ6JL7UbmyOHGX9L/telemetry',
  method = 'POST',
  headers = {
    ['Content-Type'] = 'application/json',
    ['Content-Length'] = #body,
  },
  source = ltn12.source.string(body),
  sink = ltn12.sink.table(response),
})

if res and code == 200 then
  log('request ok')
else
  log('request error', code, table.concat(response))
end

For MQTT search the forum, there are many examples of how to use it. The data must be encoded using JSON, same as for HTTP requests.

Thank you. How to pass a object value?

Code:
value = grp.getvalue('4/1/11')


body = json.encode({ temperature = value })

That way doesn't work. What is correct syntax?


RE: sending data to thingsboard.io - admin - 22.11.2023

The syntax is correct, for event scripts use event.getvalue() instead of grp.getvalue().
What kind of error are you getting?


RE: sending data to thingsboard.io - gdimaria - 22.11.2023

(22.11.2023, 13:38)admin Wrote: The syntax is correct, for event scripts use event.getvalue() instead of grp.getvalue().
What kind of error are you getting?

No errors, sorry. It's all right now.

Thanks

Peppe


RE: sending data to thingsboard.io - gdimaria - 27.11.2023

(22.11.2023, 11:12)admin Wrote: For HTTP use this:
Code:
require('json')
require('ltn12')
require('socket.http')

body = json.encode({ temperature = 25 })
response = {}

res, code = socket.http.request({
  url = 'http://demo.thingsboard.io/api/v1/eoKkkZ6JL7UbmyOHGX9L/telemetry',
  method = 'POST',
  headers = {
    ['Content-Type'] = 'application/json',
    ['Content-Length'] = #body,
  },
  source = ltn12.source.string(body),
  sink = ltn12.sink.table(response),
})

if res and code == 200 then
  log('request ok')
else
  log('request error', code, table.concat(response))
end

For MQTT search the forum, there are many examples of how to use it. The data must be encoded using JSON, same as for HTTP requests.

I am trying to provision an object in mqtt. Thingsboard says me to execute the command:

Code:
mosquitto_pub -d -q 1 -h demo.thingsboard.io -p 1883 -t v1/devices/me/telemetry -u "gximaxia" -P "12345678" -m "{temperature:25}"
How I can arrange it via script?

I need send data of dozen of knx objects, how I can do it without give different username and password? What is the short/best way to do it?
Thanks

Peppe


RE: sending data to thingsboard.io - admin - 27.11.2023

See this example: https://kb.logicmachine.net/integration/mqtt-client/