openhab-scripting 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/workflow.yml +327 -0
  3. data/.gitignore +17 -0
  4. data/.java-version +1 -0
  5. data/.rspec +1 -0
  6. data/.yardopts +1 -0
  7. data/CHANGELOG.md +113 -0
  8. data/Gemfile +28 -0
  9. data/Gemfile.lock +245 -0
  10. data/Guardfile +35 -0
  11. data/LICENSE +277 -0
  12. data/README.md +23 -0
  13. data/Rakefile +406 -0
  14. data/bin/console +15 -0
  15. data/bin/setup +8 -0
  16. data/config/userdata/config/org/openhab/restauth.config +3 -0
  17. data/cucumber.yml +1 -0
  18. data/docs/_config.yml +135 -0
  19. data/docs/contributing/index.md +47 -0
  20. data/docs/examples/conversions.md +123 -0
  21. data/docs/examples/index.md +61 -0
  22. data/docs/index.md +19 -0
  23. data/docs/installation/index.md +26 -0
  24. data/docs/motivation/index.md +27 -0
  25. data/docs/usage/execution.md +9 -0
  26. data/docs/usage/execution/delay.md +48 -0
  27. data/docs/usage/execution/otherwise.md +30 -0
  28. data/docs/usage/execution/run.md +70 -0
  29. data/docs/usage/execution/triggered.md +48 -0
  30. data/docs/usage/guards.md +51 -0
  31. data/docs/usage/guards/between.md +30 -0
  32. data/docs/usage/guards/not_if.md +41 -0
  33. data/docs/usage/guards/only_if.md +40 -0
  34. data/docs/usage/index.md +11 -0
  35. data/docs/usage/items.md +66 -0
  36. data/docs/usage/items/contact.md +84 -0
  37. data/docs/usage/items/dimmer.md +147 -0
  38. data/docs/usage/items/groups.md +76 -0
  39. data/docs/usage/items/number.md +225 -0
  40. data/docs/usage/items/string.md +49 -0
  41. data/docs/usage/items/switch.md +85 -0
  42. data/docs/usage/misc.md +7 -0
  43. data/docs/usage/misc/actions.md +108 -0
  44. data/docs/usage/misc/duration.md +21 -0
  45. data/docs/usage/misc/gems.md +25 -0
  46. data/docs/usage/misc/logging.md +21 -0
  47. data/docs/usage/misc/metadata.md +128 -0
  48. data/docs/usage/misc/store_states.md +42 -0
  49. data/docs/usage/misc/time_of_day.md +69 -0
  50. data/docs/usage/misc/timers.md +67 -0
  51. data/docs/usage/rule.md +43 -0
  52. data/docs/usage/things.md +29 -0
  53. data/docs/usage/triggers.md +8 -0
  54. data/docs/usage/triggers/changed.md +57 -0
  55. data/docs/usage/triggers/channel.md +54 -0
  56. data/docs/usage/triggers/command.md +69 -0
  57. data/docs/usage/triggers/cron.md +19 -0
  58. data/docs/usage/triggers/every.md +76 -0
  59. data/docs/usage/triggers/updated.md +78 -0
  60. data/lib/openhab.rb +39 -0
  61. data/lib/openhab/configuration.rb +16 -0
  62. data/lib/openhab/core/cron.rb +27 -0
  63. data/lib/openhab/core/debug.rb +34 -0
  64. data/lib/openhab/core/dsl.rb +47 -0
  65. data/lib/openhab/core/dsl/actions.rb +107 -0
  66. data/lib/openhab/core/dsl/entities.rb +103 -0
  67. data/lib/openhab/core/dsl/gems.rb +29 -0
  68. data/lib/openhab/core/dsl/group.rb +91 -0
  69. data/lib/openhab/core/dsl/items/items.rb +39 -0
  70. data/lib/openhab/core/dsl/items/number_item.rb +217 -0
  71. data/lib/openhab/core/dsl/items/string_item.rb +102 -0
  72. data/lib/openhab/core/dsl/monkey_patch/actions/actions.rb +4 -0
  73. data/lib/openhab/core/dsl/monkey_patch/actions/script_thing_actions.rb +22 -0
  74. data/lib/openhab/core/dsl/monkey_patch/events.rb +5 -0
  75. data/lib/openhab/core/dsl/monkey_patch/events/item_command.rb +13 -0
  76. data/lib/openhab/core/dsl/monkey_patch/events/item_state_changed.rb +25 -0
  77. data/lib/openhab/core/dsl/monkey_patch/events/thing_status_info.rb +26 -0
  78. data/lib/openhab/core/dsl/monkey_patch/items/contact_item.rb +54 -0
  79. data/lib/openhab/core/dsl/monkey_patch/items/dimmer_item.rb +125 -0
  80. data/lib/openhab/core/dsl/monkey_patch/items/group_item.rb +27 -0
  81. data/lib/openhab/core/dsl/monkey_patch/items/items.rb +130 -0
  82. data/lib/openhab/core/dsl/monkey_patch/items/metadata.rb +259 -0
  83. data/lib/openhab/core/dsl/monkey_patch/items/switch_item.rb +86 -0
  84. data/lib/openhab/core/dsl/monkey_patch/ruby/number.rb +69 -0
  85. data/lib/openhab/core/dsl/monkey_patch/ruby/range.rb +46 -0
  86. data/lib/openhab/core/dsl/monkey_patch/ruby/ruby.rb +5 -0
  87. data/lib/openhab/core/dsl/monkey_patch/types/decimal_type.rb +24 -0
  88. data/lib/openhab/core/dsl/monkey_patch/types/on_off_type.rb +41 -0
  89. data/lib/openhab/core/dsl/monkey_patch/types/open_closed_type.rb +25 -0
  90. data/lib/openhab/core/dsl/monkey_patch/types/percent_type.rb +23 -0
  91. data/lib/openhab/core/dsl/monkey_patch/types/types.rb +7 -0
  92. data/lib/openhab/core/dsl/property.rb +85 -0
  93. data/lib/openhab/core/dsl/rule/channel.rb +41 -0
  94. data/lib/openhab/core/dsl/rule/cron.rb +115 -0
  95. data/lib/openhab/core/dsl/rule/guard.rb +99 -0
  96. data/lib/openhab/core/dsl/rule/item.rb +207 -0
  97. data/lib/openhab/core/dsl/rule/rule.rb +374 -0
  98. data/lib/openhab/core/dsl/rule/triggers.rb +77 -0
  99. data/lib/openhab/core/dsl/states.rb +63 -0
  100. data/lib/openhab/core/dsl/things.rb +93 -0
  101. data/lib/openhab/core/dsl/time_of_day.rb +203 -0
  102. data/lib/openhab/core/dsl/timers.rb +85 -0
  103. data/lib/openhab/core/dsl/types/quantity.rb +255 -0
  104. data/lib/openhab/core/dsl/units.rb +41 -0
  105. data/lib/openhab/core/duration.rb +69 -0
  106. data/lib/openhab/core/log.rb +175 -0
  107. data/lib/openhab/core/patch_load_path.rb +7 -0
  108. data/lib/openhab/core/startup_delay.rb +22 -0
  109. data/lib/openhab/osgi.rb +52 -0
  110. data/lib/openhab/version.rb +9 -0
  111. data/openhab-scripting.gemspec +30 -0
  112. data/openhab_rules/warmup.rb +5 -0
  113. metadata +157 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a5c554c32f29417abb195eca4ab36ebffb6a1f5dad807e71c15b5bbe2228a6c5
