Fehlermeldung Localhost Hyperion

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Fehlermeldung Localhost Hyperion

Beitrag von thedk »

Hallo Leute!
Mein System läuft tadellos, trotz alledem habe ich immer wieder einen Fehler im Log der teilweise auch alle paar Sekunden auftritt. Ich kann mit der Fehlermeldung aber absolut nichts anfangen...
Ich nutze noch einen zweiten Raspberry mit Kodi und Hyperion. Das Ambilight steuere ich über Openhab. D.h. wenn in Kodi ein Film gestartet wird, sich das Ambilight einschaltet, wird das ganze pausiert oder gestoppt (lässt sich ja nicht unterscheiden), leuchten die LEDs einfarbig in einer von mir gewählten Farbe.
Unabhängig was gerade eingestellt, ob Ambilight oder einfarbig, kommt immer wieder diese Meldung im Localhost:

Code: Alles auswählen

19:54:24.115 [ERROR] [ding.hyperion.handler.HyperionHandler] - java.lang.NumberFormatException: Expected an int but was 4294832588 at line 1 column 4718 path $.info.priorities[1].duration_ms
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 4294832588 at line 1 column 4718 path $.info.priorities[1].duration_ms
        at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:245) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:235) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129) [22:com.google.gson:2.7.0]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220) [22:com.google.gson:2.7.0]
        at com.google.gson.Gson.fromJson(Gson.java:887) [22:com.google.gson:2.7.0]
        at com.google.gson.Gson.fromJson(Gson.java:852) [22:com.google.gson:2.7.0]
        at com.google.gson.Gson.fromJson(Gson.java:801) [22:com.google.gson:2.7.0]
        at com.google.gson.Gson.fromJson(Gson.java:773) [22:com.google.gson:2.7.0]
        at org.openhab.binding.hyperion.handler.HyperionHandler.sendCommand(HyperionHandler.java:311) [213:org.openhab.binding.hyperion:2.1.0.201706122125]
        at org.openhab.binding.hyperion.handler.HyperionHandler$1.run(HyperionHandler.java:81) [213:org.openhab.binding.hyperion:2.1.0.201706122125]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.lang.NumberFormatException: Expected an int but was 4294832588 at line 1 column 4718 path $.info.priorities[1].duration_ms
        at com.google.gson.stream.JsonReader.nextInt(JsonReader.java:1164) ~[?:?]
        at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:243) ~[?:?]
        ... 23 more
Kann jemand was damit anfangen?
Zuletzt geändert von thedk am 10. Jun 2018 19:58, insgesamt 1-mal geändert.

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Fehlermeldung Localhost Hyperion

Beitrag von udo1toni »

Die erste Zeile sagt alles :)

Leider hast Du einen verkleinerten Screenshot verwendet, das ist eine der sieben Todsünden! Bitte Code immer als Code posten, dann kann man ihn vernünftig lesen, braucht keine Lupe (oder in meinem Fall eine Verlängerung des Monitorkabels, um den Monitor heranzuholen), ist auch nicht auf Webhoster für das Bild angewiesen, und letztlich kann der Helfende wesentliche Passagen einfach herauskopieren.

In der ersten Zeile heißt es "expected int but was 4286233442", was als Zahl groß genug aussieht, dass ich ohne nachzurechnen davon ausgehe, dass es sich hier um ein long und nicht um ein int handelt. Das zugehörige Script schmeißt den Fehler in Zeile 1 Spalte 4718, was auch eher seltsam ist, aber vermutlich passiert es eben in der Number Format Library, und die Angabe der Codestelle ist durch keine Ahnung was durcheinander geraten.
Da Du vermutlich eine Rule verwendest, um hyperion zu steuern, wäre dieser Code schon sehr hilfreich, um den Fehler zu finden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Re: Fehlermeldung Localhost Hyperion

Beitrag von thedk »

Sorry, schon behoben :) Bin sonst in anderen Foren unterwegs.

Das wären meine Rules dazu:

Code: Alles auswählen

import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*


rule "Orange Aus"

when
	Item Fernseher changed to OFF or
	Item Status_Mediacenter changed to AUS or
	Item Ambilight_Farbe changed to NULL or
	Item Ambilight changed to ON
then
	postUpdate(Ambilight_orange, OFF)
end

/////////////////////////////////////////////////////////////////

rule "Ambilight Orange EIN"

when
	System started or
	Item Kodi changed from PLAY to PAUSE or
	Item Status_Mediacenter changed to EIN or
	Item Ambilight_orange changed to ON or
	Item Quelle changed to HDMI2
then
	var DecimalType hue = new DecimalType(35)
	var PercentType sat = new PercentType(100)
	var PercentType bright = new PercentType(100)
	var HSBType orange = new HSBType(hue,sat,bright)
	sendCommand(Ambilight_Farbe, orange)
	if(Ambilight_orange.state == OFF) {
	postUpdate(Ambilight_orange, ON)
	}
end

/////////////////////////////////////////////////////////////////

rule "Ambilight Orange AUS"

