OH3 Webview Probleme

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Jochen
Beiträge: 23
Registriert: 25. Mär 2018 22:07
Answers: 0

OH3 Webview Probleme

Beitrag von Jochen »

Hallo zusammen,

ich bin fleißiger Leser in diesem Forum, zur Abwechslung schreibe ich jetzt auch mal was :)

Ich nutze den Weihnachtsurlaub um mein Openhab auf einen Raspberry Pi 4 umzuziehen. Ich habe ein neues Openhabinian benutzt und alles neu aufgesetzt. Es läuft jetzt alles unter Openhab 3. Die alten Text Konfigfiles habe ich wieder in die zugehörigen Verzeichnisse kopiert und soweit funktioniert alles, bis auf ein paar Rules, die ich neu machen musste.

Jetzt zu meinem Problem. Solange ich die schon vorhandene Sitemap (textbasiert) verwende, klappt die Einbindung einer Raspberrypi Kamera problemlos. Siehe Anschlußraum, 3D Drucker, Webview.

Jetzt habe ich meine Sitemap komplett bei den neuen Pages nachgebaut, alles funktioniert, bis auf die Webkamera. Obwohl der Code bei beiden Varianten gleich aussieht.

Hier ein Auszug aus meiner Textbasierten Sitemap.

Code: Alles auswählen

sitemap Mein_Haus label="Mein Haus" {
    Frame label="Kellergeschoss" icon="cellar" {
        Text label="Büro" icon="office" {
            Default item=WandthermostatBuero_ActualTemperature label="Ist Temperatur[%.1f°C]"
            Default item=WandthermostatBuero_Humidity label="Luftfeuchtigkeit [%d%%]"
            Setpoint item=WandthermostatBuero_SetPointTemperature label="Soll Temperatur [%.1f°C]" step=0.5 minValue=5 maxValue=30
//            Switch item=WandthermostatBuero_1_ControlMode label="ControlMode" mappings=[0="Auto", 1="Manu"]  //war nur zum Testen
        }
        Text label="Partyraum" icon="cellar" {
            Default item=WandthermostatPartyraum_ActualTemperature label="Ist Temperatur[%.1f°C]"
            Default item=WandthermostatPartyraum_Humidity label="Luftfeuchtigkeit [%d%%]"
            Setpoint item=WandthermostatPartyraum_SetPointTemperature label="Soll Temperatur [%.1f°C]" step=0.5 minValue=5 maxValue=30
        }
        Text label="Anschlußraum" icon="cellar" {
            Text label="3D Drucker" {
            Default item=OP_Verbindung label="Verbindung"
            Default item=OP_Status label="Status"
            Default item=OP_Ereignis label="Ereignis"
            Default item=OP_Datei label="Datei"
            Default item=OP_Fortschritt label="Fortschritt [%.1f%%]"
            Default item=OP_Dauer_h label="Dauer [%.1fh]"
            Default item=OP_Verbleibend_h label="Verbleibend [%.1fh]"
            Default item=OP_Temperatur_Extruder_aktuell label="Temperatur Extruder aktuell [%.1f°C]"
            Default item=OP_Temperatur_Extruder_soll label="Temperatur Extruder soll [%.1f°C]"
            Default item=OP_Temperatur_Bett_aktuell label="Temperatur Bett aktuell [%.1f°C]"
            Default item=OP_Temperatur_Bett_soll label="Temperatur Bett soll [%.1f°C]"
            Webview url="http://192.168.100.60/webcam/?action=stream" height=14
            }
        }
    }
hier ein Auszug aus dem Code meiner über "Pages" erstellten neuen Sitemap:

Code: Alles auswählen

sitemap Haus label="Haus" {
    Frame icon="cellar" label="Kellergeschoß" {
        Group icon="office" label="Büro" item=Buero {
            Default icon="temperature" label="Raumtemperatur" item=WandthermostatBuero_ActualTemperature
            Default icon="humidity" label="Luftfeuchtigkeit[%d %%]" item=WandthermostatBuero_Humidity
            Setpoint icon="temperature" label="Soll Temperatur" minValue=5 maxValue=30 step=0.5 item=WandthermostatBuero_SetPointTemperature
        }
        Group icon="cellar" label="Partyraum" {
            Default icon="temperature" label="Raumtemperatur" item=WandthermostatPartyraum_ActualTemperature
            Default icon="humidity" label="Luftfeuchtigkeit[%d %%]" item=WandthermostatPartyraum_Humidity
            Setpoint icon="temperature" label="Soll Temperatur" item=WandthermostatPartyraum_SetPointTemperature minValue=5 maxValue=30 step=0.5
        }
        Group icon="cellar" label="Anschlußraum" {
            Group label="3D Drucker" {
                Default label="Verbindung" item=OP_Verbindung
                Default label="Status" item=OP_Status
                Default label="Ereignis" item=OP_Ereignis
                Default label="Datei" item=OP_Datei
                Default label="Fortschritt [%.1f%%]" item=OP_Fortschritt
                Default label="Dauer [%.1f h]" item=OP_Dauer_h
                Default label="Verbleibend[%.1f h]" item=OP_Verbleibend_h
                Default label="Temperatur Extruder aktuell" item=OP_Temperatur_Extruder_aktuell
                Default label="Temperatur Extruder soll" item=OP_Temperatur_Extruder_soll
                Default label="Temperatur Bett aktuell" item=OP_Temperatur_Bett_aktuell
                Default label="Temperatur Bett soll" item=OP_Temperatur_Bett_soll
                Webview label="Kamera" url="http://192.168.100.60/webcam/?action=stream" height=14
            }
        }
    }
Bild1.jpg
Sobald ich den Webview Punkt in die neue Sitemap einbaue bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

2020-12-29 16:07:52.951 [ERROR] [omponents.UIComponentSitemapProvider] - Cannot build sitemap Haus

java.lang.ClassCastException: class java.math.BigDecimal cannot be cast to class java.lang.Integer (java.math.BigDecimal and java.lang.Integer are in module java.base of loader 'bootstrap')

	at org.openhab.core.model.sitemap.sitemap.impl.WebviewImpl.eSet(WebviewImpl.java:171) ~[bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.setWidgetPropertyFromComponentConfig(UIComponentSitemapProvider.java:286) ~[bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.buildWidget(UIComponentSitemapProvider.java:195) ~[bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.buildWidget(UIComponentSitemapProvider.java:262) ~[bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.buildWidget(UIComponentSitemapProvider.java:262) ~[bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.buildWidget(UIComponentSitemapProvider.java:262) ~[bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.buildSitemap(UIComponentSitemapProvider.java:146) ~[bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.buildSitemap(UIComponentSitemapProvider.java:124) [bundleFile:?]

	at org.openhab.core.ui.internal.components.UIComponentSitemapProvider.getSitemap(UIComponentSitemapProvider.java:89) [bundleFile:?]

	at org.openhab.ui.basic.internal.servlet.WebAppServlet.service(WebAppServlet.java:159) [bundleFile:?]

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [bundleFile:3.1.0]

	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:852) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:544) [bundleFile:9.4.20.v20190813]

	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [bundleFile:?]

	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1581) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1307) [bundleFile:9.4.20.v20190813]

	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) [bundleFile:?]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:482) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1549) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1204) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [bundleFile:9.4.20.v20190813]

	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [bundleFile:?]

	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.Server.handle(Server.java:494) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:374) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:268) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) [bundleFile:9.4.20.v20190813]

	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) [bundleFile:9.4.20.v20190813]

	at java.lang.Thread.run(Thread.java:834) [?:?]
