[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