[Frage] Wie in script von Influx einen Maximalwert abfragen?

Alles rund um die Timberwolf Server APP "WireGate Plugin" mit der Laufzeitumgebung für WireGate Server Plugins
Antworten

Ersteller
koend
Reactions:
Beiträge: 20
Registriert: So Okt 06, 2019 3:44 pm
Hat sich bedankt: 14 Mal
Danksagung erhalten: 6 Mal

Wie in script von Influx einen Maximalwert abfragen?

#1

Beitrag von koend »

Hallo,

hatte auf meinen Wiregate ein prima funktionierendes Script für die Gartenberegnung laufen. Das benötigt allerdings direkten Zugriff auf die rrd-Datenbanken für die Erdtemperatur und -feuchtigkeit (siehe unten).

Wie kann ich nun von einem wiregate script auf die entsprechenden Influx-Datenbanken zugreifen? Ich bräuchte einen Maximalwert aus den letzten 24 Stunden.

Oder als Alternative, wie kann ich einen Logikbaustein bauen, der getriggerd durch ein knx_read() den entsprechenden Wert zurückgibt.
Und nein, ich habe keine Zeit und Lust mich in den Logikeditor einzuarbeiten. Dafür stecken zuviele Mannmonate in meinen scripts.

Vielen Dank und viele Grüße

Code: Alles auswählen

my $rrdPath = "/var/www/rrd/";
my $humidityLeftFile= $rrdPath."GardenHumiLeft.rrd";
my $humidityRightFile= $rrdPath."GardenHumiRight.rrd";
my $temperatureLeftFile= $rrdPath."GardenTempLeft.rrd";

my ($result_arr,$xsize,$ysize) = RRDs::graph($temperatureLeftFile,
	'DEF:v='.$temperatureLeftFile.':GardenTempLeft:AVERAGE',
	'VDEF:vm=v,MAXIMUM',
	'PRINT:vm:%lf'
);
<TWS details removed by Privady Badger> ;)

Benutzeravatar

Chris M.
Reactions:
Beiträge: 625
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 107 Mal
Danksagung erhalten: 289 Mal
Kontaktdaten:

#2

Beitrag von Chris M. »

Die Login-Credentials werden auf der TWS-Portainer-Seite beim Klick auf das (i) hinter "Wie Sie aus dem Docker Container auf die Zeitreihen-Datenbank zugreifen können" angezeigt.
Damit kannst Du nun eine Query an die InfluxDB absetzten die genau das beantwortet, das ist alles HTTP, sollte als Perl auch hin bekommen.
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache


Ersteller
koend
Reactions:
Beiträge: 20
Registriert: So Okt 06, 2019 3:44 pm
Hat sich bedankt: 14 Mal
Danksagung erhalten: 6 Mal

#3

Beitrag von koend »

Danke Chris.

Klinkt in erster Instanz enorm logisch, Brett vor'm Kopf bei mir.

Kriege ich praktisch allerdings nicht hin:
- Debian hat kein package für Influx::HTTP
- cpan läuft auf dem plugin container nicht durch (wie schon durch andere angemerkt, die sich dann aber mit einem Debian package behelfen konnten)

Also drohen leider lange Abende und Wochenenden um mich in den kontra-intuitiven Logikeditor einzuarbeiten, die ich lieber auf andere Dinge verwenden würde. So technisch schön der auch sein mag, er ist der folgende vendor lock-in nach den plugins...
Zuletzt geändert von koend am Sa Apr 25, 2020 12:14 am, insgesamt 1-mal geändert.
<TWS details removed by Privady Badger> ;)

Benutzeravatar

Chris M.
Reactions:
Beiträge: 625
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 107 Mal
Danksagung erhalten: 289 Mal
Kontaktdaten:

#4

Beitrag von Chris M. »

Du denkst zu kompliziert. Mach es einfach zu Fuß. Also einfach einen "normalen" HTTP-Request absetzen und die Antwort dann selber verarbeiten.

