home_assistant-generator 0.1.0.pre.alpha.pre.7 → 0.1.0.pre.alpha.pre.8
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/example_config.rb +18 -4
- data/lib/home_assistant/generator/automation.rb +46 -0
- data/lib/home_assistant/generator/dsl.rb +15 -5
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf97a0d12c7f105117561c6e0b502cbad6dd1a3f
|
4
|
+
data.tar.gz: 4b444399b1ec740d7098ccff7fe12855f86bafd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 277d45c284966d5fb14949dda657bb4764df3a99a70fb50fa495618c4896f68caf7cd1cb3323a5a5be63d4e38fc57eeda6dab124611f70e4f709cb564c9731a5
|
7
|
+
data.tar.gz: 065109efbe395e7119372a03951838abdf5e86fbfefd092e2ec53563f56f6c5e992c19966c0384823eaff694cf45bc3eaa9679d8d19977ded1a52b4b005bc8a9
|
data/example_config.rb
CHANGED
@@ -4,7 +4,21 @@ media_player 'KoKodi' do
|
|
4
4
|
port 8080
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
|
8
|
+
automation 'Activate movie playing scene' do
|
9
|
+
trigger.when('KoKodi').from(:paused).to(:playing)
|
10
|
+
|
11
|
+
# Other examples
|
12
|
+
# trigger.when('KoKodi').playing
|
13
|
+
# equivalent to:
|
14
|
+
# trigger.when('KoKodi').to(:playing)
|
15
|
+
|
16
|
+
# trigger.at('18:00:00')
|
17
|
+
# trigger.when('sun').set
|
18
|
+
# trigger.on('my_event_name') # using platform 'event'
|
19
|
+
#
|
20
|
+
# Documentation:
|
21
|
+
# trigger.when('a component short name') creates a trigger on the component state. It is possible to call:
|
22
|
+
# from('old state') and to('new state') on it.
|
23
|
+
# It is also possible to call any method whose name is the new state, like .playing
|
24
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module HomeAssistant
|
2
|
+
module Generator
|
3
|
+
# describe an automation from home-assistant
|
4
|
+
class Automation
|
5
|
+
attr_reader :properties
|
6
|
+
|
7
|
+
def initialize(name, &block)
|
8
|
+
@properties = {}
|
9
|
+
properties[:alias] = name
|
10
|
+
instance_eval(&block)
|
11
|
+
end
|
12
|
+
|
13
|
+
def trigger
|
14
|
+
properties[:trigger] ||= Trigger.new
|
15
|
+
properties[:trigger]
|
16
|
+
end
|
17
|
+
|
18
|
+
class Trigger
|
19
|
+
attr_reader :properties
|
20
|
+
def initialize
|
21
|
+
@properties = {}
|
22
|
+
end
|
23
|
+
|
24
|
+
def when(component_short_name)
|
25
|
+
# TODO: search for real entity_id
|
26
|
+
properties[:entity_id] = component_short_name
|
27
|
+
properties[:platform] = 'state'
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
def method_missing(name, *args)
|
32
|
+
case args.size
|
33
|
+
when 1
|
34
|
+
properties[name] = args.first
|
35
|
+
when 0
|
36
|
+
properties[:to] = name
|
37
|
+
else
|
38
|
+
super
|
39
|
+
end
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -2,15 +2,17 @@ require 'mash'
|
|
2
2
|
require 'yaml'
|
3
3
|
|
4
4
|
require_relative 'component'
|
5
|
+
require_relative 'automation'
|
5
6
|
|
6
7
|
module HomeAssistant
|
7
8
|
module Generator
|
8
9
|
# dsl class to read config file and evaluate it
|
9
10
|
class DSL
|
10
|
-
attr_reader :component_list
|
11
|
+
attr_reader :component_list, :automations
|
11
12
|
|
12
13
|
def initialize
|
13
14
|
@component_list = []
|
15
|
+
@automations = []
|
14
16
|
end
|
15
17
|
|
16
18
|
def eval(file_path)
|
@@ -33,16 +35,24 @@ module HomeAssistant
|
|
33
35
|
element
|
34
36
|
end
|
35
37
|
|
36
|
-
def
|
37
|
-
|
38
|
+
def automation(name, &block)
|
39
|
+
Automation.new(name, &block).tap { automations << automation }
|
38
40
|
end
|
39
41
|
|
40
42
|
def to_s
|
41
|
-
component_list.inject(Mash.new) do |mem, component|
|
43
|
+
config = component_list.inject(Mash.new) do |mem, component|
|
42
44
|
mem[component.component_class] ||= []
|
43
45
|
mem[component.component_class] << component.to_h
|
44
46
|
mem
|
45
|
-
end
|
47
|
+
end
|
48
|
+
|
49
|
+
config.to_hash.to_yaml
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def debug(message)
|
55
|
+
$stderr.puts message if ENV['DEBUG']
|
46
56
|
end
|
47
57
|
end
|
48
58
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: home_assistant-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.pre.alpha.pre.
|
4
|
+
version: 0.1.0.pre.alpha.pre.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grégoire Seux
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- example_config.rb
|
86
86
|
- home_assistant-generator.gemspec
|
87
87
|
- lib/home_assistant/generator.rb
|
88
|
+
- lib/home_assistant/generator/automation.rb
|
88
89
|
- lib/home_assistant/generator/component.rb
|
89
90
|
- lib/home_assistant/generator/dsl.rb
|
90
91
|
- lib/home_assistant/generator/version.rb
|