keyhole 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/keyhole.rb +1 -0
  2. data/lib/sat_parser.rb +45 -5
  3. metadata +3 -3
data/lib/keyhole.rb CHANGED
@@ -6,6 +6,7 @@ require 'em-websocket'
6
6
  require 'sinatra/base'
7
7
  require 'thin'
8
8
  require 'em-mysqlplus'
9
+ require 'json'
9
10
 
10
11
 
11
12
  EventMachine.run{
data/lib/sat_parser.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class SatParser < EventMachine::Connection
2
2
 
3
- attr_accessor :db
3
+ attr_accessor :db, :imei, :latest_location, :hdop
4
4
 
5
5
  def post_init
6
6
  puts self.inspect
@@ -9,16 +9,56 @@ class SatParser < EventMachine::Connection
9
9
  end
10
10
 
11
11
  def receive_data(data)
12
- puts "Data received..."
13
- puts data.inspect
14
- q = @db.query("insert into locations(latitude, longitude) value('ninja', 'neger');")
12
+ data = data.split(",")
13
+ self.imei = data[0]
14
+ loc = {
15
+ :longitude => parse_lng(data[5]),
16
+ :latitude => parse_lat(data[6]),
17
+ :altitude => data[7],
18
+ :nos => data[10].split(/\*/)[0],
19
+ :hdop => data[10].split(/\*/)[1],
20
+ :tracker => get_tracker_id(data[0])
21
+ }
22
+
23
+ self.latest_location = loc
24
+ self.hdop = loc[:hdop]
25
+
26
+ q = @db.query("insert into locations(longitude, latitude, altitude, nos, hdop, tracker_id) value('#{loc[:longitude]}','#{loc[:latitude]}', #{loc[:altitude]}, #{loc[:nos]}, #{loc[:hdop]}, #{loc[:tracker]});")
27
+
15
28
  q.callback{|res| puts res.inspect}
16
29
  q.errback{|res| puts "E:"+res.inspect}
17
- $channel << data
30
+
31
+ $channel << JSON.generate(loc)
18
32
  end
19
33
 
20
34
  def unbind
21
35
  $channel << "GSAT closed connection"
22
36
  end
23
37
 
38
+ private
39
+
40
+ def parse_lat(lat)
41
+ fraction = ((lat[3..4].to_f * 60) + (lat[5..9].to_f*60.0)) / 3600.0
42
+ sum = lat[1..2].to_f + fraction
43
+ if(lat[0] == 'S')
44
+ return -sum
45
+ else
46
+ return sum
47
+ end
48
+ end
49
+
50
+ def parse_lng(lng)
51
+ fraction = ((lng[4..5].to_f * 60) + (lng[6..10].to_f*60.0)) / 3600.0
52
+ sum = lng[1..3].to_f + fraction
53
+ if(lng[0] == 'W')
54
+ return -sum
55
+ else
56
+ return sum
57
+ end
58
+ end
59
+
60
+ def get_tracker_id(imei)
61
+ return 3
62
+ end
63
+
24
64
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keyhole
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 5
10
- version: 0.1.5
9
+ - 6
10
+ version: 0.1.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - buffpojken