import mqtt from "mqtt"; export default class TtnInput { private context: any; constructor(mqtt_config: any, data_config: any, context: any) { this.context = context; console.log(mqtt_config); const protocol = mqtt_config.protocol; const host = mqtt_config.host; const user = mqtt_config.user; const password = mqtt_config.password; const url = `${protocol}://${host}`; const options = { username: user, password }; const client = mqtt.connect(url, options); client.on("connect", () => { client.subscribe("presence", (err: any) => { console.log(`[MQTT] subscribed to ${url}`); client.subscribe("+/devices/+/up"); }); }); client.on("message", (topic: any, rawMessage: any) => { const message = JSON.parse(rawMessage); const result: any = {}; result.id = message.dev_id; data_config.ttn.forEach((item: string | number) => { if(message.payload_fields[item] !== undefined) { result[item] = message.payload_fields[item]; } }); context.influxdb.writeMeasurement(result); console.log(result); }); } }