mqtt-devices-parser 1.0.20 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Changelog.md +4 -0
- package/index.js +27 -12
- package/package.json +1 -1
- package/src/device/device.js +1 -0
- package/src/kafka/consumer.js +19 -13
package/Changelog.md
CHANGED
package/index.js
CHANGED
|
@@ -47,7 +47,6 @@ var self = module.exports = {
|
|
|
47
47
|
await $.kafka_consumer.start();
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
console.log("mqtt connecting..")
|
|
51
50
|
mqtt_connect();
|
|
52
51
|
|
|
53
52
|
setInterval(async ()=>{
|
|
@@ -133,6 +132,8 @@ var self = module.exports = {
|
|
|
133
132
|
|
|
134
133
|
function mqtt_connect(){
|
|
135
134
|
|
|
135
|
+
console.log(`[MQTT] connecting to ${$.config.mqtt.host}:${$.config.mqtt.port}..`)
|
|
136
|
+
|
|
136
137
|
const mqtt_prefix = $.config.mqtt.logs_path+"/"+$.config.mqtt.client;
|
|
137
138
|
let checkFota = null;
|
|
138
139
|
$.mqtt_client = mqtt.connect({
|
|
@@ -165,11 +166,21 @@ function mqtt_connect(){
|
|
|
165
166
|
$.mqtt_client.publish(mqtt_prefix+"/"+project,"deactive",{qos:2,retain:true});
|
|
166
167
|
};
|
|
167
168
|
})
|
|
168
|
-
console.log(`MQTT connected
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
169
|
+
console.log(`[MQTT] connected`);
|
|
170
|
+
|
|
171
|
+
if (!$.config.kafka.enabled) {
|
|
172
|
+
projects.map( project=>{
|
|
173
|
+
console.log("[MQTT] subscribing project:",project);
|
|
174
|
+
$.mqtt_client.subscribe(project+"/#", (err) => {
|
|
175
|
+
if(err){
|
|
176
|
+
console.log("[MQTT] error");
|
|
177
|
+
console.err(err);
|
|
178
|
+
}
|
|
179
|
+
else
|
|
180
|
+
console.log("[MQTT] subscribed to project:",project);
|
|
181
|
+
})
|
|
182
|
+
})
|
|
183
|
+
}
|
|
173
184
|
|
|
174
185
|
// Update 'dev' devices at each 5 min
|
|
175
186
|
checkFota = setInterval(async ()=>{
|
|
@@ -189,32 +200,36 @@ function mqtt_connect(){
|
|
|
189
200
|
|
|
190
201
|
$.mqtt_client.on("message", (topic, payload, packet) => {
|
|
191
202
|
// Only parse MQTT messages if enabled in configuration
|
|
192
|
-
if (
|
|
203
|
+
if (!$.config.kafka.enabled) {
|
|
204
|
+
|
|
205
|
+
console.log(`[MQTT] rx: ${topic.toString()}`);
|
|
193
206
|
// payload is Buffer
|
|
194
207
|
$.device.parseMessage($.mqtt_client,topic.toString(),payload.toString(),packet.retain);
|
|
195
208
|
}
|
|
196
209
|
});
|
|
197
210
|
|
|
198
211
|
$.mqtt_client.on("reconnect",()=>{
|
|
199
|
-
console.log("
|
|
212
|
+
console.log("[MQTT] reconnected")
|
|
200
213
|
});
|
|
201
214
|
|
|
202
215
|
$.mqtt_client.on("close",()=>{
|
|
203
|
-
console.log("
|
|
216
|
+
console.log("[MQTT] closed")
|
|
204
217
|
checkFota = null;
|
|
205
218
|
});
|
|
206
219
|
|
|
207
220
|
$.mqtt_client.on("offline",()=>{
|
|
208
|
-
console.log("offline")
|
|
221
|
+
console.log("[MQTT] offline")
|
|
209
222
|
checkFota = null;
|
|
210
223
|
});
|
|
211
224
|
|
|
212
225
|
$.mqtt_client.on("disconnect",(packet)=>{
|
|
213
|
-
console.log(
|
|
226
|
+
console.log(`[MQTT] disconnected`);
|
|
227
|
+
console.log(packet);
|
|
214
228
|
checkFota = null;
|
|
215
229
|
})
|
|
216
230
|
|
|
217
231
|
$.mqtt_client.on("error",(error)=>{
|
|
218
|
-
console.log(error)
|
|
232
|
+
console.log("[MQTT] error");
|
|
233
|
+
console.err(error)
|
|
219
234
|
})
|
|
220
235
|
}
|
package/package.json
CHANGED
package/src/device/device.js
CHANGED
package/src/kafka/consumer.js
CHANGED
|
@@ -11,11 +11,11 @@ var self = module.exports = {
|
|
|
11
11
|
return new Promise(async (resolve, reject) => {
|
|
12
12
|
try {
|
|
13
13
|
if (!config.kafka.enabled) {
|
|
14
|
-
console.log("Kafka consumer is disabled");
|
|
14
|
+
console.log("[Kafka] consumer is disabled");
|
|
15
15
|
return resolve();
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
console.log("Initializing
|
|
18
|
+
console.log("[Kafka] Initializing consumer...");
|
|
19
19
|
|
|
20
20
|
// Build Kafka configuration
|
|
21
21
|
const kafkaConfig = {
|
|
@@ -62,7 +62,7 @@ var self = module.exports = {
|
|
|
62
62
|
const topics = projects.map(project => project.toString());
|
|
63
63
|
|
|
64
64
|
if (topics.length === 0) {
|
|
65
|
-
console.log("No
|
|
65
|
+
console.log("[Kafka] No topics to subscribe to");
|
|
66
66
|
return resolve();
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -71,11 +71,11 @@ var self = module.exports = {
|
|
|
71
71
|
fromBeginning: false
|
|
72
72
|
});
|
|
73
73
|
|
|
74
|
-
console.log(`Kafka consumer subscribed to topics: ${topics.join(', ')}`);
|
|
74
|
+
console.log(`[Kafka] consumer subscribed to topics: ${topics.join(', ')}`);
|
|
75
75
|
|
|
76
76
|
return resolve();
|
|
77
77
|
} catch (error) {
|
|
78
|
-
console.error("Failed to initialize
|
|
78
|
+
console.error("[Kafka] Failed to initialize consumer:", error);
|
|
79
79
|
return reject(error);
|
|
80
80
|
}
|
|
81
81
|
});
|
|
@@ -87,11 +87,14 @@ var self = module.exports = {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
try {
|
|
90
|
-
console.log("Starting
|
|
90
|
+
console.log("[Kafka] Starting consumer...");
|
|
91
91
|
running = true;
|
|
92
92
|
|
|
93
93
|
await consumer.run({
|
|
94
94
|
eachMessage: async ({ topic, partition, message }) => {
|
|
95
|
+
|
|
96
|
+
console.log(`[KAFKA] rx: ${message.key.toString()}`);
|
|
97
|
+
|
|
95
98
|
try {
|
|
96
99
|
let payload = message.value ? message.value.toString() : '';
|
|
97
100
|
const kafkaTopic = topic.toString();
|
|
@@ -113,10 +116,13 @@ var self = module.exports = {
|
|
|
113
116
|
|
|
114
117
|
try{
|
|
115
118
|
payload = JSON.parse(payload);
|
|
116
|
-
}catch(error){
|
|
119
|
+
}catch(error){
|
|
120
|
+
console.log(`[KAFKA] error: ${payload}`);
|
|
121
|
+
console.log(error)
|
|
122
|
+
}
|
|
117
123
|
|
|
118
124
|
// Call the device parser with formatted topic
|
|
119
|
-
await $.device.parseMessage(payload.client.id, formattedTopic, payload.mqtt.payload, payload.mqtt.retain);
|
|
125
|
+
await $.device.parseMessage(payload.client.id, formattedTopic, JSON.stringify(payload.mqtt.payload), payload.mqtt.retain);
|
|
120
126
|
|
|
121
127
|
} catch (error) {
|
|
122
128
|
console.error('[Kafka] Error processing message:', {
|
|
@@ -129,9 +135,9 @@ var self = module.exports = {
|
|
|
129
135
|
},
|
|
130
136
|
});
|
|
131
137
|
|
|
132
|
-
console.log("Kafka consumer started successfully");
|
|
138
|
+
console.log("[Kafka] consumer started successfully");
|
|
133
139
|
} catch (error) {
|
|
134
|
-
console.error("Failed to start
|
|
140
|
+
console.error("[KAFKA] Failed to start consumer:", error);
|
|
135
141
|
running = false;
|
|
136
142
|
throw error;
|
|
137
143
|
}
|
|
@@ -143,13 +149,13 @@ var self = module.exports = {
|
|
|
143
149
|
}
|
|
144
150
|
|
|
145
151
|
try {
|
|
146
|
-
console.log("Stopping
|
|
152
|
+
console.log("[KAFKA] Stopping consumer...");
|
|
147
153
|
running = false;
|
|
148
154
|
await consumer.stop();
|
|
149
155
|
await consumer.disconnect();
|
|
150
|
-
console.log("
|
|
156
|
+
console.log("[KAFKA] consumer stopped successfully");
|
|
151
157
|
} catch (error) {
|
|
152
|
-
console.error("Error stopping
|
|
158
|
+
console.error("[KAFKA] Error stopping consumer:", error);
|
|
153
159
|
}
|
|
154
160
|
},
|
|
155
161
|
|