Eigentlich wollte ich Dir als Beispiel geben wie es die CometVisu macht (https://github.com/CometVisu/CometVisu/ ... xfetch.php) - aber ich habe gerade gesehen, dass es für eine so simple Aufgabe schon wieder viel zu komplex ist, da dort ja eine Abfrage dynamisch zusammen gebaut wird und Dir ja eine simple statische Abfrage reicht.
Aber eigentlich reicht hier die InfluxDB-Doku vollkommen aus: https://docs.influxdata.com/influxdb/v1 ... uery_data/
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache


Ersteller
koend
Reactions:
Beiträge: 20
Registriert: So Okt 06, 2019 3:44 pm
Hat sich bedankt: 14 Mal
Danksagung erhalten: 6 Mal

#5

Beitrag von koend »

Kompliziert kann ja auch nicht jeder... ;)

Vielen Dank für die Hinweise, die halfen nicht nur, sondern waren essentiell.

Mit Dank an viele andere Autoren (und Google) hier das Ergebnis:

Code: Alles auswählen

my $url = 'https://172.17.0.1/proxy/ts/query';
my $user = 'docker';
my $passwd = '<see TWS>';
my $timeseries = 'TS00005';

use HTTP::Response;
use LWP::UserAgent;
use URI::URL;
use MIME::Base64;
use URI::Encode qw(uri_encode);;
use JSON;

my $query = 'SELECT max(*) FROM '.$timeseries.' WHERE time > now() - 25h';

# for debugging add &pretty=true
$url = $url.'?db=timeseries_db&q='.uri_encode($query);
my $header = ['Content-Type' => 'application/vnd.flux', 'Authorization' => 'Basic '.encode_base64($user.':'.$passwd)];

my $request = HTTP::Request->new( 'GET', $url, $header);
my $ua = LWP::UserAgent->new(
  ssl_opts => { 
  		verify_hostname => '0',
  		SSL_verify_mode => '0'},
);
$ua->agent("hcat/1.0");

my $response = $ua->request($request);

plugin_log('5 ---------------------------------------------------');
my $maxTemp=decode_json($response->content)->{results}->[0]->{series}->[0]->{values}->[0][1];

plugin_log('max:'.$maxTemp);
<TWS details removed by Privady Badger> ;)


Robert_Mini
Reactions:
Beiträge: 2369
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 591 Mal
Danksagung erhalten: 1068 Mal

#6

Beitrag von Robert_Mini »

Hallo Koend!

Super Sache! Kann mir vorstellen, dass dies ein Knochenjob war, aber dies eröffnet nun tolle Möglichkeiten!

Darf ich das als kurzen Artikel in die KB aufnehmen?

Danke und lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / Wiregate-Fan


Ersteller
koend
Reactions:
Beiträge: 20
Registriert: So Okt 06, 2019 3:44 pm
Hat sich bedankt: 14 Mal
Danksagung erhalten: 6 Mal

#7

Beitrag von koend »

Moin,

kannst du gerne aufnehmen, ja.

Knochenjob war OK, bis auf die nested data structures in Perl ganz am Ende...
<TWS details removed by Privady Badger> ;)


StefanW
Elaborated Networks
Reactions:
Beiträge: 4137
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Grafing
Hat sich bedankt: 1830 Mal
Danksagung erhalten: 3181 Mal
Kontaktdaten:

#8

Beitrag von StefanW »

Hallo koend,

super Sache, danke sehr für das teilen mit uns.

==> Sehe ich das richtig, das ist ein PERL-Script für die Plugin-UMgebung im "WireGate Plugin-Container" im Timberwolf Server?

Könntest Du noch bitte Deinen Footer auf Forenstandard bringen: viewtopic.php?f=8&t=331?


Merci

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART der Elaborated Networks GmbH
Support nur über dieses Forum und in individuellen Fällen über support@wiregate.de.
Bitte KEINE PN Impressum und Datenschutzerklärung oben

Antworten

Zurück zu „Timberwolf APP: WireGate Plugin Laufzeitumgebung“