Die neue Sitemap kann dann nicht mehr geladen werden.

Hat jemand eine Ahnung wo ich hier den Fehler habe?

Vielen Dank für eure Hilfe.

Gruß
Jochen
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Kuli
Beiträge: 66
Registriert: 17. Jan 2017 20:51
Answers: 0

Re: OH3 Webview Probleme

Beitrag von Kuli »

Hallo Jochen.

Wie auch schon in den Beiträgen zm IP-Kamera-Binding festgestellt, kann ich deine Fehlemeldung bestätigen.
Ich bekomme in der OH3.0.0 in der Sitemap ebenfalls kein mgpeg Stream eingebunden und dargestellt.
Ich vermute es wir bei dir auch nicht funktionieren, wenn du statt "Webview", wie es ja richtig wäre ein "Video" Widget ín die Sitemap einfügst.

Deinem Beitrag konnte ich nicht entnehmen, wo du deine Sitemap darstellen möchtest.
Ich vermute wie bei den meisten Umsteigern von OH2 in dem Basic-Ui.
Weiter vermute ich das funktioniert in OH3 (noch) nicht, weil es in OH3 unter "pages" - "sitemap" als "Video" oder "Webview" widget eingefügt wird und dies noch nicht 100% kompatibel (für alle Varianten, wie bei uns z.B. mit einer Passawortabfrage in der Webadresse) intergiert ist.

Workaround: Du kannst dir in OH3 in der Entwicklungsumgebung unter Widgets ein eigenes Kamerawidget erstellen.
Das kannst du dann unter Pages in ein Layout integrieren und bekommst dann das Kamerbild live in der Zelle (Cell) des Laypouts angezeigt, als auch in groß beim Klick auf die Zelle (Cell).

