Z-Wave not working

Hi,

I am using the latest docker image. However, I have problem starting the Z-Wave agent. After adding the agent and configure the port, the Z-Wave agent simply won’t run.

The log says it is started:

2023-12-06 19:05:07.742  FINE    [Scheduled task-9              ] rg.openremote.manager.agent.AgentService : Starting protocol instance: Z-Wave[]
2023-12-06 19:05:07.751  FINE    [Pool-PersistenceTopic-52      ] remote.manager.asset.AssetStorageService : Asset query took 11ms: return count=1
2023-12-06 19:05:07.753  FINE    [Pool-PersistenceTopic-52      ] remote.manager.asset.AssetStorageService : Asset created: ZWaveAgent{id='78pqpHJl6rjRTK8gxN4CmZ', name='ZW1', type ='ZWaveAgent', parentId='null', realm='master'}

But after that, there is no activity at all. Assets discovery will return error:

2023-12-06 19:12:35.258  FINE    [WebService task-3             ] enremote.container.web.RequestLogger.API : Client request 'GET /agent/assetDiscovery/78pqpHJl6rjRTK8gxN4CmZ (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.19.0.5:51140, forwarded-for=192.168.178.108
2023-12-06 19:12:35.266  FINE    [WebService task-3             ] emote.container.web.WebServiceExceptions : Web service exception in 'RESTEasy Dispatch' for 'GET http://192.168.178.81/agent/assetDiscovery/78pqpHJl6rjRTK8gxN4CmZ' type = UnsupportedOperationException, message=Agent is either invalid, disabled or mis-configured: ZWaveAgent{id='78pqpHJl6rjRTK8gxN4CmZ', name='ZW1', type ='ZWaveAgent', parentId='null', realm='master'}
java.lang.UnsupportedOperationException: Agent is either invalid, disabled or mis-configured: ZWaveAgent{id='78pqpHJl6rjRTK8gxN4CmZ', name='ZW1', type ='ZWaveAgent', parentId='null', realm='master'}
        at org.openremote.manager.agent.AgentService.doProtocolAssetDiscovery(AgentService.java:695)
        at org.openremote.manager.agent.AgentResourceImpl.doProtocolAssetDiscovery(AgentResourceImpl.java:128)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)
        at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)
        at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:474)
        at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:370)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:408)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
        at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
        at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
        at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:370)
        at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:249)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:60)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at org.openremote.container.security.CORSFilter.doFilter(CORSFilter.java:87)
        at org.openremote.container.web.file.HttpFilter.doFilter(HttpFilter.java:108)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.keycloak.adapters.undertow.UndertowAuthenticatedActionsHandler.handleRequest(UndertowAuthenticatedActionsHandler.java:66)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:72)
        at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
        at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
        at java.base/java.lang.Thread.run(Thread.java:840)

When I try to disable and enable the agent. I have this coming from the log:

