Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Controllers
  3. OpenHAB
  4. Openhab MQTT Example

Openhab MQTT Example

Scheduled Pinned Locked Moved OpenHAB
openhab mqtt ex
49 Posts 8 Posters 68.8k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Marcus
    wrote on last edited by
    #1

    Hi,

    i'm new here.

    I got a binary switch sensor to work and the mqtt ethernet gateway and i installed openhab on my raspberry - everything is working.

    But here is my problem:

    I dont know how to implement the binary switch to openhab.

    This is what my serial monitor prints out from the node:

    sensor started, id 20
    send: 20-20-0-0 s=255,c=0,t=17,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
    read: 0-0-20 s=255,c=3,t=6,pt=0,l=1:M
    send: 20-20-0-0 s=3,c=0,t=0,pt=0,l=5,st=ok:1.4.1
    send: 20-20-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:0
    send: 20-20-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:1
    send: 20-20-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:0
    send: 20-20-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:1

    I need an easy example i cant find samething with google.

    If u have ready to use config-files for openhab that would be nice.

    1 Reply Last reply
    0
    • T Offline
      T Offline
      tboha
      wrote on last edited by
      #2

      Add this to your openhab.cfg file:

      mqtt:mysensor.url=tcp://xxx.xxx.xxx.xxx:1883
      mqtt:mysensor.clientId=MyMQTT
      

      Dont't forget to replace xxx with your broker's IP-Adress.
      ClientID has to be unique for your broker, e.g. if there is another connection with the same ID, only the last established connection will be valid.

      Add this to your *.items file:

      Switch mqttsw1 "Switch 1" (all) {mqtt=">[mysensor:/testsw/1:command:on:default],>[mysensor:/testsw/1:command:off:default]"}
      Switch mqttsw2 "Switch 2" (all) {mqtt=">[mysensor:/testsw/2:command:off:default],>[mysensor:/testsw/2:command:on:default]"}
      

      Add this to your *.sitemap file:

      Frame label="MQTT" {
      Switch item=mqttsw1 label="MQTT Switch 1"	
      Switch item=mqttsw2 label="MQTT Switch 2"
      }
      

      This should be enough for a dryfit run. It will be safe to restart OpenHab at this point. Using mosquitto_pub/mosquitto_sub or WMQTT-Utility or something similar you should be able to receive messages from OpenHab under topic "/testsw/#"

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Marcus
        wrote on last edited by
        #3

        Thank u tboha

        now there is a mistake in the sitemap-file:

        2014-12-10 09:42:13.967 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been started (v1.6.1).
        2014-12-10 09:42:33.835 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started
        2014-12-10 09:42:34.692 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Discovery initialization completed.
        2014-12-10 09:42:34.751 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
        2014-12-10 09:42:34.768 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'mymqtt'
        2014-12-10 09:42:38.721 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'exec.persist'
        2014-12-10 09:42:42.505 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'logging.persist'
        2014-12-10 09:42:42.904 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'db4o.persist'
        2014-12-10 09:42:43.159 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
        2014-12-10 09:42:44.089 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items'
        2014-12-10 09:43:07.490 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.sitemap'
        2014-12-10 09:43:11.083 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.script'
        2014-12-10 09:43:29.438 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
        2014-12-10 09:43:39.518 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /openhab.app
        2014-12-10 09:43:57.645 [INFO ] [.o.io.habmin.HABminApplication] - Started HABmin REST API at /services/habmin
        2014-12-10 09:44:54.138 [WARN ] [c.internal.ModelRepositoryImpl] - Configuration model 'test.sitemap' is either empty or cannot be parsed correctly!
        2014-12-10 09:44:54.268 [WARN ] [e.jetty.servlet.ServletHandler] - /openhab.app
        org.openhab.ui.webapp.render.RenderException: Sitemap 'test' could not be found
            at org.openhab.ui.webapp.internal.servlet.WebAppServlet.service(WebAppServlet.java:114) ~[na:na]
            at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) ~[na:na]
            at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128) ~[na:na]
            at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60) ~[na:na]
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) ~[javax.servlet_3.0.0.v201112011016.jar:na]
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598) ~[org.eclipse.jetty.servlet_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486) [org.eclipse.jetty.servlet_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413) [org.eclipse.jetty.servlet_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.Server.handle(Server.java:350) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630) [org.eclipse.jetty.http_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) [org.eclipse.jetty.http_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) [org.eclipse.jetty.server_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606) [org.eclipse.jetty.io_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46) [org.eclipse.jetty.io_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) [org.eclipse.jetty.util_8.1.3.v20120522.jar:8.1.3.v20120522]
            at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) [org.eclipse.jetty.util_8.1.3.v20120522.jar:8.1.3.v20120522]
            at java.lang.Thread.run(Thread.java:744) [na:1.8.0]
        

        And here my sitemap file:

        Frame label="MQTT" 
        	{
        	Switch item=mqttsw1 label="MQTT Switch 1"    
        	Switch item=mqttsw2 label="MQTT Switch 2"
        	}
        

        I Hope u can help.

        1 Reply Last reply
        0
        • M Offline
          M Offline
          Marcus
          wrote on last edited by
          #4

          openhab designer.JPG

          And here Screenshot from openhab designer.

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Marcus
            wrote on last edited by
            #5

            Okay, i found the mistake.

            test.sitemap schould look like this:

            sitemap Test label="Menu"
            {
            	
            Frame label="MQTT" 
            	{
            	Switch item=mqttsw1 label="MQTT Switch 1"    
            	Switch item=mqttsw2 label="MQTT Switch 2"
            	}
            	
            }
            

            Now i can go on with testing.

            1 Reply Last reply
            0
            • M Offline
              M Offline
              Marcus
              wrote on last edited by Marcus
              #6

              openhab screen.JPG

              Now it looks like this.

              But i still have the problem that i cant see the position of my window switch.

              {mqtt=">[mysensor:/testsw/1:command:on:default],>[mysensor:/testsw/1:command:off:default]"}
              

              This line has to be modified i think. Plz tell me how it must be to show the status of my sensor-node.

              send: 20-20-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:0
              send: 20-20-0-0 s=3,c=1,t=16,pt=2,l=2,st=ok:1
              

              this is what the serial monitor from my sensor node prints.
              Can someone explain what this meesage mean?!

              1 Reply Last reply
              0
              • T Offline
                T Offline
                tboha
                wrote on last edited by
                #7

                @Marcus .. I have to think about this. Meanwhile I would be interested in your OpenHab output concernig lines like these:

                15:19:49.599 DEBUG o.o.b.m.i.MqttItemBinding[:44] - Publishing command OFF to /tbtestm/1
                15:19:49.599 DEBUG o.o.i.t.m.i.MqttBrokerConnection[:437] - Publishing message 325 to topic '/tbtestm/1'
                

                You got some messages similar to this?

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  Marcus
                  wrote on last edited by Marcus
                  #8

                  Well u are back.

                  pi@raspberrypi /opt/openhab $ sudo ./start.sh
                  Launching the openHAB runtime...
                  osgi> 2014-12-10 14:59:25.455 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been     started (v1.6.1).
                  2014-12-10 14:59:45.668 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started
                  2014-12-10 14:59:46.488 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Discovery initialization completed.
                  2014-12-10 14:59:46.589 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
                  2014-12-10 14:59:46.597 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'mymqtt'
                  2014-12-10 14:59:50.693 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'exec.persist'
                  2014-12-10 14:59:55.287 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'logging.persist'
                  2014-12-10 14:59:55.513 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'db4o.persist'
                  2014-12-10 14:59:55.702 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
                  2014-12-10 14:59:56.627 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items'
                  2014-12-10 15:00:10.357 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.script'
                  2014-12-10 15:00:24.527 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.sitemap'
                  2014-12-10 15:00:31.120 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
                  2014-12-10 15:00:38.539 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /openhab.app
                  2014-12-10 15:00:59.480 [INFO ] [.o.io.habmin.HABminApplication] - Started HABmin REST API at /services/habmin
                  

                  This happened when i activated/deactivated the switches in the "test-environment" on the webpage.

                   2014-12-10 15:02:30.560 [INFO ] [runtime.busevents             ] - mqttsw1 received command ON
                  2014-12-10 15:02:31.060 [INFO ] [runtime.busevents             ] - mqttsw1 received command OFF
                  2014-12-10 15:02:31.969 [INFO ] [runtime.busevents             ] - mqttsw2 received command ON
                   2014-12-10 15:02:32.736 [INFO ] [runtime.busevents             ] - mqttsw2 received command OFF
                  

                  This is everything it prints. but if i switch on the node it prints nothing.

                  This must be simple problem with the item definition i think. But there are less examples where i can look an figure out how it works.

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Marcus
                    wrote on last edited by
                    #9

                    Now I installed MyMQTT on my smartphone and connected it to my MQTT Gateway.

                    If i activate and deactivate the switch on the node it prints this:

                    1
                    MyMQTT/20/3/V_TRIPPED
                    0 
                    MyMQTT/20/3/V_TRIPPED
                    

                    I hope this helps.

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      tboha
                      wrote on last edited by
                      #10

                      I forgot about the DEBUG part.

                      <logger name="org.openhab" level="INFO"/>
                      <logger name="org.openhab.binding.mqtt" level="DEBUG" />
                      <logger name="org.openhab.io.transport.mqtt" level="DEBUG" />
                      

                      In File "logback.xml" look for the first line and insert the second and third line.
                      This will lead to some additional infos in Openhabs output.

                      I'm looking for some trace of successfully established connections between OpenHab and MQTT broker.

                      If there is no connection the switch will show like you described above.

                      1 Reply Last reply
                      1
                      • M Offline
                        M Offline
                        Marcus
                        wrote on last edited by
                        #11

                        I did what u said.

                        This is what openhab says after start.

                         pi@raspberrypi /opt/openhab $ sudo ./start.sh
                         Launching the openHAB runtime...
                         osgi> 2014-12-10 17:32:36.323 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been started (v1.6.1).
                         2014-12-10 17:32:56.766 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started
                         2014-12-10 17:32:57.084 [DEBUG] [.io.transport.mqtt.MqttService] - Starting MQTT Service...
                         2014-12-10 17:32:58.022 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Discovery initialization completed.
                         2014-12-10 17:32:58.139 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
                         2014-12-10 17:32:58.154 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'mymqtt'
                         2014-12-10 17:32:58.232 [DEBUG] [o.i.t.m.i.MqttBrokerConnection] - Creating new client for 'tcp://192.168.0.3:1883' using id 'MyMQTT' and file store '/tmp/mymqtt'
                         2014-12-10 17:33:01.703 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'exec.persist'
                         2014-12-10 17:33:04.772 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'logging.persist'
                         2014-12-10 17:33:05.181 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'db4o.persist'
                         2014-12-10 17:33:05.437 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
                         2014-12-10 17:33:06.092 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items'
                         2014-12-10 17:33:29.493 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.sitemap'
                         2014-12-10 17:33:33.644 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.script'
                         2014-12-10 17:33:47.367 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
                         2014-12-10 17:33:53.419 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /openhab.app
                         2014-12-10 17:34:15.084 [INFO ] [.o.io.habmin.HABminApplication] - Started HABmin REST API at /services/habmin
                         2014-12-10 17:34:20.543 [DEBUG] [.b.mqtt.internal.MqttActivator] - MQTT binding has been started.
                         2014-12-10 17:34:20.703 [DEBUG] [b.mqtt.internal.MqttItemConfig] - Loaded MQTT config for item 'mqttsw1' : 0 subscribers, 2 publishers
                         2014-12-10 17:34:20.722 [DEBUG] [b.mqtt.internal.MqttItemConfig] - Loaded MQTT config for item 'mqttsw2' : 0 subscribers, 2 publishers
                         2014-12-10 17:34:20.794 [DEBUG] [m.internal.MqttEventBusBinding] - MQTT: Activating event bus binding.
                        

                        0 subscribers, 2 publishers???

                        1 Reply Last reply
                        0
                        • T Offline
                          T Offline
                          tboha
                          wrote on last edited by
                          #12

                          This is not the expected result. Where does the second publisher come from?

                          But this result tells us that your broker and your connection are working fine, at least for output (regarded from the OpenHab side).

                          Toggling the switch should now result in a message like shown above ( "Publishing command....). This message should show up in your MyMQTT on your Smartphone.

                          Maybe I misunderstood your intentions. I thought you wanted to control some appliance with a switch from within OpenHab. This should work with the given example.

                          If you want to control a switch (e.g. MySensors BinarySwitchSensor) things get a little more complex. You need an inbound channel from the broker. A code example for this purpose can be found in http://forum.mysensors.org/topic/303/mqtt-broker-gateway. The following line implements this.

                          Switch node2_sw2  "sw2 send + recieve example"  (node2,all)      {mqtt=">[mysensor:MyMQTT/21/2/V_LIGHT:command:ON:1],>[mysensor:MyMQTT/21/2/V_LIGHT:command:OFF:0],<[mysensor:MyMQTT/21/2/V_LIGHT:command:MAP(1on0off.map)]"}
                          

                          ( This will not fit for a switch - its only an example for inbound channels)
                          I tried this, but it was not successful. I got a Feed-back-loop blocking my OpenHab Server.

                          If you want to monitor your switch, the String Example some lines below could be an option.

                           String sketch20 "Switch 20 [%s]"  (sketch,all) {mqtt="<[mysensor:MyMQTT/20/3/V_TRIPPED:state:default]"}
                          
                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            Marcus
                            wrote on last edited by Marcus
                            #13

                            I only wanna see the state of the switch.

                            For example i wanna know if the window is open or not.

                            But the line does not work. i cannot see the state of the switch.

                            I used the example and edited the line u gave me in there:

                             Group all
                             Group node1  (all)
                             Group node2  (all)
                             Group sketch (all)
                            
                             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]"}
                            
                             Switch node2_sw1  "sw2"  (node2,all)  {mqtt=">[mysensor:MyMQTT/21/1/V_LIGHT:command:ON:1],>[mysensor:MyMQTT/21/1/V_LIGHT:command:OFF:0]"}
                             Switch node2_sw2  "sw2 send + recieve example"  (node2,all)      {mqtt=">[mysensor:MyMQTT/21/2/V_LIGHT:command:ON:1],>[mysensor:MyMQTT/21/2/V_LIGHT:command:OFF:0],<[mysensor:MyMQTT/21/2/V_LIGHT:command:MAP(1on0off.map)]"}
                            
                              String sketch20 "Switch name 20 [%s]"  (sketch,all) {mqtt="<[mysensor:MyMQTT/20/3/V_TRIPPED:state:default]"}
                            
                            1 Reply Last reply
                            0
                            • T Offline
                              T Offline
                              tboha
                              wrote on last edited by
                              #14

                              I stripped my Openhab Installation to the bones and tried to run the example - now I'm getting strange errors like "InstantiationException on org.openhab.core.library.types.StringType"

                              It will take a while to check out the reasons this behavior.

                              If I change the MQTT-Topics by hand (e.g. with mosquitto_pub from the raspberry) with some String, they show up correct, if it's a number it won't. Strange.

                              1 Reply Last reply
                              0
                              • T Offline
                                T Offline
                                tboha
                                wrote on last edited by
                                #15

                                A little update. I couldn't figure out the reasons of this strange behavior, bus at least there exist a kind of workaround.

                                File mqtt.sitemap

                                sitemap mqtt label="MQTT-Test"
                                {
                                 Frame label="MQTT" 
                                   {	
                                    Switch item=mqttsw1 label="MQTT Switch 1 (text)" 
                                    Text item=mqttsw1s   
                                    Switch item=mqttsw2 label="MQTT Switch 2 (raw)"
                                    Text item=mqttsw2s 
                                    Switch item=mqttsw3 label="MQTT Switch 3 (string)" 
                                    Text item=mqttsw3s
                                    Text item=sketch20
                                   }
                                }
                                

                                File mqtt.items

                                Switch mqttsw1 "MQTT Switch 1" (all,mqtt) {mqtt=">[mysensor:/testsw/1:command:on:RED],>[mysensor:/testsw/1:command:off:Green]"}
                                Switch mqttsw2 "MQTT Switch 2" (all,mqtt) {mqtt=">[mysensor:/testsw/2:command:off:default],>[mysensor:/testsw/2:command:on:default]"}
                                 Switch mqttsw3 "MQTT Switch 3" (all,mqtt) {mqtt=">[mysensor:/testsw/3:command:*:Switch ${itemName} was turned ${command}]"}
                                
                                String mqttsw1s "MQtt Switch 1 Status [%s]" (all,mqtt) {mqtt="<[mysensor:/testsw/1:state:default]"}
                                 String mqttsw2s "MQtt Switch 2 Status [%s]" (all,mqtt) {mqtt="<[mysensor:/testsw/2:state:default]"}
                                String mqttsw3s "MQtt Switch 3 Status [%s]" (all,mqtt) {mqtt="<[mysensor:/testsw/3:state:default]"}
                                                                   
                                 String sketch20 "Sketch name 20 [%s]"  (all,mqtt) {mqtt="<[mysensor:MyMQTT/20/255/V_SKETCH_NAME:state:default]"}
                                

                                Switch 1 : default is replaced with RED/Green and this text is output to the topic /testsw/1.
                                Toggling this switch will result in RED/Green in the status field.

                                Switch 2: the original statement.
                                Toggling this switch will result in ON/OFF messages shown in the broker (e.g. MyMQTT)

                                Switch 3: copied from manual : https://github.com/openhab/openhab/wiki/MQTT-Binding
                                Toggling this switch will result in a well formed Message in status and broker.

                                This line resolves the secret of the 2 publishers : OpenHab counts every ">" as a separate publisher.

                                Furthermore the browser used seems to affect the results. It is mentioned somewhere in the documentation that browsers behave different. I'm using Opera 12.17 - for some items
                                manual refreshing is required. Chrome does this automatically.

                                However - the line "String sketch20....." should have been functional despite of all this. I can't see an obvious explanation for failure.

                                Maybe you can adapt the above skeleton files for your needs.

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  Marcus
                                  wrote on last edited by
                                  #16

                                  Good morning.

                                  I did what u said. But i dont see the status of my switch.

                                   Switch mqttsw1 "MQTT Switch 1" (all,mqtt) {mqtt=">[mysensor:MyMQTT/20/3/V_TRIPPED:command:on:RED],>[mysensor:MyMQTT/20/3/V_TRIPPED:command:off:Green]"}
                                  Switch mqttsw2 "MQTT Switch 2" (all,mqtt) {mqtt=">[mysensor:MyMQTT/20/3/V_TRIPPED:command:off:default],>[mysensor:MyMQTT/20/3/V_TRIPPED:command:on:default]"}
                                  Switch mqttsw3 "MQTT Switch 3" (all,mqtt) {mqtt=">[mysensor:MyMQTT/20/3/V_TRIPPED:command:*:Switch ${itemName} was turned ${command}]"}
                                  
                                  String mqttsw1s "MQtt Switch 1 Status [%s]" (all,mqtt) {mqtt="<[mysensor:MyMQTT/20/3/V_TRIPPED:state:default]"}
                                  String mqttsw2s "MQtt Switch 2 Status [%s]" (all,mqtt) {mqtt="<[mysensor:MyMQTT/20/3/V_TRIPPED:state:default]"}
                                  String mqttsw3s "MQtt Switch 3 Status [%s]" (all,mqtt) {mqtt="<[mysensor:MyMQTT/20/3/V_TRIPPED:state:default]"}
                                  
                                  String sketch20 "Sketch name 20 [%s]"  (all,mqtt) {mqtt="<[mysensor:MyMQTT/20/3/V_TRIPPED:state:default]"}
                                  

                                  The sitemap is the same as yours.

                                  mqtt-test.JPG

                                  As u can see there is no red/green and no well formed text-message.

                                  Thanks anyway! Would be very nice if we get this to work.

                                  1 Reply Last reply
                                  0
                                  • T Offline
                                    T Offline
                                    tboha
                                    wrote on last edited by
                                    #17

                                    It seems your broker does not response to OpenHab or the binding is not effective.

                                    Your installation is different from mine - you are running OpenHab on your raspberry , I'm running OpenHab on my desktop.
                                    We both use OpenHab 1.6.1.
                                    Probably you are running your MQTT Broker (presumably mosquitto?) on your raspberry - so do I.
                                    You are running MyMQTT on Android, so do I.
                                    (by the way -- I am not able to publish something from MyMQTT despite MyMQTT says "Message published" - nothing arrives at the broker. You got similar experiences?)

                                    For a basic debugging environment I use mosquitto_sub in an extra terminal on my Raspberry with

                                    mosquitto_sub -t /#
                                    

                                    which should show all messages arriving at the broker.
                                    First test with mosquitto_pub in another terminal:

                                    mosquitto_pub -t /testsw/1 -m "switch1"
                                    

                                    If this Message shows up we got our topic instantiated (and the broker is working).

                                    mosquitto_pub -t /testsw/1 -m "ON" -r
                                    

                                    Now sending a retained message. If OpenHab connects to the broker, this message will be sent immediately

                                    in the OpenHab log you should see this:

                                    11:15:07.844 INFO  runtime.busevents[:26] - mqttsw1s state updated to switch1.
                                    11:16:21.289 INFO  runtime.busevents[:26] - mqttsw1s state updated to ON
                                    

                                    Toggling some switch should give the followin log:

                                    12:00:03.976 DEBUG o.o.b.m.i.MqttItemBinding[:44] - Publishing command OFF to /testsw/1
                                    12:00:03.991 DEBUG o.o.i.t.m.i.MqttBrokerConnection[:437] - Publishing message 6 to topic '/testsw/1'
                                    12:00:03.994 INFO  runtime.busevents[:22] - mqttsw1 received command OFF
                                    12:00:04.004 INFO  runtime.busevents[:26] - mqttsw1s state updated to Green
                                    

                                    what does your log show?

                                    1 Reply Last reply
                                    0
                                    • M Offline
                                      M Offline
                                      Marcus
                                      wrote on last edited by
                                      #18

                                      I use the MQTT Ethernet-Ethernet Gateway as broker http://www.mysensors.org/build/mqtt_gateway

                                      And with MyMQTT on my Smartphone i can see that its working.

                                      Later i will test the other thing.

                                      1 Reply Last reply
                                      0
                                      • T Offline
                                        T Offline
                                        tboha
                                        wrote on last edited by
                                        #19

                                        This may be the fault. The MQTT Gateway is not a broker - it is just a special form of client, it "only" translates messages from the MySensors network into MQTT acceptable forms an supplies Ethernet access. It does not perform any broker function.
                                        To install a broker you should spend a little time with Mosquitto (http://mosquitto.org/) or http://jpmens.net/2013/09/01/installing-mosquitto-on-a-raspberry-pi/
                                        In a short way: To install MQTT on your raspberry:

                                        sudo apt-get update
                                        sudo apt-get upgrade
                                        

                                        to be up to date.

                                        sudo apt-get install mosquitto mosquitto-clients
                                        

                                        this should be enough to get your broker up and running with default parameters.

                                        Replace the IP-adress in OpenHab accordingly and you should be done.

                                        1 Reply Last reply
                                        0
                                        • M Offline
                                          M Offline
                                          Marcus
                                          wrote on last edited by
                                          #20

                                          Its not a broker????

                                          "The MQTT gateway is basically a Ethernet Gateway with modified software which makes it act as a MQTT broker. "
                                          

                                          This text in the build instructions has to be fixed. In no minute i thought about installing mosquitto.

                                          But i hope the installation of mosquitto will get it to work.

                                          JohnJ 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          17

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.0k

                                          Posts


                                          Copyright 2019 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular