197 dload = NULL; |
197 dload = NULL; |
198 } |
198 } |
199 |
199 |
200 |
200 |
201 |
201 |
|
202 void pub_domoticz_output(int idx, int value) { |
|
203 char *dload = NULL; |
|
204 char sidx[10], sval[10]; |
|
205 |
|
206 if (idx == 0) |
|
207 return; |
|
208 |
|
209 sprintf(sidx, "%d", idx); |
|
210 sprintf(sval, "%d", value); |
|
211 |
|
212 dload = xstrcpy((char *)"{\"command\":\"udevice\",\"idx\":"); |
|
213 dload = xstrcat(dload, sidx); |
|
214 dload = xstrcat(dload, (char *)",\"nvalue\":"); |
|
215 if (value >= 50) |
|
216 dload = xstrcat(dload, (char *)"1"); |
|
217 else |
|
218 dload = xstrcat(dload, (char *)"0"); |
|
219 dload = xstrcat(dload, (char *)",\"svalue\":\""); |
|
220 dload = xstrcat(dload, sval); |
|
221 dload = xstrcat(dload, (char *)"\"}"); |
|
222 publisher(mosq, (char *)"domoticz/in", dload, false); |
|
223 free(dload); |
|
224 dload = NULL; |
|
225 } |
|
226 |
|
227 |
|
228 |
202 char *unit_data(units_list *unit, bool birth) |
229 char *unit_data(units_list *unit, bool birth) |
203 { |
230 { |
204 char *payload = NULL; |
231 char *payload = NULL; |
205 char buf[128]; |
232 char buf[128]; |
206 bool comma = false; |
233 bool comma = false; |
251 payload = xstrcat(payload, unit->heater_address); |
278 payload = xstrcat(payload, unit->heater_address); |
252 payload = xstrcat(payload, (char *)"\",\"state\":"); |
279 payload = xstrcat(payload, (char *)"\",\"state\":"); |
253 sprintf(buf, "%d", unit->heater_state); |
280 sprintf(buf, "%d", unit->heater_state); |
254 payload = xstrcat(payload, buf); |
281 payload = xstrcat(payload, buf); |
255 payload = xstrcat(payload, (char *)"}"); |
282 payload = xstrcat(payload, (char *)"}"); |
256 pub_domoticz_temp(unit->heater_idx, buf); |
283 pub_domoticz_output(unit->heater_idx, unit->heater_state); |
257 } else { |
284 } else { |
258 payload = xstrcat(payload, (char *)",\"heater\":null"); |
285 payload = xstrcat(payload, (char *)",\"heater\":null"); |
259 } |
286 } |
260 |
287 |
261 if (unit->cooler_address) { |
288 if (unit->cooler_address) { |
263 payload = xstrcat(payload, unit->cooler_address); |
290 payload = xstrcat(payload, unit->cooler_address); |
264 payload = xstrcat(payload, (char *)"\",\"state\":"); |
291 payload = xstrcat(payload, (char *)"\",\"state\":"); |
265 sprintf(buf, "%d", unit->cooler_state); |
292 sprintf(buf, "%d", unit->cooler_state); |
266 payload = xstrcat(payload, buf); |
293 payload = xstrcat(payload, buf); |
267 payload = xstrcat(payload, (char *)"}"); |
294 payload = xstrcat(payload, (char *)"}"); |
268 pub_domoticz_temp(unit->cooler_idx, buf); |
295 pub_domoticz_output(unit->cooler_idx, unit->cooler_state); |
269 } else { |
296 } else { |
270 payload = xstrcat(payload, (char *)",\"cooler\":null"); |
297 payload = xstrcat(payload, (char *)",\"cooler\":null"); |
271 } |
298 } |
272 |
299 |
273 if (unit->fan_address) { |
300 if (unit->fan_address) { |
275 payload = xstrcat(payload, unit->fan_address); |
302 payload = xstrcat(payload, unit->fan_address); |
276 payload = xstrcat(payload, (char *)"\",\"state\":"); |
303 payload = xstrcat(payload, (char *)"\",\"state\":"); |
277 sprintf(buf, "%d", unit->fan_state); |
304 sprintf(buf, "%d", unit->fan_state); |
278 payload = xstrcat(payload, buf); |
305 payload = xstrcat(payload, buf); |
279 payload = xstrcat(payload, (char *)"}"); |
306 payload = xstrcat(payload, (char *)"}"); |
280 pub_domoticz_temp(unit->fan_idx, buf); |
307 pub_domoticz_output(unit->fan_idx, unit->fan_state); |
281 } else { |
308 } else { |
282 payload = xstrcat(payload, (char *)",\"fan\":null"); |
309 payload = xstrcat(payload, (char *)",\"fan\":null"); |
283 } |
310 } |
284 |
311 |
285 if (unit->door_address) { |
312 if (unit->door_address) { |
287 payload = xstrcat(payload, unit->door_address); |
314 payload = xstrcat(payload, unit->door_address); |
288 payload = xstrcat(payload, (char *)"\",\"state\":"); |
315 payload = xstrcat(payload, (char *)"\",\"state\":"); |
289 sprintf(buf, "%d", unit->door_state); |
316 sprintf(buf, "%d", unit->door_state); |
290 payload = xstrcat(payload, buf); |
317 payload = xstrcat(payload, buf); |
291 payload = xstrcat(payload, (char *)"}"); |
318 payload = xstrcat(payload, (char *)"}"); |
292 pub_domoticz_temp(unit->door_idx, buf); |
319 pub_domoticz_output(unit->door_idx, unit->door_state); |
293 } else { |
320 } else { |
294 payload = xstrcat(payload, (char *)",\"door\":null"); |
321 payload = xstrcat(payload, (char *)",\"door\":null"); |
295 } |
322 } |
296 |
323 |
297 if (unit->light_address) { |
324 if (unit->light_address) { |
299 payload = xstrcat(payload, unit->light_address); |
326 payload = xstrcat(payload, unit->light_address); |
300 payload = xstrcat(payload, (char *)"\",\"state\":"); |
327 payload = xstrcat(payload, (char *)"\",\"state\":"); |
301 sprintf(buf, "%d", unit->light_state); |
328 sprintf(buf, "%d", unit->light_state); |
302 payload = xstrcat(payload, buf); |
329 payload = xstrcat(payload, buf); |
303 payload = xstrcat(payload, (char *)"}"); |
330 payload = xstrcat(payload, (char *)"}"); |
304 pub_domoticz_temp(unit->light_idx, buf); |
331 pub_domoticz_output(unit->light_idx, unit->light_state); |
305 } else { |
332 } else { |
306 payload = xstrcat(payload, (char *)",\"light\":null"); |
333 payload = xstrcat(payload, (char *)",\"light\":null"); |
307 } |
334 } |
308 |
335 |
309 if (unit->psu_address) { |
336 if (unit->psu_address) { |
311 payload = xstrcat(payload, unit->psu_address); |
338 payload = xstrcat(payload, unit->psu_address); |
312 payload = xstrcat(payload, (char *)"\",\"state\":"); |
339 payload = xstrcat(payload, (char *)"\",\"state\":"); |
313 sprintf(buf, "%d", unit->psu_state); |
340 sprintf(buf, "%d", unit->psu_state); |
314 payload = xstrcat(payload, buf); |
341 payload = xstrcat(payload, buf); |
315 payload = xstrcat(payload, (char *)"}"); |
342 payload = xstrcat(payload, (char *)"}"); |
316 pub_domoticz_temp(unit->psu_idx, buf); |
343 pub_domoticz_output(unit->psu_idx, unit->psu_state); |
317 } else { |
344 } else { |
318 payload = xstrcat(payload, (char *)",\"psu\":null"); |
345 payload = xstrcat(payload, (char *)",\"psu\":null"); |
319 } |
346 } |
320 |
347 |
321 payload = xstrcat(payload, (char *)",\"mode\":\""); |
348 payload = xstrcat(payload, (char *)",\"mode\":\""); |