2023-12-08 18:58:45.812 INFO [Scheduled task-4 ] e.camel.impl.engine.AbstractCamelContext : Stopped ProtocolInbound-Z-Wave5nHdqsyZ8OlotzVYoC71Em (seda://ActuatorTopic)
2023-12-08 18:58:45.813 INFO [Scheduled task-4 ] e.camel.impl.engine.AbstractCamelContext : Shutdown ProtocolInbound-Z-Wave5nHdqsyZ8OlotzVYoC71Em (seda://ActuatorTopic)

And the agent is not started. The status remains in “disabled” no matter what I do.

Is there anything I missed in the configuration that prevents the agent from starting?

Hi,

Can anyone help?

@rainerhitz is the best contact who can help.

@rainerhitz can you help?

If I turn on DEV_MODE and I try to create the Z-Wave asset. Disable it and enable it again. This will be the log:

2024-01-02 19:50:30.807  FINE    [WebService I/O-4              ] org.openremote.container.web.WebService  : Client request '/api/master/asset/query (responseType=application/json, text/plain, */*)': user=null, origin=/172.29.0.5:42294, forwarded-for=192.168.178.109
2024-01-02 19:50:30.809  FINE    [WebService task-2             ] enremote.container.web.RequestLogger.API : Client request 'POST /asset/query (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.29.0.5:42294, forwarded-for=192.168.178.109
2024-01-02 19:50:30.814  FINE    [WebService task-2             ] remote.manager.asset.AssetStorageService : Asset query took 1ms: return count=0
2024-01-02 19:50:30.925  FINE    [WebService I/O-4              ] org.openremote.container.web.WebService  : Client request '/api/master/asset (responseType=application/json, text/plain, */*)': user=null, origin=/172.29.0.5:42294, forwarded-for=192.168.178.109
2024-01-02 19:50:30.928  FINE    [WebService task-2             ] enremote.container.web.RequestLogger.API : Client request 'POST /asset (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.29.0.5:42294, forwarded-for=192.168.178.109
2024-01-02 19:50:30.951  FINE    [WebService task-2             ] remote.manager.asset.AssetStorageService : Asset merge took: 13ms
2024-01-02 19:50:30.959  FINE    [Scheduled task-4              ] rg.openremote.manager.agent.AgentService : Starting protocol instance: Z-Wave[]
2024-01-02 19:50:30.960  FINE    [Pool-PersistenceTopic-51      ] remote.manager.asset.AssetStorageService : Asset query took 4ms: return count=1
2024-01-02 19:50:30.960  FINE    [Pool-PersistenceTopic-51      ] remote.manager.asset.AssetStorageService : Asset created: ZWaveAgent{id='4qkiWSScpbEAKjWjllZx28', name='ZW1', type ='ZWaveAgent', parentId='null', realm='master'}
2024-01-02 19:50:31.048  FINE    [Pool-ClientInboundQueue-64    ] remote.manager.asset.AssetStorageService : Asset query took 2ms: return count=1
2024-01-02 19:50:31.543  FINE    [WebService I/O-2              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:37358, forwarded-for=null
2024-01-02 19:50:34.570  FINE    [WebService I/O-1              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:46066, forwarded-for=null
2024-01-02 19:50:37.591  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:46074, forwarded-for=null
2024-01-02 19:50:40.614  FINE    [WebService I/O-2              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:46086, forwarded-for=null
2024-01-02 19:50:43.637  FINE    [WebService I/O-1              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:57462, forwarded-for=null
2024-01-02 19:50:46.659  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:57474, forwarded-for=null
2024-01-02 19:50:49.591  FINE    [Pool-ClientInboundQueue-58    ] remote.manager.asset.AssetStorageService : Asset query took 2ms: return count=1
2024-01-02 19:50:49.605  FINE    [WebService I/O-1              ] org.openremote.container.web.WebService  : Client request '/api/master/asset/user/link (responseType=application/json, text/plain, */*)': user=null, origin=/172.29.0.5:56508, forwarded-for=192.168.178.109
2024-01-02 19:50:49.607  FINE    [WebService task-2             ] enremote.container.web.RequestLogger.API : Client request 'GET /asset/user/link (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.29.0.5:56508, forwarded-for=192.168.178.109
2024-01-02 19:50:49.680  FINE    [WebService I/O-4              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:57486, forwarded-for=null
2024-01-02 19:50:52.702  FINE    [WebService I/O-1              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:45760, forwarded-for=null
2024-01-02 19:50:55.724  FINE    [WebService I/O-1              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:45774, forwarded-for=null
2024-01-02 19:50:58.746  FINE    [WebService I/O-4              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:45798, forwarded-for=null
2024-01-02 19:51:01.771  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:45814, forwarded-for=null
2024-01-02 19:51:04.793  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:42690, forwarded-for=null
2024-01-02 19:51:05.278  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/api/master/asset/4qkiWSScpbEAKjWjllZx28 (responseType=application/json, text/plain, */*)': user=null, origin=/172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:05.280  FINE    [WebService task-2             ] enremote.container.web.RequestLogger.API : Client request 'PUT /asset/4qkiWSScpbEAKjWjllZx28 (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:05.281  FINE    [WebService task-2             ] enremote.manager.asset.AssetResourceImpl : Updating asset: assetID=4qkiWSScpbEAKjWjllZx28
2024-01-02 19:51:05.284  FINE    [WebService task-2             ] remote.manager.asset.AssetStorageService : Asset query took 3ms: return count=1
2024-01-02 19:51:05.295  FINE    [WebService task-2             ] remote.manager.asset.AssetStorageService : Asset merge took: 8ms
2024-01-02 19:51:05.308  FINE    [Pool-PersistenceTopic-49      ] rg.openremote.manager.agent.AgentService : Agent is disabled so not starting: ZWaveAgent{id='4qkiWSScpbEAKjWjllZx28', name='ZW1', type ='ZWaveAgent', parentId='null', realm='master'}
2024-01-02 19:51:05.311  FINE    [Pool-PersistenceTopic-47      ] remote.manager.asset.AssetStorageService : Asset query took 6ms: return count=1
2024-01-02 19:51:05.312  FINE    [Pool-AttributeEventQueue-21   ] remote.manager.asset.AssetStorageService : Asset query took 2ms: return count=1
2024-01-02 19:51:05.322  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/api/master/asset/user/link (responseType=application/json, text/plain, */*)': user=null, origin=/172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:05.324  FINE    [WebService task-2             ] enremote.container.web.RequestLogger.API : Client request 'GET /asset/user/link (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:05.325  FINE    [Pool-AttributeEventQueue-21   ] ote.manager.asset.AssetProcessingService : <<< Attribute event processed in 10ms: attribute=Asset ID=4qkiWSScpbEAKjWjllZx28, Asset name=ZW1, Attribute{name='agentStatus', type='connectionStatus', value='DISABLED', timestamp='1704196265308'} , consul
2024-01-02 19:51:07.822  FINE    [WebService I/O-2              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:42706, forwarded-for=null
2024-01-02 19:51:08.852  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/api/master/asset/4qkiWSScpbEAKjWjllZx28 (responseType=application/json, text/plain, */*)': user=null, origin=/172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:08.854  FINE    [WebService task-2             ] enremote.container.web.RequestLogger.API : Client request 'PUT /asset/4qkiWSScpbEAKjWjllZx28 (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:08.855  FINE    [WebService task-2             ] enremote.manager.asset.AssetResourceImpl : Updating asset: assetID=4qkiWSScpbEAKjWjllZx28
2024-01-02 19:51:08.857  FINE    [WebService task-2             ] remote.manager.asset.AssetStorageService : Asset query took 2ms: return count=1
2024-01-02 19:51:08.865  FINE    [WebService task-2             ] remote.manager.asset.AssetStorageService : Asset merge took: 5ms
2024-01-02 19:51:08.872  FINE    [Scheduled task-11             ] rg.openremote.manager.agent.AgentService : Starting protocol instance: Z-Wave[]
2024-01-02 19:51:08.873  FINE    [Pool-PersistenceTopic-43      ] remote.manager.asset.AssetStorageService : Asset query took 3ms: return count=1
2024-01-02 19:51:08.895  FINE    [WebService I/O-3              ] org.openremote.container.web.WebService  : Client request '/api/master/asset/user/link (responseType=application/json, text/plain, */*)': user=null, origin=/172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:08.897  FINE    [WebService task-2             ] enremote.container.web.RequestLogger.API : Client request 'GET /asset/user/link (responseType=application/json, text/plain, */*)', requestRealm=master, username=master:admin, origin=172.29.0.5:36980, forwarded-for=192.168.178.109
2024-01-02 19:51:08.974  INFO    [Scheduled task-11             ] e.camel.impl.engine.AbstractCamelContext : Stopped ProtocolInbound-Z-Wave4qkiWSScpbEAKjWjllZx28 (seda://ActuatorTopic)
2024-01-02 19:51:08.976  INFO    [Scheduled task-11             ] e.camel.impl.engine.AbstractCamelContext : Shutdown ProtocolInbound-Z-Wave4qkiWSScpbEAKjWjllZx28 (seda://ActuatorTopic)
2024-01-02 19:51:10.844  FINE    [WebService I/O-4              ] org.openremote.container.web.WebService  : Client request '/ (responseType=*/*)': user=null, origin=/127.0.0.1:42720, forwarded-for=null

Hey @gohyc I will try and bring this to the attention of @rainerhitz but until then can you provide details of how you have configured your agent (screenshot is probably easiest).

Don’t forget when trying to access USB through docker container you will need to use privileged: true option in your docker compose manager server and ensure the USB device is mapped within this service; use the /dev/serial/by-id/... file for the device mapping to ensure naming across restarts and USB changes on your host.

Thanks for the response @Rich.

I have used privileged: true, and it is also not working.

I have tried using mapping of
/dev/ttyACM0:/dev/ttyS0
and also of what you suggested:
/dev/serial/by-id/usb-0658_0200-if00:/dev/ttyS0
and this didn’t work as well.

Here is my docker-compose.yml:

version: ‘2.4’

volumes:
proxy-data:
manager-data:
postgresql-data:

services:

proxy:
image: openremote/proxy:${PROXY_VERSION:-latest}
restart: always
depends_on:
manager:
condition: service_healthy
ports:
- “80:80” # Needed for SSL generation using letsencrypt
- “${OR_SSL_PORT:-443}:443”
- “8883:8883”
#- “127.0.0.1:8404:8404” # Localhost metrics access
volumes:
- proxy-data:/deployment
environment:
LE_EMAIL: ${OR_EMAIL_ADMIN:-}
DOMAINNAME: ${OR_HOSTNAME:-localhost}
DOMAINNAMES: ${OR_ADDITIONAL_HOSTNAMES:-}
# USE A CUSTOM PROXY CONFIG - COPY FROM https://raw.githubusercontent.com/openremote/proxy/main/haproxy.cfg
#HAPROXY_CONFIG: ‘/data/proxy/haproxy.cfg’
TZ: Asia/Singapore

postgresql:
restart: always
image: openremote/postgresql:${POSTGRESQL_VERSION:-latest}
volumes:
- postgresql-data:/var/lib/postgresql/data
- manager-data:/storage
ports:
- “5432:5432”

keycloak:
restart: always
image: openremote/keycloak:${KEYCLOAK_VERSION:-latest}
depends_on:
postgresql:
condition: service_healthy
volumes:
- ./deployment:/deployment
environment:
KEYCLOAK_ADMIN_PASSWORD: ${OR_ADMIN_PASSWORD:-secret}
KC_HOSTNAME: ${OR_HOSTNAME:-localhost}
KC_HOSTNAME_PORT: ${OR_SSL_PORT:–1}
TZ: Asia/Singapore

manager:
privileged: true
restart: always
image: openremote/manager:${MANAGER_VERSION:-latest}
# image: openremote/manager:${MANAGER_VERSION:-develop}
depends_on:
keycloak:
condition: service_healthy
#ports:
# - “127.0.0.1:8405:8404” # Localhost metrics access
environment:
OR_SETUP_TYPE:
OR_ADMIN_PASSWORD:
OR_SETUP_RUN_ON_RESTART:
OR_EMAIL_HOST:
OR_EMAIL_USER:
OR_EMAIL_PASSWORD:
OR_EMAIL_X_HEADERS:
OR_EMAIL_FROM:
OR_EMAIL_ADMIN:
OR_HOSTNAME: ${OR_HOSTNAME:-localhost}
OR_ADDITIONAL_HOSTNAMES: ${OR_ADDITIONAL_HOSTNAMES:-}
OR_SSL_PORT: ${OR_SSL_PORT:–1}
OR_DEV_MODE: ${OR_DEV_MODE:-true}

  # The following variables will configure the demo
  OR_FORECAST_SOLAR_API_KEY:
  OR_OPEN_WEATHER_API_APP_ID:
  OR_SETUP_IMPORT_DEMO_AGENT_KNX:
  OR_SETUP_IMPORT_DEMO_AGENT_VELBUS:
  TZ: Asia/Singapore
    # OR_LOGGING_CONFIG_FILE: logging-dev.properties
volumes:
  - manager-data:/storage
devices:
  - /dev/serial/by-id/usb-0658_0200-if00:/dev/ttyS0

And here is the screenshot of the Z-Wave agent I created:

I remember I tried the Z-Wave agent few months back and there wasn’t issue like this.

Interesting as the Z wave agent hasn’t been updated in that timeframe.

The logs really should indicate why the Z wave agent has issues and that is something we should improve.

I would suggest it is something related to permissions, maybe you can ssh into the manager container and try and cat the usb device to see if any data comes through:

docker exec -it or-manager-1 bash
cat /dev/ttyS0

I was looking as the code also and found the logs was not useful to know why Z-Wave agent stops.

I have also tried to cat /dev/ttyS0 in the manager container but there is nothing coming at all. I have tried privileged as well as non-privileged mode for manager container and they are the same. I have tried to chmod 666 ttyS0 and that won’t help also. Not sure what permission issue will that be.

Anyone? I am still unable to get it to work.

Hi,

You say that cat /dev/ttyS0 shows nothing, do you see output if you do cat /dev/serial/by-id/usb-0658_0200-if00 on the host?

There is nothing also.

Can it be the problem of the z-wave library? The version is 3.4.0-snapshot.

I would expect to see some output when you cat the device but I have no experience with Z wave, will see if I can get Rainer to comment as he’s our Z wave expert.

Hi @gohyc, sorry that I didn’t see your post earlier. It seems that the Z-Wave protocol integration doesn’t work anymore because it uses JAXB for marshaling/unmarshaling XML and JAXB has been removed as of Java SE 11. I’ll let you know when an updated version is available that fixes this issue.

Thanks Rainer for the update. Do you have an estimated date for the updated version?

I would say a new version should be available in about 2 weeks.

Sounds great! Looking forward to the new version!

A new version is available which contains a bugfix for Z-Wave.

Also note that I’ve updated the Z-Wava Agent user guide. I’ve added a zwave-data volume to the manager configuration section in the docker-compose.yml file.

...
...
volumes:
  proxy-data:
  manager-data:
  postgresql-data:
  zwave-data:
...
...
  manager:
    restart: always
    ...
    ...
    volumes:
      ...
      ...
      - zwave-data:/zwave
    devices:
      - /dev/ttyACM0:/dev/ttyS0
...
...