Thing via Rule deaktivieren / HTTP Request Fehler

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Thing via Rule deaktivieren / HTTP Request Fehler

Beitrag von curius »

Hallo!

Ich habe nach dem Update von openHAB 3.1 auf openHAB 3.3 ein Problem mit meiner Rule zum Deaktivieren eines Things.
Konkret geht es um einen iRobot Staubsaugerroboter. Das Problem dabei ist, dass die Beleuchtung der Bedienelemente immer aktiviert ist, sobald eine Verbindung zum Roboter besteht => diese leuchtet somit rund um die Uhr, weil der Roboter ja bei openHAB online ist :-)

Aus diesem Grund habe ich unter openHAB 3.1 eine Rule erstellt, mit welcher ich anhand eines Buttons das Thing für den Roboter mittels HTTP Request deaktivieren konnte.

Code: Alles auswählen

rule "Saugi starten"
when 
    Item Roomba_Power changed
then
    if (Roomba_Power.state == ON) {
        sendHttpPutRequest("http://<user>:<kennwort>@openhab:8080/rest/things/irobot:roomba:saugi/enable", "application/json", 'true')
    }

    else
        sendHttpPutRequest("http://<user>:<kennwort>@openhab:8080/rest/things/irobot:roomba:saugi/enable", "application/json", 'false')
end
Das hat soweit auch immer einwandfrei funktioniert...

Nach dem Update auf openHAB 3.3 habe ich nun folgende Fehlermeldung erhalten:

Code: Alles auswählen

2022-08-25 20:08:06.746 [WARN ] [ore.io.rest.auth.internal.AuthFilter] - Unauthorized API request from 192.168.1.90: Basic authentication with username/password is not allowed
2022-08-25 20:08:06.749 [ERROR] [enhab.core.model.script.actions.HTTP] - Fatal transport error: java.util.concurrent.ExecutionException: org.eclipse.jetty.client.HttpResponseException: HTTP protocol violation: Authentication challenge without WWW-Authenticate header
Hab dann daraufhin die Basic Authentification in den Einstellungen erlaubt (API-Sicherheit) und bekomme jetzt aber immer einen HTTP Error => HTTP 415 Unsupported Media Type

Code: Alles auswählen

2022-08-25 20:00:13.431 [WARN ] [s.impl.WebApplicationExceptionMapper] - javax.ws.rs.ClientErrorException: HTTP 415 Unsupported Media Type
	at org.apache.cxf.jaxrs.utils.SpecExceptions.toHttpException(SpecExceptions.java:117)
	at org.apache.cxf.jaxrs.utils.ExceptionUtils.toHttpException(ExceptionUtils.java:168)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:565)
	at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:182)
	at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:79)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:298)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPut(AbstractHTTPServlet.java:234)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:273)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:74)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:294)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:90)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
	at java.base/java.lang.Thread.run(Thread.java:829)
Hat jemand eine Idee was an meinem Code nicht stimmt bzw. was sich diesbezüglich von openHAB 3.1 auf 3.3 geändert hat?
Besten Dank!

Grüße
Christian

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Thing via Rule deaktivieren / HTTP Request Fehler

Beitrag von Tokamak »

Der Endpoint erwartet kein JSON, sondern einen String, un den sendest du ja auch.

Versuche es daher mit "text/plain" anstelle "application/json".
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

curius
Beiträge: 78
Registriert: 1. Aug 2019 10:10
Answers: 0

Re: Thing via Rule deaktivieren / HTTP Request Fehler

Beitrag von curius »

Hallo!

Besten Dank, das war der entscheidende Hinweis.
Es funktioniert jetzt wieder :)

Grüße
Christian

Antworten