FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Det20 am 10 Februar 2019, 14:57:55

Titel: [Erledigt] Hilfe bei Fehlerbehebung
Beitrag von: Det20 am 10 Februar 2019, 14:57:55
Hallo,

ich nutze das SkyQ Modul (endlich gibt es das!). Leider liest der Entwickler nicht oder kaum mit, ich habe aber ein blödes Problem mit dem Modul: Es wird irgendwie irgendwo ein Reading angelegt, was dann irgendwann für den Fehler "configfile: Sky: unknown attribute ip. Type 'attr Sky ?' for a detailed list." sorgt und mein AutoSave deaktiviert. Ich bin leider nicht in der Modulentwicklung zu Hause, denke aber, dass es nur eine Kleinigkeit ist. Hat ev jemand nen kurzen Moment Zeit und kann mir sagen, was ich wie in dem Modul ändern muss, damit der Fehler weg ist?

https://forum.fhem.de/index.php?topic=96017.msg889811
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: CoolTux am 10 Februar 2019, 15:53:36
Bekommst Du diesen Fehler immer beim Starten von FHEM? Oder irgendwann mitten im Lauf?
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: CoolTux am 10 Februar 2019, 16:20:34
Habe den Fehler im Code gefunden


$hash->{AttrList} =
       "ip"
      . $readingFnAttributes;


Ändern in


$hash->{AttrList} =
       "ip "
      . $readingFnAttributes;
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: Det20 am 10 Februar 2019, 23:17:38
Super, vielen dank, lade ich gerade rein.
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: Det20 am 12 März 2019, 22:47:45
Ich gebe zu, ich kenne mich in der Modul Entwicklung 0 komma überhaupt nix aus. Reißt dieser Teil vom Source FHEM in den Tot, wenn die IP nicht vorhanden ist?
Weißt leider nicht, wie ich dieses Eval da einbauen kann.


sub getReceiverInfo($) {
  my ($device) = @_;
  my $hash = $defs{$device};
 
  my $ip = AttrVal($hash->{name}, 'ip', undef);
  my $url = "http://$ip:9006/as/system/information";
  my $r = HTTP::Request->new('GET', $url);
  my $ua = LWP::UserAgent->new();
  my $res = $ua->request($r);
my $data = decode_json($res->content);
my %json = %{ decode_json($res->content) };

foreach my $key (keys %json) {
readingsSingleUpdate($hash, $key, $data->{$key}, 1);
}
my $status = $data->{"activeStandby"};
if($status == 1) {
readingsSingleUpdate($hash, "state", "off", 1);
} else {
readingsSingleUpdate($hash, "state", "on", 1);
}

  return undef;
}

Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: CoolTux am 12 März 2019, 23:16:38
Das Abholen von Daten via HTTP/S würde ich mittels HttpUtils_NonblockingGet machen. Also mit Hilfe der HttpUtils.
Das ist sicherer, Du brauchst keine zusätzlichen Module und es blockiert nicht.

Die Funktion decode_json liefert Dir als Antwort bereits eine Hashreferenz. Daher
my $json = decode_json($res->content);

Damit bei einem Fehler von decode_json Dein FHEM nicht in den Tod geht, schreiben wir ein eval rum
my $json = eval { decode_json($res->content) };


Grüße
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: Det20 am 13 März 2019, 00:45:03
Danke für deine Antwort. Könntest du mir beim letzten Teil helfen, damit es nicht abstürzt?
Ich komme da leider nicht so ganz mit und weiß nur, dass das Modul regelmäßig für einen Absturz sorgt.
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: CoolTux am 13 März 2019, 05:50:16
Guten Morgen,

Dann brauche ich ein Log um zu sehen wo und wie.
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: CoolTux am 13 März 2019, 05:56:15

my $data = eval { decode_json($res->content) };
my %json = eval { %{ decode_json($res->content) } };


Für genaueres brauch ich ein Log
Titel: Antw:Hilfe bei Fehlerbehebung
Beitrag von: Det20 am 13 März 2019, 10:23:25
Hey super, gibt zwar nen Fehler, aber keinen Absturz mehr. Vielen lieben Dank!!
Titel: Antw:[Erledigt] Hilfe bei Fehlerbehebung
Beitrag von: CoolTux am 13 März 2019, 11:40:55
Wie genau lautet denn der Fehler?
Titel: Antw:[Erledigt] Hilfe bei Fehlerbehebung
Beitrag von: CoolTux am 13 März 2019, 11:41:57
Vielleicht so


my $data;
my %json;

$data = eval { decode_json($res->content) };
%json = eval { %{ decode_json($res->content) } };