Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Receive and print an uplink message; return a downlink message
- # Usage: TTN_REGION=eu TTN_APP_ID=test TTN_ACCESS_KEY=ttn-account-v2.XXXXXXX ttn_up_down.rb
- require 'rubygems'
- require 'mqtt'
- require 'json'
- require 'base64'
- ttn_app_id=ENV['TTN_APP_ID']
- ttn_app_access_key=ENV['TTN_APP_ACCESS_KEY']
- ttn_region=ENV['TTN_REGION']
- ttn_dev_id="test"
- # connect:
- MQTT::Client.connect(
- :host => "#{ttn_region}.thethings.network",
- :port => 1883,
- :username => ttn_app_id,
- :password => ttn_app_access_key
- ) do |c|
- # subscribe to uplink:
- c.get("#{ttn_app_id}/devices/#{ttn_dev_id}/up") do |topic, message|
- # do stuff with the uplink:
- data = JSON.parse message
- payload_up = Base64.decode64(data["payload_raw"]).unpack("C*")
- puts "#{topic}: #{payload_up}"
- # send downlink:
- payload_down = [0x01, 0x02, 0x03, 0x04]
- downlink = {
- :payload_raw => Base64.encode64(payload_down.pack("C*")).strip,
- :port => 1
- }
- c.publish("#{ttn_app_id}/devices/#{ttn_dev_id}/down", downlink.to_json)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement