import axios from 'axios' import WebSocket from 'ws' import fs from 'fs' import exec from 'child_process' let config = JSON.parse(fs.readFileSync('config.json', 'utf8')) let SOCKET_URL = `ws://${config.servers.deconz.url}:${config.servers.deconz.websocketPort}` console.log(SOCKET_URL) let ws = new WebSocket(SOCKET_URL) ws.on('error', (error) => { console.error('WebSocket error:', error) console.log("ERROR") }) ws.on('close', (code, reason) => { console.log(`Connection closed with code ${code} and reason: ${reason}`); // Clean up any resources here }) ws.on('message', msg => { let data = JSON.parse(msg) //fs.appendFileSync('socket.log', msg+'\n') try { if (data.state) { let device = config.wsDevices.find(device => device.uniqueId === data.uniqueid) if (device) { let payloadValue = (device.valueKey=='open')?(data.state['open']?0:1):data.state[device.valueKey] let influxPayload = `${device.name} ${device.influxKey}=${payloadValue}` console.log(`${new Date().toString()} 👉🏻 Sending ${influxPayload}`) axios.post(`${config.servers.influx.url}/api/v2/write?orgID=${config.servers.influx.orgId}&bucket=${config.servers.influx.bucket}`, influxPayload, { headers: { Authorization: `Token ${config.servers.influx.apiKey}`, 'Content-Type': 'text/plain' } } ).then(response => { console.log(response.data) }).catch(error => { console.error(error) console.log("ERROR") }) if (device.openScript && data.state[device.valueKey]){ console.log("Running open script") try { exec.exec(device.openScript) } catch (error) { console.error(error) console.log("ERROR") } } } } } catch (error) { console.error(error) console.log("ERROR") } })