Class: LoraClient
- Inherits:
-
Object
- Object
- LoraClient
- Includes:
- LoraRb::Base, LoraRb::Call
- Defined in:
- lib/lora-rb/base.rb
Overview
An interface to Lora Service from Ruby
Instance Attribute Summary
Attributes included from LoraRb::Call
#client, #contex, #ssl_socket, #tcp_socket
Instance Method Summary collapse
-
#delete_enqueued_messages(eui:, id: nil, debug: false) ⇒ Object
It returns enqueued message ready to delivery to node [‘topic’, [ {‘reply’ => { … }, ‘status’ => 200 ] ].
-
#get_enqueued_messages(eui:, request_id: nil, debug: false) ⇒ Object
It returns enqueued message ready to delivery to node [‘topic’, {‘reply’ => [ { … } ], ‘status’ => 200}].
-
#initialize(options = {}) ⇒ LoraClient
constructor
Establish a secure connection to your account on the cloud.
-
#listen(options = {}, &block) ⇒ Object
Stay awaiting data from the cloud.
-
#quit ⇒ Object
Close the secure connection with the cloud.
-
#read_data(options = {}) ⇒ Object
Receive all data devices from the cloud Each device sends its data to the cloud.
-
#send_cmd(options = {}) ⇒ Object
Send the request to device.
Constructor Details
#initialize(options = {}) ⇒ LoraClient
Establish a secure connection to your account on the cloud
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/lora-rb/base.rb', line 11 def initialize( = {}) = {debug: false, token: LoraRb::Settings.token, appid: LoraRb::Settings.appid, host: LoraRb.configuration.host, port: LoraRb.configuration.port, uplink_url: LoraRb.configuration.uplink_url, downlink_url: LoraRb.configuration.downlink_url, enqueued_downlinks_url: LoraRb.configuration.enqueued_downlinks_url, downlink_response_urls: LoraRb.configuration.downlink_response_urls, delete_enqueued_downlink_url: LoraRb.configuration.delete_enqueued_downlink_url, username: LoraRb::Settings.username, password: LoraRb::Settings.password, ssl: LoraRb.configuration.ssl, ssl_file: LoraRb.configuration.ssl_file, timeout: LoraRb.configuration.timeout }.merge() @debug = [:debug] @token = [:token] @appid = [:appid] require 'philter' require 'securerandom' welcome_response = sub_initialize() raise("Lora-rb: Cannot connect to host #{options[:host]}:#{options[:port]}") unless welcome_response.key?('hello') end |
Instance Method Details
#delete_enqueued_messages(eui:, id: nil, debug: false) ⇒ Object
It returns enqueued message ready to delivery to node
- ‘topic’, [ {‘reply’ => { … }, ‘status’ => 200
-
]
86 87 88 89 90 91 92 |
# File 'lib/lora-rb/base.rb', line 86 def (eui:, id: nil, debug: false) res = (eui: eui, id: id, debug: debug) puts "delete_enqueued_message #{res}" if @debug res end |
#get_enqueued_messages(eui:, request_id: nil, debug: false) ⇒ Object
It returns enqueued message ready to delivery to node
- ‘topic’, {‘reply’ => [ { … } ], ‘status’ => 200}
76 77 78 79 80 81 82 |
# File 'lib/lora-rb/base.rb', line 76 def (eui:, request_id: nil, debug: false) res = (eui: eui, request_id: request_id, debug: debug) puts "get_enqueued_message #{res}" if @debug res end |
#listen(options = {}, &block) ⇒ Object
Stay awaiting data from the cloud
67 68 69 70 71 72 |
# File 'lib/lora-rb/base.rb', line 67 def listen( = {}, &block) = { debug: @debug }.merge() puts "#{Time.now} Starting Listen app #{@appid}. To exit press CTRL+C" if [:debug] sub_listen(, &block) end |
#quit ⇒ Object
Close the secure connection with the cloud
94 95 96 |
# File 'lib/lora-rb/base.rb', line 94 def quit sub_quit end |
#read_data(options = {}) ⇒ Object
Receive all data devices from the cloud Each device sends its data to the cloud
58 59 60 61 62 63 64 |
# File 'lib/lora-rb/base.rb', line 58 def read_data( = {}) = { debug: @debug }.merge() puts "#{Time.now} Waiting for #{@appid} incoming data..." if [:debug] response = sub_read_data() puts "#{Time.now} Received: #{response}" if [:debug] response end |
#send_cmd(options = {}) ⇒ Object
Send the request to device
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/lora-rb/base.rb', line 40 def send_cmd( = {}) = { debug: @debug, token: @token, appid: @appid, cmd: "tx", eui: nil, port: 40, confirmed: false, data: "0301"}.merge() raise("Eui is blank! Should i guess your device?") unless [:eui] response = sub_send_cmd() puts "#{Time.now} Cmd response: #{response}" if [:debug] response end |