MQTT & openhab
-
Hello,
I'm stuck with openhab configuration => Embedded browser not available.
No more handles [Could not detect registered XULRunner to use] org.eclipse.swt.SWTError: No more handles [Could not detect registered XULRunner to use] at org.eclipse.swt.SWT.error(SWT.java:4387) at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:695) at org.eclipse.swt.browser.Browser.<init>(Browser.java:99) at org.eclipse.ui.internal.browser.BrowserViewer.<init>(BrowserViewer.java:224) at org.eclipse.ui.internal.browser.WebBrowserView.createPartControl(WebBrowserView.java:48) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:138) at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.createPartControl(CompatibilityView.java:155) at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:313) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:861) at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:841) at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:113) at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:321) at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:242)```
Which versions have to be installed for java and eclipse ?
I read the forums but it's obscure....
Thanks
EDit : It seems that it's not possible to have the designer working (some answers in other forums)
-
Ok, so I leave aside the designer .
I set-up openhab like => MQTT Broker gateway
mqtt:mysensor.url=tcp://192.168.1.234:1883
mqtt:mysensor.clientId=MQTT`and for the items
`
Group all
Group node1 (all)
Group node2 (all)
Group sketch (all)Number node1_temperature "Temperature [%.1f °C]" (node1,all) {mqtt="<[mysensor:MyMQTT/20/10/V_TEMP:state:default]"}
Number node1_humidite "Humidite [%.1f %%Rh]" (node1,all) {mqtt="<[mysensor:MyMQTT/20/11/V_HUM:state:default]"}```The Id are set auto in the sketch
For the sketch, the serial result is :
repeater started, id 10
send: 10-10-0-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1
send: 10-10-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
send: 10-10-0-0 s=255,c=3,t=11,pt=0,l=18,st=ok:Temp, lumin, hygro
send: 10-10-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
send: 10-10-0-0 s=0,c=0,t=6,pt=0,l=5,st=ok:1.4.1
send: 10-10-0-0 s=1,c=0,t=16,pt=0,l=5,st=ok:1.4.1
send: 10-10-0-0 s=2,c=0,t=7,pt=0,l=5,st=ok:1.4.1
Temperature : 13.80 C
send: 10-10-0-0 s=0,c=1,t=0,pt=7,l=5,st=ok:13.8
Luminosite : 79 lx
send: 10-10-0-0 s=1,c=1,t=23,pt=3,l=2,st=ok:79
Temperature hygro : 14.00C
send: 10-10-0-0 s=2,c=1,t=1,pt=7,l=5,st=ok:93.0
Hygrometrie : 93.00%
Temperature : 13.90 C
send: 10-10-0-0 s=0,c=1,t=0,pt=7,l=5,st=ok:13.9
Luminosite : 85 lx
send: 10-10-0-0 s=1,c=1,t=23,pt=3,l=2,st=ok:85
Temperature hygro : 14.00CSo at this moment, everything seems to be ok
But when i try to select the first line (Tempearture, humidite....), i have a blue line
The ping works
Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.C:\Users\Ludo>ping 192.168.1.234
Envoi d'une requête 'Ping' 192.168.1.234 avec 32 octets de données :
Réponse de 192.168.1.234 : octets=32 temps=6 ms TTL=128
Réponse de 192.168.1.234 : octets=32 temps=1 ms TTL=128
Réponse de 192.168.1.234 : octets=32 temps=1 ms TTL=128
Réponse de 192.168.1.234 : octets=32 temps=1 ms TTL=128Statistiques Ping pour 192.168.1.234:
Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
Minimum = 1ms, Maximum = 6ms, Moyenne = 2msI read somewhere that Id was autodealed (gw.begin(NULL, AUTO, true);) but my Id node is 10.
Normaly should'nt be from 20 to 254 ?-
So what is wrong with the definitions ?
-
In the items definition, (mysensor:MyMQTT/20/10/) what are 20 and 10 ?
Thanks for any help
-
-
-
The blue line disappeared when i reduced the text length
-
id 10 and 11 => ClearEeprom : it's ok now
But always request node Id for both nodes,
Same question as above => In the items definition, (mysensor:MyMQTT/20/10/) what are 20 and 10 ?
Thanks
-
-
"20" is the node id of the sender. Your node id is 10. See: "send: 10-10-0-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1"
"10" is the child id of this particular sensor. Your node has the child id's:
- "0" : send: 10-10-0-0 s=0,c=1,t=0,pt=7,l=5,st=ok:13.8
- "1" : send: 10-10-0-0 s=1,c=1,t=23,pt=3,l=2,st=ok:79
- "2" : send: 10-10-0-0 s=2,c=1,t=1,pt=7,l=5,st=ok:93.0
20-20-0-0 | | | | | | | Id of Destination node | | ID of next node | Id of last node this message passed Id of sender node (origin) s = child-sensor-id, 255 für "interne" Messages c = message-type t = sub-type pt = payload-type (see MyMessage.h) l = length of payload
-
@Xander Thanks for the answer.
For the auto-dealing with Ids, who did it ? Openhab or the gateway ?, or are the Ids fixed with (mysensor:MyMQTT/20/10/) ?
Thanks
-
The node id is from the gateway. The child id is given by you in your sketch.
-
@Xander Ok,
I just keep the gateway and the repeater.
repeater started, id 255 req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: BMP180 Initialisation OK req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: Pression : 1010.47 hPa req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok:
0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0:
It seems that the gateway don't give an Id to the repeater
-
So back to serial gateway.
req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: sensor started, id 255 req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok: req node id send: 255-255-0-0 s=255,c=3,t=3,pt=0,l=0,st=ok:
0;0;3;0;14;Gateway startup complete. 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 255;255;3;0;3; 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 255;255;3;0;3; 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 255;255;3;0;3; 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 255;255;3;0;3; 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 255;255;3;0;3; 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0: 255;255;3;0;3; 0;0;3;0;9;read: 255-255-0 s=255,c=3,t=3,pt=0,l=0:
Are you sure that the gateway gives the Id ?
Ethernet, MQTT and serial gateways never send back ids to the nodes in my case.When I force the Id, it's working and the gateway "shows" the values
repeater started, id 20 send: 20-20-0-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1 send: 20-20-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0 send: 20-20-0-0 s=255,c=3,t=11,pt=0,l=17,st=fail:Repeter, pression send: 20-20-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0 BMP180 Initialisation OK send: 20-20-0-0 s=0,c=0,t=8,pt=0,l=5,st=ok:1.4.1 Pression : 998.68 hPa send: 20-20-0-0 s=0,c=1,t=4,pt=2,l=2,st=ok:998 send: 20-20-0-0 s=0,c=1,t=5,pt=0,l=7,st=ok:inconnu
0;0;3;0;14;Gateway startup complete. 0;0;3;0;9;read: 20-20-0 s=255,c=0,t=18,pt=0,l=5:1.4.1 20;255;0;0;18;1.4.1 0;0;3;0;9;read: 20-20-0 s=255,c=3,t=6,pt=1,l=1:0 20;255;3;0;6;0 0;0;3;0;9;read: 20-20-0 s=255,c=3,t=12,pt=0,l=3:1.0 20;255;3;0;12;1.0 0;0;3;0;9;read: 20-20-0 s=0,c=0,t=8,pt=0,l=5:1.4.1 20;0;0;0;8;1.4.1 0;0;3;0;9;read: 20-20-0 s=0,c=1,t=4,pt=2,l=2:998 20;0;1;0;4;998 0;0;3;0;9;read: 20-20-0 s=0,c=1,t=5,pt=0,l=7:inconnu 20;0;1;0;5;inconnu
-
I'm not shure what your configuration is. You have:
- a sensor node
- a repeater Node
- a serial / MQTT Gateway node
3 nodes - is this OK?
Or is your sensor node the repeater too. I don't know if this is possible.
In case of a repeater node I'm not shure but I think the gateway is allways the "master" of all id's.
-
@Xander Thanks for the answer
For now, I have a MQTT controller, one repeater node with a BMP180 sensor (to do the forecast on a long time, as by definition the repeater never sleeps, with a modified sketch and a timer of 1 seconde), and an another node with temperature, luminance and hymidity sensors.
After some readings , i think that the gateway doesn't provide the Id, it's the role of the controller
=> in this discussion, you can read that, it's for Vera controller
Your going to want a controller in the long term. For testing you can either hard code the node ID in the sketch (you will want to flash the EEPROM clear sketch when you get a controller) The reason your not seeing the temp on the gateway is because it doesn't get sent if there is no node ID. Basically the node is asking the gateway/controller who am I and the controller isn't responding so it just keeps asking.
=> I use openHAb instead of Vera, and there is XXX.items file where you define the Ids for node and child
Number node1_temp "Temp [%.1f °C]" (node1,all) {mqtt="<[mysensor:MyMQTT/20/10/V_TEMP:state:default]"} Number node1_humid "Humid [%.1f %%Rh]" (node1,all) {mqtt="<[mysensor:MyMQTT/20/11/V_HUM:state:default]"}
So I think that in this case, if the Ids are "constants" in openhab, they can't be randomly dealed by the gateway, and have to be fixed in each node
I just tested by giving Id to the nodes, and all seems correct
MQTT gateway
Started! 0;0;3;0;9;read: 20-20-0 s=255,c=0,t=18,pt=0,l=5:1.4.1 0;0;3;0;9;read: 20-20-0 s=255,c=3,t=6,pt=1,l=1:0 0;0;3;0;9;read: 20-20-0 s=255,c=3,t=12,pt=0,l=3:1.0 0;0;3;0;9;read: 20-20-0 s=0,c=0,t=8,pt=0,l=5:1.4.1 0;0;3;0;9;read: 20-20-0 s=0,c=1,t=4,pt=2,l=2:1012 0;0;3;0;9;read: 20-20-0 s=0,c=1,t=5,pt=0,l=7:inconnu 0;0;3;0;9;read: 21-21-0 s=255,c=0,t=17,pt=0,l=5:1.4.1 0;0;3;0;9;read: 21-21-0 s=255,c=3,t=6,pt=1,l=1:0 0;0;3;0;9;read: 21-21-0 s=255,c=3,t=11,pt=0,l=18:Temp, lumin, hygro 0;0;3;0;9;read: 21-21-0 s=255,c=3,t=12,pt=0,l=3:1.0 0;0;3;0;9;read: 21-21-0 s=0,c=0,t=6,pt=0,l=5:1.4.1 0;0;3;0;9;read: 21-21-0 s=1,c=0,t=16,pt=0,l=5:1.4.1 0;0;3;0;9;read: 21-21-0 s=2,c=0,t=7,pt=0,l=5:1.4.1 0;0;3;0;9;read: 21-21-0 s=0,c=1,t=0,pt=7,l=5:20.1 0;0;3;0;9;read: 21-21-0 s=1,c=1,t=23,pt=3,l=2:20 0;0;3;0;9;read: 21-21-0 s=2,c=1,t=1,pt=7,l=5:59.0
Repeater node
repeater started, id 20 send: 20-20-0-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1 send: 20-20-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0 send: 20-20-0-0 s=255,c=3,t=11,pt=0,l=17,st=fail:Repeter, pression send: 20-20-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0 BMP180 Initialisation OK send: 20-20-0-0 s=0,c=0,t=8,pt=0,l=5,st=ok:1.4.1 Pression : 1012.27 hPa send: 20-20-0-0 s=0,c=1,t=4,pt=2,l=2,st=ok:1012 send: 20-20-0-0 s=0,c=1,t=5,pt=0,l=7,st=ok:inconnu
Sensors node
sensor started, id 21 send: 21-21-0-0 s=255,c=0,t=17,pt=0,l=5,st=ok:1.4.1 send: 21-21-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0 send: 21-21-0-0 s=255,c=3,t=11,pt=0,l=18,st=ok:Temp, lumin, hygro send: 21-21-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0 send: 21-21-0-0 s=0,c=0,t=6,pt=0,l=5,st=ok:1.4.1 send: 21-21-0-0 s=1,c=0,t=16,pt=0,l=5,st=ok:1.4.1 send: 21-21-0-0 s=2,c=0,t=7,pt=0,l=5,st=ok:1.4.1 Temperature : 20.10 C send: 21-21-0-0 s=0,c=1,t=0,pt=7,l=5,st=ok:20.1 Luminosite : 20 lx send: 21-21-0-0 s=1,c=1,t=23,pt=3,l=2,st=ok:20 Temperature hygro : 19.00C send: 21-21-0-0 s=2,c=1,t=1,pt=7,l=5,st=ok:59.0 Hygrometrie : 59.00% Luminosite : 20 lx Temperature hygro : 19.00C
-
Re,
I tried to use MYSController without successThe IP is 192.168.1.234:1883 for the MQTT controller , but I can't read any values with the browser and MYSController.
And as you can see in the serial monitors, the nodes seem to discuss together.I don't know how to check the communication with the MQTT gateway, apparently the problem comes from him
Any tips, ?Thanks
-
I use a client ( MQTT.fx http://www.jensd.de/wordpress/?cat=50 ) to test the mqtt gateway. Please see my post: http://forum.mysensors.org/topic/953/how-to-know-the-node-ids-assigned-by-the-mqtt-gateway-to-the-sensors/2
With this tool I can see if the gateway is working and which id's are used. Then I configure OpenHAB accordingly.
-
@Xander Thanks
Very great link, now I can see what is sent.
1)-
2- The ip in MQTT.fx is the same as in openhab.cfg
mqtt:mysensor.url=tcp://192.168.1.234:1883 mqtt:mysensor.clientId=MQTT
3- test.items
Group all Group meteo //(all) Group noeud_1 (meteo) Group noeud_2 (meteo) //Group sketch (all) Number noeud1_temperature "Temperature [%.1f °C]" (noeud_1, all) {mqtt="<[mysensor:MyMQTT/21/0/V_TEMP:state:default]"} Number noeud1_luminosite "Luminosite [%.0f Lux]" (noeud_1, all) {mqtt="<[mysensor:MyMQTT/21/1/V_LIGHT_LEVEL:state:default]"} Number noeud1_humidite "Humidite [%.0f Rh]" (noeud_1, all) {mqtt="<[mysensor:MyMQTT/21/2/V_HUM:state:default]"}
4- openHAB runtime
Launching the openHAB runtime... osgi> 2015-04-01 20:28:05.432 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been started (v1.6.2). 2015-04-01 20:28:06.066 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started 2015-04-01 20:28:06.189 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Disco very initialization completed. 2015-04-01 20:28:07.134 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest 2015-04-01 20:28:15.943 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.sitemap' 2015-04-01 20:28:16.055 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items' 2015-04-01 20:28:16.653 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Class ic UI at /openhab.app
And finally...........................
nothing
PS : i don't see the repeater with the barometer, I need to dissociate them so one nano more
-
Did you restart openHAB after you entered the MQTT gateway IP address in the configuration file? You don't need to restart when changing items, or sitemaps.
You should check that openHAB has made a connection to the MQTT gateway.
netstat -an |grep 1883
root@openHAB:~# netstat -an |grep 1883 tcp6 0 0 192.168.40.201:42199 192.168.40.200:1883 ESTABLISHED root@openHAB:~#
Do you see it listed? If not restart the gateway, it should connect within a few minutes.
-
@GuyP Thanks for reply
I'm using windows 7, so I can't use your command, and see if connection is made
The IP in openHAB is set since the beginning, and I never changed.
-
... but "netstat -an" should work!
-
@Xander I have that
C:\Users\Totche>netstat -an|find "1883" TCP 0.0.0.0:1883 0.0.0 UDP 10.10.10.170:61883
:
-
that shows you have a listener, but nothing connected!
Are you running the gateway on this PC? if so the openhab configuration should be localhost or 127.0.0.1:1883.
-
@GuyP Now I can see that
C:\Users\Totche>netstat -an|find "1883" TCP 192.168.1.13:25638 192.168.1.134:1883 ESTABLISHED UDP 0.0.0.0:61883 *:*
The last Ip 192.168.1.234 was out of range with the router definitions
But no more values in openHAB, pfff
-
And tonight, the weird is back
C:\Users\Totche>netstat -an|find "1883" TCP 0.0.0.0:1883 0.0.0.0:0 LISTENING
In openHAB.fx, I can see the msgs from the node, so I suppose that the ethernet connection is working
With MYSController, nothing displayed, no node network
With the serial, I can see the exchanges between node and the MQTTgateway
So what's wrong ? The Gateway, a port redirection ????
-
@Totche Just for clarification: MYSController is not compatible with MQTT gateways but with serial gw. .
-
@tekka Ah OK, it's better to know it, thanks;
And I found the error this morning and it works great......
To create the configuration file for openHAB, I made a copy/paste of the Mysensors example., and I haven't seen it was a space character at the beginning of each lines.
I removed it, and it's working fine.now
So be carefull with the spaces, it was a stupid mistake and boring to find.
I have done this test 5 times, so I'm sure that it's the problem.
Thank you everybody....