Wenn dieser Workarround für dich in Frage kommt abei noch den Code für das Widget aus dem englischen Forum:
uid: ClickableCamera
props:
parameters:
- description: "example: http://192.168.1.2:54321/autofps.mjpeg"
label: Thumbnail URL
name: thumbnailURL
required: true
type: TEXT
- description: "example: http://192.168.1.2:54321/snapshots.mjpeg"
label: Stream URL
name: streamURL
required: true
type: TEXT
timestamp: Dec 14, 2020, 9:59:29 PM
component: oh-image-card
config:
class:
- oh-cell
- no-margin
style:
- border-radius: 6px
- width: 100%
- height: auto
url: =props.thumbnailURL
action: photos
actionPhotos: =[props.streamURL]
actionPhotoBrowserConfig:
theme: dark
type: popup
Diesen kannst du 1:1 so einfügen, du brauchst nichts auf deine Umegbung an zu passen.
Das Widget fragt bei einfügen in dein Layout dann nach deiner URl.

Grüße Kuli

Jochen
Beiträge: 23
Registriert: 25. Mär 2018 22:07
Answers: 0

Re: OH3 Webview Probleme

Beitrag von Jochen »

Hallo Kuli,

das mit dem Widget probiere ich heute Abend gleich aus.

Was mich eben nur wundert ist, daß der Webview funktioniert, wenn ich die Sitemap mit z.B. Visual Studio Code erstelle und die Datei z.B. "Mein Haus.sitemap" im entsprechenden Verzeichnis ablege.

Wenn ich die Sitemap mit der neuen GUI erstelle funktioniert es nicht.

Und ja, ich nutze die Basic UI.

schöne Grüße
Jochen

Benutzeravatar
Kuli
Beiträge: 66
Registriert: 17. Jan 2017 20:51
Answers: 0

Re: OH3 Webview Probleme

Beitrag von Kuli »

Hi ich denke da fehlt noch der Feinschliff zum jetzigen Stand der Entwicklung beim Thema Video in OH3.
Basic-UI ist halt "alte" importierte Welt (OH2). In OH3 gibt es das Master-UI mit Layouts.
Einen Videostream im Browser dar zu stellen ist nicht das Problem. Anspruchsvoller wird es, wenn z.B. Benutzernamen und Passwort übergeben werden müssen. In der Sitemap muss natürlich auch noch der Ort und die Größe der Darstelung definiert werden etc. Es gibt im englischen Forum überings noch andere Widgets, die z.B. mehrere Videobilder (per HLS) oder das Videobild als drehbaren Würfel darstellen.

Jochen
Beiträge: 23
Registriert: 25. Mär 2018 22:07
Answers: 0

Re: OH3 Webview Probleme

Beitrag von Jochen »

Hallo Kuli,

das mit dem Widget einfügen will leider auch nicht klappen.
Ich gehe zu Entwickler Tools --> Widgets und drücke das Plus Zeichen. In dem Feld links lösche ich dann den vorhandenen Code und kopiere den Code von dir hinein.

Leider gibt es dann gleich mehrere Fehlermeldungen (rote X-Zeichen) siehe Bilder.

Ich kann das Widget auch nicht abspeichern.
Fehler Zeile 1.jpg
Fehler Zeile 9.jpg
Woran kann das liegen?

Gruß
Jochen
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Kuli
Beiträge: 66
Registriert: 17. Jan 2017 20:51
Answers: 0

Re: OH3 Webview Probleme

Beitrag von Kuli »

Hallo Jochen,

ja du hast vollkommen recht, weil bei dem von mir oben ausgefühten Zitat des Widget die Formatierung nicht übernommen wurde.
Kopier mal den Text ohne das Zitat 1:1 (siehe unten) ein. So habe ich es gerade ausprobiert und es funktioniert:

uid: ClickableCamera
props:
parameters:
- description: "example: http://192.168.1.2:54321/autofps.mjpeg"
label: Thumbnail URL
name: thumbnailURL
required: true
type: TEXT
- description: "example: http://192.168.1.2:54321/snapshots.mjpeg"
label: Stream URL
name: streamURL
required: true
type: TEXT
timestamp: Jan 2, 2021, 6:49:37 PM
component: oh-image-card
config:
class:
- oh-cell
- no-margin
style:
- border-radius: 6px
- width: 100%
- height: auto
url: =props.thumbnailURL
action: photos
actionPhotos: =[props.streamURL]
actionPhotoBrowserConfig:
theme: dark
type: popup

Antworten