[SCRIPT] www.envertertecportal.com V2 – Daten auslesen

Hier nun mein Script angepasst an die neue Software auf www.envertecportal.com. Es fehlt nur noch die Funktion damit die ID automatisch erkannt wird. Daran arbeite ich aber noch.

 1#!/usr/bin/perl
 2
 3use strict;
 4use warnings;
 5use diagnostics;
 6use LWP::Simple;                	# From CPAN
 7use JSON qw( decode_json );     	# From CPAN
 8use Data::Dumper;               	# Perl core module
 9use JSON::Parse 'parse_json';
10use Encode qw(decode encode);
11
12my $id=XXXX;				# ID from the Solarsystem
13my $dbcon="192.168.0.40:8086";		# InfluxDB connection details
14my $database="enverbridge";		# InfluxDB Database name
15my $influxtag="enverbridge";		# InfluxDB tag
16my $username="email\@email.de";	        # Envertech portal username
17my $password="PASSWORD";		# Envertech portal password
18
19# mapping hash as the variable names have changed
20my %mapping = (
21	Power => 'power',
22	StrIncome => 'income',
23	UnitEMonth => 'monthpower',
24	UnitEToday => 'daypower',
25	UnitETotal => 'allpower',
26	UnitEYear => 'yearpower',
27);
28
29my $cookie = qx(curl --silent --cookie-jar /tmp/cookies -o /dev/null -X POST -H "Content-Type: application/json" -X "Content-Length: 1000" 'http://www.envertecportal.com/apiaccount/login?username=$username&pwd=$password');
30my $response = qx(curl --silent --cookie /tmp/cookies -X POST -d "" 'http://www.envertecportal.com/ApiStations/getStationInfo?stationId=$id');
31
32my $ref_hash = decode_json($response);
33
34my $value;
35foreach my $item($ref_hash->{'Data'}){
36	delete $item->{'CreateYear'};
37	delete $item->{'CreateMonth'};
38	delete $item->{'Lng'};
39	delete $item->{'TimeZone'};
40	delete $item->{'UnitCapacity'};
41	delete $item->{'Installer'};
42	delete $item->{'CreateTime'};
43	delete $item->{'PwImg'};
44	delete $item->{'Lat'};
45	delete $item->{'StationName'};
46	delete $item->{'StrTrees'};
47	delete $item->{'StrCO2'};
48	foreach my $key (sort keys %{$item}) {
49		$item->{$key} =~ s/[^\d\.]//g;
50		$value = encode('UTF-8',$item->{$key});
51		if ( exists $mapping{$key} ) {
52			$key = $mapping{$key};
53		}
54		print "$key: $value\n";
55		system "curl --output /dev/null --silent -i -XPOST 'http://$dbcon/write?db=$database' --data-binary '$key,tag=$influxtag value=$value'";
56	}
57}

Ausgabe:

 1root@collector:/opt/collectors/enverbridge# ./get_solar.pl
 2Capacity: 0.7
 3Etoday: 0
 4InvTotal: 3
 5power: 0
 6PowerStr: 0
 7income: 197.28
 8StrPeakPower: 615.75
 9monthpower: 0.2
10daypower: 0
11allpower: 730.65
12yearpower: 23.68