// Access to influxDB vie HTTP import axios from 'axios' import { logit, logerror } from './logit.js' import { DateTime } from 'luxon' import { statistics } from'./readdata.js' let INFLUXHOST = process.env.INFLUXHOST || "localhost" let INFLUXPORT = process.env.INFLUXPORT || 8086 let INFLUXTOKEN = process.env.INFLUXTOKEN || "xuxTjvV7L3Mlr9diG36gMxExP_SbFntuJkp9KYj2_Hnz5U9zbCo7wurdkQqDtKO0Zchr6wbS8kGNW1L5I2V9YQ==" 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}&precision=ms` export const influxRead = async (query) => { let start = DateTime.now() let data = [] 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) { logerror(`doReadfromAPI Status: ${ret.status}`) } data = ret.data } catch (e) { logerror(`doReadfromAPI ${e}`) } logit(`ReadIn-Time: ${start.diffNow('seconds').toObject().seconds * -1} sec`) return data } export const influxWrite = async (data) => { let start = DateTime.now() let ret // logit(INFLUXURL_WRITE) 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}`) } let statname = `writeInfluxData[sensor_data]Time` statistics[statname] = DateTime.now().diff(start, ['seconds']).toObject().seconds logit(`Influx-Write-Time: ${start.diffNow('seconds').toObject().seconds * -1} sec`) return ret } /* async function main() { let data = ` pm,sid=140 P1=12,P2=13 pm,sid=142 P1=42,P2=13 pm,sid=143 P1=43,P2=13 pm,sid=144 P1=44,P2=13 thp,sid=141 temperature=23.5,humidity=48,pressure=998 ` let ret = await influxWrite(data) process.exit() let query = `from(bucket:"sensor_data") |> range(start: -1mo) |> filter(fn: (r) => r._measurement == "pm") |> filter(fn: (r) => r.sid == "140") ` let erg = await influxRead(query) console.log(erg) } main().catch(console.error) */