[Erledigt] Hilfe bei Fehlerbehebung

Begonnen von Det20, 10 Februar 2019, 14:57:55

Vorheriges Thema - Nächstes Thema

Det20

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

CoolTux

Bekommst Du diesen Fehler immer beim Starten von FHEM? Oder irgendwann mitten im Lauf?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Habe den Fehler im Code gefunden


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


Ändern in


$hash->{AttrList} =
       "ip "
      . $readingFnAttributes;
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Det20

Super, vielen dank, lade ich gerade rein.

Det20

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;
}


CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Det20

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.

CoolTux

Guten Morgen,

Dann brauche ich ein Log um zu sehen wo und wie.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux


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


Für genaueres brauch ich ein Log
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Det20

Hey super, gibt zwar nen Fehler, aber keinen Absturz mehr. Vielen lieben Dank!!

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Vielleicht so


my $data;
my %json;

$data = eval { decode_json($res->content) };
%json = eval { %{ decode_json($res->content) } };
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net