Send Data to Influxdb Cloud

Hi Community,

I am sending data to influxdb cloud. I see all the channels are being sent there. How can I apply tags or specify which data to be sent and which not to get only the required data at influxdb cloud?

Thanks
Best Regards

Hi Hafiz,

there is currently no such feature in OpenEMS. Internally we have this, but did not yet find time to push it upstream.

For now you could follow this advice: InfluxDB service limit reached - #4 by hydroid7

Regards,
Stefan

1 Like

You could install Telegraf locally, set up an InfluxDB 2.0 listener there and point your OpenEMS installation to it. In the Telegraf config you can then decide which data you want to forward to InfluxDB (cloud or locally). Works like a charm.

Kind regards, Martin

2 Likes

Thanks @stefan.feilmeier @martingr.

I have used Stefan’s advice. It has reduced a lot of data I send.

I try it @martingr. This would save a lot.

Thanks both of you!

Regards
Hafiz

Hi @martingr

Thanks for suggesting this solution.

Can you please clarify what you mean by install locally? For each edge device, install telegraph? Or should we install Telegraph on OpenEMS Backend machine or something similar?

Martins solution would work on the OpenEMS Backend. By default OpenEMS Edge transmits data to OpenEMS Backend via a JSON-RPC protocol (TimestampedDataNotification, AggregatedDataNotification and ResendDataNotification). OpenEMS Backend then sends the data to one or more InfluxDBs.

We run our own InfluxDB 1.8 instances in production and I can recommend doing so. It’s not too complicated to setup and we do not have these limitations.

Also there has been a lot development in aggregation of data before writing it to the InfluxDB. This should also help for writing less data in a hosted InfluxDB (but this was not the development target). See:

Regards,
Stefan

1 Like

I had the same issue with the free tier of a hosted InfluxDB.
To save the next person with the same issue some time, here is how to implement @martingr solution plus a telegraf configuration that filters out some (in my opinion) unnecessary fields.

  • install telegraf locally on the server running the openems backend
  • Add a new Telegraf configuration in the InfluxDB UI (which automaticall adds a correct output layer)

My input layer:

# Accept metrics over InfluxDB 2.x HTTP API
[[inputs.influxdb_v2_listener]]
  ## Address and port to host InfluxDB listener on
  ## (Double check the port. Could be 9999 if using OSS Beta)
  service_address = ":5050"

  ## Optional tag to determine the bucket.
  ## If the write has a bucket in the query string then it will be kept in this tag name.
  ## This tag can be used in downstream outputs.
  ## The default value of nothing means it will be off and the database will not be recorded.
  bucket_tag = "<your bucket tag>"
  # Exclude all super generic informations to avoid clutter
  fieldexclude = ["_appManager*", "_componentManager*", "_cycle*", "_meta*", "_host*", "edgewebsocket*", "uiwebsocket*", "modbus*", "ctrlBackend*", "_power*", "_evcs*", "_*predictorManager*", "ctrlDebug*", "host", "scheduler0*"]
  • change telegraf service config (usually under /lib/systemd/system/telegraf.service) to use the remote configuration
ExecStart=/usr/bin/telegraf --config https://<your config link>
  • Add your api token to the service file (there are probably other, more secure approaches)
Environment="INFLUX_TOKEN=<Token>"

Regards
Kilian

1 Like