ladder_drive 0.6.3 → 0.6.7
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 +5 -5
- data/Gemfile +7 -2
- data/Gemfile.lock +107 -62
- data/README.md +1 -0
- data/README_jp.md +2 -2
- data/ladder_drive.gemspec +12 -8
- data/lib/ladder_drive/cli.rb +16 -4
- data/lib/ladder_drive/config.rb +4 -1
- data/lib/ladder_drive/config_target.rb +1 -0
- data/lib/ladder_drive/plc_device.rb +11 -0
- data/lib/ladder_drive/protocol/keyence/kv_protocol.rb +1 -11
- data/lib/ladder_drive/protocol/mitsubishi/fx_protocol.rb +0 -11
- data/lib/ladder_drive/protocol/mitsubishi/mc_protocol.rb +1 -11
- data/lib/ladder_drive/protocol/omron/c_mode_protocol.rb +224 -0
- data/lib/ladder_drive/protocol/omron/fins_tcp_protocol.rb +380 -0
- data/lib/ladder_drive/protocol/omron/omron.rb +28 -0
- data/lib/ladder_drive/protocol/omron/omron_device.rb +139 -0
- data/lib/ladder_drive/protocol/protocol.rb +16 -5
- data/lib/ladder_drive/tasks/build.rb +1 -1
- data/lib/ladder_drive/version.rb +1 -1
- data/lib/ladder_drive.rb +3 -0
- data/lib/plc/emulator/emu_plc_server.rb +3 -1
- data/lib/plc/emulator/plc_plugins.rb +20 -13
- data/lib/plc/emulator/plugin_trigger_state.rb +152 -0
- data/plugins/ambient_plugin.rb +155 -0
- data/plugins/config/ambient.yaml.example +34 -0
- data/plugins/config/google_drive.yaml.example +39 -0
- data/plugins/config/ifttt.yaml.example +24 -0
- data/plugins/config/plc_mapper.yaml.example +36 -0
- data/plugins/config/slack.yaml.example +36 -0
- data/plugins/config/trello.yaml.example +41 -0
- data/plugins/ifttt_plugin.rb +4 -27
- data/plugins/plc_mapper_plugin.rb +27 -15
- data/plugins/slack_plugin.rb +14 -3
- data/plugins/trello_plugin.rb +30 -42
- metadata +72 -15
data/plugins/slack_plugin.rb
CHANGED
@@ -90,6 +90,7 @@ class SlackPlugin < Plugin
|
|
90
90
|
v = nil
|
91
91
|
case event[:trigger][:type]
|
92
92
|
when "interval"
|
93
|
+
|
93
94
|
t = @times[event.object_id] || now
|
94
95
|
triggered = t <= now
|
95
96
|
if triggered
|
@@ -97,9 +98,9 @@ class SlackPlugin < Plugin
|
|
97
98
|
t += event[:trigger][:interval] || 300
|
98
99
|
@times[event.object_id] = t
|
99
100
|
end
|
100
|
-
v = device.send event[:value_type], event[:trigger][:text_length] || 8
|
101
|
+
v = device.send event[:value_type] || :value, event[:trigger][:text_length] || 8
|
101
102
|
else
|
102
|
-
v = device.send event[:value_type], event[:text_length] || 8
|
103
|
+
v = device.send event[:value_type] || :value, event[:text_length] || 8
|
103
104
|
unless @values[device.name] == v
|
104
105
|
@values[device.name] = v
|
105
106
|
case event[:trigger][:type]
|
@@ -122,6 +123,8 @@ class SlackPlugin < Plugin
|
|
122
123
|
end
|
123
124
|
rescue => e
|
124
125
|
p e
|
126
|
+
puts $!
|
127
|
+
puts $@
|
125
128
|
end
|
126
129
|
end
|
127
130
|
end
|
@@ -147,7 +150,15 @@ class SlackPlugin < Plugin
|
|
147
150
|
req["Content-Type"] = "application/json"
|
148
151
|
|
149
152
|
format = event[:format] || "__comment__ occured at __time__"
|
150
|
-
|
153
|
+
case format
|
154
|
+
when Hash
|
155
|
+
case arg[:value]
|
156
|
+
when false, nil, 0
|
157
|
+
format = format[:fall]
|
158
|
+
else
|
159
|
+
format = format[:interval] || format[:raise]
|
160
|
+
end
|
161
|
+
end
|
151
162
|
|
152
163
|
device_name = arg[:device_name]
|
153
164
|
comment = @comments[device_name] || device_name
|
data/plugins/trello_plugin.rb
CHANGED
@@ -80,42 +80,16 @@ class TrelloPlugin < Plugin
|
|
80
80
|
|
81
81
|
@config[:events].each do |event|
|
82
82
|
begin
|
83
|
+
next unless self.triggered?(event)
|
83
84
|
|
84
|
-
|
85
|
-
|
86
|
-
device
|
87
|
-
|
88
|
-
case event[:trigger][:type]
|
89
|
-
when "interval"
|
90
|
-
t = @times[event.object_id] || now
|
91
|
-
triggered = t <= now
|
92
|
-
if triggered
|
93
|
-
triggered = true
|
94
|
-
t += event[:trigger][:interval] || 300
|
95
|
-
@times[event.object_id] = t
|
96
|
-
end
|
97
|
-
else
|
98
|
-
device = plc.device_by_name event[:trigger][:device]
|
99
|
-
v = device.send event[:trigger][:value_type], event[:trigger][:text_length] || 8
|
100
|
-
unless @values[device.name] == v
|
101
|
-
@values[device.name] = v
|
102
|
-
case event[:trigger][:type]
|
103
|
-
when "raise"
|
104
|
-
triggered = !!v
|
105
|
-
when "fall"
|
106
|
-
triggered = !v
|
107
|
-
else
|
108
|
-
triggered = true
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
next unless triggered
|
114
|
-
|
115
|
-
@worker_queue.push event:event, device_name:device.name, value:v, time: now
|
85
|
+
device = trigger_state_for(event).device
|
86
|
+
v = trigger_state_for(event).value
|
87
|
+
@worker_queue.push event:event, device_name:device.name, value:v, time: Time.now
|
116
88
|
|
117
89
|
rescue => e
|
118
90
|
p e
|
91
|
+
puts $!
|
92
|
+
puts $@
|
119
93
|
end
|
120
94
|
end
|
121
95
|
end
|
@@ -128,6 +102,11 @@ class TrelloPlugin < Plugin
|
|
128
102
|
}
|
129
103
|
end
|
130
104
|
|
105
|
+
def label_in_board_with_color board, color
|
106
|
+
l = board.labels.find{|l| l.name == color}
|
107
|
+
l ||= Trello::Label.create board_id:board.id, name:color, color:color
|
108
|
+
end
|
109
|
+
|
131
110
|
def thread_proc
|
132
111
|
while arg = @worker_queue.pop
|
133
112
|
begin
|
@@ -137,24 +116,33 @@ class TrelloPlugin < Plugin
|
|
137
116
|
next unless board
|
138
117
|
|
139
118
|
card_name = event[:card_name].dup || ""
|
140
|
-
card_name.gsub!(/__value__/, arg[:value] || "")
|
119
|
+
card_name.gsub!(/__value__/, arg[:value] || "") if arg[:value].is_a? String
|
141
120
|
next if (card_name || "").empty?
|
142
121
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
122
|
+
card = board.cards.find{|c| c.name == card_name}
|
123
|
+
card ||= Trello::Card.create name:card_name
|
124
|
+
|
125
|
+
# move card into a list
|
126
|
+
list = board.lists.find{|l| l.name == event[:list_name]} if event[:list_name]
|
127
|
+
card.move_to_list list if list
|
147
128
|
|
148
|
-
|
149
|
-
if
|
150
|
-
|
151
|
-
|
152
|
-
|
129
|
+
# set color label
|
130
|
+
if event[:color]
|
131
|
+
if event[:color][:add]
|
132
|
+
label = label_in_board_with_color board, event[:color][:add]
|
133
|
+
card.add_label label
|
134
|
+
end
|
135
|
+
if event[:color][:remove]
|
136
|
+
label = label_in_board_with_color board, event[:color][:remove]
|
137
|
+
card.remove_label label
|
138
|
+
end
|
153
139
|
end
|
154
140
|
|
155
141
|
rescue => e
|
156
142
|
# TODO: Resend if it fails.
|
157
143
|
p e
|
144
|
+
puts $!
|
145
|
+
puts $@
|
158
146
|
end
|
159
147
|
end
|
160
148
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ladder_drive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katsuyoshi Ito
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -30,21 +30,21 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '6.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '6.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ffi
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.9
|
47
|
+
version: '1.9'
|
48
48
|
- - ">="
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: 1.9.24
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
requirements:
|
55
55
|
- - "~>"
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 1.9
|
57
|
+
version: '1.9'
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 1.9.24
|
@@ -82,16 +82,42 @@ dependencies:
|
|
82
82
|
name: serialport
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '1.3'
|
85
88
|
- - ">="
|
86
89
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
90
|
+
version: 1.3.1
|
88
91
|
type: :runtime
|
89
92
|
prerelease: false
|
90
93
|
version_requirements: !ruby/object:Gem::Requirement
|
91
94
|
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '1.3'
|
92
98
|
- - ">="
|
93
99
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
100
|
+
version: 1.3.1
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: ambient_iot
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0.1'
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.1.1
|
111
|
+
type: :runtime
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.1'
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 0.1.1
|
95
121
|
- !ruby/object:Gem::Dependency
|
96
122
|
name: google_drive
|
97
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,6 +125,9 @@ dependencies:
|
|
99
125
|
- - "~>"
|
100
126
|
- !ruby/object:Gem::Version
|
101
127
|
version: '3.0'
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 3.0.3
|
102
131
|
type: :runtime
|
103
132
|
prerelease: false
|
104
133
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -106,6 +135,9 @@ dependencies:
|
|
106
135
|
- - "~>"
|
107
136
|
- !ruby/object:Gem::Version
|
108
137
|
version: '3.0'
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 3.0.3
|
109
141
|
- !ruby/object:Gem::Dependency
|
110
142
|
name: ruby-trello
|
111
143
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,19 +153,33 @@ dependencies:
|
|
121
153
|
- !ruby/object:Gem::Version
|
122
154
|
version: '2.1'
|
123
155
|
- !ruby/object:Gem::Dependency
|
124
|
-
name:
|
156
|
+
name: dotenv
|
125
157
|
requirement: !ruby/object:Gem::Requirement
|
126
158
|
requirements:
|
127
159
|
- - "~>"
|
128
160
|
- !ruby/object:Gem::Version
|
129
|
-
version: '1
|
130
|
-
type: :
|
161
|
+
version: '2.1'
|
162
|
+
type: :runtime
|
131
163
|
prerelease: false
|
132
164
|
version_requirements: !ruby/object:Gem::Requirement
|
133
165
|
requirements:
|
134
166
|
- - "~>"
|
135
167
|
- !ruby/object:Gem::Version
|
136
|
-
version: '1
|
168
|
+
version: '2.1'
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: bundler
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - ">="
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
137
183
|
- !ruby/object:Gem::Dependency
|
138
184
|
name: rake
|
139
185
|
requirement: !ruby/object:Gem::Requirement
|
@@ -190,6 +236,10 @@ files:
|
|
190
236
|
- lib/ladder_drive/protocol/mitsubishi/mc_protocol.rb
|
191
237
|
- lib/ladder_drive/protocol/mitsubishi/mitsubishi.rb
|
192
238
|
- lib/ladder_drive/protocol/mitsubishi/qdevice.rb
|
239
|
+
- lib/ladder_drive/protocol/omron/c_mode_protocol.rb
|
240
|
+
- lib/ladder_drive/protocol/omron/fins_tcp_protocol.rb
|
241
|
+
- lib/ladder_drive/protocol/omron/omron.rb
|
242
|
+
- lib/ladder_drive/protocol/omron/omron_device.rb
|
193
243
|
- lib/ladder_drive/protocol/protocol.rb
|
194
244
|
- lib/ladder_drive/tasks/build.rb
|
195
245
|
- lib/ladder_drive/uploader.rb
|
@@ -200,6 +250,7 @@ files:
|
|
200
250
|
- lib/plc/emulator/emu_plc_server.rb
|
201
251
|
- lib/plc/emulator/emulator.rb
|
202
252
|
- lib/plc/emulator/plc_plugins.rb
|
253
|
+
- lib/plc/emulator/plugin_trigger_state.rb
|
203
254
|
- lib/plc/keyence/kv/kv-5000/DocumentWindowInfo.xml
|
204
255
|
- lib/plc/keyence/kv/kv-5000/KvsMon.ini
|
205
256
|
- lib/plc/keyence/kv/kv-5000/LadderDrive.mod
|
@@ -226,7 +277,14 @@ files:
|
|
226
277
|
- lib/plc/raspberrypi/raspberrypi.rb
|
227
278
|
- lib/plc/raspberrypi/raspberrypi_plc.rb
|
228
279
|
- lib/plc/raspberrypi/raspberrypi_plc_server.rb
|
280
|
+
- plugins/ambient_plugin.rb
|
229
281
|
- plugins/blank_plugin.rb
|
282
|
+
- plugins/config/ambient.yaml.example
|
283
|
+
- plugins/config/google_drive.yaml.example
|
284
|
+
- plugins/config/ifttt.yaml.example
|
285
|
+
- plugins/config/plc_mapper.yaml.example
|
286
|
+
- plugins/config/slack.yaml.example
|
287
|
+
- plugins/config/trello.yaml.example
|
230
288
|
- plugins/google_drive_plugin.rb
|
231
289
|
- plugins/ifttt_plugin.rb
|
232
290
|
- plugins/plc_mapper_plugin.rb
|
@@ -253,15 +311,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
253
311
|
requirements:
|
254
312
|
- - ">="
|
255
313
|
- !ruby/object:Gem::Version
|
256
|
-
version:
|
314
|
+
version: 2.3.3
|
257
315
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
258
316
|
requirements:
|
259
317
|
- - ">="
|
260
318
|
- !ruby/object:Gem::Version
|
261
319
|
version: '0'
|
262
320
|
requirements: []
|
263
|
-
|
264
|
-
rubygems_version: 2.5.2
|
321
|
+
rubygems_version: 3.1.2
|
265
322
|
signing_key:
|
266
323
|
specification_version: 4
|
267
324
|
summary: The ladder_drive is a simple abstract ladder for PLC (Programmable Logic
|