openhab-scripting 4.14.2 → 4.17.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/dsl/channel.rb +43 -0
- data/lib/openhab/dsl/dsl.rb +1 -0
- data/lib/openhab/dsl/items/generic_item.rb +19 -0
- data/lib/openhab/dsl/rules/automation_rule.rb +20 -10
- data/lib/openhab/dsl/rules/rule.rb +1 -1
- data/lib/openhab/dsl/rules/rule_config.rb +1 -0
- data/lib/openhab/dsl/rules/triggers/changed.rb +43 -7
- data/lib/openhab/dsl/rules/triggers/generic.rb +29 -0
- data/lib/openhab/dsl/rules/triggers/trigger.rb +1 -0
- data/lib/openhab/dsl/things.rb +34 -4
- data/lib/openhab/dsl/types/quantity_type.rb +1 -5
- data/lib/openhab/version.rb +1 -1
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 15ce3ee9beba70f7ec3bb9f22b7c805a3c73dfb08e8b13f8ca7eb9cf8625f367
         | 
| 4 | 
            +
              data.tar.gz: 26afc00545927a29657b00ef76bcce40f3d6b831d01362d4a5e9d187c8a6c4b8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e8db2e2ae436fb49c7de5de26c1570de4b32f279b43b26c5e5e445460c3b496feb9bbeb0a90acab7954de8b664b22d8051f32f4bd8d97fc0ae04e916cbbb9661
         | 
| 7 | 
            +
              data.tar.gz: f43eaebacfb2bae1c84c9aa5b275d6256dfd10bffae4aa8722e84d6c83adca275a057080b98acb4875c001bb15c405ade84692008b25aef1d5df20ca87b3666a
         | 
| @@ -0,0 +1,43 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'forwardable'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module OpenHAB
         | 
| 6 | 
            +
              module DSL
         | 
| 7 | 
            +
                java_import org.openhab.core.thing.Channel
         | 
| 8 | 
            +
                java_import org.openhab.core.thing.ChannelUID
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                # Adds methods to core OpenHAB Channel to make it more natural in Ruby
         | 
| 11 | 
            +
                class Channel
         | 
| 12 | 
            +
                  extend Forwardable
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  delegate %i[thing item items] => :uid
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                # Adds methods to core OpenHAB ChannelUID to make it more natural in Ruby
         | 
| 18 | 
            +
                class ChannelUID
         | 
| 19 | 
            +
                  # Return the thing this channel is associated with.
         | 
| 20 | 
            +
                  #
         | 
| 21 | 
            +
                  # @return [Thing] The thing associated with this channel or nil
         | 
| 22 | 
            +
                  def thing
         | 
| 23 | 
            +
                    things[thing_uid]
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  # Return the item if this channel is linked with an item. If a channel is linked to more than one item,
         | 
| 27 | 
            +
                  # this method only returns the first item.
         | 
| 28 | 
            +
                  #
         | 
| 29 | 
            +
                  # @return [GenericItem] The item associated with this channel or nil
         | 
| 30 | 
            +
                  def item
         | 
| 31 | 
            +
                    items.first
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  # Returns all of the channel's linked items.
         | 
| 35 | 
            +
                  #
         | 
| 36 | 
            +
                  # @return [Array<GenericItem>] An array of things or an empty array
         | 
| 37 | 
            +
                  def items
         | 
| 38 | 
            +
                    registry = OpenHAB::Core::OSGI.service('org.openhab.core.thing.link.ItemChannelLinkRegistry')
         | 
| 39 | 
            +
                    registry.get_linked_items(self).to_a
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
            end
         | 
    
        data/lib/openhab/dsl/dsl.rb
    CHANGED
    
    | @@ -12,6 +12,7 @@ require 'openhab/dsl/monkey_patch/actions/actions' | |
| 12 12 | 
             
            require 'openhab/dsl/rules/rule'
         | 
| 13 13 | 
             
            require 'openhab/dsl/rules/terse'
         | 
| 14 14 | 
             
            require 'openhab/dsl/actions'
         | 
| 15 | 
            +
            require 'openhab/dsl/channel'
         | 
| 15 16 | 
             
            require 'openhab/dsl/timers'
         | 