when
	Item Ambilight_orange changed to OFF
then
	if(Kodi.state == PAUSE) {
	sendCommand(Ambilight_Farbe, "0,0,0")
	}
end

/////////////////////////////////////////////////////////////////

rule "Ambilight an"

when
	Item Kodi changed from PAUSE to PLAY
then
	sendCommand(Ambilight, ON)
	sendCommand(Ambilight, OFF)
	postUpdate(Ambilight_orange, OFF)
end
Normalerweise verstehe ich ja die Fehler, aber der ist mir zu hoch.

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Fehlermeldung Localhost Hyperion

Beitrag von udo1toni »

Also, ich möchte empfehlen, lieber die Methode (z.B. Ambilight_Farbe.sendCommand(HSBType)) zu verwenden, statt der Action ( das wäre sendCommand(Ambilight_Farbe,String))

Meine erste Vermutung ist, dass da irgendwas bei der TypeConversion schief geht. Grundsätzlich sollte man, wann immer möglich, zur Methode statt zur Action greifen (das gilt für alle sendCommand() und postUpdate()).

Es gibt nur eine Situation, wo man auf die Action angewiesen ist (wenn man keine großen Umwege gehen will), und das ist, wenn man den zu verwendenen Itemnamen "errechnet". Dann (und nur dann) ist die Action sinnvoll.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Re: Fehlermeldung Localhost Hyperion

Beitrag von thedk »

Ich kann die 'Methode' ändern und schauen wie es sich verhält, aber sonst nutze ich es auch nur so und das komplett ohne Fehlermeldungen.

Kannst du mir den Unterschied erklären? Als ich angefangen habe, stand überall man sollte es so machen wie ich es halt bisher gemacht habe.

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Fehlermeldung Localhost Hyperion

Beitrag von udo1toni »

thedk hat geschrieben: 10. Jun 2018 20:28Als ich angefangen habe, stand überall man sollte es so machen wie ich es halt bisher gemacht habe.
Das kann ich mir, ehrlich gesagt nicht vorstellen. Siehe hier: https://www.openhab.org/docs/configurat ... -new-state oder hier: https://www.openhab.org/docs/configurat ... re-actions

Um es kurz auf deutsch zu erklären:
Die Action erwartet zwei Strings als Input: sendCommand(String, String). Wenn Du nun z.B. einen State als zweites Argument hin schreibst (ON, OFF...) wird openHAB, da es recht schlau ist, die Methode .toString einsetzen und im Normalfall erfolgreich den Typ konvertieren. Das geht, weil der State z.B. vom Typ OnOffType ist, das bedeutet, es handelt sich dabei um ein Objekt. Alle Objekte erben die Eigenschaften und Methoden ihrer Eltern-Objekte. Und das "Urahn-Objekt" kennt halt eine Methode .toString, mittels derer sich das Objekt (und damit auch jeder seiner Nachfahren) in einen String konvertieren lässt.

Nun gibt es aber auch Primitives, z.B. val int meineKonstante = 4 würde ein solches Primitive definieren. Wenn Du nun meineKonstante einsetzt, gibt es dafür kein .toString, openHAB kann den Typ nicht erfolgreich konvertieren, die Action schlägt fehl.

Die Methode hat für alle möglichen sinnvollen Eingaben separate Codeschnipsel, sie kümmert sich also selbst um das korrekte Konvertieren. Entsprechend ist sie nicht darauf angewiesen, dass der Input als String ankommt (vorausgesetzt, sie hat eine für den Input passende Routine - das nehmen wir aber mal als gegeben an).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Re: Fehlermeldung Localhost Hyperion

Beitrag von thedk »

Merkwürdig. Ich hab noch einige Rules mehr, bei denen ich es genauso mache ohne eine Meldung.

Nach den Seiten habe ich auch noch extra mal geschaut, ich will sie jetzt mal nicht angeben, aber es ist genauso wie ich es oben geschrieben habe.

Die eine Rule habe ich jetzt geändert. Ich geb morgen Bescheid ob die Meldung weg ist.

thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Re: Fehlermeldung Localhost Hyperion

Beitrag von thedk »

So lange brauchte ich gar nicht warten. Fehlermeldung kam wieder zweimal, völligst grundlos, hab in der Zeit nichts weiter gemacht.

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Fehlermeldung Localhost Hyperion

Beitrag von udo1toni »

Dann hilft alles nichts, Du musst in die Rule ein paar logInfo() Zeilen einbauen, um eingrenzen zu können, wo der Fehler genau auftritt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

thedk
Beiträge: 36
Registriert: 10. Mär 2017 09:25
Answers: 0

Re: Fehlermeldung Localhost Hyperion

Beitrag von thedk »

Da ich damit noch keine Erfahrung, muss ich mam so doof fragen: wie baue ich das sinnvoll ein?
Das was in die loginfo() eingetragen wird, wird mir dann doch nur genauso wieder ausgegeben und da die Rule funktioniert kann ich es doch dann nicht wirklich eingerenzen oder?

Antworten