Hallo,
Vielleicht kann mir ja jemand helfen, ich komme nicht weiter. Egal was ich auch versuche den Request auszuwerten bekomme ich die Meldung:
 Can't use string ("{"status":"ok","result":[{"power"...) as a HASH ref while "strict refs" in use at
hab schon stundenlang gegoogled und probiert aber nix hilft.
Print geht immer - siehe # ....
Sobald ich sonst etwas mit $message machen will kommt die Meldung.
Was mache ich falsch oder was habe ich vergessen.
Gruß
Thomas
use strict;
use warnings;
use JSON;
use Time::Piece;
use Data::Dumper;
use LWP::UserAgent;
use HTTP::Request;
use Mozilla::CA;
sub
DISCOVERGY_Initialize($)
{
  my ($hash) = @_;
  $hash->{DefFn}     = "DISCOVERGY_Define";
  $hash->{AttrList}  = "delay loglevel:0,1,2,3,4,5,6 ".
    "stateS ".
    $readingFnAttributes;
}
sub
DISCOVERGY_Define($$)
{
  my ($hash, $def) = @_;
  my $name=$hash->{NAME}||"";
  my @a = split("[ \t][ \t]*", $def);
  my $user = $a[2]||"";
  my $password = $a[3]||"";
  my $meterid = $a[4]||"";
  my $reading = $a[5]||"";
  my $delay = $a[6]||"";
  
  $attr{$name}{delay}=$delay if $delay;
  return "Wrong syntax: use define <name> DISCOVERGY <user> <password> <meterId> <Wert:power/energy> <poll-delay>" if(int(@a) != 7);
  $hash->{user} = $user; 
  $hash->{password} = $password;
  $hash->{meterid} = $meterid;
  $hash->{Reading} = $reading;
 
  InternalTimer(gettimeofday(), "DISCOVERGY_GetStatus", $hash, 0);
 
  return undef;
}
sub
DISCOVERGY_GetStatus($)
{
  my ($hash) = @_;
  my $name = $hash->{NAME}||"";
  my $meterid = $hash->{meterid}||"";
  my $password = $hash->{password}||"";
  my $reading = $hash->{Reading}||"";
#  
  my $delay=$attr{$name}{delay}||300;
#  
  InternalTimer(gettimeofday()+$delay, "DISCOVERGY_GetStatus", $hash, 0);
#
  if(!defined($hash->{user})) { return("");
   }
  
my $user = $hash->{user}||"";
my $URL="https://my.discovergy.com/json/Api.get".$reading."?&user=".$user."&password=".$password."&meterId=".$meterid."&numOfSeconds=2";
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => $URL);
 
my $resp = $ua->request($req);
if ($resp->is_success) {
my $message = $resp->decoded_content;
print Dumper($message);
# $VAR1 = '{"status":"ok","result":[{"power":263320,"time":1373995968579}]}';
print "Received reply: $message\n";
# {"status":"ok","result":[{"power":501610,"time":1373922658794}]}
}
else {
    print "HTTP GET error code: ", $resp->code, "\n";
    print "HTTP GET error message: ", $resp->message, "\n";
 }
}
1;
			
			
				kommentiere mal die erste Zeile Deines Codings aus.
			
			
			
				Hallo,
die Meldung kommt dann nicht mehr aber wenn ich das hier versuche:
print "Status = " . $message->{'status'} . "\n";
my @result = @{$message->{'result'}};
foreach my $f (@result) {
  print $f->{'power'} . "\n";
}
bekomme ich diese Meldung:
Use of uninitialized value in array dereference at
was mach ich nur falsch ?
Gruß
Thomas