openplacos 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby
2
+
3
+
4
+ require 'digest/sha1'
5
+ require File.dirname(__FILE__) + "/libclient_oauth.rb"
6
+
7
+ HOST = 'http://0.0.0.0:4567'
8
+ REDIRECT_URI = "http://0.0.0.0:2000"
9
+ ID = Digest::SHA1.file(__FILE__).hexdigest
10
+
11
+
12
+
13
+ client = Openplacos::Client.new(HOST, "TRUC", ["read", "user"] , "auth_code")
14
+
15
+ puts client.objects["/home/temperature"]["analog.sensor.temperature.celcuis"].read
16
+ puts client.objects["/home/fan"]["analog.order.dimmer"].write(0.5)
17
+
@@ -0,0 +1,63 @@
1
+ # This file is part of Openplacos.
2
+ #
3
+ # Openplacos is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # Openplacos is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.s.instance
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with Openplacos. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+
17
+ module Openplacos
18
+
19
+ # Namespace for Analog signals.
20
+ module Analog
21
+
22
+ # convert an analog value to a string
23
+ # supposed to be generic to all clients
24
+ # can be easily overloaded if needed
25
+ def to_s
26
+ read({}).round(2).to_s
27
+ end
28
+
29
+ # render method is supposed to be overlaoded
30
+ # this method is like a view
31
+ # this method returns a string formatted as needed for the client to express an analog value
32
+ def render
33
+ return to_s
34
+ end
35
+
36
+ end
37
+
38
+ module Analog::Order
39
+ include Analog
40
+
41
+ def set(arg_)
42
+ write(arg_.to_f, {})
43
+ end
44
+ end
45
+
46
+ module Analog::Regul
47
+ include Analog::Order
48
+ end
49
+
50
+ module Analog::Sensor
51
+ include Analog
52
+
53
+ def render
54
+ return to_s + " " + unit
55
+ end
56
+
57
+ def unit
58
+ @name.split(".").last
59
+ end
60
+
61
+ end
62
+ end
63
+
@@ -0,0 +1,55 @@
1
+ # This file is part of Openplacos.
2
+ #
3
+ # Openplacos is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # Openplacos is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.s.instance
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with Openplacos. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+ module Openplacos
17
+ module Digital
18
+ def to_s
19
+ read({})
20
+ end
21
+
22
+ def render
23
+ return to_s
24
+ end
25
+
26
+
27
+ module Order
28
+ include Digital
29
+
30
+ module Switch
31
+ include Order
32
+
33
+ def set(arg_)
34
+ if (arg_ == "True" || (arg_ == "true") || (arg_ == "on")|| (arg_ == "ON"))
35
+ return write(true, {})
36
+ end
37
+ if (arg_ == "False" || (arg_ == "false")|| (arg_ == "off")|| (arg_ == "OFF"))
38
+ return write(false, {})
39
+ end
40
+ puts "Action not recognized, please use ON/OFF"
41
+ end
42
+ end
43
+
44
+ end
45
+
46
+ module Regul
47
+ include Digital
48
+
49
+ module Switch
50
+ include Order::Switch
51
+ end
52
+ end
53
+
54
+ end
55
+ end
@@ -0,0 +1,19 @@
1
+ # This file is part of Openplacos.
2
+ #
3
+ # Openplacos is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # Openplacos is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with Openplacos. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+
17
+ require File.dirname(__FILE__) + "/Analog.rb"
18
+ require File.dirname(__FILE__) + "/Digital.rb"
19
+
data/openplacos.gemspec CHANGED
@@ -12,10 +12,12 @@ GEMSPEC = Gem::Specification.new do |s|
12
12
  s.version = File.read("VERSION").strip
13
13
  s.license = 'GPL-3'
14
14
  s.author = "Openplacos Team"
