fluent-plugin-everysense 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/README.md +64 -6
- data/fluent-plugin-everysense.gemspec +4 -3
- data/lib/fluent/plugin/filter_everysense.rb +27 -0
- data/lib/fluent/plugin/in_everysense.rb +2 -2
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71732bc5a744276424c6081b7aa3c5b0c0ac9a80
|
4
|
+
data.tar.gz: e0a0cf71e1db33a9556b28b67861cd85ccb5d098
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b2280bab8f9d46c6ce0f76ce449df84d4bba414897a4a83e15da9137d1254252d9234356bbd51d99db8c86c188eaada473f21dddcba499c896c3168009964c8
|
7
|
+
data.tar.gz: 079d63d4938f6c8c28f53db240c11accaa20d18cf207205ec02921b142c5a6281f7d3aaf8fa2be6615f9d9a7ea5f94855f9a7097512c590db6715b2fe4d4bdd8
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ fluent-plugin-everysense has Input and Output Plugins for EverySense platform.
|
|
22
22
|
|
23
23
|
### Input Plugin (Fluent::EverySenseInput)
|
24
24
|
|
25
|
-
Input Plugin can be used via source directive in the configuration.
|
25
|
+
Input Plugin can receive events from EverySense Server. It can be used via source directive in the configuration.
|
26
26
|
|
27
27
|
```
|
28
28
|
<source>
|
@@ -49,19 +49,20 @@ Since each device may have multiple sensors, time field is generated when Input
|
|
49
49
|
```
|
50
50
|
{"json":
|
51
51
|
[
|
52
|
-
{"data": {
|
52
|
+
{ "data": {
|
53
53
|
"at": "2016-05-15 12:14:30 +0900",
|
54
54
|
"unit":"degree Celsius",
|
55
55
|
"value":23
|
56
56
|
},
|
57
|
-
|
57
|
+
"sensor_name":"collection_data_1"
|
58
58
|
},
|
59
|
-
{"data": {
|
59
|
+
{ "data": {
|
60
60
|
"at":"2016-05-15 12:14:30 +0900",
|
61
61
|
"unit":"%RH",
|
62
62
|
"value":30
|
63
63
|
},
|
64
|
-
|
64
|
+
"sensor_name":"collection_data_2"
|
65
|
+
}
|
65
66
|
]
|
66
67
|
}
|
67
68
|
```
|
@@ -70,7 +71,7 @@ While fluentd record must be a map (Hash), the output of EverySense becomes an a
|
|
70
71
|
|
71
72
|
### Output Plugin (Fluent::EverySenseOutput)
|
72
73
|
|
73
|
-
Output Plugin can be used via match directive. Output Plugin assumes the input format as described above.
|
74
|
+
Output Plugin can send events to EverySense server. It can be used via match directive. Output Plugin assumes the input format as described above.
|
74
75
|
|
75
76
|
```
|
76
77
|
<match tag_name>
|
@@ -103,6 +104,63 @@ Output Plugin can be used via match directive. Output Plugin assumes the input f
|
|
103
104
|
- **output_name**: sensor_name of the output sensor data.
|
104
105
|
- **type_of_value**: type of value (default: Integer)
|
105
106
|
|
107
|
+
## Filter Plugin (Fluent::EverySenseFilter)
|
108
|
+
|
109
|
+
Filter Plugin can split an EverySense Server event into multiple fluentd events if it has multiple data. It can be used via filter directive.
|
110
|
+
|
111
|
+
```
|
112
|
+
<filter tag_name>
|
113
|
+
@type everysense
|
114
|
+
</filter>
|
115
|
+
```
|
116
|
+
|
117
|
+
The following input data from EverySense Server will be splitted into multiple fluentd events.
|
118
|
+
|
119
|
+
```
|
120
|
+
{"json":
|
121
|
+
[
|
122
|
+
{ "farm_uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
|
123
|
+
"sensor_name":"collection_data_1",
|
124
|
+
"data_class_name":"Illuminance",
|
125
|
+
"data": {
|
126
|
+
"at":"2016-08-24 00:15:00 UTC",
|
127
|
+
"value":137.0,
|
128
|
+
"unit":"lx"
|
129
|
+
}
|
130
|
+
},
|
131
|
+
{ "farm_uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
|
132
|
+
"sensor_name":"collection_data_2",
|
133
|
+
"data_class_name":"Location",
|
134
|
+
"data": {
|
135
|
+
"at":"2016-08-24 00:15:00 UTC",
|
136
|
+
"values":[138.442062,35.8162422,671.599975],
|
137
|
+
"unit":"degree"
|
138
|
+
}
|
139
|
+
}
|
140
|
+
]
|
141
|
+
}
|
142
|
+
```
|
143
|
+
|
144
|
+
```
|
145
|
+
{ "farm_uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
|
146
|
+
"sensor_name":"collection_data_1",
|
147
|
+
"data_class_name":"Illuminance",
|
148
|
+
"data": {
|
149
|
+
"at":"2016-08-24 00:15:00 UTC",
|
150
|
+
"value":137.0,
|
151
|
+
"unit":"lx"
|
152
|
+
}
|
153
|
+
},
|
154
|
+
{ "farm_uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
|
155
|
+
"sensor_name":"collection_data_2",
|
156
|
+
"data_class_name":"Location",
|
157
|
+
"data": {
|
158
|
+
"at":"2016-08-24 00:15:00 UTC",
|
159
|
+
"values":[138.442062,35.8162422,671.599975],
|
160
|
+
"unit":"degree"
|
161
|
+
}
|
162
|
+
}
|
163
|
+
```
|
106
164
|
|
107
165
|
## Contributing
|
108
166
|
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "fluent-plugin-everysense"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.6"
|
8
8
|
spec.authors = ["Toyokazu Akiyama"]
|
9
9
|
spec.email = ["toyokazu@gmail.com"]
|
10
10
|
|
@@ -18,9 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>= 2.
|
21
|
+
spec.required_ruby_version = '>= 2.1.0'
|
22
22
|
|
23
|
-
spec.add_dependency 'fluentd', '
|
23
|
+
spec.add_dependency 'fluentd', '~> 0.12.0'
|
24
|
+
#spec.add_dependency 'fluentd', '>= 0.10.0'
|
24
25
|
|
25
26
|
spec.add_development_dependency "bundler", "~> 1.10"
|
26
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fluent
|
2
|
+
# EverySenseFilter
|
3
|
+
# Split EverySense data into multiple output entries
|
4
|
+
# to store each datum separately
|
5
|
+
class EverySenseFilter < Filter
|
6
|
+
Plugin.register_filter('everysense', self)
|
7
|
+
|
8
|
+
def filter_stream(tag, es)
|
9
|
+
new_es = MultiEventStream.new
|
10
|
+
es.each do |time, record|
|
11
|
+
# puts "filter_everysense: #{record}"
|
12
|
+
split(time, record, new_es)
|
13
|
+
end
|
14
|
+
new_es
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def split(time, record, new_es)
|
20
|
+
if record[:json].instance_of?(Array)
|
21
|
+
record[:json].each { |r| new_es.add(time, r) }
|
22
|
+
else
|
23
|
+
new_es.add(time, record)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -66,7 +66,7 @@ module Fluent
|
|
66
66
|
end
|
67
67
|
|
68
68
|
desc 'Tag name assigned to inputs'
|
69
|
-
config_param :tag, :string, :default =>
|
69
|
+
config_param :tag, :string, :default => 'everysense'
|
70
70
|
desc 'Polling interval to get message from EverySense API'
|
71
71
|
config_param :polling_interval, :integer, :default => 60
|
72
72
|
desc 'Device ID'
|
@@ -91,7 +91,7 @@ module Fluent
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def start
|
94
|
-
raise StandardError.new if @tag.nil?
|
94
|
+
#raise StandardError.new if @tag.nil?
|
95
95
|
super
|
96
96
|
start_proxy
|
97
97
|
@proxy_thread = Thread.new do
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-everysense
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toyokazu Akiyama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.12.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.12.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,7 @@ files:
|
|
66
66
|
- Rakefile
|
67
67
|
- fluent-plugin-everysense.gemspec
|
68
68
|
- lib/fluent/plugin/everysense_proxy.rb
|
69
|
+
- lib/fluent/plugin/filter_everysense.rb
|
69
70
|
- lib/fluent/plugin/in_everysense.rb
|
70
71
|
- lib/fluent/plugin/out_everysense.rb
|
71
72
|
- tutorial/ja/json_over_http_api_tutorial.md
|
@@ -81,7 +82,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
81
82
|
requirements:
|
82
83
|
- - ">="
|
83
84
|
- !ruby/object:Gem::Version
|
84
|
-
version: 2.
|
85
|
+
version: 2.1.0
|
85
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
87
|
requirements:
|
87
88
|
- - ">="
|