mqtt-sn-ruby 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mqtt-sn-ruby.rb +27 -18
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f6e0d50a6122a25b13a777d12126907b20245da1
4
- data.tar.gz: eb53d010e6489de64806a3542e1133c5e5bddbfb
3
+ metadata.gz: 705eb97fc06ebe058eb3b7aded29ab274e50d5d5
4
+ data.tar.gz: 38ae9662ffc544634d14130e4d776a2eaf7daf52
5
5
  SHA512:
6
- metadata.gz: df1ab2aea08c3df21868bf4f55fad77f3b37dea31c72a5bb632a678d400127cc88ddaead67c783e584486499ae989eda75a40e1f2ce0db0c5fe2b01616101a49
7
- data.tar.gz: fece50d44b9beccd91caf410275a27ef93aa06e0003bf8a5eb9319726eaf22696acbdfd8b1c33992b415aa605c1e942bcf9879ba611ab3dee9a8a67f4ea972c8
6
+ metadata.gz: c2874cc9d625439ce68d33414aa9efccad6d67b15775f578e035e320df388fbbabaa1b61e83d670b67ec673d49c123e28d79a1b331358d8cc09913310c036dd9
7
+ data.tar.gz: b4b54ab175b0fc6856d99dfde89ddbca500cee574cb7344043c216f67f74a11e18a86f39a1484a87cbe61dcb8721af68bf1d976a985f008a7406ff80564fdf39
data/lib/mqtt-sn-ruby.rb CHANGED
@@ -6,6 +6,7 @@ require 'socket'
6
6
  require 'json'
7
7
  require 'uri'
8
8
  require 'ipaddr'
9
+ require 'time'
9
10
 
10
11
 
11
12
  class MqttSN
@@ -54,7 +55,7 @@ class MqttSN
54
55
 
55
56
  def logger str,*args
56
57
  if @verbose or @debug
57
- @log_q << sprintf(str,*args)
58
+ @log_q << Time.now.iso8601+" "+sprintf(str,*args)
58
59
  end
59
60
  end
60
61
 
@@ -140,6 +141,7 @@ class MqttSN
140
141
  @clients={}
141
142
  @gateways={}
142
143
  @autodiscovery=false
144
+ @broadcast_uri="udp://225.4.5.6:5000"
143
145
  if @server_uri
144
146
  puts "adding default gateway #{@server_uri}"
145
147
  @gateways[0]={stamp: Time.now.to_i,uri: @server_uri, duration: 0, source: 'default', status: :ok}
@@ -209,7 +211,8 @@ class MqttSN
209
211
  r,client_ip,client_port=pac
210
212
  key="#{client_ip}:#{client_port}"
211
213
  if not @clients[key]
212
- @clients[key]={ip:client_ip, port:client_port, socket: UDPSocket.new, state: :active }
214
+ uri="udp://#{client_ip}:#{client_port}"
215
+ @clients[key]={ip:client_ip, port:client_port, socket: UDPSocket.new, uri: uri, state: :active }
213
216
  c=@clients[key]
214
217
  puts "thread start for #{key}"
215
218
  @clients[key][:thread]=Thread.new(key) do |my_key|
@@ -220,7 +223,7 @@ class MqttSN
220
223
  mm=MqttSN::parse_message rr
221
224
  _,port,_,_ = @clients[my_key][:socket].addr
222
225
  dest="#{@server}:#{port}"
223
- logger "S %-18.18s <- %-18.18s | %s",my_key,dest,mm.to_json
226
+ logger "so %-24.24s <- %-24.24s | %s",@clients[my_key][:uri],@gateways[@active_gw_id][:uri],mm.to_json
224
227
  case mm[:type]
225
228
  when :disconnect
226
229
  @clients[my_key][:state]=:disconnected
@@ -236,7 +239,7 @@ class MqttSN
236
239
  sbytes=@clients[key][:socket].send(r, 0, @server, @port) # to rsmb -- ok as is
237
240
  _,port,_,_ = @clients[key][:socket].addr
238
241
  dest="#{@server}:#{port}"
239
- logger "C %-18.18s -> %-18.18s | %s",key,dest,m.to_json
242
+ logger "ci %-24.24s -> %-24.24s | %s", @clients[key][:uri],@gateways[@active_gw_id][:uri],m.to_json
240
243
 
241
244
  end
242
245
  end
@@ -395,7 +398,7 @@ class MqttSN
395
398
  m={}
396
399
  if not hash[:expect]
397
400
  if type==:searchgw
398
- raw=send_packet p,@bcast,MULTICAST_ADDR,@bcast_port
401
+ raw=send_packet_bcast p
399
402
  else
400
403
  raw=send_packet_gw p
401
404
  end
@@ -411,7 +414,7 @@ class MqttSN
411
414
  @iq.clear
412
415
  end
413
416
  if type==:searchgw
