# Telegraf Configuration # # Telegraf is entirely plugin driven. All metrics are gathered from the # declared inputs, and sent to the declared outputs. # # Plugins must be declared in here to be active. # To deactivate a plugin, comment out the name and any variables. # # Use 'telegraf -config telegraf.conf -test' to see what metrics a config # file would generate. # # Environment variables can be used anywhere in this config file, simply surround # them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"), # for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR}) # Global tags can be specified here in key="value" format. [global_tags] # dc = "us-east-1" # will tag all metrics with dc=us-east-1 # rack = "1a", ## Environment variables can be used as tags, and throughout the config file # user = "$USER" # Configuration for telegraf agent [agent] ## Default data collection interval for all inputs interval = "60s" ## Rounds collection interval to 'interval' ## ie, if interval="10s" then always collect on :00, :10, :20, etc. round_interval = true ## Telegraf will send metrics to outputs in batches of at most ## metric_batch_size metrics. ## This controls the size of writes that Telegraf sends to output plugins. metric_batch_size = 10 ## Maximum number of unwritten metrics per output. Increasing this value ## allows for longer periods of output downtime without dropping metrics at the ## cost of higher maximum memory usage. metric_buffer_limit = 10000 ## Collection jitter is used to jitter the collection by a random amount. ## Each plugin will sleep for a random time within jitter before collecting. ## This can be used to avoid many plugins querying things like sysfs at the ## same time, which can have a measurable effect on the system. collection_jitter = "0s" ## Default flushing interval for all outputs. Maximum flush_interval will be ## flush_interval + flush_jitter flush_interval = "10s" ## Jitter the flush interval by a random amount. This is primarily to avoid ## large write spikes for users running a large number of telegraf instances. ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s flush_jitter = "0s" ## By default or when set to "0s", precision will be set to the same ## timestamp order as the collection interval, with the maximum being 1s. ## ie, when interval = "10s", precision will be "1s" ## when interval = "250ms", precision will be "1ms" ## Precision will NOT be used for service inputs. It is up to each individual ## service input to set the timestamp at the appropriate precision. ## Valid time units are "ns", "us" (or "µs"), "ms", "s". precision = "" ## Log at debug level. debug = true ## Log only error level messages. quiet = false ## Log target controls the destination for logs and can be one of "file", ## "stderr" or, on Windows, "eventlog". When set to "file", the output file ## is determined by the "logfile" setting. # logtarget = "file" ## Name of the file to be logged to when using the "file" logtarget. If set to ## the empty string then logs are written to stderr. # logfile = "telegraf.log" ## The logfile will be rotated after the time interval specified. When set ## to 0 no time based rotation is performed. Logs are rotated only when ## written to, if there is no log activity rotation may be delayed. # logfile_rotation_interval = "0d" ## The logfile will be rotated when it becomes larger than the specified ## size. When set to 0 no size based rotation is performed. # logfile_rotation_max_size = "0MB" ## Maximum number of rotated archives to keep, any older logs are deleted. ## If set to -1, no archives are removed. # logfile_rotation_max_archives = 5 ## Override default hostname, if empty use os.Hostname() hostname = "" ## If set to true, do no set the "host" tag in the telegraf agent. omit_hostname = false ############################################################################### # OUTPUT PLUGINS # ############################################################################### # Configuration for sending metrics to InfluxDB [[outputs.influxdb]] ## The full HTTP or UDP URL for your InfluxDB instance. ## ## Multiple URLs can be specified for a single cluster, only ONE of the ## urls will be written to each interval. # urls = ["unix:///var/run/influxdb.sock"] # urls = ["udp://127.0.0.1:8089"] urls = ["http://pv-oberwelland.de:8086"] ## The target database for metrics; will be created as needed. ## For UDP url endpoint database needs to be configured on server side. database = "solar" ## The value of this tag will be used to determine the database. If this ## tag is not set the 'database' option is used as the default. # database_tag = "" ## If true, the 'database_tag' will not be included in the written metric. # exclude_database_tag = false ## If true, no CREATE DATABASE queries will be sent. Set to true when using ## Telegraf with a user without permissions to create databases or when the ## database already exists. # skip_database_creation = false ## Name of existing retention policy to write to. Empty string writes to ## the default retention policy. Only takes effect when using HTTP. # retention_policy = "" ## The value of this tag will be used to determine the retention policy. If this ## tag is not set the 'retention_policy' option is used as the default. # retention_policy_tag = "" ## If true, the 'retention_policy_tag' will not be included in the written metric. # exclude_retention_policy_tag = false ## Write consistency (clusters only), can be: "any", "one", "quorum", "all". ## Only takes effect when using HTTP. # write_consistency = "any" ## Timeout for HTTP messages. # timeout = "5s" ## HTTP Basic Auth username = "admin" password = "thief" ## HTTP User-Agent # user_agent = "telegraf" ## UDP payload size is the maximum packet size to send. # udp_payload = "512B" ## Optional TLS Config for use on HTTP connections. # tls_ca = "/etc/telegraf/ca.pem" # tls_cert = "/etc/telegraf/cert.pem" # tls_key = "/etc/telegraf/key.pem" ## Use TLS but skip chain & host verification # insecure_skip_verify = false ## HTTP Proxy override, if unset values the standard proxy environment ## variables are consulted to determine which proxy, if any, should be used. # http_proxy = "http://corporate.proxy:3128" ## Additional HTTP headers # http_headers = {"X-Special-Header" = "Special-Value"} ## HTTP Content-Encoding for write request body, can be set to "gzip" to ## compress body or "identity" to apply no encoding. # content_encoding = "identity" ## When true, Telegraf will output unsigned integers as unsigned values, ## i.e.: "42u". You will need a version of InfluxDB supporting unsigned ## integer values. Enabling this option will result in field type errors if ## existing data has been written. # influx_uint_support = false ############################################################################### # PROCESSOR PLUGINS # ############################################################################### # # Clone metrics and apply modifications. # [[processors.clone]] # ## All modifications on inputs and aggregators can be overridden: # # name_override = "new_name" # # name_prefix = "new_name_prefix" # # name_suffix = "new_name_suffix" # # ## Tags to be added (all values must be strings) # # [processors.clone.tags] # # additional_tag = "tag_value" # # Convert values to another metric value type # [[processors.converter]] # ## Tags to convert # ## # ## The table key determines the target type, and the array of key-values # ## select the keys to convert. The array may contain globs. # ## = [...] # [processors.converter.tags] # measurement = [] # string = [] # integer = [] # unsigned = [] # boolean = [] # float = [] # # ## Fields to convert # ## # ## The table key determines the target type, and the array of key-values # ## select the keys to convert. The array may contain globs. # ## = [...] # [processors.converter.fields] # measurement = [] # tag = [] # string = [] # integer = [] # unsigned = [] # boolean = [] # float = [] # # Dates measurements, tags, and fields that pass through this filter. # [[processors.date]] # ## New tag to create # tag_key = "month" # # ## Date format string, must be a representation of the Go "reference time" # ## which is "Mon Jan 2 15:04:05 -0700 MST 2006". # date_format = "Jan" # # ## Offset duration added to the date string when writing the new tag. # # date_offset = "0s" # # ## Timezone to use when creating the tag. This can be set to one of # ## "UTC", "Local", or to a location name in the IANA Time Zone database. # ## example: timezone = "America/Los_Angeles" # # timezone = "UTC" # # Filter metrics with repeating field values # [[processors.dedup]] # ## Maximum time to suppress output # dedup_interval = "600s" # # Map enum values according to given table. # [[processors.enum]] # [[processors.enum.mapping]] # ## Name of the field to map # field = "status" # # ## Name of the tag to map # # tag = "status" # # ## Destination tag or field to be used for the mapped value. By default the # ## source tag or field is used, overwriting the original value. # dest = "status_code" # # ## Default value to be used for all values not contained in the mapping # ## table. When unset, the unmodified value for the field will be used if no # ## match is found. # # default = 0 # # ## Table of mappings # [processors.enum.mapping.value_mappings] # green = 1 # amber = 2 # red = 3 # # Apply metric modifications using override semantics. # [[processors.override]] # ## All modifications on inputs and aggregators can be overridden: # # name_override = "new_name" # # name_prefix = "new_name_prefix" # # name_suffix = "new_name_suffix" # # ## Tags to be added (all values must be strings) # # [processors.override.tags] # # additional_tag = "tag_value" # # Parse a value in a specified field/tag(s) and add the result in a new metric # [[processors.parser]] # ## The name of the fields whose value will be parsed. # parse_fields = [] # # ## If true, incoming metrics are not emitted. # drop_original = false # # ## If set to override, emitted metrics will be merged by overriding the # ## original metric using the newly parsed metrics. # merge = "override" # # ## The dataformat to be read from files # ## Each data format has its own unique set of configuration options, read # ## more about them here: # ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md # data_format = "influx" # # Rotate a single valued metric into a multi field metric # [[processors.pivot]] # ## Tag to use for naming the new field. # tag_key = "name" # ## Field to use as the value of the new field. # value_key = "value" # # Print all metrics that pass through this filter. # [[processors.printer]] # # Transforms tag and field values with regex pattern # [[processors.regex]] # ## Tag and field conversions defined in a separate sub-tables # # [[processors.regex.tags]] # # ## Tag to change # # key = "resp_code" # # ## Regular expression to match on a tag value # # pattern = "^(\\d)\\d\\d$" # # ## Matches of the pattern will be replaced with this string. Use ${1} # # ## notation to use the text of the first submatch. # # replacement = "${1}xx" # # # [[processors.regex.fields]] # # ## Field to change # # key = "request" # # ## All the power of the Go regular expressions available here # # ## For example, named subgroups # # pattern = "^/api(?P/[\\w/]+)\\S*" # # replacement = "${method}" # # ## If result_key is present, a new field will be created # # ## instead of changing existing field # # result_key = "method" # # ## Multiple conversions may be applied for one field sequentially # ## Let's extract one more value # # [[processors.regex.fields]] # # key = "request" # # pattern = ".*category=(\\w+).*" # # replacement = "${1}" # # result_key = "search_category" # # Rename measurements, tags, and fields that pass through this filter. # [[processors.rename]] # # Add the S2 Cell ID as a tag based on latitude and longitude fields # [[processors.s2geo]] # ## The name of the lat and lon fields containing WGS-84 latitude and # ## longitude in decimal degrees. # # lat_field = "lat" # # lon_field = "lon" # # ## New tag to create # # tag_key = "s2_cell_id" # # ## Cell level (see https://s2geometry.io/resources/s2cell_statistics.html) # # cell_level = 9 # # Perform string processing on tags, fields, and measurements # [[processors.strings]] # ## Convert a tag value to uppercase # # [[processors.strings.uppercase]] # # tag = "method" # # ## Convert a field value to lowercase and store in a new field # # [[processors.strings.lowercase]] # # field = "uri_stem" # # dest = "uri_stem_normalised" # # ## Convert a field value to titlecase # # [[processors.strings.titlecase]] # # field = "status" # # ## Trim leading and trailing whitespace using the default cutset # # [[processors.strings.trim]] # # field = "message" # # ## Trim leading characters in cutset # # [[processors.strings.trim_left]] # # field = "message" # # cutset = "\t" # # ## Trim trailing characters in cutset # # [[processors.strings.trim_right]] # # field = "message" # # cutset = "\r\n" # # ## Trim the given prefix from the field # # [[processors.strings.trim_prefix]] # # field = "my_value" # # prefix = "my_" # # ## Trim the given suffix from the field # # [[processors.strings.trim_suffix]] # # field = "read_count" # # suffix = "_count" # # ## Replace all non-overlapping instances of old with new # # [[processors.strings.replace]] # # measurement = "*" # # old = ":" # # new = "_" # # ## Trims strings based on width # # [[processors.strings.left]] # # field = "message" # # width = 10 # # ## Decode a base64 encoded utf-8 string # # [[processors.strings.base64decode]] # # field = "message" # # Restricts the number of tags that can pass through this filter and chooses which tags to preserve when over the limit. # [[processors.tag_limit]] # ## Maximum number of tags to preserve # limit = 10 # # ## List of tags to preferentially preserve # keep = ["foo", "bar", "baz"] # # Uses a Go template to create a new tag # [[processors.template]] # ## Tag to set with the output of the template. # tag = "topic" # # ## Go template used to create the tag value. In order to ease TOML # ## escaping requirements, you may wish to use single quotes around the # ## template string. # template = '{{ .Tag "hostname" }}.{{ .Tag "level" }}' # # Print all metrics that pass through this filter. # [[processors.topk]] # ## How many seconds between aggregations # # period = 10 # # ## How many top metrics to return # # k = 10 # # ## Over which tags should the aggregation be done. Globs can be specified, in # ## which case any tag matching the glob will aggregated over. If set to an # ## empty list is no aggregation over tags is done # # group_by = ['*'] # # ## Over which fields are the top k are calculated # # fields = ["value"] # # ## What aggregation to use. Options: sum, mean, min, max # # aggregation = "mean" # # ## Instead of the top k largest metrics, return the bottom k lowest metrics # # bottomk = false # # ## The plugin assigns each metric a GroupBy tag generated from its name and # ## tags. If this setting is different than "" the plugin will add a # ## tag (which name will be the value of this setting) to each metric with # ## the value of the calculated GroupBy tag. Useful for debugging # # add_groupby_tag = "" # # ## These settings provide a way to know the position of each metric in # ## the top k. The 'add_rank_field' setting allows to specify for which # ## fields the position is required. If the list is non empty, then a field # ## will be added to each and every metric for each string present in this # ## setting. This field will contain the ranking of the group that # ## the metric belonged to when aggregated over that field. # ## The name of the field will be set to the name of the aggregation field, # ## suffixed with the string '_topk_rank' # # add_rank_fields = [] # # ## These settings provide a way to know what values the plugin is generating # ## when aggregating metrics. The 'add_agregate_field' setting allows to # ## specify for which fields the final aggregation value is required. If the # ## list is non empty, then a field will be added to each every metric for # ## each field present in this setting. This field will contain # ## the computed aggregation for the group that the metric belonged to when # ## aggregated over that field. # ## The name of the field will be set to the name of the aggregation field, # ## suffixed with the string '_topk_aggregate' # # add_aggregate_fields = [] # # Rotate multi field metric into several single field metrics # [[processors.unpivot]] # ## Tag to use for the name. # tag_key = "name" # ## Field to use for the name of the value. # value_key = "value" ############################################################################### # AGGREGATOR PLUGINS # ############################################################################### # # Keep the aggregate basicstats of each metric passing through. # [[aggregators.basicstats]] # ## The period on which to flush & clear the aggregator. # period = "30s" # # ## If true, the original metric will be dropped by the # ## aggregator and will not get sent to the output plugins. # drop_original = false # # ## Configures which basic stats to push as fields # # stats = ["count", "min", "max", "mean", "stdev", "s2", "sum"] # # Report the final metric of a series # [[aggregators.final]] # ## The period on which to flush & clear the aggregator. # period = "30s" # ## If true, the original metric will be dropped by the # ## aggregator and will not get sent to the output plugins. # drop_original = false # # ## The time that a series is not updated until considering it final. # series_timeout = "5m" # # Create aggregate histograms. # [[aggregators.histogram]] # ## The period in which to flush the aggregator. # period = "30s" # # ## If true, the original metric will be dropped by the # ## aggregator and will not get sent to the output plugins. # drop_original = false # # ## If true, the histogram will be reset on flush instead # ## of accumulating the results. # reset = false # # ## Whether bucket values should be accumulated. If set to false, "gt" tag will be added. # ## Defaults to true. # cumulative = true # # ## Example config that aggregates all fields of the metric. # # [[aggregators.histogram.config]] # # ## Right borders of buckets (with +Inf implicitly added). # # buckets = [0.0, 15.6, 34.5, 49.1, 71.5, 80.5, 94.5, 100.0] # # ## The name of metric. # # measurement_name = "cpu" # # ## Example config that aggregates only specific fields of the metric. # # [[aggregators.histogram.config]] # # ## Right borders of buckets (with +Inf implicitly added). # # buckets = [0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0] # # ## The name of metric. # # measurement_name = "diskio" # # ## The concrete fields of metric # # fields = ["io_time", "read_time", "write_time"] # # Merge metrics into multifield metrics by series key # [[aggregators.merge]] # ## If true, the original metric will be dropped by the # ## aggregator and will not get sent to the output plugins. # drop_original = true # # Keep the aggregate min/max of each metric passing through. # [[aggregators.minmax]] # ## General Aggregator Arguments: # ## The period on which to flush & clear the aggregator. # period = "30s" # ## If true, the original metric will be dropped by the # ## aggregator and will not get sent to the output plugins. # drop_original = false # # Count the occurrence of values in fields. # [[aggregators.valuecounter]] # ## General Aggregator Arguments: # ## The period on which to flush & clear the aggregator. # period = "30s" # ## If true, the original metric will be dropped by the # ## aggregator and will not get sent to the output plugins. # drop_original = false # ## The fields for which the values will be counted # fields = [] ############################################################################### # INPUT PLUGINS # ############################################################################### # Retrieve data from MODBUS slave devices [[inputs.modbus]] ## Connection Configuration ## ## The plugin supports connections to PLCs via MODBUS/TCP or ## via serial line communication in binary (RTU) or readable (ASCII) encoding ## ## Device name name = "Kostal" ## Slave ID - addresses a MODBUS device on the bus ## Range: 0 - 255 [0 = broadcast; 248 - 255 = reserved] slave_id = 71 ## Timeout for each request timeout = "1s" #busy_retries = 3 #busy_retries_wait = "100ms" # TCP - connect via Modbus/TCP ## controller = "tcp://192.168.178.165:1502" controller = "tcp://scb:1502" name_override = "Solar" # Serial (RS485; RS232) #controller = "file:///dev/ttyUSB0" #baud_rate = 9600 #data_bits = 8 #parity = "N" #stop_bits = 1 #transmission_mode = "RTU" ## Measurements ## ## Digital Variables, Discrete Inputs and Coils ## name - the variable name ## address - variable address ##discrete_inputs = [ ## { name = "start", address = [0]}, ## { name = "stop", address = [1]}, ## { name = "reset", address = [2]}, ## { name = "emergency_stop", address = [3]}, ##] ##coils = [ ## { name = "motor1_run", address = [0]}, ## { name = "motor1_jog", address = [1]}, ## { name = "motor1_stop", address = [2]}, ##] ## Analog Variables, Input Registers and Holding Registers ## name - the variable name ## byte_order - the ordering of bytes ## |---AB, ABCD - Big Endian ## |---BA, DCBA - Little Endian ## |---BADC - Mid-Big Endian ## |---CDAB - Mid-Little Endian ## data_type - UINT16, INT16, INT32, UINT32, FLOAT32, FLOAT32-IEEE (the IEEE 754 binary representation) ## scale - the final numeric variable representation ## address - variable address holding_registers = [ { name = "PV LeistungW", byte_order = "CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [100,101]}, { name = "State of energy manager W", byte_order = "CDAB", data_type = "UINT32", scale=1.0, address = [104,105]}, { name = "Hausverbrauch aus Batterie W", byte_order = "CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [106,107]}, { name = "Hausverbrauch aus Netz W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [108,109]}, { name = "Gesamtverbrauch aus Batterie Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [110,111]}, { name = "Gesamtverbrauch aus Netz Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [112,113]}, { name = "Gesamtverbrauch PV Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [114,115]}, { name = "Hausverbrauch aus PV W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [116,117]}, { name = "Gesamtverbrauch Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [118,119]}, { name = "Anteil Eigenverbrauch %", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [124,125]}, { name = "Worktime", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [144,145]}, { name = "Current cos phi", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [150,151]}, { name = "Grid frequency", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [152,153]}, { name = "Strom Phase 1 A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [154,155]}, { name = "Leistung Phase 1 W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [156,157]}, { name = "Spannung Phase 1 V", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [158,159]}, { name = "Strom Phase 2 A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [160,161]}, { name = "Leistung Phase 2 W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [162,163]}, { name = "Spannung Phase 2 V", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [164,165]}, { name = "Strom Phase 3 A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [166,167]}, { name = "Leistung Phase 3 W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [168,169]}, { name = "Spannung Phase 3 V", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [170,171]}, { name = "Gesamtleistung AC W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [172,173]}, { name = "Gesamtblindleistung AC Var", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [174,175]}, { name = "Gesamtscheinleistung AC VA", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [178,179]}, { name = "Batterie laden A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [190,191]}, { name = "Anzahl Batteriezyklen", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [194,195]}, { name = "Batteriestrom A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [200,201]}, { name = "PSSB fuse state", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [202,203]}, { name = "Battery ready flag", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [208,209]}, { name = "Current state of charge", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [210,211]}, { name = "Batterie temperatur C", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [214, 215]}, { name = "Batteriespannung V", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [216, 217]}, { name = "Cos phi (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [218, 219]}, { name = "Frequency (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [220, 221]}, { name = "Current phase 1 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [222, 223]}, { name = "Active power phase 1 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [224, 225]}, { name = "Reactive power phase 1 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [226, 227]}, { name = "Apparent power phase 1 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [228, 229]}, { name = "Voltage phase 1 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [230, 231]}, { name = "Current phase 2 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [232, 233]}, { name = "Active power phase 2 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [234, 235]}, { name = "Reactive power phase 2 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [236, 237]}, { name = "Apparent power phase 2 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [238, 239]}, { name = "Voltage phase 2 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [240, 241]}, { name = "Current phase 3 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [242, 243]}, { name = "Active power phase 3 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [244, 245]}, { name = "Reactive power phase 3 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [246, 247]}, { name = "Apparent power phase 3 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [248, 249]}, { name = "Voltage phase 3 (powermeter)", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [250, 251]}, { name = "Gesamtleistung (powermeter) W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [252, 253]}, { name = "Gesamtblindleistung (powermeter) Var", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [254, 255]}, { name = "Gesamtscheinleistung (powermeter) VA", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [256, 257]}, { name = "Strom Strang1 A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [258, 259]}, { name = "Leistung Strang 1 W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [260, 261]}, { name = "Spannung Strang 1 V", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [266, 267]}, { name = "Strom Strang 2 A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [268, 269]}, { name = "Leistung Strang 2 W", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [270, 271]}, { name = "Spannung Strang 2 V", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [276, 277]}, { name = "Strom Strang 3 A", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [278, 279]}, { name = "Leistung Strang 3", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [280, 281]}, { name = "Spannung Strang 3", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [286, 287]}, { name = "Gesamtertrag Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [320, 321]}, { name = "Tagesertrag Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [322, 323]}, { name = "Jahresertrag Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [324, 325]}, { name = "Monatsertrag Wh", byte_order ="CDAB", data_type = "FLOAT32-IEEE", scale=1.0, address = [326, 327]}, { name = "Batteriebruttokapazität Ah", byte_order ="ABCD", data_type = "UINT32", scale=1.0, address = [512, 513]}, { name = "Battery current SOC", byte_order ="AB", data_type = "UINT16", scale=1.0, address = [514]}, { name = "Kapazität Wh", byte_order ="ABCD", data_type = "UINT32", scale=1.0, address = [529, 530]}, { name = "Inverter Max Power", byte_order ="AB", data_type = "UINT16", scale=1.0, address = [531]}, { name = "Inverter Generation Power (current)", byte_order ="AB", data_type = "INT16", scale=1.0, address = [575]}, { name = "Generation Energy", byte_order ="ABCD", data_type = "UINT32", scale=1.0, address = [577, 578]}, { name = "Aktuelle Batterieladung +- W", byte_order ="AB", data_type = "INT16", scale=1.0, address = [582]}, { name = "frequency", byte_order = "AB", data_type = "FLOAT32", scale=0.1, address = [100]}, { name = "power", byte_order = "ABCD", data_type = "FLOAT32", scale=0.1, address = [100,101]}, ]