Creates an array with InfluxDB line format protocol lines of all submitted values. Data can be send to telegraf directly.
The first parameter is the Data as an Array of Hashes (see below). This is mandatory.
The second parameter can be set to 1 if you do not want to send the data to telegraf and just return the prepared array. If set to 0, data will be send to telegraf (Default). This is optional.
Parameter | Required | Beschreibung |
\@data | Array of Hashes with data (see below) | |
$nosend | Toogle to suppress sending data to telegraf (1). Default is 0 and sending data to telegraf. |
Parameter | Description |
1. return | Status |
2. retutrn | Array with text in Influx line protocol |
The first return value is the status of the function:
The second return value is an array with the text in Influx line protocol. It can be send to influx using the HTTP API or the command line interface: https://docs.influxdata.com/influxdb/v1.8/write_protocols/line_protocol_tutorial/#getting-data-in-the-database
A function call will looks like this:
my ( $status, @queue ) = lox2telegraf( \@data, 0 );
The response looks like this (as an array):
my_measurement,tag1=This\ is\ tag\ 1,tag2=This\ is\ tag\ 2 field1="A\ String",field2=20i,field3=10.2 1616935446000000
Datastructure @data
must be as follows:
$VAR1 = { 'timestamp' => '1467360000000000000', 'msno' => '1', 'uuid' => '0ad03c43-0102-d583-ffffb70a5529d684', 'room' => 'UG Hauswirtschaft', 'type' => 'StateV', 'category' => "L\x{c3}\x{bc}ftung", 'source' => 'import', 'values' => [ { 'key' => 'Default', 'value' => '24.184' } ], 'description' => "Temperatur Au\x{c3}\x{9f}enluft", 'measurementname' => "Temperatur Au\x{c3}\x{9f}enluft", 'name' => "Au\x{c3}\x{9f}entemperatur" }; $VAR2 = { 'name' => "Au\x{c3}\x{9f}entemperatur", 'description' => "Temperatur Au\x{c3}\x{9f}enluft", 'values' => [ { 'key' => 'Default', 'value' => '23.450' } ], 'source' => 'import', 'measurementname' => "Temperatur Au\x{c3}\x{9f}enluft", 'room' => 'UG Hauswirtschaft', 'category' => "L\x{c3}\x{bc}ftung", 'type' => 'StateV', 'uuid' => '0ad03c43-0102-d583-ffffb70a5529d684', 'msno' => '1', 'timestamp' => '1467361800000000000' };
#!/usr/bin/perl use LoxBerry::System; require "../Stats4Lox.pm"; # Debug $Stats4Lox::DEBUG = 1; $Stats4Lox::DUMP = 1; my @data; my %influxrecord = ( timestamp => '', msno => '1', uuid => '11111-11111-11111-1111', name => 'Das ist mein Name', category => 'Heizung', room => 'Keller', type => 'Output', ); my @values; push @values, { key => 'output1', value => 1 }; push @values, { key => 'output2', value => 2 }; push @values, { key => 'output3', value => 3 }; push @values, { key => 'output4', value => 4 }; push @values, { key => 'output5', value => 5 }; $influxrecord{values} = \@values; push @data, \%influxrecord; my $nosend = "0"; my (@response) = Stats4Lox::lox2telegraf( \@data, $nosend );