@@ -63,7 +63,7 @@ type bridgeCfg struct {
63
63
Client MQTT.Client
64
64
WriteChannel chan writeEvent
65
65
RefreshRoomChannel chan string
66
- HeatingUrl string
66
+ HeatingURL string
67
67
Polling int
68
68
Topic string
69
69
LastNumberOfDevices int
@@ -78,7 +78,7 @@ func setupCloseHandler(bridge *bridgeCfg) {
78
78
}()
79
79
}
80
80
81
- func generateXml (values []string , prefix string ) string {
81
+ func generateXML (values []string , prefix string ) string {
82
82
xmlValue := "<content>"
83
83
for _ , v := range values {
84
84
xmlValue += "<field>"
@@ -95,25 +95,35 @@ func generateXml(values []string, prefix string) string {
95
95
return xmlValue
96
96
}
97
97
98
- func fetch (ip string , values []string , prefix string ) [] byte {
98
+ func fetch (ip string , values []string , prefix string ) content {
99
99
url := "http://" + ip + "/cgi-bin/ILRReadValues.cgi"
100
- xmlValue := generateXml (values , prefix )
100
+ xmlValue := generateXML (values , prefix )
101
+ var c content
101
102
102
103
resp , err := http .Post (url , "text/xml" , bytes .NewBuffer ([]byte (xmlValue )))
103
- if err == nil {
104
- defer resp .Body .Close ()
105
- body , err := ioutil .ReadAll (resp .Body )
106
- if err == nil {
107
- return body
108
- }
104
+ if err != nil {
105
+ log .Print (err )
106
+ return c
107
+ }
108
+
109
+ defer resp .Body .Close ()
110
+ body , err := ioutil .ReadAll (resp .Body )
111
+ if err != nil {
112
+ log .Print (err )
113
+ return c
109
114
}
110
115
111
- log .Print (err )
112
- return []byte ("" )
116
+ err = xml .Unmarshal (body , & c )
117
+ if err != nil {
118
+ log .Print (err )
119
+ return c
120
+ }
121
+
122
+ return c
113
123
}
114
124
115
125
func propagate (bridge * bridgeCfg , name string , value string , prefix string ) bool {
116
- url := "http://" + bridge .HeatingUrl + "/cgi-bin/writeVal.cgi?" + prefix + "." + name + "=" + value
126
+ url := "http://" + bridge .HeatingURL + "/cgi-bin/writeVal.cgi?" + prefix + "." + name + "=" + value
117
127
118
128
resp , err := http .Get (url )
119
129
if err == nil {
@@ -144,10 +154,7 @@ func refreshSystemInformation(bridge *bridgeCfg) int {
144
154
"VPI.href" , "VPI.state" ,
145
155
"CD.uname" , "CD.upass" , "CD.ureg" }
146
156
147
- body := fetch (bridge .HeatingUrl , fields , "" )
148
-
149
- var c content
150
- xml .Unmarshal (body , & c )
157
+ c := fetch (bridge .HeatingURL , fields , "" )
151
158
152
159
totalNumberOfDevices := 0
153
160
for i := 0 ; i < len (c .Entries ); i ++ {
@@ -172,10 +179,7 @@ func refreshRoomInformation(bridge *bridgeCfg, number string) {
172
179
"RaumTemp" , "SollTemp" , "TempSIUnit" , "WeekProg" , "WeekProgEna" ,
173
180
"SollTempStepVal" , "SollTempMinVal" , "SollTempMaxVal" }
174
181
175
- body := fetch (bridge .HeatingUrl , fields , number )
176
-
177
- var c content
178
- xml .Unmarshal (body , & c )
182
+ c := fetch (bridge .HeatingURL , fields , number )
179
183
180
184
for i := 0 ; i < len (c .Entries ); i ++ {
181
185
splitted := strings .SplitN (c .Entries [i ].Name , "." , 2 )
@@ -319,7 +323,7 @@ func main() {
319
323
KeepRunning : make (chan bool ),
320
324
WriteChannel : make (chan writeEvent , 50 ),
321
325
RefreshRoomChannel : make (chan string , 50 ),
322
- HeatingUrl : * heating ,
326
+ HeatingURL : * heating ,
323
327
Polling : * polling ,
324
328
Topic : * topic ,
325
329
LastNumberOfDevices : 0 ,
0 commit comments