openhab-scripting 4.46.2 → 5.0.0
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/lib/openhab/core/actions/audio.rb +47 -0
- data/lib/openhab/core/actions/ephemeris.rb +39 -0
- data/lib/openhab/core/actions/exec.rb +51 -0
- data/lib/openhab/core/actions/http.rb +80 -0
- data/lib/openhab/core/actions/ping.rb +30 -0
- data/lib/openhab/core/actions/transformation.rb +32 -0
- data/lib/openhab/core/actions/voice.rb +36 -0
- data/lib/openhab/core/actions.rb +82 -0
- data/lib/openhab/core/dependency_tracking.rb +34 -0
- data/lib/openhab/core/dto/item_channel_link.rb +33 -0
- data/lib/openhab/core/dto/thing.rb +27 -0
- data/lib/openhab/core/dto.rb +11 -0
- data/lib/openhab/core/entity_lookup.rb +152 -70
- data/lib/openhab/core/events/abstract_event.rb +18 -0
- data/lib/openhab/core/events/abstract_item_registry_event.rb +36 -0
- data/lib/openhab/core/events/abstract_thing_registry_event.rb +40 -0
- data/lib/openhab/core/events/item_command_event.rb +78 -0
- data/lib/openhab/core/events/item_event.rb +22 -0
- data/lib/openhab/core/events/item_state_changed_event.rb +75 -0
- data/lib/openhab/core/events/item_state_event.rb +79 -0
- data/lib/openhab/core/events/thing_status_info_event.rb +55 -0
- data/lib/openhab/core/events.rb +10 -0
- data/lib/openhab/core/items/accepted_data_types.rb +29 -0
- data/lib/openhab/core/items/color_item.rb +52 -0
- data/lib/openhab/core/items/contact_item.rb +52 -0
- data/lib/openhab/core/items/date_time_item.rb +59 -0
- data/lib/openhab/core/items/dimmer_item.rb +148 -0
- data/lib/openhab/core/items/generic_item.rb +292 -0
- data/lib/openhab/core/items/group_item.rb +176 -0
- data/lib/openhab/{dsl → core}/items/image_item.rb +35 -29
- data/lib/openhab/core/items/item.rb +273 -0
- data/lib/openhab/core/items/location_item.rb +34 -0
- data/lib/openhab/core/items/metadata/hash.rb +433 -0
- data/lib/openhab/core/items/metadata/namespace_hash.rb +475 -0
- data/lib/openhab/core/items/metadata/provider.rb +48 -0
- data/lib/openhab/core/items/metadata.rb +11 -0
- data/lib/openhab/core/items/number_item.rb +62 -0
- data/lib/openhab/core/items/numeric_item.rb +22 -0
- data/lib/openhab/core/items/persistence.rb +416 -0
- data/lib/openhab/core/items/player_item.rb +66 -0
- data/lib/openhab/core/items/provider.rb +44 -0
- data/lib/openhab/core/items/proxy.rb +136 -0
- data/lib/openhab/core/items/registry.rb +86 -0
- data/lib/openhab/core/items/rollershutter_item.rb +68 -0
- data/lib/openhab/core/items/semantics/enumerable.rb +177 -0
- data/lib/openhab/core/items/semantics.rb +473 -0
- data/lib/openhab/core/items/state_storage.rb +53 -0
- data/lib/openhab/core/items/string_item.rb +28 -0
- data/lib/openhab/core/items/switch_item.rb +78 -0
- data/lib/openhab/core/items.rb +108 -0
- data/lib/openhab/{dsl → core}/lazy_array.rb +9 -3
- data/lib/openhab/core/profile_factory.rb +132 -0
- data/lib/openhab/core/provider.rb +230 -0
- data/lib/openhab/core/proxy.rb +130 -0
- data/lib/openhab/core/registry.rb +40 -0
- data/lib/openhab/core/rules/module.rb +26 -0
- data/lib/openhab/core/rules/provider.rb +25 -0
- data/lib/openhab/core/rules/registry.rb +76 -0
- data/lib/openhab/core/rules/rule.rb +150 -0
- data/lib/openhab/core/rules.rb +25 -0
- data/lib/openhab/core/script_handling.rb +78 -20
- data/lib/openhab/core/things/channel.rb +48 -0
- data/lib/openhab/core/things/channel_uid.rb +51 -0
- data/lib/openhab/core/things/item_channel_link.rb +33 -0
- data/lib/openhab/core/things/links/provider.rb +78 -0
- data/lib/openhab/core/things/profile_callback.rb +52 -0
- data/lib/openhab/core/things/provider.rb +29 -0
- data/lib/openhab/core/things/proxy.rb +87 -0
- data/lib/openhab/core/things/registry.rb +73 -0
- data/lib/openhab/core/things/thing.rb +194 -0
- data/lib/openhab/core/things.rb +22 -0
- data/lib/openhab/core/timer.rb +148 -0
- data/lib/openhab/{dsl → core}/types/comparable_type.rb +5 -3
- data/lib/openhab/{dsl → core}/types/date_time_type.rb +55 -127
- data/lib/openhab/{dsl → core}/types/decimal_type.rb +50 -48
- data/lib/openhab/{dsl → core}/types/hsb_type.rb +35 -83
- data/lib/openhab/core/types/increase_decrease_type.rb +34 -0
- data/lib/openhab/core/types/next_previous_type.rb +34 -0
- data/lib/openhab/{dsl → core}/types/numeric_type.rb +20 -7
- data/lib/openhab/core/types/on_off_type.rb +46 -0
- data/lib/openhab/core/types/open_closed_type.rb +41 -0
- data/lib/openhab/{dsl → core}/types/percent_type.rb +19 -20
- data/lib/openhab/core/types/play_pause_type.rb +38 -0
- data/lib/openhab/core/types/point_type.rb +117 -0
- data/lib/openhab/core/types/quantity_type.rb +325 -0
- data/lib/openhab/core/types/raw_type.rb +26 -0
- data/lib/openhab/core/types/refresh_type.rb +27 -0
- data/lib/openhab/core/types/rewind_fastforward_type.rb +38 -0
- data/lib/openhab/core/types/stop_move_type.rb +34 -0
- data/lib/openhab/{dsl → core}/types/string_type.rb +17 -28
- data/lib/openhab/{dsl → core}/types/type.rb +42 -40
- data/lib/openhab/core/types/un_def_type.rb +38 -0
- data/lib/openhab/core/types/up_down_type.rb +50 -0
- data/lib/openhab/core/types.rb +82 -0
- data/lib/openhab/{dsl → core}/uid.rb +4 -23
- data/lib/openhab/core/value_cache.rb +188 -0
- data/lib/openhab/core.rb +98 -0
- data/lib/openhab/core_ext/between.rb +32 -0
- data/lib/openhab/core_ext/ephemeris.rb +53 -0
- data/lib/openhab/core_ext/java/class.rb +34 -0
- data/lib/openhab/core_ext/java/duration.rb +142 -0
- data/lib/openhab/core_ext/java/list.rb +436 -0
- data/lib/openhab/core_ext/java/local_date.rb +104 -0
- data/lib/openhab/core_ext/java/local_time.rb +118 -0
- data/lib/openhab/core_ext/java/map.rb +66 -0
- data/lib/openhab/core_ext/java/month.rb +71 -0
- data/lib/openhab/core_ext/java/month_day.rb +119 -0
- data/lib/openhab/core_ext/java/period.rb +103 -0
- data/lib/openhab/core_ext/java/temporal_amount.rb +34 -0
- data/lib/openhab/core_ext/java/time.rb +62 -0
- data/lib/openhab/core_ext/java/unit.rb +15 -0
- data/lib/openhab/core_ext/java/zoned_date_time.rb +213 -0
- data/lib/openhab/core_ext/ruby/array.rb +21 -0
- data/lib/openhab/core_ext/ruby/date.rb +96 -0
- data/lib/openhab/core_ext/ruby/date_time.rb +55 -0
- data/lib/openhab/core_ext/ruby/module.rb +15 -0
- data/lib/openhab/core_ext/ruby/numeric.rb +195 -0
- data/lib/openhab/core_ext/ruby/range.rb +70 -0
- data/lib/openhab/core_ext/ruby/symbol.rb +7 -0
- data/lib/openhab/core_ext/ruby/time.rb +108 -0
- data/lib/openhab/core_ext.rb +18 -0
- data/lib/openhab/dsl/debouncer.rb +259 -0
- data/lib/openhab/dsl/events/watch_event.rb +18 -0
- data/lib/openhab/dsl/events.rb +9 -0
- data/lib/openhab/dsl/gems.rb +1 -1
- data/lib/openhab/dsl/items/builder.rb +578 -0
- data/lib/openhab/dsl/items/ensure.rb +73 -82
- data/lib/openhab/dsl/items/timed_command.rb +214 -159
- data/lib/openhab/dsl/rules/automation_rule.rb +126 -115
- data/lib/openhab/dsl/rules/builder.rb +1935 -0
- data/lib/openhab/dsl/rules/guard.rb +51 -114
- data/lib/openhab/dsl/rules/name_inference.rb +66 -25
- data/lib/openhab/dsl/rules/property.rb +48 -75
- data/lib/openhab/dsl/rules/rule_triggers.rb +22 -27
- data/lib/openhab/dsl/rules/terse.rb +58 -14
- data/lib/openhab/dsl/rules/triggers/changed.rb +48 -94
- data/lib/openhab/dsl/rules/triggers/channel.rb +9 -40
- data/lib/openhab/dsl/rules/triggers/command.rb +14 -63
- data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +34 -69
- data/lib/openhab/dsl/rules/triggers/conditions/proc.rb +6 -14
- data/lib/openhab/dsl/rules/triggers/cron/cron.rb +48 -82
- data/lib/openhab/dsl/rules/triggers/cron/cron_handler.rb +30 -47
- data/lib/openhab/dsl/rules/triggers/trigger.rb +7 -28
- data/lib/openhab/dsl/rules/triggers/updated.rb +21 -45
- data/lib/openhab/dsl/rules/triggers/watch/watch_handler.rb +257 -102
- data/lib/openhab/dsl/rules/triggers.rb +12 -0
- data/lib/openhab/dsl/rules.rb +8 -0
- data/lib/openhab/dsl/things/builder.rb +299 -0
- data/lib/openhab/{core → dsl}/thread_local.rb +27 -17
- data/lib/openhab/dsl/timer_manager.rb +204 -0
- data/lib/openhab/dsl/version.rb +9 -0
- data/lib/openhab/dsl.rb +979 -0
- data/lib/openhab/log.rb +355 -0
- data/lib/openhab/osgi.rb +68 -0
- data/lib/openhab/rspec/configuration.rb +56 -0
- data/lib/openhab/rspec/example_group.rb +132 -0
- data/lib/openhab/rspec/helpers.rb +458 -0
- data/lib/openhab/rspec/hooks.rb +113 -0
- data/lib/openhab/rspec/jruby.rb +46 -0
- data/lib/openhab/rspec/karaf.rb +851 -0
- data/lib/openhab/rspec/mocks/bundle_install_support.rb +25 -0
- data/lib/openhab/rspec/mocks/bundle_resolver.rb +30 -0
- data/lib/openhab/rspec/mocks/event_admin.rb +146 -0
- data/lib/openhab/rspec/mocks/instance_method_stasher.rb +22 -0
- data/lib/openhab/rspec/mocks/persistence_service.rb +155 -0
- data/lib/openhab/rspec/mocks/safe_caller.rb +40 -0
- data/lib/openhab/rspec/mocks/space.rb +23 -0
- data/lib/openhab/rspec/mocks/synchronous_executor.rb +63 -0
- data/lib/openhab/rspec/mocks/thing_handler.rb +76 -0
- data/lib/openhab/rspec/mocks/timer.rb +134 -0
- data/lib/openhab/rspec/openhab/core/actions.rb +38 -0
- data/lib/openhab/rspec/openhab/core/items/proxy.rb +15 -0
- data/lib/openhab/rspec/openhab/core/things/proxy.rb +27 -0
- data/lib/openhab/rspec/shell.rb +31 -0
- data/lib/openhab/rspec/suspend_rules.rb +50 -0
- data/lib/openhab/rspec.rb +26 -0
- data/lib/openhab/yard/base_helper.rb +19 -0
- data/lib/openhab/yard/cli/stats.rb +23 -0
- data/lib/openhab/yard/code_objects/group_object.rb +23 -0
- data/lib/openhab/yard/code_objects/java/base.rb +31 -0
- data/lib/openhab/yard/code_objects/java/class_object.rb +11 -0
- data/lib/openhab/yard/code_objects/java/field_object.rb +15 -0
- data/lib/openhab/yard/code_objects/java/interface_object.rb +15 -0
- data/lib/openhab/yard/code_objects/java/package_object.rb +11 -0
- data/lib/openhab/yard/code_objects/java/proxy.rb +23 -0
- data/lib/openhab/yard/coderay.rb +17 -0
- data/lib/openhab/yard/handlers/jruby/base.rb +58 -0
- data/lib/openhab/yard/handlers/jruby/class_handler.rb +18 -0
- data/lib/openhab/yard/handlers/jruby/constant_handler.rb +18 -0
- data/lib/openhab/yard/handlers/jruby/java_import_handler.rb +30 -0
- data/lib/openhab/yard/handlers/jruby/mixin_handler.rb +23 -0
- data/lib/openhab/yard/html_helper.rb +78 -0
- data/lib/openhab/yard/markdown_helper.rb +148 -0
- data/lib/openhab/yard/tags/constant_directive.rb +20 -0
- data/lib/openhab/yard/tags/group_directive.rb +24 -0
- data/lib/openhab/yard/tags/library.rb +3 -0
- data/lib/openhab/yard.rb +38 -0
- metadata +475 -106
- data/lib/openhab/core/item_proxy.rb +0 -29
- data/lib/openhab/core/load_path.rb +0 -19
- data/lib/openhab/core/openhab_setup.rb +0 -29
- data/lib/openhab/core/osgi.rb +0 -58
- data/lib/openhab/core/services.rb +0 -24
- data/lib/openhab/dsl/actions.rb +0 -114
- data/lib/openhab/dsl/between.rb +0 -25
- data/lib/openhab/dsl/channel.rb +0 -43
- data/lib/openhab/dsl/dsl.rb +0 -59
- data/lib/openhab/dsl/group.rb +0 -54
- data/lib/openhab/dsl/imports.rb +0 -21
- data/lib/openhab/dsl/items/color_item.rb +0 -76
- data/lib/openhab/dsl/items/comparable_item.rb +0 -62
- data/lib/openhab/dsl/items/contact_item.rb +0 -41
- data/lib/openhab/dsl/items/date_time_item.rb +0 -65
- data/lib/openhab/dsl/items/dimmer_item.rb +0 -65
- data/lib/openhab/dsl/items/generic_item.rb +0 -229
- data/lib/openhab/dsl/items/group_item.rb +0 -127
- data/lib/openhab/dsl/items/item_equality.rb +0 -59
- data/lib/openhab/dsl/items/item_registry.rb +0 -54
- data/lib/openhab/dsl/items/items.rb +0 -109
- data/lib/openhab/dsl/items/location_item.rb +0 -59
- data/lib/openhab/dsl/items/metadata.rb +0 -326
- data/lib/openhab/dsl/items/number_item.rb +0 -17
- data/lib/openhab/dsl/items/numeric_item.rb +0 -87
- data/lib/openhab/dsl/items/persistence.rb +0 -307
- data/lib/openhab/dsl/items/player_item.rb +0 -58
- data/lib/openhab/dsl/items/rollershutter_item.rb +0 -51
- data/lib/openhab/dsl/items/semantics/enumerable.rb +0 -91
- data/lib/openhab/dsl/items/semantics.rb +0 -227
- data/lib/openhab/dsl/items/string_item.rb +0 -51
- data/lib/openhab/dsl/items/switch_item.rb +0 -70
- data/lib/openhab/dsl/monkey_patch/actions/actions.rb +0 -4
- data/lib/openhab/dsl/monkey_patch/actions/script_thing_actions.rb +0 -39
- data/lib/openhab/dsl/monkey_patch/events/events.rb +0 -7
- data/lib/openhab/dsl/monkey_patch/events/item_command.rb +0 -85
- data/lib/openhab/dsl/monkey_patch/events/item_event.rb +0 -28
- data/lib/openhab/dsl/monkey_patch/events/item_state.rb +0 -61
- data/lib/openhab/dsl/monkey_patch/events/item_state_changed.rb +0 -60
- data/lib/openhab/dsl/monkey_patch/events/thing_status_info.rb +0 -33
- data/lib/openhab/dsl/monkey_patch/java/java.rb +0 -4
- data/lib/openhab/dsl/monkey_patch/java/local_time.rb +0 -44
- data/lib/openhab/dsl/monkey_patch/java/time_extensions.rb +0 -50
- data/lib/openhab/dsl/monkey_patch/java/zoned_date_time.rb +0 -45
- data/lib/openhab/dsl/monkey_patch/ruby/number.rb +0 -104
- data/lib/openhab/dsl/monkey_patch/ruby/ruby.rb +0 -6
- data/lib/openhab/dsl/monkey_patch/ruby/string.rb +0 -47
- data/lib/openhab/dsl/monkey_patch/ruby/time.rb +0 -61
- data/lib/openhab/dsl/openhab.rb +0 -30
- data/lib/openhab/dsl/persistence.rb +0 -27
- data/lib/openhab/dsl/rules/item_event.rb +0 -19
- data/lib/openhab/dsl/rules/rule.rb +0 -160
- data/lib/openhab/dsl/rules/rule_config.rb +0 -147
- data/lib/openhab/dsl/rules/triggers/generic.rb +0 -31
- data/lib/openhab/dsl/rules/triggers/triggers.rb +0 -11
- data/lib/openhab/dsl/rules/triggers/watch/watch.rb +0 -81
- data/lib/openhab/dsl/states.rb +0 -89
- data/lib/openhab/dsl/things.rb +0 -147
- data/lib/openhab/dsl/time/month_day.rb +0 -180
- data/lib/openhab/dsl/time/time_of_day.rb +0 -235
- data/lib/openhab/dsl/timers/manager.rb +0 -119
- data/lib/openhab/dsl/timers/reentrant_timer.rb +0 -38
- data/lib/openhab/dsl/timers/timer.rb +0 -132
- data/lib/openhab/dsl/timers.rb +0 -77
- data/lib/openhab/dsl/types/increase_decrease_type.rb +0 -23
- data/lib/openhab/dsl/types/next_previous_type.rb +0 -23
- data/lib/openhab/dsl/types/on_off_type.rb +0 -28
- data/lib/openhab/dsl/types/open_closed_type.rb +0 -29
- data/lib/openhab/dsl/types/play_pause_type.rb +0 -27
- data/lib/openhab/dsl/types/point_type.rb +0 -180
- data/lib/openhab/dsl/types/quantity_type.rb +0 -265
- data/lib/openhab/dsl/types/refresh_type.rb +0 -18
- data/lib/openhab/dsl/types/rewind_fastforward_type.rb +0 -33
- data/lib/openhab/dsl/types/stop_move_type.rb +0 -23
- data/lib/openhab/dsl/types/types.rb +0 -83
- data/lib/openhab/dsl/types/un_def_type.rb +0 -22
- data/lib/openhab/dsl/types/up_down_type.rb +0 -32
- data/lib/openhab/dsl/units.rb +0 -45
- data/lib/openhab/log/configuration.rb +0 -21
- data/lib/openhab/log/logger.rb +0 -282
- data/lib/openhab/version.rb +0 -9
- data/lib/openhab.rb +0 -36
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "singleton"
|
|
4
|
+
|
|
5
|
+
require "openhab/core/entity_lookup"
|
|
6
|
+
require "openhab/core/lazy_array"
|
|
7
|
+
require "openhab/dsl/items/builder"
|
|
8
|
+
|
|
9
|
+
module OpenHAB
|
|
10
|
+
module Core
|
|
11
|
+
module Items
|
|
12
|
+
#
|
|
13
|
+
# Provides access to all openHAB {Item items}, and acts like an array.
|
|
14
|
+
#
|
|
15
|
+
class Registry
|
|
16
|
+
include LazyArray
|
|
17
|
+
include Singleton
|
|
18
|
+
|
|
19
|
+
# Fetches the named item from the the ItemRegistry
|
|
20
|
+
# @param [String] name
|
|
21
|
+
# @return [Item] Item from registry, nil if item missing or requested item is a Group Type
|
|
22
|
+
def [](name)
|
|
23
|
+
EntityLookup.lookup_item(name)
|
|
24
|
+
rescue org.openhab.core.items.ItemNotFoundException
|
|
25
|
+
nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Returns true if the given item name exists
|
|
29
|
+
# @param name [String] Item name to check
|
|
30
|
+
# @return [true,false] true if the item exists, false otherwise
|
|
31
|
+
def key?(name)
|
|
32
|
+
!$ir.getItems(name).empty?
|
|
33
|
+
end
|
|
34
|
+
alias_method :include?, :key?
|
|
35
|
+
# @deprecated
|
|
36
|
+
alias_method :has_key?, :key?
|
|
37
|
+
|
|
38
|
+
# Explicit conversion to array
|
|
39
|
+
# @return [Array]
|
|
40
|
+
def to_a
|
|
41
|
+
$ir.items.map { |item| Proxy.new(item) }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
#
|
|
45
|
+
# Enter the Item Builder DSL.
|
|
46
|
+
#
|
|
47
|
+
# @param (see Core::Provider.current)
|
|
48
|
+
# @yield Block executed in the context of a {DSL::Items::Builder}
|
|
49
|
+
# @return [Object] The return value of the block.
|
|
50
|
+
#
|
|
51
|
+
# (see Items::Builder)
|
|
52
|
+
#
|
|
53
|
+
def build(preferred_provider = nil, &block)
|
|
54
|
+
DSL::Items::BaseBuilderDSL.new(preferred_provider).instance_eval_with_dummy_items(&block)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
#
|
|
58
|
+
# Remove an item.
|
|
59
|
+
#
|
|
60
|
+
# The item must be a managed item (typically created by Ruby or in the UI).
|
|
61
|
+
#
|
|
62
|
+
# Any associated metadata or channel links are also removed.
|
|
63
|
+
#
|
|
64
|
+
# @param [String, Item] item_name
|
|
65
|
+
# @param recursive [true, false] Remove the item's members if it's a group
|
|
66
|
+
# @return [Item, nil] The removed item, if found.
|
|
67
|
+
def remove(item_name, recursive: false)
|
|
68
|
+
item_name = item_name.name if item_name.is_a?(Item)
|
|
69
|
+
provider = Provider.registry.provider_for(item_name)
|
|
70
|
+
unless provider.is_a?(ManagedProvider)
|
|
71
|
+
raise "Cannot remove item #{item_name} from non-managed provider #{provider.inspect}"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
Metadata::Provider.registry.providers.grep(ManagedProvider).each do |managed_provider|
|
|
75
|
+
managed_provider.remove_item_metadata(item_name)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
Things::Links::Provider.registry.providers.grep(ManagedProvider).each do |managed_provider|
|
|
79
|
+
managed_provider.remove_links_for_item(item_name)
|
|
80
|
+
end
|
|
81
|
+
provider.remove(item_name, recursive)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "generic_item"
|
|
4
|
+
require_relative "numeric_item"
|
|
5
|
+
|
|
6
|
+
module OpenHAB
|
|
7
|
+
module Core
|
|
8
|
+
module Items
|
|
9
|
+
java_import org.openhab.core.library.items.RollershutterItem
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# A {RollershutterItem} allows the control of roller shutters, i.e.
|
|
13
|
+
# moving them up, down, stopping or setting it to close to a certain
|
|
14
|
+
# percentage.
|
|
15
|
+
#
|
|
16
|
+
# @!attribute [r] state
|
|
17
|
+
# @return [PercentType, UpDownType, nil]
|
|
18
|
+
#
|
|
19
|
+
# @example Roll up all Rollershutters in a group
|
|
20
|
+
# Shutters.up
|
|
21
|
+
#
|
|
22
|
+
# @example Log a warning for all rollershutters that are not up
|
|
23
|
+
# Shutters.reject(&:up?).each do |item|
|
|
24
|
+
# logger.warn("#{item.name} is not rolled up!")
|
|
25
|
+
# end
|
|
26
|
+
#
|
|
27
|
+
# @example Set rollershutter to a specified position
|
|
28
|
+
# Example_Rollershutter << 40
|
|
29
|
+
class RollershutterItem < GenericItem
|
|
30
|
+
include NumericItem
|
|
31
|
+
|
|
32
|
+
# @!method up?
|
|
33
|
+
# Check if the item state == {UP}
|
|
34
|
+
# @return [true,false]
|
|
35
|
+
|
|
36
|
+
# @!method down?
|
|
37
|
+
# Check if the item state == {DOWN}
|
|
38
|
+
# @return [true,false]
|
|
39
|
+
|
|
40
|
+
# @!method up
|
|
41
|
+
# Send the {UP} command to the item
|
|
42
|
+
# @return [RollershutterItem] `self`
|
|
43
|
+
|
|
44
|
+
# @!method down
|
|
45
|
+
# Send the {DOWN} command to the item
|
|
46
|
+
# @return [RollershutterItem] `self`
|
|
47
|
+
|
|
48
|
+
# @!method stop
|
|
49
|
+
# Send the {STOP} command to the item
|
|
50
|
+
# @return [RollershutterItem] `self`
|
|
51
|
+
|
|
52
|
+
# @!method move
|
|
53
|
+
# Send the {MOVE} command to the item
|
|
54
|
+
# @return [RollershutterItem] `self`
|
|
55
|
+
|
|
56
|
+
# raw numbers translate directly to PercentType, not a DecimalType
|
|
57
|
+
# @!visibility private
|
|
58
|
+
def format_type(command)
|
|
59
|
+
return Types::PercentType.new(command) if command.is_a?(Numeric)
|
|
60
|
+
|
|
61
|
+
super
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# @!parse RollershutterItem = OpenHAB::Core::Items::RollershutterItem
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# Additions to Enumerable to allow easily filtering and commanding groups of items.
|
|
5
|
+
#
|
|
6
|
+
# @example Turn on all members of a group
|
|
7
|
+
# gOutsideLights.members.on
|
|
8
|
+
#
|
|
9
|
+
# @example Turn on all lights that are tagged `NightLights`
|
|
10
|
+
# items.tagged("NightLights").on
|
|
11
|
+
#
|
|
12
|
+
# @example Close all blinds in the same room when the TV is turned on
|
|
13
|
+
# rule "Close Blinds" do
|
|
14
|
+
# changed gTVPower.members, to: ON
|
|
15
|
+
# triggered do |item|
|
|
16
|
+
# item.location
|
|
17
|
+
# .equipments(Semantics::Blinds)
|
|
18
|
+
# .points(Semantics::OpenLevel)
|
|
19
|
+
# .down
|
|
20
|
+
# end
|
|
21
|
+
# end
|
|
22
|
+
#
|
|
23
|
+
# @example {OpenHAB::DSL::Items::Ensure::Ensurable Ensure} works on Enumerable
|
|
24
|
+
# gLights.members.ensure.on
|
|
25
|
+
# # or
|
|
26
|
+
# gLights.members.ensure << ON
|
|
27
|
+
#
|
|
28
|
+
# @example Send a command to a list of items
|
|
29
|
+
# [Light1, Light2, Light3].on
|
|
30
|
+
# # or
|
|
31
|
+
# [Light1, Light2, Light3].command(ON) # can't use <<, because that's already defined on Array
|
|
32
|
+
#
|
|
33
|
+
# @see OpenHAB::Core::Items::Semantics Semantics
|
|
34
|
+
#
|
|
35
|
+
|
|
36
|
+
module Enumerable
|
|
37
|
+
#
|
|
38
|
+
# @!group Filtering Methods
|
|
39
|
+
# Methods to help filter the members of the Enumerable
|
|
40
|
+
#
|
|
41
|
+
|
|
42
|
+
# Returns a new array of items that have at least one of the given tags
|
|
43
|
+
#
|
|
44
|
+
# @param tags [String, Module]
|
|
45
|
+
# @return [Array<Item>]
|
|
46
|
+
def tagged(*tags)
|
|
47
|
+
select { |i| i.tagged?(*tags) }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Returns a new array of items that do not have any of the given tags
|
|
51
|
+
# @param tags [String, Module]
|
|
52
|
+
# @return [Array<Item>]
|
|
53
|
+
def not_tagged(*tags)
|
|
54
|
+
reject { |i| i.tagged?(*tags) }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Returns a new array of items that are a member of at least one of the given groups
|
|
58
|
+
# @param groups [String, GroupItem]
|
|
59
|
+
# @return [Array<Item>]
|
|
60
|
+
def member_of(*groups)
|
|
61
|
+
select { |i| i.member_of?(*groups) }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Returns a new array of items that are not a member of any of the given groups
|
|
65
|
+
# @param groups [String, GroupItem]
|
|
66
|
+
# @return [Array<Item>]
|
|
67
|
+
def not_member_of(*groups)
|
|
68
|
+
reject { |i| i.member_of?(*groups) }
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Returns the group members of all group elements
|
|
72
|
+
# @return [Array<Item>]
|
|
73
|
+
def members
|
|
74
|
+
grep(OpenHAB::Core::Items::GroupItem).flat_map(&:members).uniq
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Returns all non-group members of all group elements, recursively
|
|
78
|
+
# @return [Array<Item>]
|
|
79
|
+
def all_members
|
|
80
|
+
grep(OpenHAB::Core::Items::GroupItem).flat_map(&:all_members).uniq
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Returns the groups of all elements
|
|
84
|
+
# @return [Array<GroupItem>]
|
|
85
|
+
def groups
|
|
86
|
+
flat_map(&:groups).uniq
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Returns all groups all elements are a part of, recursively
|
|
90
|
+
# @return [Array<GroupItem>]
|
|
91
|
+
def all_groups
|
|
92
|
+
flat_map(&:all_groups).uniq
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# @!group Items State and Command Methods
|
|
96
|
+
|
|
97
|
+
# Send a command to every item in the collection
|
|
98
|
+
# @return [self, nil] nil when `ensure` is in effect and all the items were already in the same state,
|
|
99
|
+
# otherwise self
|
|
100
|
+
def command(command)
|
|
101
|
+
self if count { |i| i.command(command) }.positive?
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Update the state of every item in the collection
|
|
105
|
+
# @return [self, nil] nil when `ensure` is in effect and all the items were already in the same state,
|
|
106
|
+
# otherwise self
|
|
107
|
+
def update(state)
|
|
108
|
+
self if count { |i| i.update(state) }.positive?
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# @!method refresh
|
|
112
|
+
# Send the {REFRESH} command to every item in the collection
|
|
113
|
+
# @return [self]
|
|
114
|
+
|
|
115
|
+
# @!method on
|
|
116
|
+
# Send the {ON} command to every item in the collection
|
|
117
|
+
# @return [self]
|
|
118
|
+
|
|
119
|
+
# @!method off
|
|
120
|
+
# Send the {OFF} command to every item in the collection
|
|
121
|
+
# @return [self]
|
|
122
|
+
|
|
123
|
+
# @!method up
|
|
124
|
+
# Send the {UP} command to every item in the collection
|
|
125
|
+
# @return [self]
|
|
126
|
+
|
|
127
|
+
# @!method down
|
|
128
|
+
# Send the {DOWN} command to every item in the collection
|
|
129
|
+
# @return [self]
|
|
130
|
+
|
|
131
|
+
# @!method stop
|
|
132
|
+
# Send the {STOP} command to every item in the collection
|
|
133
|
+
# @return [self]
|
|
134
|
+
|
|
135
|
+
# @!method move
|
|
136
|
+
# Send the {MOVE} command to every item in the collection
|
|
137
|
+
# @return [self]
|
|
138
|
+
|
|
139
|
+
# @!method increase
|
|
140
|
+
# Send the {INCREASE} command to every item in the collection
|
|
141
|
+
# @return [self]
|
|
142
|
+
|
|
143
|
+
# @!method decrease
|
|
144
|
+
# Send the {DECREASE} command to every item in the collection
|
|
145
|
+
# @return [self]
|
|
146
|
+
|
|
147
|
+
# @!method play
|
|
148
|
+
# Send the {PLAY} command to every item in the collection
|
|
149
|
+
# @return [self]
|
|
150
|
+
|
|
151
|
+
# @!method pause
|
|
152
|
+
# Send the {PAUSE} command to every item in the collection
|
|
153
|
+
# @return [self]
|
|
154
|
+
|
|
155
|
+
# @!method rewind
|
|
156
|
+
# Send the {REWIND} command to every item in the collection
|
|
157
|
+
# @return [self]
|
|
158
|
+
|
|
159
|
+
# @!method fast_forward
|
|
160
|
+
# Send the {FASTFORWARD} command to every item in the collection
|
|
161
|
+
# @return [self]
|
|
162
|
+
|
|
163
|
+
# @!method next
|
|
164
|
+
# Send the {NEXT} command to every item in the collection
|
|
165
|
+
# @return [self]
|
|
166
|
+
|
|
167
|
+
# @!method previous
|
|
168
|
+
# Send the {PREVIOUS} command to every item in the collection
|
|
169
|
+
# @return [self]
|
|
170
|
+
|
|
171
|
+
# @!visibility private
|
|
172
|
+
# can't use `include`, because Enumerable has already been included
|
|
173
|
+
# in other classes
|
|
174
|
+
def ensure
|
|
175
|
+
OpenHAB::DSL::Items::Ensure::ItemDelegate.new(self)
|
|
176
|
+
end
|
|
177
|
+
end
|