4
+ data.tar.gz: 9355d486f42858c69feda536b8846969d6486530a13c13b2a47dfcb813869c4d
5
+ SHA512:
6
+ metadata.gz: 8aaf8b2c5f27c638ef612ee0604818e845900dacfa548a37046116c55c804609b9f6e59194be101a909d140a734a5551029add33aec1713d0b0f907f1e0d320c
7
+ data.tar.gz: c193b11a25f445884dc88b47588697de809cbd4ea7740dcb329b89eb2137657e339e3b3ed5637df5590bf25a977b7d09db397d01bd4fa399f510dc8ffdd6cad8
@@ -0,0 +1,327 @@
1
+ name: Openhab-JRuby-Scripting
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ env:
10
+ RUBY_VERSION: 2.5
11
+ GITHUB_TOKEN: ${{ github.token }}
12
+
13
+ jobs:
14
+
15
+ rubocop:
16
+ runs-on: ubuntu-18.04
17
+ continue-on-error: true
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - uses: actions/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ env.RUBY_VERSION }}
23
+ - name: Install bundler
24
+ run: gem install bundler -N
25
+ - name: Gem Cache
26
+ uses: actions/cache@v2
27
+ with:
28
+ path: vendor/bundle
29
+ key: gems-${{ hashFiles('**/Gemfile.lock') }}
30
+ - name: Install gems
31
+ run: |
32
+ bundle config path vendor/bundle
33
+ bundle install --jobs 4 --retry 3
34
+ - name: Rubocop
35
+ run: bundle exec rubocop
36
+
37
+ commit-lint:
38
+ runs-on: ubuntu-latest
39
+ steps:
40
+ - uses: actions/checkout@v2
41
+ with:
42
+ fetch-depth: 0
43
+ - uses: wagoid/commitlint-github-action@v2
44
+
45
+ cucumber-lint:
46
+ runs-on: ubuntu-18.04
47
+ continue-on-error: true
48
+ steps:
49
+ - uses: actions/checkout@v2
50
+ - uses: actions/setup-ruby@v1
51
+ with:
52
+ ruby-version: ${{ env.RUBY_VERSION }}
53
+ - name: Install bundler
54
+ run: gem install bundler -N
55
+ - name: Gem Cache
56
+ uses: actions/cache@v2
57
+ with:
58
+ path: vendor/bundle
59
+ key: gems-${{ hashFiles('**/Gemfile.lock') }}
60
+ - name: Install gems
61
+ run: |
62
+ bundle config path vendor/bundle
63
+ bundle install --jobs 4 --retry 3
64
+ - name: Cucumber Lint
65
+ run: bundle exec cuke_linter
66
+
67
+ yard-coverage:
68
+ runs-on: ubuntu-18.04
69
+ steps:
70
+ - uses: actions/checkout@v2
71
+ - uses: actions/setup-ruby@v1
72
+ with:
73
+ ruby-version: ${{ env.RUBY_VERSION }}
74
+ - name: Install bundler
75
+ run: gem install bundler -N
76
+ - name: Gem Cache
77
+ uses: actions/cache@v2
78
+ with:
79
+ path: vendor/bundle
80
+ key: gems-${{ hashFiles('**/Gemfile.lock') }}
81
+ - name: Install gems
82
+ run: |
83
+ bundle config path vendor/bundle
84
+ bundle install --jobs 4 --retry 3
85
+ - name: Yard Coverage
86
+ run: |
87
+ bundle exec yard stats --list-undoc
88
+ bundle exec yard stats | grep "100.00% documented"
89
+
90
+
91
+ openhab-setup:
92
+ runs-on: ubuntu-18.04
93
+ steps:
94
+ - uses: actions/checkout@v2
95
+ - uses: actions/setup-ruby@v1
96
+ with:
97
+ ruby-version: ${{ env.RUBY_VERSION }}
98
+ - uses: actions/setup-java@v1
99
+ with:
100
+ java-version: '11.0.8'
101
+ java-package: jre
102
+ - name: Install bundler
103
+ run: gem install bundler -N
104
+ - name: Cache Gems
105
+ uses: actions/cache@v2
106
+ with:
107
+ path: vendor/bundle
108
+ key: gems-${{ hashFiles('**/Gemfile.lock') }}
109
+ - name: Install gems
110
+ run: |
111
+ bundle config path vendor/bundle
112
+ bundle install --jobs 4 --retry 3
113
+ - name: Cache OpenHAB setup
114
+ id: cache
115
+ uses: actions/cache@v2
116
+ with:
117
+ path: tmp/
118
+ key: OpenHAB-setup-${{ hashFiles('bundle/*jrubyscripting*.jar') }}
119
+ - name: Setup OpenHAB
120
+ if: steps.cache.outputs.cache-hit != 'true'
121
+ run: bundle exec rake openhab:setup
122
+
123
+ cucumber-matrix:
124
+ runs-on: ubuntu-18.04
125
+ outputs:
126
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
127
+ steps:
128
+ - uses: actions/checkout@v2
129
+ - uses: actions/setup-ruby@v1
130
+ with:
131
+ ruby-version: ${{ env.RUBY_VERSION }}
132
+ - id: set-matrix
133
+ run: |
134
+ JSON=$(ruby -e '
135
+ require "json"
136
+ feature_maps = Dir["features/**/*.feature"].map { |feature| { feature: File.basename(feature,".feature"), file: feature } }
137
+ include_map = {}
138
+ include_map["include"]= feature_maps
139
+ puts include_map.to_json
140
+ ')
141
+ echo $JSON
142
+ echo "::set-output name=matrix::$( echo "$JSON" )"
143
+
144
+ cucumber:
145
+ needs: [cucumber-matrix, openhab-setup]
146
+ runs-on: ubuntu-18.04
147
+ strategy:
148
+ matrix: ${{fromJson(needs.cucumber-matrix.outputs.matrix)}}
149
+ steps:
150
+ - uses: actions/checkout@v1
151
+ - uses: actions/setup-ruby@v1
152
+ with:
153
+ ruby-version: ${{ env.RUBY_VERSION }}
154
+ - uses: actions/setup-java@v1
155
+ with:
156
+ java-version: '11.0.8'
157
+ java-package: jre
158
+ - name: Install bundler
159
+ run: gem install bundler -N
160
+ - name: Restore Gems
161
+ uses: actions/cache@v2
162
+ with:
163
+ path: vendor/bundle
164
+ key: gems-${{ hashFiles('**/Gemfile.lock') }}
165
+ - name: Install gems
166
+ run: |
167
+ bundle config path vendor/bundle
168
+ bundle install --jobs 4 --retry 3
169
+ - name: Restore OpenHAB setup
170
+ uses: actions/cache@v2
171
+ with:
172
+ path: tmp/
173
+ key: OpenHAB-setup-${{ hashFiles('bundle/*jrubyscripting*.jar') }}
174
+ - name: Cucumber
175
+ run: bundle exec rake features[${{ matrix.file }}]
176
+ - name: Generate OpenHAB Dump
177
+ run: bundle exec rake openhab:dump
178
+ if: failure()
179
+ - name: Upload OpenHAB Logs
180
+ uses: actions/upload-artifact@v2
181
+ if: failure()
182
+ with:
183
+ name: OpenHAB-logs-${{ github.workflow }}-${{ github.run_number }}-${{ matrix.feature }}
184
+ path: |
185
+ tmp/cucumber_logs
186
+ tmp/karaf.log
187
+ tmp/openhab/userdata/logs
188
+ tmp/openhab/userdata/*.zip
189
+ tmp/openhab/conf/automation/jsr223/ruby/personal/
190
+ retention-days: 2
191
+
192
+ pickles-docs:
193
+ if: github.ref == 'refs/heads/main'
194
+ runs-on: windows-latest
195
+ steps:
196
+ - uses: actions/checkout@v2
197
+ - name: Install pickles
198
+ run: choco install pickles
199
+ - name: Generate Pickles docs
200
+ shell: cmd
201
+ run: |
202
+ call refreshenv
203
+ pickles -f features -o pickles --df html || VER>NUL
204
+ - uses: actions/upload-artifact@v2
205
+ with:
206
+ name: pickles-docs
207
+ path: pickles/
208
+ if-no-files-found: error
209
+ retention-days: 1
210
+
211
+ docs:
212
+ needs: [cucumber, pickles-docs]
213
+ if: github.ref == 'refs/heads/main'
214
+ runs-on: ubuntu-18.04
215
+ steps:
216
+ - uses: actions/checkout@v2
217
+ - uses: actions/setup-ruby@v1
218
+ with:
219
+ ruby-version: ${{ env.RUBY_VERSION }}
220
+ - name: Install bundler
221
+ run: gem install bundler -N
222
+ - name: Gem Cache
223
+ uses: actions/cache@v2
224
+ with:
225
+ path: vendor/bundle
226
+ key: gems-${{ hashFiles('**/Gemfile.lock') }}
227
+ - name: Install gems
228
+ run: |
229
+ bundle config path vendor/bundle
230
+ bundle install --jobs 4 --retry 3
231
+ - name: Build yard docs
232
+ run: |
233
+ bundle exec rake yard
234
+ - name: Download pickles docs
235
+ uses: actions/download-artifact@v2
236
+ with:
237
+ name: pickles-docs
238
+ path: docs/pickles
239
+ - name: Publish docs
240
+ uses: JamesIves/github-pages-deploy-action@3.7.1
241
+ with:
242
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
243
+ BRANCH: gh-pages
244
+ FOLDER: docs
245
+ CLEAN: true
246
+ SINGLE_COMMIT: true
247
+
248
+
249
+ release:
250
+ needs: cucumber
251
+ if: github.ref == 'refs/heads/main'
252
+ runs-on: ubuntu-18.04
253
+ steps:
254
+ - uses: actions/checkout@v2
255
+ - uses: actions/setup-ruby@v1
256
+ with:
257
+ ruby-version: ${{ env.RUBY_VERSION }}
258
+ - name: Install bundler
259
+ run: gem install bundler -N
260
+ - name: Gem Cache
261
+ uses: actions/cache@v2
262
+ with:
263
+ path: vendor/bundle
264
+ key: gems-${{ hashFiles('**/Gemfile.lock') }}
265
+ - name: Install gems
266
+ run: |
267
+ bundle config path vendor/bundle
268
+ bundle install --jobs 4 --retry 3
269
+ - name: Current Version
270
+ id: current_version
271
+ run: |
272
+ bundle exec rake version
273
+ VERSION=$( bundle exec rake version )
274
+ echo "::set-output name=version::$( echo "$VERSION" )"
275
+ - name: Gets latest created release info
276
+ id: latest_release
277
+ run: |
278
+ git fetch --tags
279
+ git tag | tail -1
280
+ TAG_NAME=$(git tag | tail -1)
281
+ echo "::set-output name=tag_name::$( echo "$TAG_NAME" )"
282
+ - name: Prepare Release
283
+ if: ${{ steps.current_version.outputs.version != steps.latest_release.outputs.tag_name}}
284
+ run: |
285
+ echo "New version detected, preparing release"
286
+ echo "Released Version: ${{ steps.latest_release.outputs.tag_name }}"
287
+ echo "Current Version: ${{ steps.current_version.outputs.version }}"
288
+ bundle exec rake gh:package
289
+ - name: Get JRuby Bundle
290
+ id: jruby_bundle
291
+ if: ${{ steps.current_version.outputs.version != steps.latest_release.outputs.tag_name}}
292
+ run: |
293
+ echo "Finding JRuby Bundle"
294
+ BUNDLE=$(ls bundle/*.jar)
295
+ echo "Found: $BUNDLE"
296
+ echo "::set-output name=file::$( echo "$BUNDLE" )"
297
+ - name: Create Release
298
+ if: ${{ steps.current_version.outputs.version != steps.latest_release.outputs.tag_name}}
299
+ uses: actions/create-release@v1
300
+ id: create_release
301
+ env:
302
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
303
+ with:
304
+ prerelease: true
305
+ tag_name: ${{ steps.current_version.outputs.version }}
306
+ release_name: Release ${{ steps.current_version.outputs.version }}
307
+ body_path: CHANGELOG.md
308
+ - name: Upload OpenHAB JRuby Scripting Assets
309
+ if: ${{ steps.current_version.outputs.version != steps.latest_release.outputs.tag_name}}
310
+ uses: actions/upload-release-asset@v1
311
+ env:
312
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
313
+ with:
314
+ upload_url: ${{ steps.create_release.outputs.upload_url }}
315
+ asset_path: ./pkg/OpenHABJRuby-${{steps.current_version.outputs.version}}.zip
316
+ asset_name: OpenHABJRuby-${{steps.current_version.outputs.version}}.zip
317
+ asset_content_type: application/zip
318
+ - name: Upload OpenHAB JRuby Bundle Assets
319
+ if: ${{ steps.current_version.outputs.version != steps.latest_release.outputs.tag_name}}
320
+ uses: actions/upload-release-asset@v1
321
+ env:
322
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
323
+ with:
324
+ upload_url: ${{ steps.create_release.outputs.upload_url }}
325
+ asset_path: ${{ steps.jruby_bundle.outputs.file }}
326
+ asset_name: OpenHAB JRuby Bundle Jar
327
+ asset_content_type: application/jar
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /_site/
5
+ /docs/.jekyll-cache/
6
+ /docs/yard/
7
+ /coverage/
8
+ /doc/
9
+ /pkg/
10
+ /spec/reports/
11
+ /tmp/
12
+ /.obsidian/
13
+ openhab.code-workspace
14
+ /.idea/
15
+ .java-verison
16
+ .ruby-version
17
+ .jekyll-cache/
data/.java-version ADDED
@@ -0,0 +1 @@
1
+ 11.0.8
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --output-dir docs/yard
data/CHANGELOG.md ADDED
@@ -0,0 +1,113 @@
1
+ # JRuby OpenHAB Scripting change log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ Project versioning adheres to [Semantic Versioning](http://semver.org/). <br>
6
+ Commit convention is based on [Conventional Commits](http://conventionalcommits.org). <br>
7
+ Change log format is based on [Keep a Changelog](http://keepachangelog.com/). <br>
8
+
9
+ ## 2.9.0
10
+ ### Added
11
+ - Support OpenHAB Actions
12
+
13
+ ## 2.8.1
14
+ ### Fixed
15
+ - Fixed StringItem comparison against a string
16
+
17
+ ## 2.8.0
18
+ ### Added
19
+ - Support for accessing item metadata namespace, value, and configuration
20
+
21
+ ## 2.7.0
22
+ ### Added
23
+ - SwitchItem.toggle to toggle a SwitchItem similar to SwitchItem << !SwitchItem
24
+
25
+ ## 2.6.1
26
+ ### Fixed
27
+ - Race condition with `after` block
28
+ - Unknown constant error in certain cases uses `between` blocks
29
+
30
+ ## 2.6.0
31
+ ### Added
32
+ - `TimeOfDay.between?` to check if TimeOfDay object is between supplied range
33
+ ### Fixed
34
+ - Reference in rules to TimeOfDay::ALL_DAY
35
+
36
+
37
+ ## 2.5.1
38
+ ### Fixed
39
+ - Corrected time of day parsing to be case insensitive
40
+ - Merge conflict
41
+
42
+ ## 2.5.0
43
+ ### Added
44
+ - `between` can be used throughout rules systems
45
+ #### Changed
46
+ - TimeOfDay parsing now supports AM/PM
47
+
48
+ ## 2.4.0
49
+ ### Added
50
+ - Support to allow comparison of TimeOfDay objects against strings
51
+ - Support for storing and restoring Item states
52
+
53
+ ## 2.3.0
54
+ ### Added
55
+ - Support for rule description
56
+
57
+ ## 2.2.1
58
+ ### Fixed
59
+ - `!` operator on SwitchItems now returns ON if item is UNDEF or NULL
60
+
61
+ ## 2.2.0
62
+ ### Added
63
+ - Support for thing triggers in rules
64
+
65
+ ### Changed
66
+ - Updated docs to point to OpenHAB document for script locations
67
+
68
+ ## 2.1.0
69
+ ### Added
70
+ - Timer delegate for 'active?', 'running?', 'terminated?'
71
+
72
+ ## 2.0.1
73
+ ### Fixed
74
+ - Logging of mod and/or inputs can cause an exception of they are nil
75
+ - Timers (after) now available inside of rules
76
+
77
+ ### Changed
78
+ - DSL imports now shared by OpenHAB module and Rules Module
79
+
80
+ ## 2.0.0
81
+ ### Added
82
+ - Timer delegate for `after` method that supports reschedule
83
+
84
+ ### Changed
85
+ - **Breaking:** `after` now returns a ruby Timer delegate
86
+
87
+ ## 1.1.0
88
+ ### Added
89
+ - Added support for channels triggers to rules
90
+
91
+ ### Changed
92
+ - Fixed documentation for changed/updated/receive_command options
93
+
94
+ ## 1.0.0
95
+ ### Changed
96
+ - **Breaking:** Changed commanded method for rules to received_command
97
+
98
+ ## 0.2.0
99
+ ### Added
100
+ - Ability to execute rules based on commands sent to items, groups and group members
101
+ - Ability to send updates from item objects
102
+
103
+ ### Changed
104
+ - Fixed documentation for comparing dimensioned items against strings
105
+
106
+ ## 0.1.0
107
+ ### Added
108
+ - Support for item updates within rules languages
109
+ ### Changed
110
+ - Installation instructions to specify using latest release rather than a specific version
111
+
112
+ ## 0.0.1
113
+ - Initial release