414
- raw=send_packet p,@bcast,MULTICAST_ADDR,@bcast_port
417
+ raw=send_packet_bcast p
415
418
  else
416
419
  raw=send_packet_gw p
417
420
  end
@@ -466,7 +469,16 @@ class MqttSN
466
469
  dest="#{server}:#{port}"
467
470
  _,port,_,_ = socket.addr
468
471
  src=":#{port}"
469
- logger "< %-18.18s <- %-18.18s | %s",dest,src,MqttSN::parse_message(msg).to_json
472
+ logger "od %-18.18s <- %-18.18s | %s",dest,src,MqttSN::parse_message(msg).to_json
473
+ end
474
+
475
+ def send_packet_bcast m
476
+ socket,server,port=[@bcast_s,MULTICAST_ADDR,@bcast_port]
477
+ msg=MqttSN::build_packet m
478
+ MqttSN::send_raw_packet msg,socket,server,port
479
+ _,port,_,_ = socket.addr
480
+ src="udp://0.0.0.0:#{port}"
481
+ logger "ob %-24.24s <- %-24.24s | %s",@broadcast_uri,src,MqttSN::parse_message(msg).to_json
470
482
  end
471
483
 
472
484
  def send_packet_gw m
@@ -484,7 +496,7 @@ class MqttSN
484
496
  MqttSN::send_raw_packet msg,@gateways[@active_gw_id][:socket],uri.host,uri.port
485
497
  _,port,_,_ = @gateways[@active_gw_id][:socket].addr
486
498
  src="udp://0.0.0.0:#{port}"
487
- logger "< %-24.24s <- %-24.24s | %s",@gateways[@active_gw_id][:uri],src,MqttSN::parse_message(msg).to_json
499
+ logger "od %-24.24s <- %-24.24s | %s",@gateways[@active_gw_id][:uri],src,MqttSN::parse_message(msg).to_json
488
500
  else
489
501
  puts "no gw to send.."
490
502
  sleep 1
@@ -792,7 +804,7 @@ class MqttSN
792
804
  dest="#{client_ip}:#{client_port}"
793
805
  _,port,_,_= @gateways[@active_gw_id][:socket].addr
794
806
  src="udp://0.0.0.0:#{port}"
795
- logger "i %-24.24s -> %-24.24s | %s",@gateways[@active_gw_id][:uri],src,m.to_json
807
+ logger "id %-24.24s -> %-24.24s | %s",@gateways[@active_gw_id][:uri],src,m.to_json
796
808
  process_message m
797
809
  else
798
810
  sleep 0.01
@@ -807,12 +819,10 @@ class MqttSN
807
819
  def process_broadcast_message m,client_ip,client_port
808
820
  case m[:type]
809
821
  when :searchgw
810
- key="#{client_ip}:#{client_port}"
811
- dest="#{MULTICAST_ADDR};#{@bcast_port}"
812
- #actually -- send data on all gateways we know...
813
822
  if @forwarder
814
- logger "r %-18.18s -> %-18.18s | %s",key,dest,m.to_json
815
- send_packet [GWINFO_TYPE,@options[:gw_id]],@bcast_s,MULTICAST_ADDR,@bcast_port
823
+ _,port,_,_=@bcast.addr
824
+ #logger "ib %-24.24s -> %-24.24s | %s","udp://0.0.0.0:#{port}",@broadcast_uri,m.to_json
825
+ send_packet_bcast [GWINFO_TYPE,@options[:gw_id]]
816
826
  end
817
827
  when :advertise,:gwinfo
818
828
  gw_id=m[:gw_id]
@@ -860,7 +870,7 @@ class MqttSN
860
870
  if @forwarder
861
871
  Thread.new do
862
872
  while true do
863
- send_packet [ADVERTISE_TYPE,@options[:gw_id],@bcast_period>>8,@bcast_period&0xff],@bcast_s,MULTICAST_ADDR,@bcast_port
873
+ send_packet_bcast [ADVERTISE_TYPE,@options[:gw_id],@bcast_period>>8,@bcast_period&0xff]
864
874
  sleep @bcast_period
865
875
  end
866
876
  end
@@ -895,10 +905,9 @@ class MqttSN
895
905
  if @debug and m
896
906
  m[:debug]=MqttSN::hexdump r
897
907
  end
898
- dest="#{client_ip}:#{client_port}"
899
908
  _,port,_,_ = @bcast.addr
900
- src=port
901
- logger "R %-18.18s <- %-18.18s | %s",dest,":#{port}",m.to_json
909
+ src="udp://#{client_ip}:#{client_port}"
910
+ logger "ib %-24.24s <- %-24.24s | %s",@broadcast_uri,src,m.to_json
902
911
  process_broadcast_message m,client_ip,client_port
903
912
  end
904
913
  rescue => e
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mqtt-sn-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Siitonen