// Access to influxDB vie HTTP import axios from 'axios' import { DateTime } from 'luxon' // import csvParse from 'csv-parser' import { logit, logerror } from '../utilities/logit.js' import {returnOnError} from "../utilities/reporterror.js"; let INFLUXHOST = process.env.INFLUXHOST || "localhost" let INFLUXPORT = process.env.INFLUXPORT || 8086 let INFLUXTOKEN = process.env.INFLUXTOKEN || //"rklEClT22KfdXZhA47eyJhbqcvekb8bcKCqlUG7n72uDSmR2xGvif0CmGJe0WQtXB96y29mmt-9BdsgWA5npfg==" "BNR6cGdb006O1T6hQkGcfB8tgH-UPO6QkOPToeAvrP7LATJbCuWi1wYf3HBpVdZQEBxHxNSrNenZsOSMogX-lg==" let INFLUXDATABUCKET = process.env.INFLUXDATABUCKET || "sensor_data" let INFLUXORG = process.env.INFLUXORG || "citysensor" const INFLUXURL_READ = `http://${INFLUXHOST}:${INFLUXPORT}/api/v2/query?org=${INFLUXORG}` const INFLUXURL_WRITE = `http://${INFLUXHOST}:${INFLUXPORT}/api/v2/write?org=${INFLUXORG}&bucket=${INFLUXDATABUCKET}` export const influxRead = async (query) => { let start = DateTime.now() let erg = { values: [], err: null} try { let ret = await axios({ method: 'post', url: INFLUXURL_READ, data: query, headers: { Authorization: `Token ${INFLUXTOKEN}`, Accept: 'application/csv', 'Content-type': 'application/vnd.flux' }, timeout: 10000, }) if (ret.status !== 200) { let error = ERR.RESPSTATUS.replace('xx',ret.status) return returnOnError(erg, error, influxRead.name) } erg.values = ret.data } catch (e) { return returnOnError(erg, e, influxRead.name) } // logit(`Influx read time: ${start.diffNow('seconds').toObject().seconds * -1} sec`) return erg } export const influxWrite = async (data) => { let start = DateTime.now() let ret try { ret = await axios({ method: 'post', url: INFLUXURL_WRITE, data: data, headers: { Authorization: `Token ${INFLUXTOKEN}`, Accept: 'application/json', 'Content-Type': 'text/plain; charset=utf-8' }, timeout: 10000, }) if (ret.status !== 204) { logerror(`doWrite2API Status: ${ret.status}`) } } catch (e) { logerror(`doWrite2API ${e}`) } logit(`Influx-Write-Time: ${start.diffNow('seconds').toObject().seconds * -1} sec`) return ret }