15
- s.email = "openplacos-general@lists.sourceforge.net"
16
- s.homepage = "http://openplacos.sourceforge.net/"
15
+ s.email = "openplacos@lists.tuxfamily.org"
16
+ s.homepage = "http://openplacos.tuxfamily.org/"
17
17
  s.files = FileList["{lib}/**/*", "openplacos.gemspec", "VERSION"].to_a.sort
18
18
  s.require_path = "lib"
19
19
  s.has_rdoc = false
20
- s.add_dependency('ruby-dbus-openplacos', '>= 0.6.2')
20
+ s.add_runtime_dependency 'ruby-dbus-openplacos', '~> 0.7.0'
21
+ s.add_runtime_dependency 'json', '~> 1.7.0'
22
+ s.add_runtime_dependency 'oauth2', '~> 0.7.1'
21
23
  end
metadata CHANGED
@@ -1,87 +1,104 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: openplacos
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.9
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 8
10
- version: 0.0.8
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Openplacos Team
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-06-18 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-06-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: ruby-dbus-openplacos
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.7.0
22
+ type: :runtime
23
23
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.7.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
25
33
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- - 6
33
- - 2
34
- version: 0.6.2
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.7.0
35
38
  type: :runtime
36
- version_requirements: *id001
37
- description: " Openplacos Gem is a set of libraries for openplacos software.\n These libraries allow an easier coding of openplacos clients, plugins or drivers in ruby.\n"
38
- email: openplacos-general@lists.sourceforge.net
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.7.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: oauth2
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.7.1
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.7.1
62
+ description: ! " Openplacos Gem is a set of libraries for openplacos software.\n
63
+ \ These libraries allow an easier coding of openplacos clients, plugins or drivers
64
+ in ruby.\n"
65
+ email: openplacos@lists.tuxfamily.org
39
66
  executables: []
40
-
41
67
  extensions: []
42
-
43
68
  extra_rdoc_files: []
44
-
45
- files:
69
+ files:
46
70
  - VERSION
47
71
  - lib/openplacos.rb
48
72
  - lib/openplacos/libclient.rb
49
- - lib/openplacos/libdriver.rb
50
- - lib/openplacos/libplugin.rb
73
+ - lib/openplacos/libcomponent.rb
74
+ - lib/openplacos/template_client.rb
75
+ - lib/openplacos/widget/Analog.rb
76
+ - lib/openplacos/widget/Digital.rb
77
+ - lib/openplacos/widget/modules.rb
51
78
  - openplacos.gemspec
52
- has_rdoc: true
53
- homepage: http://openplacos.sourceforge.net/
54
- licenses:
79
+ homepage: http://openplacos.tuxfamily.org/
80
+ licenses:
55
81
  - GPL-3
56
82
  post_install_message:
57
83
  rdoc_options: []
58
-
59
- require_paths:
84
+ require_paths:
60
85
  - lib
61
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
62
87
  none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- hash: 3
67
- segments:
68
- - 0
69
- version: "0"
70
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
93
  none: false
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- hash: 3
76
- segments:
77
- - 0
78
- version: "0"
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
79
98
  requirements: []
80
-
81
99
  rubyforge_project:
82
- rubygems_version: 1.5.3
100
+ rubygems_version: 1.8.23
83
101
  signing_key:
84
102
  specification_version: 3
85
- summary: "Openplacos libraries : Libclient, LibPlugin, LibDriver"
103
+ summary: ! 'Openplacos libraries : Libclient, LibPlugin, LibDriver'
86
104
  test_files: []