| 16 17 | 
             
            require 'openhab/dsl/group'
         | 
| 17 18 | 
             
            require 'openhab/dsl/things'
         | 
| @@ -131,6 +131,25 @@ module OpenHAB | |
| 131 131 | 
             
                      group_names.map { |name| Groups.groups[name] }
         | 
| 132 132 | 
             
                    end
         | 
| 133 133 |  | 
| 134 | 
            +
                    # Return the item's thing if this item is linked with a thing. If an item is linked to more than one thing,
         | 
| 135 | 
            +
                    # this method only returns the first thing.
         | 
| 136 | 
            +
                    #
         | 
| 137 | 
            +
                    # @return [Thing] The thing associated with this item or nil
         | 
| 138 | 
            +
                    def thing
         | 
| 139 | 
            +
                      all_linked_things.first
         | 
| 140 | 
            +
                    end
         | 
| 141 | 
            +
                    alias linked_thing thing
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                    # Returns all of the item's linked things.
         | 
| 144 | 
            +
                    #
         | 
| 145 | 
            +
                    # @return [Array] An array of things or an empty array
         | 
| 146 | 
            +
                    def things
         | 
| 147 | 
            +
                      registry = OpenHAB::Core::OSGI.service('org.openhab.core.thing.link.ItemChannelLinkRegistry')
         | 
| 148 | 
            +
                      channels = registry.get_bound_channels(name).to_a
         | 
| 149 | 
            +
                      channels.map(&:thing_uid).uniq.map { |tuid| Object.things[tuid] }
         | 
| 150 | 
            +
                    end
         | 
| 151 | 
            +
                    alias all_linked_things things
         | 
| 152 | 
            +
             | 
| 134 153 | 
             
                    #
         | 
| 135 154 | 
             
                    # Check equality without type conversion
         | 
| 136 155 | 
             
                    #
         | 
| @@ -87,7 +87,7 @@ module OpenHAB | |
| 87 87 | 
             
                    # @return [Queue] <description>
         | 
| 88 88 | 
             
                    #
         | 
| 89 89 | 
             
                    def create_queue(inputs)
         | 
