Fri, 03 Aug 2018 16:13:17 +0200
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1 | /***************************************************************************** |
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
2 | * Copyright (C) 2016-2018 |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
3 | * |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
4 | * Michiel Broek <mbroek at mbse dot eu> |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
5 | * |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
6 | * This file is part of the mbsePi-apps |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
7 | * |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
8 | * This is free software; you can redistribute it and/or modify it |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
9 | * under the terms of the GNU General Public License as published by the |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
10 | * Free Software Foundation; either version 2, or (at your option) any |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
11 | * later version. |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
12 | * |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
13 | * mbsePi-apps is distributed in the hope that it will be useful, but |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
14 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
16 | * General Public License for more details. |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
17 | * |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
18 | * You should have received a copy of the GNU General Public License |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
19 | * along with ThermFerm; see the file COPYING. If not, write to the Free |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
20 | * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
21 | *****************************************************************************/ |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
22 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
23 | #include "thermferm.h" |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
24 | #include "xutil.h" |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
25 | #include "mqtt.h" |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
26 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
27 | extern sys_config Config; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
28 | extern int debug; |
550
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
29 | extern int my_shutdown; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
30 | extern int my_reboot; |
506 | 31 | extern const char UNITMODE[5][8]; |
32 | extern const char PROFSTATE[5][6]; | |
33 | extern const char TEMPSTATE[3][8]; | |
34 | ||
35 | int Sequence = 0; | |
36 | ||
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
37 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
38 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
39 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
40 | /* Global variables for use in callbacks. */ |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
41 | int mqtt_qos = 0; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
42 | int mqtt_status = STATUS_CONNECTING; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
43 | int mqtt_mid_sent = 0; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
44 | int mqtt_last_mid = -1; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
45 | int mqtt_last_mid_sent = -1; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
46 | int mqtt_connected = TRUE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
47 | int mqtt_disconnect_sent = FALSE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
48 | int mqtt_connect_lost = FALSE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
49 | int mqtt_my_shutdown = FALSE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
50 | int mqtt_use = FALSE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
51 | int keepalive = 60; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
52 | unsigned int max_inflight = 20; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
53 | struct mosquitto *mosq = NULL; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
54 | char *state = NULL; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
55 | char my_hostname[256]; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
56 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
57 | |
506 | 58 | |
59 | char *payload_header(void) | |
60 | { | |
61 | char *tmp, buf[128]; | |
62 | ||
63 | tmp = xstrcpy((char *)"{\"timestamp\":"); | |
64 | sprintf(buf, "%ld", time(NULL)); | |
65 | tmp = xstrcat(tmp, buf); | |
66 | tmp = xstrcat(tmp, (char *)",\"seq\":"); | |
67 | sprintf(buf, "%d", Sequence++); | |
68 | tmp = xstrcat(tmp, buf); | |
69 | tmp = xstrcat(tmp, (char *)",\"metric\":"); | |
70 | return tmp; | |
71 | } | |
72 | ||
73 | ||
74 | ||
75 | char *topic_base(char *msgtype) | |
76 | { | |
77 | char *tmp; | |
78 | ||
79 | tmp = xstrcpy((char *)"mbv1.0/fermenters/"); | |
80 | tmp = xstrcat(tmp, msgtype); | |
81 | tmp = xstrcat(tmp, (char *)"/"); | |
82 | tmp = xstrcat(tmp, my_hostname); | |
83 | return tmp; | |
84 | } | |
85 | ||
86 | ||
87 | ||
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
88 | void my_connect_callback(struct mosquitto *my_mosq, void *obj, int result) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
89 | { |
506 | 90 | char *topic = NULL; |
91 | ||
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
92 | if (mqtt_connect_lost) { |
506 | 93 | mqtt_connect_lost = FALSE; |
94 | syslog(LOG_NOTICE, "MQTT: reconnect: %s", mosquitto_connack_string(result)); | |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
95 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
96 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
97 | if (!result) { |
506 | 98 | topic = topic_base((char *)"NCMD"); |
99 | topic = xstrcat(topic, (char *)"/#"); | |
100 | mosquitto_subscribe(mosq, NULL, topic, 0); | |
101 | free(topic); | |
102 | topic = topic_base((char *)"DCMD"); | |
103 | topic = xstrcat(topic, (char *)"/#"); | |
104 | mosquitto_subscribe(mosq, NULL, topic, 0); | |
105 | free(topic); | |
106 | topic = NULL; | |
107 | mqtt_status = STATUS_CONNACK_RECVD; | |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
108 | } else { |
506 | 109 | syslog(LOG_NOTICE, "MQTT: my_connect_callback: %s\n", mosquitto_connack_string(result)); |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
110 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
111 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
112 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
113 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
114 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
115 | void my_disconnect_callback(struct mosquitto *my_mosq, void *obj, int rc) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
116 | { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
117 | if (mqtt_my_shutdown) { |
500
5aa914eb644e
Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents:
499
diff
changeset
|
118 | syslog(LOG_NOTICE, "MQTT: acknowledged DISCONNECT from %s", Config.mqtt_host); |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
119 | mqtt_connected = FALSE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
120 | } else { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
121 | /* |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
122 | * The remote server was brought down. We must keep running |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
123 | */ |
500
5aa914eb644e
Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents:
499
diff
changeset
|
124 | syslog(LOG_NOTICE, "MQTT: received DISCONNECT from %s, connection lost", Config.mqtt_host); |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
125 | mqtt_connect_lost = TRUE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
126 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
127 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
128 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
129 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
130 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
131 | void my_publish_callback(struct mosquitto *my_mosq, void *obj, int mid) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
132 | { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
133 | mqtt_last_mid_sent = mid; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
134 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
135 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
136 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
137 | |
506 | 138 | void my_subscribe_callback(struct mosquitto *my_mosq, void *userdata, int mid, int qos_count, const int *granted_qos) |
139 | { | |
140 | int i; | |
141 | ||
142 | syslog(LOG_NOTICE, "Subscribed (mid: %d): %d", mid, granted_qos[0]); | |
143 | for (i = 1; i < qos_count; i++) { | |
144 | syslog(LOG_NOTICE, " %d", granted_qos[i]); | |
145 | } | |
146 | } | |
147 | ||
148 | ||
149 | ||
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
150 | void my_log_callback(struct mosquitto *my_mosq, void *obj, int level, const char *str) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
151 | { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
152 | syslog(LOG_NOTICE, "MQTT: %s", str); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
153 | if (debug) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
154 | fprintf(stdout, "MQTT: %s\n", str); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
155 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
156 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
157 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
158 | |
506 | 159 | void my_message_callback(struct mosquitto *my_mosq, void *userdata, const struct mosquitto_message *message) |
160 | { | |
550
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
161 | char *message_type; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
162 | struct json_object *jobj, *metric, *val; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
163 | time_t timestamp; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
164 | int timediff; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
165 | |
506 | 166 | if (message->payloadlen) { |
550
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
167 | /* |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
168 | * Process received commands |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
169 | */ |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
170 | strtok(message->topic, "/"); // Ignore mbv1.0 |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
171 | strtok(NULL, "/"); // Ignore group_id |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
172 | message_type = strtok(NULL, "/"); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
173 | |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
174 | jobj = json_tokener_parse(message->payload); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
175 | if (json_object_object_get_ex(jobj, "timestamp", &val)) { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
176 | timestamp = json_object_get_int(val); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
177 | timediff = (int)timestamp - time(NULL); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
178 | if ((timediff < 61) && (timediff > -61)) { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
179 | if (json_object_object_get_ex(jobj, "metric", &metric)) { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
180 | if ((json_object_object_get_ex(metric, "Node Control/Reboot", &val)) && (strcmp(message_type, "NCMD") == 0)) { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
181 | if (json_object_get_boolean(val) == true) { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
182 | syslog(LOG_NOTICE, "MQTT: `Node Control/Reboot' command"); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
183 | /* |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
184 | * Reboot. The erver process will restart which is handled |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
185 | * in the main thread loop. |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
186 | */ |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
187 | my_reboot = my_shutdown = TRUE; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
188 | return; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
189 | } |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
190 | } |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
191 | if ((json_object_object_get_ex(metric, "Node Control/Rebirth", &val)) && (strcmp(message_type, "NCMD") == 0)) { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
192 | if (json_object_get_boolean(val) == true) { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
193 | /* |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
194 | * Resend all birth certificates. |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
195 | */ |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
196 | syslog(LOG_NOTICE, "MQTT: `Node Control/Rebirth' command"); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
197 | publishNData(true, 0); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
198 | publishDBirthAll(); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
199 | return; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
200 | } |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
201 | } |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
202 | printf("metric: %s\n", (char *)json_object_get_string(metric)); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
203 | syslog(LOG_NOTICE, "MQTT: %s payload not understood\n", (char *)message->payload); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
204 | return; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
205 | } |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
206 | } else { |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
207 | syslog(LOG_NOTICE, "MQTT: got payload with timestamp %d seconds error", timediff); |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
208 | return; |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
209 | } |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
210 | } |
04c942cded91
Versie 0.8.3. Enkele debug console berichten verwijderd. De MQTT NCMD reboot en rebirth commando's geimplementeerd.
Michiel Broek <mbroek@mbse.eu>
parents:
549
diff
changeset
|
211 | |
506 | 212 | syslog(LOG_NOTICE, "MQTT: message callback %s :: %d", message->topic, message->payloadlen); |
213 | } else { | |
214 | syslog(LOG_NOTICE, "MQTT: message callback %s (null)", message->topic); | |
215 | } | |
216 | } | |
217 | ||
218 | ||
219 | ||
220 | void publisher(struct mosquitto *my_mosq, char *topic, char *payload, bool retain) { | |
221 | // publish the data | |
222 | if (payload) | |
223 | mosquitto_publish(my_mosq, &mqtt_mid_sent, topic, strlen(payload), payload, mqtt_qos, retain); | |
224 | else | |
225 | mosquitto_publish(my_mosq, &mqtt_mid_sent, topic, 0, NULL, mqtt_qos, retain); | |
226 | } | |
227 | ||
228 | ||
229 | ||
515
7ab5cf2afc0c
Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents:
514
diff
changeset
|
230 | void pub_domoticz_temp(int idx, int value) { |
513
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
231 | char *dload = NULL; |
515
7ab5cf2afc0c
Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents:
514
diff
changeset
|
232 | char sidx[10], sval[20]; |
513
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
233 | |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
234 | if (idx == 0) |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
235 | return; |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
236 | |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
237 | sprintf(sidx, "%d", idx); |
515
7ab5cf2afc0c
Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents:
514
diff
changeset
|
238 | sprintf(sval, "%.3f", value / 1000.0); |
513
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
239 | |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
240 | dload = xstrcpy((char *)"{\"command\":\"udevice\",\"idx\":"); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
241 | dload = xstrcat(dload, sidx); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
242 | dload = xstrcat(dload, (char *)",\"nvalue\":0,\"svalue\":\""); |
515
7ab5cf2afc0c
Only send domoticz changed values
Michiel Broek <mbroek@mbse.eu>
parents:
514
diff
changeset
|
243 | dload = xstrcat(dload, sval); |
513
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
244 | dload = xstrcat(dload, (char *)"\"}"); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
245 | publisher(mosq, (char *)"domoticz/in", dload, false); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
246 | free(dload); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
247 | dload = NULL; |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
248 | } |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
249 | |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
250 | |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
251 | |
514
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
252 | void pub_domoticz_output(int idx, int value) { |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
253 | char *dload = NULL; |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
254 | char sidx[10], sval[10]; |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
255 | |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
256 | if (idx == 0) |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
257 | return; |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
258 | |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
259 | sprintf(sidx, "%d", idx); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
260 | sprintf(sval, "%d", value); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
261 | |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
262 | dload = xstrcpy((char *)"{\"command\":\"udevice\",\"idx\":"); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
263 | dload = xstrcat(dload, sidx); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
264 | dload = xstrcat(dload, (char *)",\"nvalue\":"); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
265 | if (value >= 50) |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
266 | dload = xstrcat(dload, (char *)"1"); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
267 | else |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
268 | dload = xstrcat(dload, (char *)"0"); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
269 | dload = xstrcat(dload, (char *)",\"svalue\":\""); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
270 | dload = xstrcat(dload, sval); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
271 | dload = xstrcat(dload, (char *)"\"}"); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
272 | publisher(mosq, (char *)"domoticz/in", dload, false); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
273 | free(dload); |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
274 | dload = NULL; |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
275 | } |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
276 | |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
277 | |
f5a00ad53329
Changed state messages to domoticz
Michiel Broek <mbroek@mbse.eu>
parents:
513
diff
changeset
|
278 | |
506 | 279 | char *unit_data(units_list *unit, bool birth) |
280 | { | |
281 | char *payload = NULL; | |
282 | char buf[128]; | |
283 | bool comma = false; | |
284 | profiles_list *profile; | |
285 | prof_step *pstep; | |
286 | ||
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
287 | payload = xstrcpy((char *)"{"); |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
288 | |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
289 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
290 | * Fixed unit values, never change these! |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
291 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
292 | if (birth) { |
506 | 293 | payload = xstrcat(payload, (char *)"\"uuid\":\""); |
294 | payload = xstrcat(payload, unit->uuid); | |
295 | payload = xstrcat(payload, (char *)"\",\"alias\":\""); | |
296 | payload = xstrcat(payload, unit->alias); | |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
297 | payload = xstrcat(payload, (char *)"\","); |
506 | 298 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
299 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
300 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
301 | * Product (beer) loaded information. |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
302 | */ |
554
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
303 | if ((unit->product_name && strlen(unit->product_name)) || |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
304 | (unit->product_code && strlen(unit->product_code)) || |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
305 | (unit->product_uuid && strlen(unit->product_uuid))) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
306 | comma = false; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
307 | payload = xstrcat(payload, (char *)"\"product\":{"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
308 | if (unit->product_uuid && strlen(unit->product_uuid)) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
309 | payload = xstrcat(payload, (char *)"\"uuid\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
310 | payload = xstrcat(payload, unit->product_uuid); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
311 | payload = xstrcat(payload, (char *)"\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
312 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
313 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
314 | if (unit->product_code && strlen(unit->product_code)) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
315 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
316 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
317 | payload = xstrcat(payload, (char *)"\"code\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
318 | payload = xstrcat(payload, unit->product_code); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
319 | payload = xstrcat(payload, (char *)"\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
320 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
321 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
322 | if (unit->product_name && strlen(unit->product_name)) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
323 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
324 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
325 | payload = xstrcat(payload, (char *)"\"name\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
326 | payload = xstrcat(payload, unit->product_name); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
327 | payload = xstrcat(payload, (char *)"\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
328 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
329 | payload = xstrcat(payload, (char *)"}"); |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
330 | } |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
331 | |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
332 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
333 | * Air temperature sensor |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
334 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
335 | if (unit->air_address) { |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
336 | payload = xstrcat(payload, (char *)",\"air\":{\"address\":\""); |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
337 | payload = xstrcat(payload, unit->air_address); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
338 | payload = xstrcat(payload, (char *)"\",\"state\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
339 | payload = xstrcat(payload, (char *)TEMPSTATE[unit->air_state]); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
340 | payload = xstrcat(payload, (char *)"\",\"temperature\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
341 | sprintf(buf, "%.3f", unit->air_temperature / 1000.0); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
342 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
343 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
344 | } else { |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
345 | payload = xstrcat(payload, (char *)",\"air\":null"); |
506 | 346 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
347 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
348 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
349 | * Beer temperature sensor |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
350 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
351 | if (unit->beer_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
352 | payload = xstrcat(payload, (char *)",\"beer\":{\"address\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
353 | payload = xstrcat(payload, unit->beer_address); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
354 | payload = xstrcat(payload, (char *)"\",\"state\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
355 | payload = xstrcat(payload, (char *)TEMPSTATE[unit->beer_state]); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
356 | payload = xstrcat(payload, (char *)"\",\"temperature\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
357 | sprintf(buf, "%.3f", unit->beer_temperature / 1000.0); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
358 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
359 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
360 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
361 | payload = xstrcat(payload, (char *)",\"beer\":null"); |
506 | 362 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
363 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
364 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
365 | * External chiller temperature sensor |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
366 | */ |
518
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
367 | if (unit->chiller_address) { |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
368 | payload = xstrcat(payload, (char *)",\"chiller\":{\"address\":\""); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
369 | payload = xstrcat(payload, unit->chiller_address); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
370 | payload = xstrcat(payload, (char *)"\",\"state\":\""); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
371 | payload = xstrcat(payload, (char *)TEMPSTATE[unit->chiller_state]); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
372 | payload = xstrcat(payload, (char *)"\",\"temperature\":"); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
373 | sprintf(buf, "%.3f", unit->chiller_temperature / 1000.0); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
374 | payload = xstrcat(payload, buf); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
375 | payload = xstrcat(payload, (char *)"}"); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
376 | } else { |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
377 | payload = xstrcat(payload, (char *)",\"chiller\":null"); |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
378 | } |
fd36bedab944
Added chiller configuration items
Michiel Broek <mbroek@mbse.eu>
parents:
515
diff
changeset
|
379 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
380 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
381 | * Heater control, power 0..100% and usage count. |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
382 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
383 | if (unit->heater_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
384 | payload = xstrcat(payload, (char *)",\"heater\":{\"address\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
385 | payload = xstrcat(payload, unit->heater_address); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
386 | payload = xstrcat(payload, (char *)"\",\"state\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
387 | sprintf(buf, "%d", unit->heater_state); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
388 | payload = xstrcat(payload, buf); |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
389 | payload = xstrcat(payload, (char *)",\"usage\":"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
390 | sprintf(buf, "%d", unit->heater_usage); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
391 | payload = xstrcat(payload, buf); |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
392 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
393 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
394 | payload = xstrcat(payload, (char *)",\"heater\":null"); |
506 | 395 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
396 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
397 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
398 | * Cooler control, power 0..100% and usage counter. |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
399 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
400 | if (unit->cooler_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
401 | payload = xstrcat(payload, (char *)",\"cooler\":{\"address\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
402 | payload = xstrcat(payload, unit->cooler_address); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
403 | payload = xstrcat(payload, (char *)"\",\"state\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
404 | sprintf(buf, "%d", unit->cooler_state); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
405 | payload = xstrcat(payload, buf); |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
406 | payload = xstrcat(payload, (char *)",\"usage\":"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
407 | sprintf(buf, "%d", unit->cooler_usage); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
408 | payload = xstrcat(payload, buf); |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
409 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
410 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
411 | payload = xstrcat(payload, (char *)",\"cooler\":null"); |
506 | 412 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
413 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
414 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
415 | * Fan control, 0..100% and usage counter. |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
416 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
417 | if (unit->fan_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
418 | payload = xstrcat(payload, (char *)",\"fan\":{\"address\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
419 | payload = xstrcat(payload, unit->fan_address); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
420 | payload = xstrcat(payload, (char *)"\",\"state\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
421 | sprintf(buf, "%d", unit->fan_state); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
422 | payload = xstrcat(payload, buf); |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
423 | payload = xstrcat(payload, (char *)",\"usage\":"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
424 | sprintf(buf, "%d", unit->fan_usage); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
425 | payload = xstrcat(payload, buf); |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
426 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
427 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
428 | payload = xstrcat(payload, (char *)",\"fan\":null"); |
506 | 429 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
430 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
431 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
432 | * Interior lights control, 0..100% and usage counter. |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
433 | */ |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
434 | if (unit->light_address) { |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
435 | payload = xstrcat(payload, (char *)",\"light\":{\"address\":\""); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
436 | payload = xstrcat(payload, unit->light_address); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
437 | payload = xstrcat(payload, (char *)"\",\"state\":"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
438 | sprintf(buf, "%d", unit->light_state); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
439 | payload = xstrcat(payload, buf); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
440 | payload = xstrcat(payload, (char *)",\"usage\":"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
441 | sprintf(buf, "%d", unit->light_usage); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
442 | payload = xstrcat(payload, buf); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
443 | payload = xstrcat(payload, (char *)"}"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
444 | } else { |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
445 | payload = xstrcat(payload, (char *)",\"light\":null"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
446 | } |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
447 | |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
448 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
449 | * Door sensor. |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
450 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
451 | if (unit->door_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
452 | payload = xstrcat(payload, (char *)",\"door\":{\"address\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
453 | payload = xstrcat(payload, unit->door_address); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
454 | payload = xstrcat(payload, (char *)"\",\"state\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
455 | sprintf(buf, "%d", unit->door_state); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
456 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
457 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
458 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
459 | payload = xstrcat(payload, (char *)",\"door\":null"); |
506 | 460 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
461 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
462 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
463 | * PSU status |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
464 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
465 | if (unit->psu_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
466 | payload = xstrcat(payload, (char *)",\"psu\":{\"address\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
467 | payload = xstrcat(payload, unit->psu_address); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
468 | payload = xstrcat(payload, (char *)"\",\"state\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
469 | sprintf(buf, "%d", unit->psu_state); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
470 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
471 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
472 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
473 | payload = xstrcat(payload, (char *)",\"psu\":null"); |
506 | 474 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
475 | |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
476 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
477 | * Working mode and setpoints |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
478 | */ |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
479 | payload = xstrcat(payload, (char *)",\"mode\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
480 | payload = xstrcat(payload, (char *)UNITMODE[unit->mode]); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
481 | payload = xstrcat(payload, (char *)"\",\"setpoint\":{\"low\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
482 | sprintf(buf, "%.1f", unit->PID_heat->SetP); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
483 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
484 | payload = xstrcat(payload, (char *)",\"high\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
485 | sprintf(buf, "%.1f", unit->PID_cool->SetP); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
486 | payload = xstrcat(payload, buf); |
546
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
487 | payload = xstrcat(payload, (char *)"},\"alarm\":"); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
488 | sprintf(buf, "%d", unit->alarm_flag); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
489 | payload = xstrcat(payload, buf); |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
490 | |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
491 | /* |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
492 | * Loaded profile and state |
d2e8626e7118
Changed alarm message and mqtt message order
Michiel Broek <mbroek@mbse.eu>
parents:
545
diff
changeset
|
493 | */ |
548
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
494 | if (unit->profile) { |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
495 | for (profile = Config.profiles; profile; profile = profile->next) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
496 | if (strcmp(unit->profile, profile->uuid) == 0) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
497 | payload = xstrcat(payload, (char *)",\"profile\":{\"uuid\":\""); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
498 | payload = xstrcat(payload, unit->profile); |
548
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
499 | payload = xstrcat(payload, (char *)"\",\"name\":\""); |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
500 | payload = xstrcat(payload, profile->name); |
548
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
501 | payload = xstrcat(payload, (char *)"\",\"state\":\""); |
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
502 | payload = xstrcat(payload, (char *)PROFSTATE[unit->prof_state]); |
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
503 | payload = xstrcat(payload, (char *)"\",\"percent\":"); |
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
504 | sprintf(buf, "%d", unit->prof_percent); |
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
505 | payload = xstrcat(payload, buf); |
2924fe4911d9
Versie 0.8.1. Geen DDATA als fermenter uit staat. Profile JSON formaat is nu werkend.
Michiel Broek <mbroek@mbse.eu>
parents:
547
diff
changeset
|
506 | payload = xstrcat(payload, (char *)",\"inittemp\":{\"low\":"); |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
507 | sprintf(buf, "%.1f", profile->inittemp_lo); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
508 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
509 | payload = xstrcat(payload, (char *)",\"high\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
510 | sprintf(buf, "%.1f", profile->inittemp_hi); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
511 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
512 | payload = xstrcat(payload, (char *)"},\"fridgemode\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
513 | sprintf(buf, "%d", profile->fridge_mode); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
514 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
515 | comma = false; |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
516 | if (profile->steps) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
517 | payload = xstrcat(payload, (char *)",\"steps\":["); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
518 | for (pstep = profile->steps; pstep; pstep = pstep->next) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
519 | if (comma) |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
520 | payload = xstrcat(payload, (char *)","); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
521 | payload = xstrcat(payload, (char *)"{\"resttime\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
522 | sprintf(buf, "%d", pstep->resttime); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
523 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
524 | payload = xstrcat(payload, (char *)",\"steptime\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
525 | sprintf(buf, "%d", pstep->steptime); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
526 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
527 | payload = xstrcat(payload, (char *)",\"target\":{\"low\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
528 | sprintf(buf, "%.1f", pstep->target_lo); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
529 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
530 | payload = xstrcat(payload, (char *)",\"high\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
531 | sprintf(buf, "%.1f", pstep->target_hi); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
532 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
533 | payload = xstrcat(payload, (char *)"},\"fridgemode\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
534 | sprintf(buf, "%d", pstep->fridge_mode); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
535 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
536 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
537 | comma = true; |
506 | 538 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
539 | payload = xstrcat(payload, (char *)"]"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
540 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
541 | payload = xstrcat(payload, (char *)",\"steps\":null"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
542 | } |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
543 | payload = xstrcat(payload, (char *)"}"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
544 | break; |
506 | 545 | } |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
546 | } |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
547 | } else { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
548 | payload = xstrcat(payload, (char *)",\"profile\":null"); |
506 | 549 | } |
550 | payload = xstrcat(payload, (char *)"}"); | |
551 | ||
552 | return payload; | |
553 | } | |
554 | ||
555 | ||
556 | ||
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
557 | /** |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
558 | * @brief Publish DBIRTH for all active units. If there are no active units, don't |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
559 | * publish anything. This function should be called at program start. |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
560 | */ |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
561 | void publishDBirthAll(void) |
506 | 562 | { |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
563 | char *topic = NULL, *payload = NULL, *payloadu = NULL; |
506 | 564 | units_list *unit; |
565 | int comma = FALSE; | |
566 | ||
567 | payload = payload_header(); | |
568 | payload = xstrcat(payload, (char *)"{\"units\":["); | |
569 | for (unit = Config.units; unit; unit = unit->next) { | |
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
570 | if (unit->mode != UNITMODE_OFF) { |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
571 | if (comma) |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
572 | payload = xstrcat(payload, (char *)","); |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
573 | payloadu = unit_data(unit, true); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
574 | payload = xstrcat(payload, payloadu); |
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
575 | comma = TRUE; |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
576 | free(payloadu); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
577 | payloadu = NULL; |
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
578 | } |
506 | 579 | } |
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
580 | if (comma) { // Only publish if there is at least one unit active. |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
581 | payload = xstrcat(payload, (char *)"]}}"); |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
582 | topic = topic_base((char *)"DBIRTH"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
583 | publisher(mosq, topic, payload, true); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
584 | free(topic); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
585 | topic = NULL; |
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
586 | } |
506 | 587 | free(payload); |
588 | payload = NULL; | |
589 | } | |
590 | ||
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
591 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
592 | |
506 | 593 | void publishDData(units_list *unit) |
594 | { | |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
595 | char *payload = NULL, *payloadu = NULL, *topic = NULL; |
506 | 596 | |
597 | if (mqtt_use) { | |
598 | payload = payload_header(); | |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
599 | payloadu = unit_data(unit, false); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
600 | payload = xstrcat(payload, payloadu); |
506 | 601 | payload = xstrcat(payload, (char *)"}"); |
602 | topic = xstrcat(topic_base((char *)"DDATA"), (char *)"/"); | |
603 | topic = xstrcat(topic, unit->alias); | |
604 | publisher(mosq, topic, payload, false); | |
605 | free(payload); | |
606 | payload = NULL; | |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
607 | free(payloadu); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
608 | payloadu = NULL; |
506 | 609 | free(topic); |
610 | topic = NULL; | |
611 | } | |
612 | } | |
613 | ||
614 | ||
615 | ||
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
616 | void publishDBirth(units_list *unit) |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
617 | { |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
618 | char *payload = NULL, *topic = NULL; |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
619 | |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
620 | if (mqtt_use) { |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
621 | payload = payload_header(); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
622 | payload = xstrcat(payload, unit_data(unit, true)); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
623 | payload = xstrcat(payload, (char *)"}"); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
624 | topic = xstrcat(topic_base((char *)"DBIRTH"), (char *)"/"); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
625 | topic = xstrcat(topic, unit->alias); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
626 | publisher(mosq, topic, payload, true); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
627 | free(payload); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
628 | payload = NULL; |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
629 | free(topic); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
630 | topic = NULL; |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
631 | } |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
632 | } |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
633 | |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
634 | |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
635 | |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
636 | void publishDDeath(units_list *unit) |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
637 | { |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
638 | char *topic = NULL; |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
639 | |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
640 | if (mqtt_use) { |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
641 | // First delete presistent DBIRTH topic |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
642 | topic = xstrcat(topic_base((char *)"DBIRTH"), (char *)"/"); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
643 | topic = xstrcat(topic, unit->alias); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
644 | publisher(mosq, topic, NULL, true); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
645 | free(topic); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
646 | topic = NULL; |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
647 | topic = xstrcat(topic_base((char *)"DDEATH"), (char *)"/"); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
648 | topic = xstrcat(topic, unit->alias); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
649 | publisher(mosq, topic, NULL, true); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
650 | free(topic); |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
651 | topic = NULL; |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
652 | } |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
653 | } |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
654 | |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
655 | |
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
656 | |
554
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
657 | void publishDLog(units_list *unit) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
658 | { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
659 | char buf[32], *payload = NULL, *topic = NULL; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
660 | bool comma = false; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
661 | |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
662 | if (mqtt_use) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
663 | payload = payload_header(); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
664 | payload = xstrcat(payload, (char *)"{"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
665 | |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
666 | if ((unit->product_name && strlen(unit->product_name)) || |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
667 | (unit->product_code && strlen(unit->product_code)) || |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
668 | (unit->product_uuid && strlen(unit->product_uuid))) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
669 | comma = false; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
670 | payload = xstrcat(payload, (char *)"\"product\":{"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
671 | if (unit->product_uuid && strlen(unit->product_uuid)) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
672 | payload = xstrcat(payload, (char *)"\"uuid\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
673 | payload = xstrcat(payload, unit->product_uuid); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
674 | payload = xstrcat(payload, (char *)"\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
675 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
676 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
677 | if (unit->product_code && strlen(unit->product_code)) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
678 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
679 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
680 | payload = xstrcat(payload, (char *)"\"code\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
681 | payload = xstrcat(payload, unit->product_code); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
682 | payload = xstrcat(payload, (char *)"\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
683 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
684 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
685 | if (unit->product_name && strlen(unit->product_name)) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
686 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
687 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
688 | payload = xstrcat(payload, (char *)"\"name\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
689 | payload = xstrcat(payload, unit->product_name); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
690 | payload = xstrcat(payload, (char *)"\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
691 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
692 | payload = xstrcat(payload, (char *)"}"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
693 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
694 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
695 | |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
696 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
697 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
698 | payload = xstrcat(payload, (char *)"\"stage\":\"PRIMARY\",\"mode\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
699 | payload = xstrcat(payload, (char *)UNITMODE[unit->mode]); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
700 | payload = xstrcat(payload, (char *)"\",\"temperature\":{"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
701 | comma = false; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
702 | if (unit->air_address) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
703 | payload = xstrcat(payload, (char *)"\"air\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
704 | sprintf(buf, "%.3f", unit->air_temperature / 1000.0); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
705 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
706 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
707 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
708 | if (unit->beer_address) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
709 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
710 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
711 | payload = xstrcat(payload, (char *)"\"beer\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
712 | sprintf(buf, "%.3f", unit->beer_temperature / 1000.0); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
713 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
714 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
715 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
716 | if (unit->chiller_address) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
717 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
718 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
719 | payload = xstrcat(payload, (char *)"\"chiller\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
720 | sprintf(buf, "%.3f", unit->chiller_temperature / 1000.0); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
721 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
722 | comma = true; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
723 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
724 | if (Config.temp_address) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
725 | if (comma) |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
726 | payload = xstrcat(payload, (char *)","); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
727 | payload = xstrcat(payload, (char *)"\"room\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
728 | sprintf(buf, "%.1f", Config.temp_value / 1000.0); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
729 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
730 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
731 | payload = xstrcat(payload, (char *)"},\"setpoint\":{\"low\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
732 | sprintf(buf, "%.1f", unit->PID_heat->SetP); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
733 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
734 | payload = xstrcat(payload, (char *)",\"high\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
735 | sprintf(buf, "%.1f", unit->PID_cool->SetP); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
736 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
737 | payload = xstrcat(payload, (char *)"}"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
738 | if (unit->heater_address) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
739 | payload = xstrcat(payload, (char *)",\"heater\":{\"power\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
740 | sprintf(buf, "%d", unit->heater_state); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
741 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
742 | payload = xstrcat(payload, (char *)",\"usage\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
743 | sprintf(buf, "%d", unit->heater_usage); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
744 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
745 | payload = xstrcat(payload, (char *)"}"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
746 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
747 | if (unit->cooler_address) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
748 | payload = xstrcat(payload, (char *)",\"cooler\":{\"power\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
749 | sprintf(buf, "%d", unit->cooler_state); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
750 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
751 | payload = xstrcat(payload, (char *)",\"usage\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
752 | sprintf(buf, "%d", unit->cooler_usage); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
753 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
754 | payload = xstrcat(payload, (char *)"}"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
755 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
756 | if (unit->fan_address) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
757 | payload = xstrcat(payload, (char *)",\"fan\":{\"power\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
758 | sprintf(buf, "%d", unit->fan_state); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
759 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
760 | payload = xstrcat(payload, (char *)",\"usage\":"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
761 | sprintf(buf, "%d", unit->fan_usage); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
762 | payload = xstrcat(payload, buf); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
763 | payload = xstrcat(payload, (char *)"}"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
764 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
765 | // sg |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
766 | if (unit->event_msg) { |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
767 | payload = xstrcat(payload, (char *)",\"event\":\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
768 | payload = xstrcat(payload, unit->event_msg); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
769 | payload = xstrcat(payload, (char *)"\""); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
770 | } |
555
c6f04bfcec2c
Add fermenter uuid to the DLOG message
Michiel Broek <mbroek@mbse.eu>
parents:
554
diff
changeset
|
771 | payload = xstrcat(payload, (char *)",\"fermenter_uuid\":\""); |
c6f04bfcec2c
Add fermenter uuid to the DLOG message
Michiel Broek <mbroek@mbse.eu>
parents:
554
diff
changeset
|
772 | payload = xstrcat(payload, unit->uuid); |
c6f04bfcec2c
Add fermenter uuid to the DLOG message
Michiel Broek <mbroek@mbse.eu>
parents:
554
diff
changeset
|
773 | payload = xstrcat(payload, (char *)"\"}}"); |
554
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
774 | |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
775 | topic = xstrcat(topic_base((char *)"DLOG"), (char *)"/"); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
776 | topic = xstrcat(topic, unit->alias); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
777 | publisher(mosq, topic, payload, true); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
778 | printf("%s\n", payload); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
779 | free(payload); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
780 | payload = NULL; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
781 | free(topic); |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
782 | topic = NULL; |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
783 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
784 | } |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
785 | |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
786 | |
ab9f22ab57b5
Versie 0.8.5. Implementatie product code en product naam. Implementatie DLOG MQTT berichten. Verminderde server rotocol debug berichten.
Michiel Broek <mbroek@mbse.eu>
parents:
550
diff
changeset
|
787 | |
506 | 788 | void publishNData(bool birth, int flag) |
789 | { | |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
790 | char *topic = NULL, *payload = NULL, sidx[10], buf[64]; |
506 | 791 | struct utsname ubuf; |
792 | bool comma = false; | |
793 | ||
794 | payload = payload_header(); | |
795 | payload = xstrcat(payload, (char *)"{"); | |
796 | ||
540
5a26429abbf8
Versie 0.6.7. Globale uuid toegevoegd voor de NBIRTH payload.
Michiel Broek <mbroek@mbse.eu>
parents:
535
diff
changeset
|
797 | if (birth) { |
5a26429abbf8
Versie 0.6.7. Globale uuid toegevoegd voor de NBIRTH payload.
Michiel Broek <mbroek@mbse.eu>
parents:
535
diff
changeset
|
798 | payload = xstrcat(payload, (char *)"\"uuid\":\""); |
5a26429abbf8
Versie 0.6.7. Globale uuid toegevoegd voor de NBIRTH payload.
Michiel Broek <mbroek@mbse.eu>
parents:
535
diff
changeset
|
799 | payload = xstrcat(payload, Config.uuid); |
544
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
800 | payload = xstrcat(payload, (char *)"\","); |
508
9e67c5f9c994
Add Raspberry support in MQTT init message
Michiel Broek <mbroek@mbse.eu>
parents:
506
diff
changeset
|
801 | #ifdef HAVE_WIRINGPI_H |
9e67c5f9c994
Add Raspberry support in MQTT init message
Michiel Broek <mbroek@mbse.eu>
parents:
506
diff
changeset
|
802 | payload = xstrcat(payload, (char *)"\"properties\":{\"hardwaremake\":\"Raspberry\",\"hardwaremodel\":\"Unknown\""); |
9e67c5f9c994
Add Raspberry support in MQTT init message
Michiel Broek <mbroek@mbse.eu>
parents:
506
diff
changeset
|
803 | #else |
544
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
804 | if (uname(&ubuf) == 0) { |
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
805 | payload = xstrcat(payload, (char *)"\"properties\":{\"hardwaremake\":\""); |
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
806 | payload = xstrcat(payload, ubuf.machine); |
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
807 | payload = xstrcat(payload, (char *)"\",\"hardwaremodel\":\"Unknown\""); |
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
808 | } else { |
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
809 | payload = xstrcat(payload, (char *)"\"properties\":{\"hardwaremake\":\"Unknown\",\"hardwaremodel\":\"Unknown\""); |
e2889b17f48c
Versie 0.6.8. Code cleanup. Publish NDATA MQTT bericht iedere 5 minuten of als er een THB wijziging is.
Michiel Broek <mbroek@mbse.eu>
parents:
543
diff
changeset
|
810 | } |
508
9e67c5f9c994
Add Raspberry support in MQTT init message
Michiel Broek <mbroek@mbse.eu>
parents:
506
diff
changeset
|
811 | #endif |
9e67c5f9c994
Add Raspberry support in MQTT init message
Michiel Broek <mbroek@mbse.eu>
parents:
506
diff
changeset
|
812 | if (uname(&ubuf) == 0) { |
506 | 813 | payload = xstrcat(payload, (char *)",\"os\":\""); |
814 | payload = xstrcat(payload, ubuf.sysname); | |
815 | payload = xstrcat(payload, (char *)"\",\"os_version\":\""); | |
816 | payload = xstrcat(payload, ubuf.release); | |
817 | payload = xstrcat(payload, (char *)"\""); | |
818 | } else { | |
819 | payload = xstrcat(payload, (char *)",\"os\":\"Unknown\",\"os_version\":\"Unknown\""); | |
820 | } | |
821 | ||
822 | payload = xstrcat(payload, (char *)",\"FW\":\""); | |
823 | payload = xstrcat(payload, (char *)VERSION); | |
824 | payload = xstrcat(payload, (char *)"\"}"); | |
825 | comma = true; | |
826 | } | |
827 | ||
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
828 | if (Config.temp_address || Config.hum_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
829 | if (comma) |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
830 | payload = xstrcat(payload, (char *)","); |
541 | 831 | payload = xstrcat(payload, (char *)"\"THB\":{"); |
510
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
832 | if (Config.temp_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
833 | payload = xstrcat(payload, (char *)"\"temperature\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
834 | sprintf(buf, "%.1f", Config.temp_value / 1000.0); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
835 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
836 | } |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
837 | if (Config.temp_address && Config.hum_address) |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
838 | payload = xstrcat(payload, (char *)","); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
839 | if (Config.hum_address) { |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
840 | payload = xstrcat(payload, (char *)"\"humidity\":"); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
841 | sprintf(buf, "%.1f", Config.hum_value / 1000.0); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
842 | payload = xstrcat(payload, buf); |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
843 | } |
2da3d3340403
Version 0.6.0. The MQTT data messages are now allways the same length so that openhab will function with the message updates.
Michiel Broek <mbroek@mbse.eu>
parents:
509
diff
changeset
|
844 | payload = xstrcat(payload, (char *)"}"); |
506 | 845 | } |
549
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
846 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
847 | /* |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
848 | * Find our network information |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
849 | */ |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
850 | FILE *f; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
851 | char line[100], *ifname, *c, ip[NI_MAXHOST]; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
852 | struct ifaddrs *ifaddr, *ifa; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
853 | int family, s; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
854 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
855 | if (birth && (f = fopen("/proc/net/route" , "r"))) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
856 | while (fgets(line, 100, f)) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
857 | ifname = strtok(line , " \t"); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
858 | c = strtok(NULL , " \t"); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
859 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
860 | // Take the entry with destination '00000000' |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
861 | if (ifname != NULL && c != NULL && (strcmp(c , "00000000") == 0)) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
862 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
863 | if (getifaddrs(&ifaddr) == -1) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
864 | syslog(LOG_NOTICE, "error getifaddrs error %d", errno); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
865 | goto neterr; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
866 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
867 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
868 | //Walk through linked list, maintaining head pointer so we can free list later |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
869 | for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
870 | if (ifa->ifa_addr == NULL) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
871 | continue; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
872 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
873 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
874 | family = ifa->ifa_addr->sa_family; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
875 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
876 | if ((strcmp( ifa->ifa_name, ifname) == 0) && (family == AF_INET)) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
877 | s = getnameinfo(ifa->ifa_addr, (family == AF_INET) ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), ip, NI_MAXHOST, NULL, 0, NI_NUMERICHOST); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
878 | if (s != 0) { |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
879 | syslog(LOG_NOTICE, "getnameinfo() error=%d for %s", errno, ifname); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
880 | goto neterr; |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
881 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
882 | payload = xstrcat(payload, (char *)",\"net\":{\"address\":\""); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
883 | payload = xstrcat(payload, ip); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
884 | payload = xstrcat(payload, (char *)"\",\"ifname\":\""); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
885 | payload = xstrcat(payload, ifname); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
886 | payload = xstrcat(payload, (char *)"\",\"rssi\":0}"); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
887 | // TODO: get rssi if wlan interface. |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
888 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
889 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
890 | |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
891 | freeifaddrs(ifaddr); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
892 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
893 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
894 | fclose(f); |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
895 | } |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
896 | neterr: |
ee1bcad035f0
Versie 0.8.2. Node NBIRTH payload heeft nu netwerk informatie.
Michiel Broek <mbroek@mbse.eu>
parents:
548
diff
changeset
|
897 | |
506 | 898 | payload = xstrcat(payload, (char *)"}}"); |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
899 | if (birth) { |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
900 | topic = topic_base((char *)"NBIRTH"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
901 | publisher(mosq, topic, payload, true); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
902 | } else { |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
903 | topic = topic_base((char *)"NDATA"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
904 | publisher(mosq, topic, payload, false); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
905 | } |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
906 | free(topic); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
907 | topic = NULL; |
506 | 908 | free(payload); |
909 | payload = NULL; | |
513
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
910 | |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
911 | if ((Config.temp_address || Config.hum_address) && Config.temp_hum_idx) { |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
912 | sprintf(sidx, "%d", Config.temp_hum_idx); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
913 | sprintf(buf, "%.1f;%.1f;0", Config.temp_value / 1000.0, Config.hum_value / 1000.0); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
914 | |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
915 | payload = xstrcpy((char *)"{\"command\":\"udevice\",\"idx\":"); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
916 | payload = xstrcat(payload, sidx); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
917 | payload = xstrcat(payload, (char *)",\"nvalue\":0,\"svalue\":\""); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
918 | payload = xstrcat(payload, buf); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
919 | payload = xstrcat(payload, (char *)"\"}"); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
920 | publisher(mosq, (char *)"domoticz/in", payload, false); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
921 | free(payload); |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
922 | payload = NULL; |
a2732027afb3
Version 0.6.1 added support for domoticz mqtt sensors.
Michiel Broek <mbroek@mbse.eu>
parents:
510
diff
changeset
|
923 | } |
506 | 924 | } |
925 | ||
926 | ||
927 | ||
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
928 | void mqtt_connect(void) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
929 | { |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
930 | char *id = NULL, *topic; |
506 | 931 | char err[1024]; |
932 | int rc; | |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
933 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
934 | /* |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
935 | * Initialize mosquitto communication |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
936 | */ |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
937 | gethostname(my_hostname, 255); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
938 | mosquitto_lib_init(); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
939 | id = xstrcpy((char *)"thermferm/"); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
940 | id = xstrcat(id, my_hostname); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
941 | if (strlen(id) > MOSQ_MQTT_ID_MAX_LENGTH) { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
942 | /* |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
943 | * Enforce maximum client id length of 23 characters |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
944 | */ |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
945 | id[MOSQ_MQTT_ID_MAX_LENGTH] = '\0'; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
946 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
947 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
948 | mosq = mosquitto_new(id, TRUE, NULL); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
949 | if (!mosq) { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
950 | switch(errno) { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
951 | case ENOMEM: |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
952 | syslog(LOG_NOTICE, "MQTT: mosquitto_new: Out of memory"); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
953 | break; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
954 | case EINVAL: |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
955 | syslog(LOG_NOTICE, "MQTT: mosquitto_new: Invalid id"); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
956 | break; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
957 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
958 | mosquitto_lib_cleanup(); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
959 | return; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
960 | } |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
961 | free(id); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
962 | id = NULL; |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
963 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
964 | /* |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
965 | * Set our will |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
966 | */ |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
967 | topic = topic_base((char *)"NDEATH"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
968 | if ((rc = mosquitto_will_set(mosq, topic, 0, NULL, mqtt_qos, false))) { |
506 | 969 | if (rc > MOSQ_ERR_SUCCESS) |
970 | syslog(LOG_NOTICE, "MQTT: mosquitto_will_set: %s", mosquitto_strerror(rc)); | |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
971 | mosquitto_lib_cleanup(); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
972 | return; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
973 | } |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
974 | free(topic); |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
975 | |
509 | 976 | if (debug) |
977 | mosquitto_log_callback_set(mosq, my_log_callback); | |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
978 | mosquitto_max_inflight_messages_set(mosq, max_inflight); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
979 | mosquitto_connect_callback_set(mosq, my_connect_callback); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
980 | mosquitto_disconnect_callback_set(mosq, my_disconnect_callback); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
981 | mosquitto_publish_callback_set(mosq, my_publish_callback); |
506 | 982 | mosquitto_message_callback_set(mosq, my_message_callback); |
983 | mosquitto_subscribe_callback_set(mosq, my_subscribe_callback); | |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
984 | |
500
5aa914eb644e
Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents:
499
diff
changeset
|
985 | if ((rc = mosquitto_connect(mosq, Config.mqtt_host, Config.mqtt_port, keepalive))) { |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
986 | if (rc == MOSQ_ERR_ERRNO) { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
987 | strerror_r(errno, err, 1024); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
988 | syslog(LOG_NOTICE, "MQTT: mosquitto_connect: error: %s", err); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
989 | } else { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
990 | syslog(LOG_NOTICE, "MQTT: mosquitto_connect: unable to connect (%d)", rc); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
991 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
992 | mosquitto_lib_cleanup(); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
993 | syslog(LOG_NOTICE, "MQTT: will run without an MQTT broker."); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
994 | } else { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
995 | mqtt_use = TRUE; |
500
5aa914eb644e
Units now have an unique alias name so that the MQTT messages are more friendly.
Michiel Broek <mbroek@mbse.eu>
parents:
499
diff
changeset
|
996 | syslog(LOG_NOTICE, "MQTT: connected with %s:%d", Config.mqtt_host, Config.mqtt_port); |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
997 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
998 | /* |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
999 | * Initialise is complete, report our presence state |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1000 | */ |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1001 | mosquitto_loop_start(mosq); |
533
49580ca85ab7
Versie 0.6.3. MQTT device berichten alleen als een fermenter ingeschakeld is. MQTT fermenter birth en death berichhten als een fementer in of uitgeschakeld wordt. MQTT node death bericht bij normaal afsluiten van de daemon. Alle MQTT persistent berichten worden nu goed opgeruikmd.
Michiel Broek <mbroek@mbse.eu>
parents:
518
diff
changeset
|
1002 | publishNData(true, 0); |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1003 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1004 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1005 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1006 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1007 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1008 | void mqtt_disconnect(void) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1009 | { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1010 | int rc; |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1011 | char *topic; |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1012 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1013 | if (mqtt_use) { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1014 | /* |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1015 | * Final publish 0 to clients/<hostname>/thermferm/state |
504
862de87f9f89
Added some MQTT publish clear functions. Version 0.5.8
Michiel Broek <mbroek@mbse.eu>
parents:
500
diff
changeset
|
1016 | * After that, remove the retained topic. |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1017 | */ |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1018 | syslog(LOG_NOTICE, "MQTT disconnecting"); |
561
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1019 | topic = topic_base((char *)"DBIRTH"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1020 | publisher(mosq, topic, NULL, true); // Not always needed, but ... |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1021 | free(topic); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1022 | topic = topic_base((char *)"DDEATH"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1023 | publisher(mosq, topic, NULL, true); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1024 | free(topic); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1025 | topic = topic_base((char *)"NBIRTH"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1026 | publisher(mosq, topic, NULL, true); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1027 | free(topic); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1028 | topic = topic_base((char *)"NDEATH"); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1029 | publisher(mosq, topic, NULL, true); |
fcfc3dbe85fa
Versie 0.8.7. Fixed a lot of memory leaks with the aid of valgrind.
Michiel Broek <mbroek@mbse.eu>
parents:
557
diff
changeset
|
1030 | free(topic); |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1031 | mqtt_last_mid = mqtt_mid_sent; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1032 | mqtt_status = STATUS_WAITING; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1033 | mqtt_my_shutdown = TRUE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1034 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1035 | do { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1036 | if (mqtt_status == STATUS_WAITING) { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1037 | if (debug) |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1038 | fprintf(stdout, (char *)"Waiting\n"); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1039 | if (mqtt_last_mid_sent == mqtt_last_mid && mqtt_disconnect_sent == FALSE) { |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1040 | mosquitto_disconnect(mosq); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1041 | mqtt_disconnect_sent = TRUE; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1042 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1043 | usleep(100000); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1044 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1045 | rc = MOSQ_ERR_SUCCESS; |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1046 | } while (rc == MOSQ_ERR_SUCCESS && mqtt_connected); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1047 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1048 | mosquitto_loop_stop(mosq, FALSE); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1049 | mosquitto_destroy(mosq); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1050 | mosquitto_lib_cleanup(); |
506 | 1051 | mqtt_use = FALSE; |
534
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1052 | mqtt_status = STATUS_CONNECTING; |
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1053 | mqtt_mid_sent = 0; |
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1054 | mqtt_last_mid = -1; |
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1055 | mqtt_last_mid_sent = -1; |
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1056 | mqtt_connected = TRUE; |
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1057 | mqtt_disconnect_sent = FALSE; |
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1058 | mqtt_connect_lost = FALSE; |
92b546d4a839
Versie 0.6.4. Aan de global setup de MQTT instellingen toegevoegd. Die zijn er ook als MQTT niet op het systeem aanwezig is. Indien het de global setup wijzigd, wordt de MQTT verbinding opnieuw gemaakt.
Michiel Broek <mbroek@mbse.eu>
parents:
533
diff
changeset
|
1059 | mqtt_my_shutdown = FALSE; |
499
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1060 | syslog(LOG_NOTICE, "MQTT disconnected"); |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1061 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1062 | } |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1063 | |
602d9968960f
Created mqtt sourcefiles. Use flags to trigger publish messages. The main source does not know and does not care if MQTT messages will be sent. Version 0.5.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1064 |