87
-
@@ -1,129 +0,0 @@
1
- # This file is part of Openplacos.
2
- #
3
- # Openplacos is free software: you can redistribute it and/or modify
4
- # it under the terms of the GNU General Public License as published by
5
- # the Free Software Foundation, either version 3 of the License, or
6
- # (at your option) any later version.
7
- #
8
- # Openplacos is distributed in the hope that it will be useful,
9
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- # GNU General Public License for more details.
12
- #
13
- # You should have received a copy of the GNU General Public License
14
- # along with Openplacos. If not, see <http://www.gnu.org/licenses/>.
15
- #
16
-
17
- ENV["DBUS_THREADED_ACCESS"] = "1" #activate threaded dbus
18
- require 'dbus-openplacos'
19
-
20
-
21
- module Openplacos
22
- module Driver
23
-
24
- class GenericPin < DBus::Object
25
-
26
- def set_off(iface_req_)
27
- if (@init != iface_req_) # Iface changed, turn off previous one
28
- if(self.methods.include?("exit_"+@init))
29
- eval("exit_"+@init+"()")
30
- end
31
- end
32
- end
33
-
34
-
35
- def write(iface_, value_, option_)
36
-
37
- set_off(iface_)
38
- if (@input == 1)# Set output
39
- if(self.methods.include?("set_output"))
40
- self.set_output()
41
- end
42
- @input = 0;
43
- end
44
-
45
- if (@init != iface_) # If the iface needs to be init
46
- if(self.methods.include?("init_"+iface_))
47
- eval("init_#{iface_}()")
48
- end
49
- @init = iface_
50
- end
51
- eval("write_#{iface_}(value_, option_)")
52
-
53
- end
54
-
55
- def add_write(iface_)
56
- dbusdef = "dbus_interface 'org.openplacos.driver.#{iface_}' do
57
- dbus_method :write, 'out return:v, in value:v, in option:a{sv}' do |value, option|
58
- return self.write( \"#{iface_}\", value,option)
59
- end
60
- end"
61
-
62
- self.singleton_class.instance_eval(dbusdef)
63
- end
64
-
65
- def read(iface_, option_)
66
- set_off(iface_)
67
- if (@input == 0)# Set input
68
- if(self.methods.include?("set_input"))
69
- self.set_input()
70
- end
71
- @input = 1;
72
- end
73
-
74
- eval("read_#{iface_}( option_)")
75
-
76
- end
77
-
78
-
79
- def add_read(iface_)
80
- dbusdef = "dbus_interface 'org.openplacos.driver.#{iface_}' do
81
- dbus_method :read, 'out return:v, in option:a{sv}' do |option|
82
- return self.read(\"#{iface_}\", option)
83
- end
84
- end"
85
- self.singleton_class.instance_eval(dbusdef)
86
- end
87
-
88
- def add_read_and_write(iface_) # dbus do not merge methods in interface if they are not define in the same time
89
- dbusdef = "dbus_interface 'org.openplacos.driver.#{iface_}' do
90
- dbus_method :read, 'out return:v, in option:a{sv}' do |option|
91
- return self.read(\"#{iface_}\",option)
92
- end
93
- dbus_method :write, 'out return:v, in value:v, in option:a{sv}' do |value, option|
94
- return self.write(\"#{iface_}\", value,option)
95
- end
96
- end"
97
-
98
- self.singleton_class.instance_eval(dbusdef)
99
- end
100
-
101
-
102
- def initialize(path_, write_intfs_, read_intfs_) # path name , an array of string of interface wich write methods, an array of
103
- @init = ""
104
- @input = nil
105
-
106
- (write_intfs_ & read_intfs_).each { |iface|
107
- self.add_read_and_write(iface)
108
- self.instance_eval("self.extend(Module_write_#{iface})")
109
- self.instance_eval("self.extend(Module_read_#{iface})")
110
- write_intfs_.delete(iface)
111
- read_intfs_.delete(iface)
112
- }
113
-
114
- write_intfs_.each{ |iface|
115
- self.add_write(iface)
116
- self.instance_eval("self.extend(Module_write_#{iface})")
117
- }
118
-
119
- read_intfs_.each{ |iface|
120
- self.add_read(iface)
121
- self.instance_eval("self.extend(Module_read_#{iface})")
122
- }
123
- super(path_)
124
- self.extend(Other_common_fonctions)
125
- end
126
-
127
- end
128
- end
129
- end