RaspberryMatic
RaspberryMatic copied to clipboard
HB-RF-USB nach Neustart fehlend / Programme verlieren Heizugsgruppen
Describe the issue you are experiencing
Sporadisch findet die CCU nach einem Upgrade oder einem Neustart den HB-RF-USB nicht mehr. Ein weiterer Neustart behebt das Problem dann wieder.
Allerdings verlieren Programme, die in der "Dann"-Regel Heizungsgruppen steuern die hinterlegten Heizungsgruppen. Andere HmIP-Komponenten, die nicht in Heizungsgruppen organisiert sind, sind davon nicht betroffen.
Describe the behavior you expected
Programme sollten die Heizungsgruppen nicht verlieren
Steps to reproduce the issue
Jedes Mal, wenn die CCU den HB-RF-USB nicht mehr findet gehen in den Programmen die Heizungsgruppen Steuerungen verloren. Diese Programmbestandteile müssen jedes Mal wieder manuell ergänzt werden.
What is the version this bug report is based on?
3.67.10.20230225
Which base platform are you running?
ova (Open Virtual Infrastructure)
Which HomeMatic/homematicIP radio module are you using?
RPI-RF-MOD
Anything in the logs that might be useful for us?
-/-
Additional information
No response
Welche Virtualisierungslösung wird denn genutzt?
Ich kenne die Problematik von VirtualBox unter Windows wo manchmal per USB angeschlossene Funkmodule nicht sauber an die VM durchgereicht wurden. Das dann die virtuellen Geräte und auch die virtuellen Tasten weg sind (wenn ohne Funkmodul gebootet wird) ist unschön aber "normal". Ich wüsste aktuell auch nicht ob und was man da machen könnte.
Aktuell läuft es im VMM auf ner Synology, das dürfte KVM dahinter sein.
Das virtuelle Tasten weg sind wäre ja ok, weil nach Reboot wieder da. Wenn es mir aber aus dem Programm die Geräte entfernt ist es unschön, weil ich danach jedes Mal die Geräte manuell im Programme ergänzen und wieder setzen muss.
Ich habe das jetzt nochmal frisch getestet.
Es "verschwinden" tatsächlich nur die virtuellen IP-Gruppen aus dem System.
Die virtuellen Tasten (HM / IP) und die virtuellen HM-Gruppen bleiben erhalten.
Vorher:
Nach Boot ohne Funkmodul:
Ich habe aber aktuell weiterhin keine Idee wieso das so ist und was man eventuell machen könnte.
Das könnte daran liegen, das beim hochfahren ohne Funkmodul der HMIPServer ja trotzdem gestartet wird und dann vllt irgendwie denkt er müsse die löschen. Mir slebst war auch schin einmal aufgefallen das bei der Umbenennung von HMIP Herizungsgruppen (man kann denen ja eigene namen geben) unter gewissen Bedingungen er diese eigene Namensgebung auch wiedee verliert bzw resettet wird. Aber wann das exakt passiert hatte ich noch nicht herausgefunden.. Müsste man sich nochmal genauer anschauen/analysieren und hängt ggf auch zusammen mit dem problem hier!?!
unter gewissen Bedingungen er diese eigene Namensgebung auch wiedee verliert bzw resettet wird
Jetzt wo du es sagst... das hatte ich auch schon mal.
(nach einer Netzwerk-Umbau-Aktion vergessen die ETH zu booten)
Und ja, nach einem Boot ohne Funkmodul (und danach wieder mit Funkmodul) wird das virtuelle IP-Gruppengerät umbenannt in:
HmIP-HEATING INT0000002
Vorher hieß es:
Test-IP-Gruppe INT0000002
Auch unschön (speziell wenn man die Geräte per Script über den Namen anspricht), aber nicht so ärgerlich wie das rauslöschen aus den Programmen.
Was ich bisher noch beobachtet habe: Hat man virtuelle IP-Gruppen und bootet ohne Funkmodul dann kann man nicht mehr zu "Einstellungen -> Gruppen" navigieren, man bekommt nur die Loading-Animation endlos zu sehen. Danach ist die ganze WebUI quasi lahmgelegt. Raus kommt man nur mittels "Abmelden" oder halt Webseiten-Reload (F5).
In der /usr/local/etc/config/groups.gson
stehen immer die korrekten Namen, ich weiß aber nicht wofür die genutzt wird.
Ist natürlich "doof" das sowas auf original CCUx "nicht vorkommen" kann, wer zerlegt die schon und bootet ohne Funkmodul. Daher können wir eQ-3 wohl eher nicht um Hilfe bitten. 😉
Ist natürlich "doof" das sowas auf original CCUx "nicht vorkommen" kann, wer zerlegt die schon und bootet ohne Funkmodul. Daher können wir eQ-3 wohl eher nicht um Hilfe bitten. 😉
Doch. Wenn wir das reproduzierbar und beschreibbar hinbekommen darzulegen wird sich sicher ein eQ3 Entwickler finden der sich dem annimmt. Angetriggert hatte ich ihn schon einmal darauf.
ich meine mich auch zu erinnern, das man bei solch einem Fall sehen konnte das der HmIPServer für sämtliche IP Gruppen quasi eine reinclusion macht. Das würde erklären warum die auch aus den Programmen gelöscht werden und ihren Namen verlieren. Eben weil die quasi gelöscht und wieder frisch angelernt werden. Müssen wir es nur mal reproduziert bekommen auf einem frischen system und dann das eQ3 so darlegen um das dann repariert zu bekommen im HmIPServer.
@Baxxy13 Ich seh gerade das im Falle das kein Funkmodul beim starten gefunden wird RaspberryMatic ja statt HMIPServer.jar
den HMServer.jar
verwendet. Siehe:
https://github.com/jens-maus/RaspberryMatic/blob/e24b33f12455b8d547b03c2bf37385b27b29a6c3/buildroot-external/overlay/base/etc/init.d/S62HMServer#L135-L140
Vielleicht erklärt das ja bereits warum die HMIP Gruppen dann in solch einem Fall verschwinden bzw. dann irgendwie frisch angelegt werden? Vielleicht kannst du damit ja etwas rumexperimentieren. Dies passiert wohl immer wenn ${HMIP_DEV_NODE}
leer bleibt (wie im falle das kein Funkmodul gefunden wird):
https://github.com/jens-maus/RaspberryMatic/blob/e24b33f12455b8d547b03c2bf37385b27b29a6c3/buildroot-external/overlay/base/etc/init.d/S62HMServer#L105
Dann hätte man zumindest einen case wo man schauen könnte was man da entweder selbst was machen kann oder eQ3 ggf. hier eine Anpassung macht damit der HMServer.jar
die HmIP-Gruppen unangetastet lässt.
@jens-maus @Baxxy13 Danke für eure Mühe Leider kann ich zur technischen Analyse nichts beitragen - wenn ihr Unterstützung beim Testen braucht sagt Bescheid.
Doch. Wenn wir das reproduzierbar und beschreibbar hinbekommen darzulegen wird sich sicher ein eQ3 Entwickler finden der sich dem annimmt. Angetriggert hatte ich ihn schon einmal darauf.
Tatsächlich hatte ich das ganz am Anfang (Anfang 2019), als ich mit der der Charly CCU3 angefangen habe: nach einem Reboot war die Funkplatine weg, mit der Funkplatine auch alle HmIP Geräte, virtuelle Gruppen, etc. Damals waren dann auch die die HmIP-Geräte Settings in Programmen verloren - tritt zum Glück nicht mehr auf, aber vielleicht gibt es da irgendeinen Zusammenhang.
etwas rumexperimentieren
Also wenn ich den Start von /opt/HMServer/HMServer.jar
unterbinde wenn kein Funkmodul vorhanden ist, bleiben die
virtuellen IP-Geräte in den Programmen enthalten.
Sie sind auch unter > Einstellungen > Geräte mit korrektem Namen zu sehen.
Nach Reboot mit Funkmodul ist dann alles wieder wie vorher und funktional.
Scheint also wirklich der HMServer
irgendwie involviert zu sein.
Scheint also wirklich der
HMServer
irgendwie involviert zu sein.
Ja, es scheint so zu sein das der HMServer
alle nicht-HmIP virtuellen Gruppen der ReGa zum löschen mitteilt weil er damit selbst nichts anfangen kann. Mal sehen ob hier eQ3 aktiv wird weil nur RaspberryMatic ja den HMServer
einsetzt und überhaupt das Konzept kennt ohne Funkmodul bzw. mit BidCos-only zu starten.
Kannst du auch mal probieren einfach den HMIPServer.jar
zu starten auch wenn kein Funkmodul da ist? Was passiert dann?
Ich bekomme den HMIPServer (ohne Funkmodul) nicht gestartet...
2023-03-16 19:00:06,581 de.eq3.cbcs.server.local.base.internal.LocalServerAdapterInitialization ERROR [vert.x-eventloop-thread-3] Error 'LOCAL_ADAPTER_NO_SUCH_PORT' while trying to open port '':
de.eq3.cbcs.lib.commdevice.CommDeviceException: Exception while trying to open serial port. Check configured port ''
Der HMServer wird wohl noch aus Kompatibilitätsgründen mit entwickelt. Ihm fehlt der komplette "IP-Teil", daher auch der Murks mit den HmIP Heizungsgruppen. HMServer wird verwendet, wenn man z.B. einen HM-MOD-UART mit 1.4.1 ohne DualCoPro Firmware verwendet (also klassisches BidCos) oder nur ein LAN Gateway. Dann will man ja trotzdem Heizungsgruppen, oder auch Diagramme nutzen. Der Einstellungspunkt "Allgemeine Einstellungen" kommt auch aus dem HMServer, wo man z.B. die Preise für Energiezähler festlegt.
Meines Wissens nach steckt im HMIPServer.jar eh schon der reine HMServer ohne hmip mit drin. Müsste man mal probieren ob man den direkt im HMIPServer.jar gestartet bekommt und ob der sich da drin anders verhält (vmtl nicht). Würde aber schon einiges vereinfachen wenn man nicht zwei jar bräuchte mehr
Müsste man mal probieren ob man den direkt im HMIPServer.jar gestartet bekommt
Ohne echten Zugriff auf den HMIPStack eines Funkmoduls starten nicht alle Worker-Threads und der HMIPServer-Start hängt. Das geht schon damit los, dass keine SGTIN ermittelt werden kann.
Selbst wenn man ein DualCoPro Funkmodul generisch emuliert, würde es ein Rekeying zur Folge haben.
Auf einem "Spielsystem", das generell ohne FuMo betrieben werden soll, mag das alles gehen.
Es wäre jedoch doof, wenn man mal im produktiven System versehentlich ohne HmIP-Funkstick hochfährt...
Müsste man mal probieren ob man den direkt im HMIPServer.jar gestartet bekommt
Ohne echten Zugriff auf den HMIPStack eines Funkmoduls starten nicht alle Worker-Threads und der HMIPServer-Start hängt. Das geht schon damit los, dass keine SGTIN ermittelt werden kann.
Hast du auch den classpath der hauptklasse umgesetzt um nur den hmserver zu starten und nicht den hmipserver wenn du für beides die hmipserver.jar verwendest.
Selbst wenn man ein DualCoPro Funkmodul generisch emuliert, würde es ein Rekeying zur Folge haben.
Auf einem "Spielsystem", das generell ohne FuMo betrieben werden soll, mag das alles gehen.
Es wäre jedoch doof, wenn man mal im produktiven System versehentlich ohne HmIP-Funkstick hochfährt...
Das wäre in de Tat doof. Bis eQ3 das repariert bliebe dann eben nur zu erkennen das es hmip gruppen gibt und dann den start des hmserver zu unterbinden wie ich das sehe…
Hast du auch den classpath der hauptklasse umgesetzt um nur den hmserver zu starten und nicht den hmipserver wenn du für beides die hmipserver.jar verwendest.
HM_SERVER_CLASS="de.eq3.ccu.server.HMServer"
Diese Klasse gibt es im HMIPServer nicht.
HM_SERVER_CLASS="de.eq3.ccu.server.HMServer"
Diese Klasse gibt es im HMIPServer nicht.
Oh, dann waren meine Infos wohl falsch. Schade... hmmm, dann bleibt wohl leider doch nur den Start vom HMServer zu unterbinden wenn es HMIP Gruppen gibt. Muss man mal in die groups.gson
schauen ob man daraus ableiten kann es es gerade HMIP Gruppen gibt und man dann halt beim starten einen Fehler ausgibt und doch nicht den HMServer startet...
Muss man mal in die
groups.gson
schauen ob man daraus ableiten kann es es gerade HMIP Gruppen gibt und man dann halt beim starten einen Fehler ausgibt und doch nicht den HMServer startet...
Also BidCos Gruppen werden da wohl wie folgt abgelegt:
"groupType": {
"id": "HomeMatic.heating",
"label": "Heating_Control",
"version": 3
},
und HMIP Gruppen dann mit diesem groupType
:
"groupType": {
"id": "hmip.heating.group",
"label": "HmIP-Heizungssteuerung",
"version": 131072
},
D.h. man könnte wohl einfach im HMIPServer startup nach hmip.heating.group
in der /etc/config/groups.gson
suchen und dann den start unterbinden wenn das dort gefunden wird. Doof, aber wohl momentan unvermeidbar...
Nur zum Verständnis: Wieso muss überhaupt ein Server geladen werden? Kann das System nicht einfach bei fehlenden Funkmodul keine der beiden Serverdateien laden und dann eingeschränkten Funktionsumfang starten?
Nur zum Verständnis: Wieso muss überhaupt ein Server geladen werden? Kann das System nicht einfach bei fehlenden Funkmodul keine der beiden Serverdateien laden und dann eingeschränkten Funktionsumfang starten?
"Eingeschränkter" Funktionsumfang würde dann bedeuten:
- Keine Gruppenfunktionen
- Keine Diagrammfunktionen
- Keine USB-Stick/SD-Karten Managementfunktionen ("Allgemeine Einstellungen" Dialog in Systemsteuerung)
- Keine Hue/OSRAM Koppelungen ("Koppelungen" Dialog in Systemsteuerung).
- Ständige "Eine Komponente der Homematic Zentrale reagiert nicht mehr." Fehlermeldungen in der WebUI für "HmIP-RF" und "VirtualDevices".
Letzteres (5) könnten wir vielleicht versuchen wegzupatchen und ggf. auch irgendwelche WebUI Änderungen einpflegen das (1)-(4) dann Popups kommen die darauf hinweisen das diese Funktionen gerade nicht gehen. Aber eQ3 ist meines Wissens bereits dran das Problem grundsätzlich zu lösen und eben dem HMServer.jar
beizubringen den Rest (HmIP-Gruppen, etc.) dann einfach zu ignorieren. Bis dahin würde ich also erst einmal abwarten wollen bevor man dann selbst Hand anlegt.
Ich würde auch erstmal nix machen. Ohne einen der (gestarteten) Server ist das System sowieso nicht benutzbar, bzw. hängt und hakelt an allen Ecken und Enden.
Voila. Im OCCU liegt nun eine HMServer.jar
beta version bei der eQ3 entsprechend nun selbst Hand angelegt hat um das anfassen von HmIP Geräten (auch virtuelle) zu unterbinden:
https://github.com/eq-3/occu/commit/6f44e722f691e209f3438c5720bfb73967a7c5f4
Wer mag und kann (@Baxxy13 ?) kann dieses neue HMServer.jar bitte einfach mal testen und entsprechendes Feedback hier geben. Wenn alles klappt sollte das schon die Lösung des Ganzen sein ;)
Sieht gut aus. Die virtuellen IP-Gruppengeräte sind weiterhin gelistet und verbleiben auch im Test-Programm. Nur auf "> Einstellungen > Gruppen" sollte man weiterhin nicht gehen, da kommt man dann nur mit F5 wieder raus. Ist aber akzeptabel. Aus meiner Sicht behebt die Beta des HMServer das hier beschriebene sekundäre Problem. (da Verschwinden der IP-Gruppengeräte beim Boot ohne Funkmodul)
Danke. Aber was genau passiert bei der Gruppenansicht? Das sollte natürlich eigentlich auch behoben sein.
und was ist mit der Umbenennung der HmIP Gruppen? Das passiert natürlich auch nicht mehr, ja?
Umbenannt wird nichts mehr, also gut.
Was passiert hatte ich oben schon beschrieben:
Hat man virtuelle IP-Gruppen und bootet ohne Funkmodul dann kann man nicht mehr zu "Einstellungen -> Gruppen" navigieren, man bekommt nur die Loading-Animation endlos zu sehen. Danach ist die ganze WebUI quasi lahmgelegt. Raus kommt man nur mittels "Abmelden" oder halt Webseiten-Reload (F5).
Aber gibt es irgendwelche meldungen in der browser konsole oder hmserver.log die relevant wären?
In der Browserkonsole ist nichts zu sehen.
Im hmserver.log
(TRACE) ist einiges zu sehen.
2023-03-24 17:15:15,936 io.vertx.ext.web.impl.RouterImpl TRACE [vert.x-eventloop-thread-3] Router: 956151242 accepting request POST http://192.168.113.96/pages/jpages/group/list?sid=@e8cyYs4N93@
2023-03-24 17:15:15,936 io.vertx.ext.web.RoutingContext TRACE [vert.x-eventloop-thread-3] Route matches: RouteState{path='/pages/jpages/group/list', name=null, order=10, enabled=true, methods=null, consumes=null, emptyBodyPermittedWithConsumes=false, produces=null, contextHandlers=[de.eq3.ccu.server.internal.RouteHandler@1b295443], failureHandlers=null, added=true, pattern=null, groups=null, useNormalizedPath=true, namedGroupsInRegex=null, virtualHostPattern=null, pathEndsWithSlash=false, exclusive=false, exactPath=true}
2023-03-24 17:15:15,936 io.vertx.ext.web.RoutingContext TRACE [vert.x-eventloop-thread-3] Calling the handler
2023-03-24 17:15:15,936 de.eq3.ccu.server.internal.RouteHandler DEBUG [vert.x-eventloop-thread-3] Request: /pages/jpages/group/list?sid=@e8cyYs4N93@
2023-03-24 17:15:15,937 de.eq3.ccu.server.internal.RouteHandler DEBUG [vert.x-eventloop-thread-3] Sending message to worker with ID 'GROUP_REQUEST_WORKER' ...
2023-03-24 17:15:15,938 de.eq3.ccu.server.internal.GroupRequestWorker DEBUG [vert.x-worker-thread-12] Message received; command=4
2023-03-24 17:15:15,984 de.eq3.ccu.groupadministration.http.service.GroupAdministrationController DEBUG [vert.x-worker-thread-12] GROUP: list called <prototypejs><![CDATA[system.SetSessionVar%28%22sessionCTV%22%2C%20%22true%22%29%3B]]></prototypejs>
2023-03-24 17:15:15,987 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] Mar 24, 2023 5:15:15 PM freemarker.log._JULLoggerFactory$JULLogger error
2023-03-24 17:15:15,987 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] SEVERE: Error executing FreeMarker template
2023-03-24 17:15:15,987 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] FreeMarker template error:
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] The following has evaluated to null or missing:
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ==> group.getGroupDefinition() [in template "GroupListPage.ftl" at line 98, column 132]
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] FTL stack trace ("~" means nesting-related):
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] - Failed at: ${group.getGroupDefinition().getGroup... [in template "GroupListPage.ftl" at line 98, column 130]
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] Java stack trace (for programmers):
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:80)
2023-03-24 17:15:15,988 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.UnexpectedTypeException.<init>(UnexpectedTypeException.java:43)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.NonHashException.<init>(NonHashException.java:49)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Dot._eval(Dot.java:48)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.MethodCall._eval(MethodCall.java:58)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Dot._eval(Dot.java:41)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.MethodCall._eval(MethodCall.java:58)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:96)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.DollarVariable.accept(DollarVariable.java:59)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visit(Environment.java:362)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:315)
2023-03-24 17:15:15,989 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
2023-03-24 17:15:15,990 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:242)
2023-03-24 17:15:15,990 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visitIteratorBlock(Environment.java:595)
2023-03-24 17:15:15,990 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:107)
2023-03-24 17:15:15,990 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
2023-03-24 17:15:15,990 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visit(Environment.java:326)
2023-03-24 17:15:15,990 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visit(Environment.java:332)
2023-03-24 17:15:15,990 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.process(Environment.java:305)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.template.Template.process(Template.java:376)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.lib.webui.WebUIListPage.toHTML(WebUIListPage.java:49)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.groupadministration.http.service.GroupListPage.groupList(GroupListPage.java:50)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.groupadministration.http.service.GroupAdministrationController.list(GroupAdministrationController.java:327)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.server.internal.GroupRequestWorker.handle(GroupRequestWorker.java:55)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.server.internal.GroupRequestWorker.handle(GroupRequestWorker.java:10)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.WorkerContext.lambda$emit$0(WorkerContext.java:59)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.WorkerContext.lambda$execute$2(WorkerContext.java:104)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2023-03-24 17:15:15,991 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
2023-03-24 17:15:15,992 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at java.lang.Thread.run(Thread.java:750)
2023-03-24 17:15:15,992 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] FreeMarker template error:
2023-03-24 17:15:15,992 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] The following has evaluated to null or missing:
2023-03-24 17:15:15,992 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ==> group.getGroupDefinition() [in template "GroupListPage.ftl" at line 98, column 132]
2023-03-24 17:15:15,992 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] FTL stack trace ("~" means nesting-related):
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] - Failed at: ${group.getGroupDefinition().getGroup... [in template "GroupListPage.ftl" at line 98, column 130]
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] Java stack trace (for programmers):
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] ----
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...]
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134)
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.UnexpectedTypeException.newDesciptionBuilder(UnexpectedTypeException.java:80)
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.UnexpectedTypeException.<init>(UnexpectedTypeException.java:43)
2023-03-24 17:15:15,993 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.NonHashException.<init>(NonHashException.java:49)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Dot._eval(Dot.java:48)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.MethodCall._eval(MethodCall.java:58)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Dot._eval(Dot.java:41)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.MethodCall._eval(MethodCall.java:58)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Expression.eval(Expression.java:81)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:96)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.DollarVariable.accept(DollarVariable.java:59)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visit(Environment.java:362)
2023-03-24 17:15:15,994 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:315)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:242)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visitIteratorBlock(Environment.java:595)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:107)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.IteratorBlock.accept(IteratorBlock.java:93)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visit(Environment.java:326)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.visit(Environment.java:332)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.core.Environment.process(Environment.java:305)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at freemarker.template.Template.process(Template.java:376)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.lib.webui.WebUIListPage.toHTML(WebUIListPage.java:49)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.groupadministration.http.service.GroupListPage.groupList(GroupListPage.java:50)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.groupadministration.http.service.GroupAdministrationController.list(GroupAdministrationController.java:327)
2023-03-24 17:15:15,995 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.server.internal.GroupRequestWorker.handle(GroupRequestWorker.java:55)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at de.eq3.ccu.server.internal.GroupRequestWorker.handle(GroupRequestWorker.java:10)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.WorkerContext.lambda$emit$0(WorkerContext.java:59)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.WorkerContext.lambda$execute$2(WorkerContext.java:104)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
2023-03-24 17:15:15,996 de.eq3.cbcs.util.EQ3LoggerOutputStream ERROR [vert.x-worker-thread-12] at java.lang.Thread.run(Thread.java:750)
2023-03-24 17:15:15,997 io.vertx.core.impl.ContextImpl ERROR [vert.x-eventloop-thread-3] Unhandled exception
java.lang.NullPointerException: null
at io.vertx.core.buffer.impl.BufferImpl.<init>(BufferImpl.java:80) ~[HMServer.jar:?]
at io.vertx.core.buffer.impl.BufferImpl.buffer(BufferImpl.java:54) ~[HMServer.jar:?]
at io.vertx.core.buffer.Buffer.buffer(Buffer.java:83) ~[HMServer.jar:?]
at io.vertx.core.http.impl.Http1xServerResponse.end(Http1xServerResponse.java:371) ~[HMServer.jar:?]
at de.eq3.ccu.server.internal.RouteHandler$RequestHandler$1.handle(RouteHandler.java:157) ~[HMServer.jar:?]
at de.eq3.ccu.server.internal.RouteHandler$RequestHandler$1.handle(RouteHandler.java:143) ~[HMServer.jar:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:141) ~[HMServer.jar:?]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[HMServer.jar:?]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[HMServer.jar:?]
at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23) ~[HMServer.jar:?]
at io.vertx.core.Promise.complete(Promise.java:66) ~[HMServer.jar:?]
at io.vertx.core.eventbus.impl.ReplyHandler.dispatch(ReplyHandler.java:97) ~[HMServer.jar:?]
at io.vertx.core.eventbus.impl.HandlerRegistration$InboundDeliveryContext.next(HandlerRegistration.java:162) ~[HMServer.jar:?]
at io.vertx.core.eventbus.impl.HandlerRegistration$InboundDeliveryContext.dispatch(HandlerRegistration.java:127) ~[HMServer.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:111) ~[HMServer.jar:?]
at io.vertx.core.eventbus.impl.HandlerRegistration.dispatch(HandlerRegistration.java:103) ~[HMServer.jar:?]
at io.vertx.core.eventbus.impl.ReplyHandler.doReceive(ReplyHandler.java:81) ~[HMServer.jar:?]
at io.vertx.core.eventbus.impl.HandlerRegistration.lambda$receive$0(HandlerRegistration.java:54) ~[HMServer.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[HMServer.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) ~[HMServer.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[HMServer.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[HMServer.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[HMServer.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[HMServer.jar:?]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_362]
@Baxxy13 Inzwischen hat eQ-3 nachgeliefert. Bitte mal folgenden HMServer.jar probieren: https://github.com/eq-3/occu/commit/ce4a9f42bcd9229923d165a6237b1e9393d5dd7f Vielleicht klappt das anzeigen der Gruppenansicht damit nun trotzdem auch wenn es HmIP Gruppen gibt.
Sieht "erstmal" gut aus. Ohne Funkmodul keine Fehlermeldungen im hmserver.log oder in der Browserkonsole. Die "Gruppenübersicht" lässt sich problemlos aufrufen und ist leer.
Aber: Das Problem hat sich nun auf HM-Gruppen verlagert. Die werden jetzt aus den Programmen gekickt (wenn Boot ohne Funkmodul) und sind nach einem weiteren Reboot (mit FM) zwar wieder da, aber mit "Standard-Namen".
Also exakt das Verhalten wie es vorher bei den IP-Gruppen war.
Kann ich so nicht absegnen. :wink:
Aber: Das Problem hat sich nun auf HM-Gruppen verlagert. Die werden jetzt aus den Programmen gekickt (wenn Boot ohne Funkmodul) und sind nach einem weiteren Reboot (mit FM) zwar wieder da, aber mit "Standard-Namen".
Also exakt das Verhalten wie es vorher bei den IP-Gruppen war.
Ok, dann wäre wohl der HMServer.jar
eine Beta-Version vorher wohl aktuell die bessere wahl auch wenn da dann die Gruppenansicht sich nicht aufrufen lässt, ja? Weil die HM Gruppen will man ja auch nicht rausgekickt haben. Dann muss da eQ3 wohl nochmal nacharbeiten. Danke aber trotzdem fürs testen. Dann bleibt nur revert und warten bis eQ3 nachliefert und dann geht es hier weiter.