| 90 | 
            -
                      case check_guards(event: inputs | 
| 90 | 
            +
                      case check_guards(event: extract_event(inputs))
         | 
| 91 91 | 
             
                      when true
         | 
| 92 92 | 
             
                        @run_queue.dup.grep_v(RuleConfig::Otherwise)
         | 
| 93 93 | 
             
                      when false
         | 
| @@ -95,13 +95,30 @@ module OpenHAB | |
| 95 95 | 
             
                      end
         | 
| 96 96 | 
             
                    end
         | 
| 97 97 |  | 
| 98 | 
            +
                    #
         | 
| 99 | 
            +
                    # Extract the event object from inputs
         | 
| 100 | 
            +
                    # and merge other inputs keys/values into the event
         | 
| 101 | 
            +
                    #
         | 
| 102 | 
            +
                    # @param [Map] inputs rule inputs
         | 
| 103 | 
            +
                    #
         | 
| 104 | 
            +
                    # @return [Object] event object
         | 
| 105 | 
            +
                    #
         | 
| 106 | 
            +
                    def extract_event(inputs)
         | 
| 107 | 
            +
                      event = inputs&.dig('event')
         | 
| 108 | 
            +
                      unless event
         | 
| 109 | 
            +
                        event = Struct.new(:event, :attachment, :command).new
         | 
| 110 | 
            +
                        event.command = inputs&.dig('command')
         | 
| 111 | 
            +
                      end
         | 
| 112 | 
            +
                      add_attachment(event, inputs)
         | 
| 113 | 
            +
                    end
         | 
| 114 | 
            +
             | 
| 98 115 | 
             
                    #
         | 
| 99 116 | 
             
                    # Get the trigger_id for the trigger that caused the rule creation
         | 
| 100 117 | 
             
                    #
         | 
| 101 118 | 
             
                    # @return [Hash] Input hash potentially containing trigger id
         | 
| 102 119 | 
             
                    #
         | 
| 103 120 | 
             
                    def trigger_id(inputs)
         | 
| 104 | 
            -
                      inputs&. | 
| 121 | 
            +
                      inputs&.dig('module')
         | 
| 105 122 | 
             
                    end
         | 
| 106 123 |  | 
| 107 124 | 
             
                    #
         | 
| @@ -128,10 +145,6 @@ module OpenHAB | |
| 128 145 | 
             
                      attachment = @attachments[trigger_id(inputs)]
         | 
| 129 146 | 
             
                      return event unless attachment
         | 
| 130 147 |  | 
| 131 | 
            -
                      # Some events, like those from cron triggers don't have an event
         | 
| 132 | 
            -
                      # so an event is created
         | 
| 133 | 
            -
                      event ||= Struct.new(:event).new
         | 
| 134 | 
            -
             | 
| 135 148 | 
             
                      event.attachment = attachment
         | 
| 136 149 | 
             
                      event
         | 
| 137 150 | 
             
                    end
         | 
| @@ -301,11 +314,9 @@ module OpenHAB | |
| 301 314 | 
             
                    # @param [Map] inputs OpenHAB map object describing rule trigge
         | 
| 302 315 | 
             
                    #
         | 
| 303 316 | 
             
                    #
         | 
| 304 | 
            -
                    # rubocop:disable Metrics/MethodLength
         | 
| 305 317 | 
             
                    # No logical way to break this method up
         | 
| 306 318 | 
             
                    def process_queue(run_queue, mod, inputs)
         | 
| 307 | 
            -
                      event = inputs | 
| 308 | 
            -
                      event = add_attachment(event, inputs)
         | 
| 319 | 
            +
                      event = extract_event(inputs)
         | 
| 309 320 |  | 
| 310 321 | 
             
                      while (task = run_queue.shift)
         | 
| 311 322 | 
             
                        if task.is_a? RuleConfig::Delay
         | 
| @@ -317,7 +328,6 @@ module OpenHAB | |
| 317 328 | 
             
                    rescue StandardError => e
         | 
| 318 329 | 
             
                      print_backtrace(e)
         | 
| 319 330 | 
             
                    end
         | 
| 320 | 
            -
                    # rubocop:enable Metrics/MethodLength
         | 
| 321 331 |  | 
| 322 332 | 
             
                    #
         | 
| 323 333 | 
             
                    # Dispatch execution block tasks to different methods
         | 
| @@ -38,7 +38,6 @@ module OpenHAB | |
| 38 38 | 
             
                    config.guard = Guard::Guard.new(only_if: config.only_if, not_if: config.not_if)
         | 
| 39 39 | 
             
                    logger.trace { config.inspect }
         | 
| 40 40 | 
             
                    process_rule_config(config)
         | 
| 41 | 
            -
                    config
         | 
| 42 41 | 
             
                  rescue StandardError => e
         | 
| 43 42 | 
             
                    re_raise_with_backtrace(e)
         | 
| 44 43 | 
             
                  end
         | 
| @@ -89,6 +88,7 @@ module OpenHAB | |
| 89 88 | 
             
                    Rules.script_rules << rule
         | 
| 90 89 | 
             
                    add_rule(rule)
         | 
| 91 90 | 
             
                    rule.execute(nil, { 'event' => Struct.new(:attachment).new(config.start_attachment) }) if config.on_start?
         | 
| 91 | 
            +
                    rule
         | 
| 92 92 | 
             
                  end
         | 
| 93 93 |  | 
| 94 94 | 
             
                  #
         | 
| @@ -8,6 +8,7 @@ require 'openhab/dsl/rules/triggers/changed' | |
| 8 8 | 
             
            require 'openhab/dsl/rules/triggers/channel'
         | 
| 9 9 | 
             
            require 'openhab/dsl/rules/triggers/command'
         | 
| 10 10 | 
             
            require 'openhab/dsl/rules/triggers/updated'
         | 
| 11 | 
            +
            require 'openhab/dsl/rules/triggers/generic'
         | 
| 11 12 | 
             
            require 'openhab/dsl/rules/guard'
         | 
| 12 13 | 
             
            require 'openhab/core/entity_lookup'
         | 
| 13 14 | 
             
            require 'openhab/dsl/between'
         | 
| @@ -33,20 +33,56 @@ module OpenHAB | |
| 33 33 | 
             
                    def changed(*items, to: nil, from: nil, for: nil, attach: nil)
         | 
| 34 34 | 
             
                      separate_groups(items).map do |item|
         | 
| 35 35 | 
             
                        logger.trace("Creating changed trigger for entity(#{item}), to(#{to}), from(#{from})")
         | 
| 36 | 
            +
             | 
| 36 37 | 
             
                        # for is a reserved word in ruby, so use local_variable_get :for
         | 
| 37 | 
            -
                         | 
| 38 | 
            -
             | 
| 39 | 
            -
                         | 
| 40 | 
            -
                           | 
| 41 | 
            -
                          [to].flatten.map do |to_state|
         | 
| 42 | 
            -
                            [from].flatten.map { |from_state| create_changed_trigger(item, from_state, to_state, attach) }
         | 
| 43 | 
            -
                          end
         | 
| 38 | 
            +
                        wait_duration = binding.local_variable_get(:for)
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                        each_state(from, to) do |from_state, to_state|
         | 
| 41 | 
            +
                          changed_or_wait(item, from_state, to_state, wait_duration, attach)
         | 
| 44 42 | 
             
                        end
         | 
| 45 43 | 
             
                      end.flatten
         | 
| 46 44 | 
             
                    end
         | 
| 47 45 |  | 
| 48 46 | 
             
                    private
         | 
| 49 47 |  | 
| 48 | 
            +
                    #
         | 
| 49 | 
            +
                    # Run block for each state combination
         | 
| 50 | 
            +
                    #
         | 
| 51 | 
            +
                    # @param [Item State, Array<Item State>] from state to restrict trigger to
         | 
| 52 | 
            +
                    # @param [Item State, Array<Item State>] to state to restrict trigger to
         | 
| 53 | 
            +
                    #
         | 
| 54 | 
            +
                    # @yieldparam [Item State] from_state from state
         | 
| 55 | 
            +
                    # @yieldparam [Item State] to_state to state
         | 
| 56 | 
            +
                    #
         | 
| 57 | 
            +
                    # @return [Array] array of block return values
         | 
| 58 | 
            +
                    #
         | 
| 59 | 
            +
                    def each_state(from, to)
         | 
| 60 | 
            +
                      [to].flatten.each_with_object([]) do |to_state, agg|
         | 
| 61 | 
            +
                        [from].flatten.each do |from_state|
         | 
| 62 | 
            +
                          agg.push(yield(from_state, to_state))
         | 
| 63 | 
            +
                        end
         | 
| 64 | 
            +
                      end
         | 
| 65 | 
            +
                    end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    #
         | 
| 68 | 
            +
                    # Create regular or delayed trigger based on duration
         | 
| 69 | 
            +
                    #
         | 
| 70 | 
            +
                    # @param [Object] item item to create trigger for
         | 
| 71 | 
            +
                    # @param [Item State] from state to restrict trigger to
         | 
| 72 | 
            +
                    # @param [Item State] to state to restrict trigger to
         | 
| 73 | 
            +
                    # @param [OpenHAB::Core::Duration, nil] duration ruration to delay trigger until to state is met
         | 
| 74 | 
            +
                    # @param attach attachment
         | 
| 75 | 
            +
                    #
         | 
| 76 | 
            +
                    # @return [Trigger] OpenHAB triggers
         | 
| 77 | 
            +
                    #
         | 
| 78 | 
            +
                    def changed_or_wait(item, from, to, duration, attach)
         | 
| 79 | 
            +
                      if duration
         | 
| 80 | 
            +
                        changed_wait(item, from: from, to: to, duration: duration, attach: attach)
         | 
| 81 | 
            +
                      else
         | 
| 82 | 
            +
                        create_changed_trigger(item, from, to, attach)
         | 
| 83 | 
            +
                      end
         | 
| 84 | 
            +
                    end
         | 
| 85 | 
            +
             | 
| 50 86 | 
             
                    #
         | 
| 51 87 | 
             
                    # Create a TriggerDelay for for an item or group that is changed for a specific duration
         | 
| 52 88 | 
             
                    #
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'openhab/log/logger'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module OpenHAB
         | 
| 6 | 
            +
              module DSL
         | 
| 7 | 
            +
                module Rules
         | 
| 8 | 
            +
                  #
         | 
| 9 | 
            +
                  # Module holds rule triggers
         | 
| 10 | 
            +
                  #
         | 
| 11 | 
            +
                  module Triggers
         | 
| 12 | 
            +
                    include OpenHAB::Log
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    #
         | 
| 15 | 
            +
                    # Create a generic trigger given the trigger type uid and a configuration hash
         | 
| 16 | 
            +
                    #
         | 
| 17 | 
            +
                    # @param [Type] Trigger type UID
         | 
| 18 | 
            +
                    # @param [Configuration] A hash containing the trigger configuration entries
         | 
| 19 | 
            +
                    #
         | 
| 20 | 
            +
                    # @return [Trigger] Trigger object
         | 
| 21 | 
            +
                    #
         | 
| 22 | 
            +
                    def trigger(type, attach: nil, **configuration)
         | 
| 23 | 
            +
                      logger.trace("Creating a generic trigger for type(#{type}) with configuration(#{configuration})")
         | 
| 24 | 
            +
                      append_trigger(type, configuration, attach: attach)
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
| @@ -48,6 +48,7 @@ module OpenHAB | |
| 48 48 | 
             
                    #
         | 
| 49 49 | 
             
                    def append_trigger(type, config, attach: nil)
         | 
| 50 50 | 
             
                      logger.trace("Creating trigger of type #{type} for #{config}")
         | 
| 51 | 
            +
                      config.transform_keys!(&:to_s)
         | 
| 51 52 | 
             
                      trigger = Trigger.trigger(type: type, config: config)
         | 
| 52 53 | 
             
                      @attachments[trigger.id] = attach if attach
         | 
| 53 54 | 
             
                      @triggers << trigger
         | 
    
        data/lib/openhab/dsl/things.rb
    CHANGED
    
    | @@ -21,6 +21,21 @@ module OpenHAB | |
| 21 21 | 
             
                  # Ruby Delegator for Thing
         | 
| 22 22 | 
             
                  #
         | 
| 23 23 | 
             
                  class Thing < SimpleDelegator
         | 
| 24 | 
            +
                    # Array wrapper class to allow searching a list of channels
         | 
| 25 | 
            +
                    # by channel id
         | 
| 26 | 
            +
                    class ChannelsArray < Array
         | 
| 27 | 
            +
                      # Allows indexing by both integer as an array or channel id acting like a hash.
         | 
| 28 | 
            +
                      # @param [Integer, String] index Numeric index or string channel id to search for.
         | 
| 29 | 
            +
                      def [](index)
         | 
| 30 | 
            +
                        if index.respond_to?(:to_str)
         | 
| 31 | 
            +
                          key = index.to_str
         | 
| 32 | 
            +
                          return find { |channel| channel.uid.id == key }
         | 
| 33 | 
            +
                        end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                        super
         | 
| 36 | 
            +
                      end
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
             | 
| 24 39 | 
             
                    include OpenHAB::DSL::Actions
         | 
| 25 40 | 
             
                    include OpenHAB::Log
         | 
| 26 41 |  | 
| @@ -45,6 +60,12 @@ module OpenHAB | |
| 45 60 | 
             
                      define_method("#{thingstatus.to_s.downcase}?") { status == ThingStatus.value_of(thingstatus) }
         | 
| 46 61 | 
             
                    end
         | 
| 47 62 |  | 
| 63 | 
            +
                    # Returns the list of channels associated with this Thing
         | 
| 64 | 
            +
                    # @return [Array] channels
         | 
| 65 | 
            +
                    def channels
         | 
| 66 | 
            +
                      ChannelsArray.new(super.to_a)
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
             | 
| 48 69 | 
             
                    private
         | 
| 49 70 |  | 
| 50 71 | 
             
                    java_import org.openhab.core.automation.annotation.RuleAction
         | 
| @@ -83,11 +104,11 @@ module OpenHAB | |
| 83 104 | 
             
                    include LazyArray
         | 
| 84 105 | 
             
                    include Singleton
         | 
| 85 106 |  | 
| 86 | 
            -
                    # Gets a specific thing by name in the format binding_id:type_id:thing_id
         | 
| 87 | 
            -
                    # @return Thing specified by name or nil if name does not exist in thing registry
         | 
| 107 | 
            +
                    # Gets a specific thing by name in the format binding_id:type_id:thing_id or via the ThingUID
         | 
| 108 | 
            +
                    # @return Thing specified by name/UID or nil if name/UID does not exist in thing registry
         | 
| 88 109 | 
             
                    def [](uid)
         | 
| 89 | 
            -
                       | 
| 90 | 
            -
                      thing = $things.get( | 
| 110 | 
            +
                      uid = generate_thing_uid(uid) unless uid.is_a?(org.openhab.core.thing.ThingUID)
         | 
| 111 | 
            +
                      thing = $things.get(uid) # rubocop: disable Style/GlobalVars
         | 
| 91 112 | 
             
                      return unless thing
         | 
| 92 113 |  | 
| 93 114 | 
             
                      logger.trace("Retrieved Thing(#{thing}) from registry for uid: #{uid}")
         | 
| @@ -100,6 +121,15 @@ module OpenHAB | |
| 100 121 | 
             
                    def to_a
         | 
| 101 122 | 
             
                      $things.getAll.map { |thing| Thing.new(thing) } # rubocop: disable Style/GlobalVars
         | 
| 102 123 | 
             
                    end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                    private
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                    # Returns a ThingUID given a string like object
         | 
| 128 | 
            +
                    #
         | 
| 129 | 
            +
                    # @return ThingUID generated by given name
         | 
| 130 | 
            +
                    def generate_thing_uid(uid)
         | 
| 131 | 
            +
                      org.openhab.core.thing.ThingUID.new(*uid.split(':'))
         | 
| 132 | 
            +
                    end
         | 
| 103 133 | 
             
                  end
         | 
| 104 134 |  | 
| 105 135 | 
             
                  #
         | 
| @@ -30,11 +30,7 @@ module OpenHAB | |
| 30 30 | 
             
                    #
         | 
| 31 31 | 
             
                    # @return [QuantityType] This quantity converted to another unit
         | 
| 32 32 | 
             
                    #
         | 
| 33 | 
            -
                     | 
| 34 | 
            -
                      other = org.openhab.core.types.util.UnitUtils.parse_unit(other) if other.is_a?(String)
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                      to_unit(other)
         | 
| 37 | 
            -
                    end
         | 
| 33 | 
            +
                    alias | to_unit
         | 
| 38 34 |  | 
| 39 35 | 
             
                    #
         | 
| 40 36 | 
             
                    # Comparison
         | 
    
        data/lib/openhab/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: openhab-scripting
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4. | 
| 4 | 
            +
              version: 4.17.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Brian O'Connell
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021-11- | 
| 11 | 
            +
            date: 2021-11-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -54,6 +54,7 @@ files: | |
| 54 54 | 
             
            - lib/openhab/core/thread_local.rb
         | 
| 55 55 | 
             
            - lib/openhab/dsl/actions.rb
         | 
| 56 56 | 
             
            - lib/openhab/dsl/between.rb
         | 
| 57 | 
            +
            - lib/openhab/dsl/channel.rb
         | 
| 57 58 | 
             
            - lib/openhab/dsl/dsl.rb
         | 
| 58 59 | 
             
            - lib/openhab/dsl/gems.rb
         | 
| 59 60 | 
             
            - lib/openhab/dsl/group.rb
         | 
| @@ -103,6 +104,7 @@ files: | |
| 103 104 | 
             
            - lib/openhab/dsl/rules/triggers/channel.rb
         | 
| 104 105 | 
             
            - lib/openhab/dsl/rules/triggers/command.rb
         | 
| 105 106 | 
             
            - lib/openhab/dsl/rules/triggers/cron.rb
         | 
| 107 | 
            +
            - lib/openhab/dsl/rules/triggers/generic.rb
         | 
| 106 108 | 
             
            - lib/openhab/dsl/rules/triggers/trigger.rb
         | 
| 107 109 | 
             
            - lib/openhab/dsl/rules/triggers/updated.rb
         | 
| 108 110 | 
             
            - lib/openhab/dsl/states.rb
         |