1
+ var storage = require ( 'node-persist' ) ;
2
+ var types = require ( "./accessories/types.js" )
3
+
4
+ var accessory_Factor = new require ( "./Accessory.js" ) ;
5
+ var accessoryController_Factor = new require ( "./AccessoryController.js" ) ;
6
+ var service_Factor = new require ( "./Service.js" ) ;
7
+ var characteristic_Factor = new require ( "./Characteristic.js" ) ;
8
+
9
+ var targetPort = 51826 ;
10
+
11
+ console . log ( "HAP-NodeJS starting..." ) ;
12
+ storage . initSync ( ) ;
13
+
14
+ var execute = function ( accessory , characteristic , value ) { console . log ( "executed accessory: " + accessory + ", and characteristic: " + characteristic + ", with value: " + value + "." ) ; }
15
+
16
+ var accessoryController = new accessoryController_Factor . AccessoryController ( ) ;
17
+ var infoService = new service_Factor . Service ( types . ACCESSORY_INFORMATION_STYPE ) ;
18
+ var infoChars = [ {
19
+ cType : types . NAME_CTYPE ,
20
+ onUpdate : null ,
21
+ perms : [ "pr" ] ,
22
+ format : "string" ,
23
+ initialValue : "Thermostat 1" ,
24
+ supportEvents : false ,
25
+ supportBonjour : false ,
26
+ manfDescription : "Bla" ,
27
+ designedMaxLength : 255
28
+ } , {
29
+ cType : types . MANUFACTURER_CTYPE ,
30
+ onUpdate : null ,
31
+ perms : [ "pr" ] ,
32
+ format : "string" ,
33
+ initialValue : "Oltica" ,
34
+ supportEvents : false ,
35
+ supportBonjour : false ,
36
+ manfDescription : "Bla" ,
37
+ designedMaxLength : 255
38
+ } , {
39
+ cType : types . MODEL_CTYPE ,
40
+ onUpdate : null ,
41
+ perms : [ "pr" ] ,
42
+ format : "string" ,
43
+ initialValue : "Rev-1" ,
44
+ supportEvents : false ,
45
+ supportBonjour : false ,
46
+ manfDescription : "Bla" ,
47
+ designedMaxLength : 255
48
+ } , {
49
+ cType : types . SERIAL_NUMBER_CTYPE ,
50
+ onUpdate : null ,
51
+ perms : [ "pr" ] ,
52
+ format : "string" ,
53
+ initialValue : "A1S2NASF88EW" ,
54
+ supportEvents : false ,
55
+ supportBonjour : false ,
56
+ manfDescription : "Bla" ,
57
+ designedMaxLength : 255
58
+ } , {
59
+ cType : types . IDENTIFY_CTYPE ,
60
+ onUpdate : null ,
61
+ perms : [ "pw" ] ,
62
+ format : "bool" ,
63
+ initialValue : false ,
64
+ supportEvents : false ,
65
+ supportBonjour : false ,
66
+ manfDescription : "Identify Accessory" ,
67
+ designedMaxLength : 1
68
+ } ] ;
69
+
70
+ for ( var k = 0 ; k < infoChars . length ; k ++ ) {
71
+ var options = {
72
+ type : infoChars [ k ] . cType ,
73
+ perms : infoChars [ k ] . perms ,
74
+ format : infoChars [ k ] . format ,
75
+ initialValue : infoChars [ k ] . initialValue ,
76
+ supportEvents : infoChars [ k ] . supportEvents ,
77
+ supportBonjour : infoChars [ k ] . supportBonjour ,
78
+ manfDescription : infoChars [ k ] . manfDescription ,
79
+ designedMaxLength : infoChars [ k ] . designedMaxLength ,
80
+ designedMinValue : infoChars [ k ] . designedMinValue ,
81
+ designedMaxValue : infoChars [ k ] . designedMaxValue ,
82
+ designedMinStep : infoChars [ k ] . designedMinStep ,
83
+ unit : infoChars [ k ] . unit ,
84
+ }
85
+
86
+ var characteristic = new characteristic_Factor . Characteristic ( options , null ) ;
87
+
88
+ infoService . addCharacteristic ( characteristic ) ;
89
+ } ;
90
+
91
+ accessoryController . addService ( infoService ) ;
92
+
93
+ var thermostatService = new service_Factor . Service ( types . THERMOSTAT_STYPE ) ;
94
+ var thermoNameChar = new characteristic_Factor . Characteristic ( {
95
+ type : types . NAME_CTYPE ,
96
+ onUpdate : null ,
97
+ perms : [ "pr" ] ,
98
+ format : "string" ,
99
+ initialValue : "Thermostat Control" ,
100
+ supportEvents : false ,
101
+ supportBonjour : false ,
102
+ manfDescription : "Bla" ,
103
+ designedMaxLength : 255
104
+ } , null ) ;
105
+ thermostatService . addCharacteristic ( thermoNameChar ) ;
106
+
107
+ var thermoCMChar = new characteristic_Factor . Characteristic ( {
108
+ type : types . CURRENTHEATINGCOOLING_CTYPE ,
109
+ perms : [ "pr" , "ev" ] ,
110
+ format : "int" ,
111
+ initialValue : 0 ,
112
+ supportEvents : false ,
113
+ supportBonjour : false ,
114
+ manfDescription : "Current Mode" ,
115
+ designedMaxLength : 1 ,
116
+ designedMinValue : 0 ,
117
+ designedMaxValue : 2 ,
118
+ designedMinStep : 1 ,
119
+ } , null ) ;
120
+ thermostatService . addCharacteristic ( thermoCMChar ) ;
121
+
122
+ var thermoTMChar = new characteristic_Factor . Characteristic ( {
123
+ type : types . TARGETHEATINGCOOLING_CTYPE ,
124
+ perms : [ "pw" , "pr" , "ev" ] ,
125
+ format : "int" ,
126
+ initialValue : 0 ,
127
+ supportEvents : false ,
128
+ supportBonjour : false ,
129
+ manfDescription : "Target Mode" ,
130
+ designedMinValue : 0 ,
131
+ designedMaxValue : 3 ,
132
+ designedMinStep : 1 ,
133
+ } , function ( value ) { console . log ( "Change:" , value ) ; execute ( "Thermostat" , "Target HC" , value ) ;
134
+ if ( value < 3 ) { thermoCMChar . updateValue ( value ) ; } else { thermoCMChar . updateValue ( 1 ) ; } ;
135
+ } ) ;
136
+ thermostatService . addCharacteristic ( thermoTMChar ) ;
137
+
138
+ var restThermo = [ {
139
+ cType : types . CURRENT_TEMPERATURE_CTYPE ,
140
+ onUpdate : function ( value ) { console . log ( "Change:" , value ) ; execute ( "Thermostat" , "Current Temperature" , value ) ; } ,
141
+ perms : [ "pr" , "ev" ] ,
142
+ format : "int" ,
143
+ initialValue : 20 ,
144
+ supportEvents : false ,
145
+ supportBonjour : false ,
146
+ manfDescription : "Current Temperature" ,
147
+ unit : "celsius"
148
+ } , {
149
+ cType : types . TARGET_TEMPERATURE_CTYPE ,
150
+ onUpdate : function ( value ) { console . log ( "Change:" , value ) ; execute ( "Thermostat" , "Target Temperature" , value ) ; } ,
151
+ perms : [ "pw" , "pr" , "ev" ] ,
152
+ format : "int" ,
153
+ initialValue : 20 ,
154
+ supportEvents : false ,
155
+ supportBonjour : false ,
156
+ manfDescription : "Target Temperature" ,
157
+ designedMinValue : 16 ,
158
+ designedMaxValue : 38 ,
159
+ designedMinStep : 1 ,
160
+ unit : "celsius"
161
+ } , {
162
+ cType : types . TEMPERATURE_UNITS_CTYPE ,
163
+ onUpdate : function ( value ) { console . log ( "Change:" , value ) ; execute ( "Thermostat" , "Unit" , value ) ; } ,
164
+ perms : [ "pr" , "ev" ] ,
165
+ format : "int" ,
166
+ initialValue : 0 ,
167
+ supportEvents : false ,
168
+ supportBonjour : false ,
169
+ manfDescription : "Unit" ,
170
+ } ] ;
171
+ for ( var k = 0 ; k < restThermo . length ; k ++ ) {
172
+ var options = {
173
+ type : restThermo [ k ] . cType ,
174
+ perms : restThermo [ k ] . perms ,
175
+ format : restThermo [ k ] . format ,
176
+ initialValue : restThermo [ k ] . initialValue ,
177
+ supportEvents : restThermo [ k ] . supportEvents ,
178
+ supportBonjour : restThermo [ k ] . supportBonjour ,
179
+ manfDescription : restThermo [ k ] . manfDescription ,
180
+ designedMaxLength : restThermo [ k ] . designedMaxLength ,
181
+ designedMinValue : restThermo [ k ] . designedMinValue ,
182
+ designedMaxValue : restThermo [ k ] . designedMaxValue ,
183
+ designedMinStep : restThermo [ k ] . designedMinStep ,
184
+ unit : restThermo [ k ] . unit ,
185
+ }
186
+
187
+ var characteristic = new characteristic_Factor . Characteristic ( options , restThermo [ k ] . onUpdate ) ;
188
+
189
+ thermostatService . addCharacteristic ( characteristic ) ;
190
+ } ;
191
+
192
+ accessoryController . addService ( thermostatService ) ;
193
+ var accessory = new accessory_Factor . Accessory ( "Thermostat 1" , "CA:3E:BC:4D:5E:FF" , storage , parseInt ( targetPort ) , "031-45-154" , accessoryController ) ;
194
+ accessory . publishAccessory ( ) ;
0 commit comments