ok… here we go… I did a small test on the pid parameter story… conclusion: It works as expected
@Kai
start:
Clean openHAB 2.3 RC1 on rPi3 with Zulu Embedded build 1.8.0_152-b76 aarch32hf and mosquitto 1.5
installed mqtt1 binding and configured /etc/openhab2/services/mqtt.cfg
as follows:
rpi3.url=tcp://127.0.0.1:1883
rpi3.clientId=oh2rpi3
rpi3.user=openhab
rpi3.pwd=some_strange_stuff
Got connected ok
2018-05-25 18:03:04.760 [INFO ] [penhab.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2018-05-25 18:03:04.764 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'rpi3'
check console for stored configs:
openhab> config:list "(service.pid=org.openhab.mqtt)"
----------------------------------------------------------------
Pid: org.openhab.mqtt
BundleLocation: mvn:org.openhab.io/org.openhab.io.transport.mqtt/1.12.0.RC1
Properties:
felix.fileinstall.filename = file:/var/lib/openhab2/etc/org.openhab.mqtt.cfg
rpi3.clientId = oh2rpi3
rpi3.pwd = some_strange_stuff
rpi3.url = tcp://127.0.0.1:1883
rpi3.user = openhab
service.pid = org.openhab.mqtt
checked the contents of /var/lib/openhab2/etc/org.openhab.mqtt.cfg
rpi3.clientId = oh2rpi3
rpi3.url = tcp://127.0.0.1:1883
rpi3.pwd = some_strange_stuff
rpi3.user = openhab
and /var/lib/openhab2/config/org/openhab/mqtt.config
rpi3.clientId="oh2rpi3"
rpi3.pwd="some_strange_stuff"
rpi3.url="tcp://127.0.0.1:1883"
rpi3.user="openhab"
service.pid="org.openhab.mqtt"
All good so far… now we go for the intentional hiccup
added a second (wrong) broker config in the /etc/openhab2/services/mqtt.cfg
:
rpi3.url=tcp://127.0.0.1:1883
rpi3.clientId=oh2rpi3
rpi3.user=openhab
rpi3.pwd=some_strange_stuff
ERRORrpi3.url=tcp://127.0.0.1:1884
logged it:
==> openhab.log <==
2018-05-25 18:15:20.570 [INFO ] [penhab.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2018-05-25 18:15:20.576 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'errorrpi3'
2018-05-25 18:15:20.621 [ERROR] [penhab.io.transport.mqtt.MqttService] - Error starting broker connection
org.eclipse.paho.client.mqttv3.MqttException: Unable to connect to server
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) [223:org.openhab.io.transport.mqtt:1.12.0.RC1]
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650) [223:org.openhab.io.transport.mqtt:1.12.0.RC1]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:?]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:?]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:?]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:?]
at java.net.Socket.connect(Socket.java:589) ~[?:?]
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) ~[?:?]
... 2 more
2018-05-25 18:15:20.675 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'rpi3'
check again the console:
openhab> config:list "(service.pid=org.openhab.mqtt)"
----------------------------------------------------------------
Pid: org.openhab.mqtt
BundleLocation: mvn:org.openhab.io/org.openhab.io.transport.mqtt/1.12.0.RC1
Properties:
ERRORrpi3.url = tcp://127.0.0.1:1884
felix.fileinstall.filename = file:/var/lib/openhab2/etc/org.openhab.mqtt.cfg
rpi3.clientId = oh2rpi3
rpi3.pwd = some_strange_stuff
rpi3.url = tcp://127.0.0.1:1883
rpi3.user = openhab
service.pid = org.openhab.mqtt
and /var/lib/openhab2/etc/org.openhab.mqtt.cfg
:
rpi3.clientId = oh2rpi3
rpi3.url = tcp://127.0.0.1:1883
rpi3.pwd = some_strange_stuff
rpi3.user = openhab
ERRORrpi3.url = tcp://127.0.0.1:1884
and /var/lib/openhab2/config/org/openhab/mqtt.config
:
ERRORrpi3.url="tcp://127.0.0.1:1884"
felix.fileinstall.filename="file:/var/lib/openhab2/etc/org.openhab.mqtt.cfg"
rpi3.clientId="oh2rpi3"
rpi3.pwd="some_strange_stuff"
rpi3.url="tcp://127.0.0.1:1883"
rpi3.user="openhab"
service.pid="org.openhab.mqtt"
stop OH2.3RC1 (systemctl stop openhab2
), remove the ERRORrpi3.url=tcp://127.0.0.1:1884
line from /etc/openhab2/services/mqtt.cfg
, started OH2 and of course …
2018-05-25 18:21:07.051 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'errorrpi3'
2018-05-25 18:21:07.412 [ERROR] [penhab.io.transport.mqtt.MqttService] - Error starting broker connection
org.eclipse.paho.client.mqttv3.MqttException: Unable to connect to server
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) [223:org.openhab.io.transport.mqtt:1.12.0.RC1]
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650) [223:org.openhab.io.transport.mqtt:1.12.0.RC1]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:?]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:?]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:?]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:?]
at java.net.Socket.connect(Socket.java:589) ~[?:?]
at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) ~[?:?]
... 2 more
2018-05-25 18:21:07.449 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'rpi3'
and console as well as both /var/lib/openhab2/etc/org.openhab.mqtt.cfg
and /var/lib/openhab2/config/org/openhab/mqtt.config
have kept the stale setting.
stop OH2.3RC1, add pid:org.openhab.mqtt
as the first line within /etc/openhab2/services/mqtt.cfg
and… Voila!
errors are gone and ConfigAdmin has been updated with the exclusive settings in the mqtt.cfg file !
2018-05-25 18:37:14.755 [WARN ] [g.dispatch.internal.ConfigDispatcher] - The file /etc/openhab2/services/mqtt.cfg subsequently defines the exclusive PID 'org.openhab.mqtt'. Overriding existing configuration now.
So: It works as expected and we will update the first post
edit: First post has been updated. By the way, this works also with a live system (no real need to stop/start OH2… I left it there just as an extra step). Of course, this pid exclusive config story can be used with many other binding configs (not only mqtt).