diff --git a/dev/404.html b/dev/404.html index 5bb069f0..908ab192 100644 --- a/dev/404.html +++ b/dev/404.html @@ -19,13 +19,13 @@ - + -

404

Looks like we've got some broken links.
+ - + diff --git a/dev/assets/js/10.acb697d8.js b/dev/assets/js/10.c6fd02f2.js similarity index 95% rename from dev/assets/js/10.acb697d8.js rename to dev/assets/js/10.c6fd02f2.js index c75c05ef..412600ae 100644 --- a/dev/assets/js/10.acb697d8.js +++ b/dev/assets/js/10.c6fd02f2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{299:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-jMQTT.725bd2cf.png"},300:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Activate.3e85a643.png"},301:function(e,t){e.exports="data:image/png;base64,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"},302:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Deps.5aae3851.png"},303:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Deps-OK.79a82239.png"},304:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Daemon-OK.a20254fa.png"},305:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Broker-eqTab.21c27355.png"},306:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Broker-brkTab.2540d4ab.png"},307:function(e,t){e.exports="data:image/png;base64,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"},308:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-config.fb08effe.png"},309:function(e,t){e.exports="data:image/png;base64,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"},310:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-cmds.650dcc8e.png"},311:function(e,t){e.exports="data:image/png;base64,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"},312:function(e,t){e.exports="data:image/png;base64,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"},313:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-SYStoMQTT.af9e8b8a.png"},314:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-SYStoMQTT-json.ab543c92.png"},315:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-SYStoMQTT-restart.e7b959d0.png"},316:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-BTtoMQTT.73d0e81f.png"},317:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-BTtoMQTT-mijia.0e9f0afd.png"},318:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-Mijia-Create.35168585.png"},319:function(e,t){e.exports="data:image/png;base64,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"},320:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-Mijia-tmp-Cmd-Json.f4709724.png"},321:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-Mijia-Cmds.32c87d30.png"},322:function(e,t){e.exports="data:image/png;base64,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"},323:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAB+CAIAAACGdoncAAAOqElEQVR4AeyahXIjyxWG82ApDj3CZVxmZmY2xmtmlr1gZrq7ssxMKxnFLLOdonyb3igqjewsaaySW3VKNbend2R95+jvv0/fP9lsDhnqxwfuw1MLz8q6/nFF8+fTBeEIGd8+qHii0elGZv7Hvb3/3YnkJolGhTif3gr6D9ypdElEtXiq0b3nbjTZ9sTUSRxqCs6Heo/wP3RYbyptHYkm9DvDvX3A4Av1gq/kHl7uxMfPT6vuvZHbLrmHmbv6IbkfTqibnLWk1/TpRmc9Xi8KE6Qzf71Y8uqPMZvDhS7xznX74LT/aXueVbcNGBwuD3d555oRyf2juBsWrFNz1hrd5HcPXiv1XdM2YrY58xoHScDZtOaeiXmj1SGexvzBqQXSdr/oDf/JO9eMMC65/3/u00abdmQWrMp1leIlJZXaCf8tmE7MWsTTchsG5syOS5mt/rtcM5LfNCS5b+lnwA10wV1QVnJ/UPx2zmy/mdcRdFdw7xydJZSf1TcxL7l/RL1vzT25smdqznL0n/VK7lvZTUYYl9y/lDuSzRxVuUvuMeW6WZP9SlarqjojuZ943jBjtBU1D33kuorhYf6XrquSO/GiY9Rkcya97sbwkAbtyIzX6w27j5Tcxb7J7nT7900jBpPcN+1Mt7K+e0r2CVQ+vnmv4PQVJPfwBkKUXdfPu1g2Rw2m8Rlz2BVccr+Y0cJS6XS/V3C3x0t/5mB8XejJkrsMyV1yl9w3N/+lZsgIM3cZkrvkLkNyl9w3Nja9Xt/a2rrkrip0jUZz7dq1pKSkpaVlyV2lgHVOTo7RaOLd6XRJ7qpyHx0do94ld7W59/T0xMXFheRuMEzv27f/u/++Tp8+rZw2NDR87tw57u7bt6+2tjZoqVhcXCKpFy5c4FPECMtJQUHB+fPnz5w58/Dhw7Gx8V3KfXZ2Ljs7tM4MD4/8/PPPpaWlXV3dxMDA4MrKauCE6emZQ4cOnTp1qqmpOSYm5ocffmhraw+c0NfXX17+wmq1ZmVl8XH88+TkFK49Hu/6+kZ7e8eNGzd4yG7kXlxcnJKSGpJ7d3cPKMG91RPq6uqodKZxrdcbKPm0tLTACXNz83fu3Ll+/XpRURE/hZGRkdu3b1ssFnGXNDx/nlxf3xCF3BsaGtEBjaYM9/Kp3Kuqqqn348ePQ//o0aPbJIBobGwiBy9fvlR+isvlprq5Rm3i4+MZiXJ95xvyPdFl8W0/lXt+fsEvv/xCzpqbW06cOEECjEZjyA96906P4Fy8eNFu3+57sQDsCu4EyotDp+qV9Q6j5ORkuMMCcNs/p7KyknLu6+tT3pqZmUHieXGx/UOU9e7zLYYjDX2TFoPRHYn6ThpKSzU1NbX4jYaGhoyMjKA1c3V1raamJiEhkZ/CNtwXFoxnz577GOiEavqeUN5T0jwWidypMliXlZWhQiyGeAyl1CDWKDsuEzTCt1gsViqUhJESEmOz2fCIP/30E89Reh5lKP3MrVu3WHu/7ldzepbv5r4hIpG7KOGSklKttrOqqio9PV3Ja3l5pbCw6Pfff4f+lStXcCwMkh5S9eDBAzJH+Qtrr/T4ylD696dPn4bDRKIwEc0d0BUVlfi8/Pz8aNqvakcWBPfF5TX1uMto7ZsV3Cl8yX0Xc8fD0BVwuz2Su6qBG8E/YNiFl4/WyKkdjizuzc3N+A3QkwDJXaXAMuPb4M6L/bpyAsacxiSNAVwjJofzEL+bxLDT88Im0gkwmy0MKmN9fT0nJ5c5dHWCf/itbdh8umPj4xNqcmfXuvPc6+vrscyCOwjYrSipQZzNFFmh7X716lVSRRORnQ7jdBQ6Ov6gV8Mg80M1jYfJmZI7TbHY2Lj5+QW6ymKXwK61oqKCfVO4uSP0O8xdr9fD8XTAKzExkUOJQDps9+/du7e0tIT6p6SkgJ5zj6mpqT179tBL2P7s2+12s7E6cuSIkjs7A3oyvLPtIoUkIDU11Wq1he/LplYMRAR3+LLXD4TOi9rnFxByPjlAT0RXQOxInzx5wghVf//+fWXHkTyVl5ejJLQTlNxJWGFhIb05EkM7iFMU0a8PX0A8Irh3duqEwgS9gAhiJgRhysrKBrFYAwR3OvgtLa1IEOMUL52ZwH+CatO96e7uZnJIfUdS+CAEigYO3H0+H+WP4EQ597y8/LNnz1JuQdyp0ImJySDouEz6XLwLYQlEiQQhREEdGFZj8seCQZ8HpkxGo0J2ldEWFKa3tw9DdfPmzUePHpGMaObO4QbdV446L1++HMidKmaJC4ROAzIQuv+INS8vDzEBMbyCuM/MzB44cCCoO0aDU/kzKigo5Gn8jLRaLU/DO9G8jGbu2DgQw53zo0DunCn7W+GAqK6u+U/f8SqVK5q69NYRh5s3b4lTJ6Ez2B7MD8VLW1Fxih1aZ4ihoSHG+RTWgFevXuFN09LSRda/btALixTurIRCCqgv3LffxSMLgPC342ntBpWtIEh142d+/PFH6FOzIPP/Lx7U9UdyD/xjYmJi0T3xqwpTEzhCfCSYDHAPLHastPCRURaRxV1U9Nu3WqQGz8e6J7Yt0c39VcfkltxlcBBa26nffg4TODLdCnSdzsDdJ0U6TvgCubNx3Y3cjTZf67/bOQsdyZEYDD//MTMzMywzDDMzM88T3H/n0XdRrK0tVdLZniSSNep1V+gr12+X09rhlaeOEaAXvumJeV+qwbmvRBzKJixN585+XW/dYnrlgvvU93ZTy3vZyaAf8P7vwzIDzWAZS6RB3AlSyUiWstRAbcJwz9YLUS5PagJ0Hnme/6rnxsCSjv3r8YJxt4nEGsddcH3QmUdxikffhrkzBu5oy5s/DQ7MbOlAmYW5RjaUO6/ws8/vKw2G4WEReGPM51fGmYOvrk9Mr+zrnHBnbmwdNIi7IlHL3z6rhstxNzREN0kVXoHEmzExfWzagnnun/w9Wn/uaC5MEW48rAA84T0OxhiFsJKndHxsYRfcnrsqTqvcuVDNuaMAmgCKGR6e9MgYcgDcScg+T4i4Z501CT21Y4O4+8jln34FMIYVgEe6L6XKlUBh7lgTuYuUFRiOO9EdxV0jKefTuGukcdfN1Jw7lCW+prB4mAmECMrhmWCLJILGMYY7pvGWWrEachcjy3uW3EQzG30wzXngDikoM8DGJHDXnajmyXge1Y07sBRfnrucnruNyXL3HiQ+mbslW32QjS/s1o07AqL48tzFC+Vhv5OljBbhYRrgbgqWwB3b2DutG3f2Ndo9wl3KY6Et7uZhGB63Ahx3JhWOLXfMWCtmfZME7qyAeO4yMnZF3FXDTi3vU0iVUlzrnCV2YLg39kfSAbjL0rgT3ZVy56nsSeztSVnFhs6mlV5KlxF8trdEZGK4q+bx3JV7cx7Pnb5jwF75vk8j3XjH3Xc+CR+erayXD7b8/RzrEqoc9FZIpkUWCZ3bM75KlbkmCf67I6u8johXfHqWzCsEA2brxo133P1LFnqYul2uXTzpKRBkhsPXfxgFnL+ohbYWjWHKlsbPf91Do0pRxklsJJk2Xnly7DrB/REgWLNopVVXCrHisqC4M1IClw12HlsDuOnsewk/SezXQa8PgSZJQHloeD0D7qx9WhwKTBv6/e1ptg8J5jfZWkY2keg+l8O0zhiWWzc+X0nTifRI7pJyOQMroAruWqE8ob7jwUBAhKaYK34V1PbKxr4CRO4WRcGum1UbHZXWFPRtcRQf7n63pWjoIHfrIgmNvtBzQoFo4hQF21WKSsSXpOL331xXIU8y8DERz50dLB6v+FrWeMi9MotIndA8ZXJHxJlkq8YwmnkFe+LZE7Jrt5n2KAl5NDA+2LkiJw9w97lXN2bBR+9M1hHuAm0s9NdrJcKXXLmzkzQju+bq7ieFvIgo6CIraLhjAe6a1ICn49zNPHHK4SLVJDftNxe5HO7NNBCjLVUW94BH16qCe9iou5OLGQlormLh5vjKG3mYHJDGPffaU1f3lPGgTrq0PTX1WNXc2drwQ8N448E8UPs1BOss8LKYMQncdTgeKisoew+zBW5mK3xRKu8SuCO1yjNsZ/QDleH/srz+aibM9NkLUThzyom/NHPcw8oT8JDY8MTHaDr3sNp6o+0VKCLTrULu3HBXcCf3ir4kQvWJTFqGWe0Bel9EXi7uEEzmLj7x3NONYlRC5IvIruVOdOc8rO9k7orFKrhn96JUPnRiu4R7gPKTPAojjuo+7u6qUhuKSJqF1XNnc+CZJni6lzsFrOozlTf6SyVXMXcePoG7ctXl4671qPtmhRJxl4U7RyVwpwtSNXeEXhsiv7mvzDTZ8dw1uETuHFU1d9BrqyWj51WZoXU8PB4zW5Q5yhQFeGQVcK+VhbmHtajlXj53cmbLvbPcJXR44ilzVMs9kbuqugTuHNVyr567Pyq2oIji3nLnxUtB7lgE95Y7Y+rBveXOSWQtd5qjIe408lTYtNwLcZeI46GX4D202gNNrsirc9q+4alffvtzdnWvWdwhiCewJrqLe8udmif+6n/cePTlV199/c23V67dagp3fnXDjy8gGKCMh1dL/qiwcdSLn9/6+tvvhycX5tf2r1y/3RTu8BLTBO76nMadFvwbn//58+9XFjYO0ZnGcYcF7wM8d6qXUrhruXz0zR93HvToc9O56wOesJrz64cE7tidB72Sl5Z7jntIiyhd8CS8mh8Ym/nxp1/G59Yaqu9kSH3g55K5MbwRkwRlN1Z4mJt4m18/uH3/3/8WVhXN739d+fX3vxrBnd8b+22kfwGdOwpJ8ask3fx+dWmzhtzhlXW+/csgL5to2KLmcEdSOA/rpjh3/c/fF9xXtw7qyh3KtApy6VHQ8dAqCM9fQe6np+cX3De3dpY26oZeku039+h4wOMHlMh9fedoe3v3gvvW1s7i0src8oYyb53Qv/p9P5v7Ivb81z1oUbKJrQgvLa+K9gV3zcDKytrExFR//+Djx72yR496WivLDKnYirA4i/b/3NfXN+fm5kdGxvR1b29/a+WaqIqtCIuzcf8H4uITwMsgM64AAAAASUVORK5CYII="},426:function(e,t,n){"use strict";n.r(t);var o=n(14),a=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"integrate-jeedom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-jeedom"}},[e._v("#")]),e._v(" Integrate Jeedom")]),e._v(" "),t("p",[e._v("Jeedom is free open-source software. "),t("a",{attrs:{href:"https://doc.jeedom.com/en_US/presentation/index",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jeedom Core"),t("OutboundLink")],1),e._v(" has multiple functionalities: scenario management, historic visualization, curves/graphics generation, text/speech-based interactions… The clear and intuitive interface allows you to set up a complete solution without development knowledge. And using widgets, views and designs, you can build your own interface.")]),e._v(" "),t("p",[e._v('As a modular system, Jeedom provides a Market where "plugins" are available to handle numerous home automation protocols, answer to specific use cases and provide a higher level of integration between the heterogeneous device ecosystem.')]),e._v(" "),t("p",[e._v("To be able to use MQTT protocol into Jeedom and decode json payloads, "),t("a",{attrs:{href:"https://domochip.github.io/jMQTT/",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin jMQTT"),t("OutboundLink")],1),e._v(" is needed first. Then an OMG device will be integrated, as a Jeedom equipment, and finally a BT device will be integrated, also as an equipment.")]),e._v(" "),t("h2",{attrs:{id:"installation-of-jmqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-of-jmqtt"}},[e._v("#")]),e._v(" Installation of jMQTT")]),e._v(" "),t("p",[e._v('-> If you are already using jMQTT and you know the address and port of your Broker, then go directly to "'),t("a",{attrs:{href:"#creation-of-the-omg-device"}},[e._v("Creation of the OMG device")]),e._v('" step.')]),e._v(" "),t("ul",[t("li",[e._v('Go to the "Plugins> Plugins management" menu of Jeedom,')]),e._v(" "),t("li",[e._v("Go to the Market,")]),e._v(" "),t("li",[e._v('Look for the "jMQTT" plugin by domochip,')]),e._v(" "),t("li",[e._v("Install the stable version,")]),e._v(" "),t("li",[e._v("Go to the plugin configuration page next.")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(299),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("On the plugin configuration page, activate the plugin,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(300),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('If you don\'t already have a MQTT Broker or you want to install Mosquitto on the local machine, then check "Install Mosquitto locally" box.\nOtherwise, if you already use the "MQTT" plugin OR the "MQTT Manager" plugin OR you already have a Broker you know of, then ensure the "Install Mosquitto locally" box is uncheck,')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(301),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Install the dependencies, if they have not already started,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(302),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Wait until they are installed, and start the Daemon,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(303),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Dependencies and Daemon are now OK,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(304),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v('-> If you checked "Install Mosquitto locally", Then you can skip to "'),t("a",{attrs:{href:"#creation-of-the-omg-device"}},[e._v("Creation of the OMG device")]),e._v('" step, jMQTT has automagically created a Broker called "local" for you.')]),e._v(" "),t("h2",{attrs:{id:"configuration-the-broker-in-jmqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration-the-broker-in-jmqtt"}},[e._v("#")]),e._v(" Configuration the Broker in jMQTT")]),e._v(" "),t("ul",[t("li",[e._v('Go to the jMQTT main page via "Plugin> Domotic protocol> jMQTT",')]),e._v(" "),t("li",[e._v('Click on "Add a broker",')]),e._v(" "),t("li",[e._v('Enter "local" as Broker name (or whatever name you want),')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(305),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Check "Activer" box and switch to "Broker" tab without saving (yet),')]),e._v(" "),t("li",[e._v('Enter "jMQTT" as "Identifier/ClientId" so as not to interfere with other topics,\n-> If your Broker is not local, then fill in "IP/Hostname of the Broker" and "Port of the Broker",')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(306),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Save the device, the initial configuration of jMQTT is complete.")])]),e._v(" "),t("p",[e._v("If necessary, you can refer to the "),t("a",{attrs:{href:"https://domochip.github.io/jMQTT/",target:"_blank",rel:"noopener noreferrer"}},[e._v("complete documentation of jMQTT"),t("OutboundLink")],1),e._v(" (still only in French at date).")]),e._v(" "),t("h2",{attrs:{id:"creation-of-the-omg-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-the-omg-device"}},[e._v("#")]),e._v(" Creation of the OMG device")]),e._v(" "),t("p",[e._v("This step aims to create an equipment in jMQTT representing the OMG device itself, not yet the equipment it will see in Bluetooth. It's not necessary, but it's a good practice.")]),e._v(" "),t("ul",[t("li",[e._v('Go to the jMQTT plugin page via "Plugin> Domotic protocol> jMQTT",')]),e._v(" "),t("li",[e._v('Click on "Add equipment" on the Broker created in step 2 (or existing one):')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(307),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Give it the name "gateway name" configured in step 4 (for me OMG_tuto),')]),e._v(" "),t("li",[e._v('In "Registered with the Topic", put the basic topic of the EST, followed by the "gateway name", followed by a slash and a hash (for me '),t("code",[e._v("bt/OMG_tuto/#")]),e._v("), this will allow to receive all messages starting with "),t("code",[e._v("bt/OMG_tuto/")]),e._v(",")]),e._v(" "),t("li",[e._v('Check the "Automatic addition of commands" box checked and the other default values,')]),e._v(" "),t("li",[e._v("Activate the equipment and save:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(308),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Restart the OMG device, quickly commands should start to appear:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(309),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Let it run for 5 minutes, go smoke a coffee, you deserve it,")]),e._v(" "),t("li",[e._v('Uncheck the "Automatically add commands" box and save,')]),e._v(" "),t("li",[e._v("Go to the Commands tab, several info commands should have appeared:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(310),alt:"Jeedom integration"}})]),e._v(" "),t("h3",{attrs:{id:"creation-of-the-last-will-and-testament-command"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-the-last-will-and-testament-command"}},[e._v("#")]),e._v(" Creation of the Last Will and Testament command")]),e._v(" "),t("ul",[t("li",[e._v('The interesting command here is "LWT", put it in binary info, activate "Historize", deactivate "Display" and save:')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(311),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('In the advanced properties of the command, Configuration tab, define the "Calculation formula" '),t("code",[e._v('#value# == "online"')]),e._v(", save:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(312),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Electrically disconnect the OMG device, the control goes to 0 after about ten seconds.\nCongratulations you have a command that lets you know if your OMG device is alive!\nCreation of "uptime", "freemem", "frestack" and "rssi" info commands:')]),e._v(" "),t("li",[e._v('Among the discovered commands, there must also be "SYStoMQTT":')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(313),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Switch to JSON mode, there are various interesting sub-commands:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(314),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("If you want, you can create 'uptime', 'freemem', 'frestack' and 'rssi'.")]),e._v(" "),t("h3",{attrs:{id:"creation-of-an-action-command-to-restart-the-omg-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-an-action-command-to-restart-the-omg-device"}},[e._v("#")]),e._v(" Creation of an action command to restart the OMG device")]),e._v(" "),t("ul",[t("li",[e._v("OMG has several commands 1 that can be executed directly in MQTT.")]),e._v(" "),t("li",[e._v("Create an action command to restart the OMG device:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(315),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("(topic: "),t("code",[e._v("bt/OMG_tuto/commands/MQTTtoSYS/config")]),e._v("; payload: "),t("code",[e._v('{"cmd":"restart"}')]),e._v(")")]),e._v(" "),t("ul",[t("li",[e._v('Press the "Test" button on the control,')]),e._v(" "),t("li",[e._v('Note after a few seconds that the "uptime" command has returned to '),t("code",[e._v("0")]),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"creation-of-the-equipment-for-the-xiaomi-mi-jia-sensor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-the-equipment-for-the-xiaomi-mi-jia-sensor"}},[e._v("#")]),e._v(' Creation of the equipment for the "Xiaomi Mi Jia" sensor')]),e._v(" "),t("p",[e._v('"Ah, finally the interesting part?"')]),e._v(" "),t("p",[e._v('"The important part is not the destination, but the journey!"')]),e._v(" "),t("h3",{attrs:{id:"creation-of-an-unknown-unidentified-bt-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-an-unknown-unidentified-bt-device"}},[e._v("#")]),e._v(" Creation of an unknown/unidentified BT device")]),e._v(" "),t("ul",[t("li",[e._v('Create a new equipment (not a Broker) in jMQTT on the "local" Broker,')]),e._v(" "),t("li",[e._v('Soberly call it "Trash",')]),e._v(" "),t("li",[e._v("Enter it in the corresponding Topic for you at "),t("code",[e._v("bt/OMG_tuto/BTtoMQTT/#")]),e._v(" (yes, with "),t("code",[e._v("/#")]),e._v(" at the end),")]),e._v(" "),t("li",[e._v('Check "Automatic command creation", "Enable", "Visible", and save,')]),e._v(" "),t("li",[e._v("Many devices are detected and added to this equipment:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(316),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("We see that the topics always end with the MAC address of the equipment,")]),e._v(" "),t("li",[e._v("Once you have identified the equipment you are interested in, 2 options are available to you:")])]),e._v(" "),t("ul",[t("li",[e._v("Disable automatic inclusion, remove all unnecessary commands; Where")]),e._v(" "),t("li",[e._v("Delete this equipment and create a new one next to it.")])]),e._v(" "),t("ul",[t("li",[e._v("Let's see this second method (let's start from nothing, just the MAC or the topic).")])]),e._v(" "),t("h3",{attrs:{id:"creation-of-a-known-identified-bt-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-a-known-identified-bt-device"}},[e._v("#")]),e._v(" Creation of a known/identified BT device")]),e._v(" "),t("ul",[t("li",[e._v("Identify in the list the MAC of your devices,")]),e._v(" "),t("li",[e._v("You may have seen this in the previous captures:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(317),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("This is exactly what you think it is!")]),e._v(" "),t("ul",[t("li",[e._v('Create a new equipment (not a Broker) in jMQTT on the "local" Broker,')]),e._v(" "),t("li",[e._v('Give it for example the name "Xiaomi Mi Jia",')]),e._v(" "),t("li",[e._v("Enter it in the corresponding Topic for you at "),t("code",[e._v("bt/OMG_tuto/BTtoMQTT/582D3431FE5F")]),e._v(" (be careful, no "),t("code",[e._v("/#")]),e._v(" at the end), with "),t("code",[e._v("582D3431FE5F")]),e._v(" being the MAC of your Bluetooth device,")]),e._v(" "),t("li",[e._v('Leave "Automatic addition of commands" deactivated,')]),e._v(" "),t("li",[e._v("Check Enable and Visible, but no need to save for now,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(318),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('In the Commands tab, create an info "tmp" command of another type on the topic '),t("code",[e._v("bt/OMG_tuto/BTtoMQTT/582D3431FE5F")]),e._v(" and save:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(319),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("After a few minutes, a value arrives in the command,")]),e._v(" "),t("li",[e._v("Then switch to JSON view and create the commands you need:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(320),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Delete "tmp" which is no longer useful and save:')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(321),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("All that remains is to do the visual part as you want it on your Dashboard:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(322),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("For example:")]),e._v(" "),t("p",[t("img",{attrs:{src:n(323),alt:"Jeedom integration"}})]),e._v(" "),t("hr"),e._v(" "),t("p",[e._v("This has be made using OpenMQTTGateway v0.9.13, Jeedom Core v4.2.20 and jMQTT plugin v2022-07-25.")]),e._v(" "),t("p",[e._v("The original discussion is available on "),t("a",{attrs:{href:"https://community.jeedom.com/t/antenne-bluetooth-avec-un-esp32-open-mqtt-gateway-et-jmqtt/87407",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jeedom Community"),t("OutboundLink")],1),e._v(" (in French).")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{323:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-jMQTT.725bd2cf.png"},324:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Activate.3e85a643.png"},325:function(e,t){e.exports="data:image/png;base64,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"},326:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Deps.5aae3851.png"},327:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Deps-OK.79a82239.png"},328:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Install-Daemon-OK.a20254fa.png"},329:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Broker-eqTab.21c27355.png"},330:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Broker-brkTab.2540d4ab.png"},331:function(e,t){e.exports="data:image/png;base64,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"},332:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-config.fb08effe.png"},333:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjgAAAA6CAIAAAAyQLSDAAALTklEQVR4AezVQRFAAAAAMAkhKa0AIIEXEADY3TosGMYJAB6iKKoTUQEgKgAQFcA/iCpLAOAufRqtRAWAqABAVACICgBEBcAXiQoAUQGAqABAVACICgBEBYCoAEBUACAqAEQ1s3cFrI0jV/g3HmWBUgqU4kIpHIRCj5ICGLrlIN1CoAYgtBAoXCEAzbaXqs2lXfuCr65zIa537aZ2jV2fTdYWJ488Gj1JKVTjZ/nJO5l0jvg2YTPwAdJEmnkzenrfzJvPys3w//pD/ref2XG3sLCweKCwRAWvm9FsOHv+xA7944WFhYXF0Yfii0b46oNcyTPxxedh84N7Jir+959fX/83RfBy/7E+HgsLCwuL94PhvyI3xUvJTMhbozaWiNo9EtXzJ/H8NUxehf/5NAE+++N36E8WFifFea3IHmHHK0/nn20/ul5bWKIaIVEtmKnxLBi2s9NX90lUovVREkfsk/dTiooFE71j03stLhpxcg29d7qPvUGSDMQm6yyGnoi9Y254/Ys9YPJ6//9ZyK9YIhrcoCETUG2PChYWL34lXmdcRWhD59m9pf7Yn76XgAhav8VT/vkv0wSg/+JHd6hzD8R1fLVniWodx5Bcr0f8A4C0ZBxWaNwSaAX4V6ccyes7gYzC1wruwI7n9QgEdN/K+HQ7MYzh/E0CiFmVO19pVbcPQkT9ojFR5Rt6B1ZUJUnV7tHNr/B5GYRYOoYYw+UOOeeiMJ7k8/kF4aELMbjAki3eH8Sw9KuYNYJa4dYHSpbowEfjGEQ0Ktmg/65w1T/h8sP7FFOE/ReRN8hrKOCqkaYBLVF9rUSFwJABl4vTWj3Kh492S0YZVp41q+ANUkRiGYnwNGw++FUgUggFRERh5my8FSKqLChTQ+8CcBLjHWueJhLMALzp4lhAr0h/SgEtTuxbjpI8URUku8trptKvGB53AueWoSZLdMA6NxMELCxR+eUfp+un+ac/yReyT36QgOD1X2yaqLb4aJy9OWO4vGl2LOeG+BbJWZuv3igG4XlhFeVjr5Fdz6C7w/sDvAzvNbhGbxje61aBCbQHhqVVQkm4DAsjd5wL+oWscrLzdqLyh+PF+1xaHaeIRnJGPB9N8U+mL//p4crU6Opw2TWnFHqMZsqnWaBBqOGmdrSam8demTtK6k/7LLA26in0lgYj0Gyyh+qX8C8bEegdw9kRLtMPLFnoXxwFZ+/pGyqsjI9ZC7g0UknxkfdSuYz4HaB769zRDbu516m9xobGsPIi3gpOV54joeRgd0Iuy6NhcZ23OsLJjtF721mj/XFCRLWaHo3D02y95WrX6/kHKkcG6RPryXEYTr/Ix/AJTqbZE6RHbAILm/r7Brgd8W8Hj0XvOMXs42+np8HL38R8Ovv9NzdJVJcd6dPtInO2gyu2SnkRnEMA+Sbzk4J/UY0AK8EInt64PTvZFROWwEBUVsuRKbSf+qd7IcMIUuWnRd7tSPLoFoyu0RsmPIwyu/7p00X5NKxhWmOK1/unJWQsfKv93iDO7Aw9QdNYDVFRWGHlLCEjFqdVH1vH+GJCVDjmXlkOXVvWGfW35S0TkUBHnG3NKgcgZEP+bSuqHeCLSioFdlYGwJQR0YDuWWiISl1RbQtPJKIRrNWP9gjo7+ocQ3I2DMIz3cDmLdQ2hA961RAf4gzDmKgyz0mHN8JkmmbYTbxO2+t8Q+cLy91D7YqKnGocOrkkoUDPWXnXeGHwAY7Mwp4OMCSYjF1YeS3hWduZV9Tsn5wHhJMpMmjY3fM1RMXbZfCE7LVXD9u7qW8HE5ElA5Ds8RaLhy+maN6zmAK3oyQb/eFbeIry9HTLCnkr+rKHG1cbTv1RgFacVTo6BSnea8FwH2vD10zCOQJcc2TBke6lsE4GmFyjM2zt3ko1Wsa1EtmD12vLGZxriIpwKAuhFeABq4be4honrQ0P9ESlGTqyHA9YmaKMDC5mqT+qhGjA7Fnoieq8EdP4Ew0ID7lZuddU2aEUmjdkTlTkrjhT6QS6YTf3TNWY9YaCiUADiKgM88lUW3pXFckpyNw4nlSJYLSpPIPUn4ao3vRVJ2PTSjZ66SkSsMWDlqc3FXl6820TVcpPcfBl+vOpVUkCPCUqXFGlSPUUCQjkrY0QFWZjslwE+bdeZKVGLpwSKuGAQgkZYHqNxjBd8MWDqF9QiIryM2oH9USFM9wp9FrxIuhjAhC6i40EXp9r8v76nAylXNA8WY+YwlU5ONtSbCZQMkoolSANmD0LPVFR1lFJH+l1IpReow7eTlTahsgt70hUuASfQk0ddmOv0/WaLibD7kxUx5jug0tcEAto7qlElZlKqdpNERVWix2hzVfybQv7g189RPdjeN3Ml0RsLIlqTWdxAqP6pogqcIWcVZ1v0dv7IIhKY5ieqMgehaii4baZmEKhH8HyewYxn8aYrjEnKpQLqnC2ebcKnrw3wnt1RFWryqbdw7mD3d88USlpPWWVpgK3YUQHpWhGKyp9QxsgKjrVDLsxUSm91hDVXVN/5eWaxi0DR2EFEoyS+qvsiT5m7e6dqCzsJ5RwtRRH/l+21ohqNkwL12PcdxPguOq6K1FhoXtomvrDVFV7V59u2hRRkWFmREW9U1N/iXv0lYiK3ltMAK4Mo4WFeepvCmdvhvigVw7OC5SwwtY1RIWVrDbVQ2aa+qMcIwnrdak/3KFRwjqv81vHjcQC/fHtRKVpiHp0d6Lyh2iDMuzGRKXttTlRmYspZA0F4dJSaY1gatVMTEGNGhIVzlRwrWaQ+hsIxzj1Z2GJCvefpIZC0am/scZCVQXuY21iRXWdiFaQ7tM2y9l7ohNTvCf3wFUxhbMT0Ab+pohKY5h+lcBx67uJYgqBjEJ2dnfZ77b85jFcHfs3EJWIvAFkCJvLsJ5/dXHnGTnblKicA4DFJnylMKvsBqNWeLGMYqgpkDIEtoyM2GI0KuU2zEkfH/VL81pJXE1jNfWnfxbz4VQafLHtn+6HHiOWRclAd8c/kWpJaYNoSXHHSVHuQfa2M6oW0XDPdwr+2QFMqlyReKQsyGs7vNuIwCD1p2nIR9a83JnlxRQoskDVTGV30XGNmMI9Js90DzXDbuSZul7riaqwfHyfbd8qTx+r8vRlDd1Oeg3SKhEVydPlaeStarjW/QRKmo1a9snxPLVwXSWBRLX0Eywf7t8ipqB9UwtLVAr37MeCqd9JSktu2JF6/iRi4zRPaF6/Nv9+eiTL0cv79QgLNfJ0EvuqkugLDK+bIiqNYVqiWpc+u63l9WjncBCvNqhGhwpRqcOCgRiPC7QFQqkSM6JCZTkXS6t4BzXc+d2dWHQEZs9kbJrKQm+1/lPU2141dAXaQDSgfRY4JplKe9QAGpOi8AQFvhOkseXtmUy5MO+2Isieu0uy9SUu6hFkLQ47pFLREpWuoWJwlXXQ7UQ5IwMUs8nyum5FFbk5efqJdthNvE7Tay1R0XYjddP0B79YA8p2cKZCREU/+O2s9iZjMYV+Sf/FLHygmSXOHjCROXwrJj36Hno1tqjK09UOWliiUr5D8Y9fq9oKFFOwP39f/V6t+bcqLOwnlB48DOSF2ozcIwKKMgj2B7xvDZaoYFSPZsM0+3fjd2kT4Om+1A13XTXSbCHe9ZhgUWCVYuDST5csUVlYbB6WqNS10bz6U9031HW/8E1lF0kc2f8A8vhwCIC/ei5uvnJLVBYWlqjU5J4UPQsmWh/9r337JgIQAAIgaPixTU9HzgbIcWfWw1W3QZGlG7YqAIRqxThV181Om7YqAIQKAIQKAIQKAKECAKEC4DWECgChAgChAgChAkCoAECoABCqiASAi+mTUAEIlVABIFRCBSBUfw8VANxojtNMqAAQKgAQKgA+HKoez/4h7IoxTqYAAAAASUVORK5CYII="},334:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-cmds.650dcc8e.png"},335:function(e,t){e.exports="data:image/png;base64,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"},336:function(e,t){e.exports="data:image/png;base64,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"},337:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-SYStoMQTT.af9e8b8a.png"},338:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-SYStoMQTT-json.ab543c92.png"},339:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-SYStoMQTT-restart.e7b959d0.png"},340:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-BTtoMQTT.73d0e81f.png"},341:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-OMG-BTtoMQTT-mijia.0e9f0afd.png"},342:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-Mijia-Create.35168585.png"},343:function(e,t){e.exports="data:image/png;base64,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"},344:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-Mijia-tmp-Cmd-Json.f4709724.png"},345:function(e,t,n){e.exports=n.p+"assets/img/Integrate_Jeedom_Eq-Mijia-Cmds.32c87d30.png"},346:function(e,t){e.exports="data:image/png;base64,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"},347:function(e,t){e.exports="data:image/png;base64,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"},428:function(e,t,n){"use strict";n.r(t);var o=n(14),a=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"integrate-jeedom"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-jeedom"}},[e._v("#")]),e._v(" Integrate Jeedom")]),e._v(" "),t("p",[e._v("Jeedom is free open-source software. "),t("a",{attrs:{href:"https://doc.jeedom.com/en_US/presentation/index",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jeedom Core"),t("OutboundLink")],1),e._v(" has multiple functionalities: scenario management, historic visualization, curves/graphics generation, text/speech-based interactions… The clear and intuitive interface allows you to set up a complete solution without development knowledge. And using widgets, views and designs, you can build your own interface.")]),e._v(" "),t("p",[e._v('As a modular system, Jeedom provides a Market where "plugins" are available to handle numerous home automation protocols, answer to specific use cases and provide a higher level of integration between the heterogeneous device ecosystem.')]),e._v(" "),t("p",[e._v("To be able to use MQTT protocol into Jeedom and decode json payloads, "),t("a",{attrs:{href:"https://domochip.github.io/jMQTT/",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin jMQTT"),t("OutboundLink")],1),e._v(" is needed first. Then an OMG device will be integrated, as a Jeedom equipment, and finally a BT device will be integrated, also as an equipment.")]),e._v(" "),t("h2",{attrs:{id:"installation-of-jmqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installation-of-jmqtt"}},[e._v("#")]),e._v(" Installation of jMQTT")]),e._v(" "),t("p",[e._v('-> If you are already using jMQTT and you know the address and port of your Broker, then go directly to "'),t("a",{attrs:{href:"#creation-of-the-omg-device"}},[e._v("Creation of the OMG device")]),e._v('" step.')]),e._v(" "),t("ul",[t("li",[e._v('Go to the "Plugins> Plugins management" menu of Jeedom,')]),e._v(" "),t("li",[e._v("Go to the Market,")]),e._v(" "),t("li",[e._v('Look for the "jMQTT" plugin by domochip,')]),e._v(" "),t("li",[e._v("Install the stable version,")]),e._v(" "),t("li",[e._v("Go to the plugin configuration page next.")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(323),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("On the plugin configuration page, activate the plugin,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(324),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('If you don\'t already have a MQTT Broker or you want to install Mosquitto on the local machine, then check "Install Mosquitto locally" box.\nOtherwise, if you already use the "MQTT" plugin OR the "MQTT Manager" plugin OR you already have a Broker you know of, then ensure the "Install Mosquitto locally" box is uncheck,')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(325),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Install the dependencies, if they have not already started,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(326),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Wait until they are installed, and start the Daemon,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(327),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Dependencies and Daemon are now OK,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(328),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v('-> If you checked "Install Mosquitto locally", Then you can skip to "'),t("a",{attrs:{href:"#creation-of-the-omg-device"}},[e._v("Creation of the OMG device")]),e._v('" step, jMQTT has automagically created a Broker called "local" for you.')]),e._v(" "),t("h2",{attrs:{id:"configuration-the-broker-in-jmqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration-the-broker-in-jmqtt"}},[e._v("#")]),e._v(" Configuration the Broker in jMQTT")]),e._v(" "),t("ul",[t("li",[e._v('Go to the jMQTT main page via "Plugin> Domotic protocol> jMQTT",')]),e._v(" "),t("li",[e._v('Click on "Add a broker",')]),e._v(" "),t("li",[e._v('Enter "local" as Broker name (or whatever name you want),')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(329),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Check "Activer" box and switch to "Broker" tab without saving (yet),')]),e._v(" "),t("li",[e._v('Enter "jMQTT" as "Identifier/ClientId" so as not to interfere with other topics,\n-> If your Broker is not local, then fill in "IP/Hostname of the Broker" and "Port of the Broker",')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(330),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Save the device, the initial configuration of jMQTT is complete.")])]),e._v(" "),t("p",[e._v("If necessary, you can refer to the "),t("a",{attrs:{href:"https://domochip.github.io/jMQTT/",target:"_blank",rel:"noopener noreferrer"}},[e._v("complete documentation of jMQTT"),t("OutboundLink")],1),e._v(" (still only in French at date).")]),e._v(" "),t("h2",{attrs:{id:"creation-of-the-omg-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-the-omg-device"}},[e._v("#")]),e._v(" Creation of the OMG device")]),e._v(" "),t("p",[e._v("This step aims to create an equipment in jMQTT representing the OMG device itself, not yet the equipment it will see in Bluetooth. It's not necessary, but it's a good practice.")]),e._v(" "),t("ul",[t("li",[e._v('Go to the jMQTT plugin page via "Plugin> Domotic protocol> jMQTT",')]),e._v(" "),t("li",[e._v('Click on "Add equipment" on the Broker created in step 2 (or existing one):')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(331),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Give it the name "gateway name" configured in step 4 (for me OMG_tuto),')]),e._v(" "),t("li",[e._v('In "Registered with the Topic", put the basic topic of the EST, followed by the "gateway name", followed by a slash and a hash (for me '),t("code",[e._v("bt/OMG_tuto/#")]),e._v("), this will allow to receive all messages starting with "),t("code",[e._v("bt/OMG_tuto/")]),e._v(",")]),e._v(" "),t("li",[e._v('Check the "Automatic addition of commands" box checked and the other default values,')]),e._v(" "),t("li",[e._v("Activate the equipment and save:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(332),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Restart the OMG device, quickly commands should start to appear:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(333),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Let it run for 5 minutes, go smoke a coffee, you deserve it,")]),e._v(" "),t("li",[e._v('Uncheck the "Automatically add commands" box and save,')]),e._v(" "),t("li",[e._v("Go to the Commands tab, several info commands should have appeared:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(334),alt:"Jeedom integration"}})]),e._v(" "),t("h3",{attrs:{id:"creation-of-the-last-will-and-testament-command"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-the-last-will-and-testament-command"}},[e._v("#")]),e._v(" Creation of the Last Will and Testament command")]),e._v(" "),t("ul",[t("li",[e._v('The interesting command here is "LWT", put it in binary info, activate "Historize", deactivate "Display" and save:')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(335),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('In the advanced properties of the command, Configuration tab, define the "Calculation formula" '),t("code",[e._v('#value# == "online"')]),e._v(", save:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(336),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Electrically disconnect the OMG device, the control goes to 0 after about ten seconds.\nCongratulations you have a command that lets you know if your OMG device is alive!\nCreation of "uptime", "freemem", "frestack" and "rssi" info commands:')]),e._v(" "),t("li",[e._v('Among the discovered commands, there must also be "SYStoMQTT":')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(337),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("Switch to JSON mode, there are various interesting sub-commands:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(338),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("If you want, you can create 'uptime', 'freemem', 'frestack' and 'rssi'.")]),e._v(" "),t("h3",{attrs:{id:"creation-of-an-action-command-to-restart-the-omg-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-an-action-command-to-restart-the-omg-device"}},[e._v("#")]),e._v(" Creation of an action command to restart the OMG device")]),e._v(" "),t("ul",[t("li",[e._v("OMG has several commands 1 that can be executed directly in MQTT.")]),e._v(" "),t("li",[e._v("Create an action command to restart the OMG device:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(339),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("(topic: "),t("code",[e._v("bt/OMG_tuto/commands/MQTTtoSYS/config")]),e._v("; payload: "),t("code",[e._v('{"cmd":"restart"}')]),e._v(")")]),e._v(" "),t("ul",[t("li",[e._v('Press the "Test" button on the control,')]),e._v(" "),t("li",[e._v('Note after a few seconds that the "uptime" command has returned to '),t("code",[e._v("0")]),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"creation-of-the-equipment-for-the-xiaomi-mi-jia-sensor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-the-equipment-for-the-xiaomi-mi-jia-sensor"}},[e._v("#")]),e._v(' Creation of the equipment for the "Xiaomi Mi Jia" sensor')]),e._v(" "),t("p",[e._v('"Ah, finally the interesting part?"')]),e._v(" "),t("p",[e._v('"The important part is not the destination, but the journey!"')]),e._v(" "),t("h3",{attrs:{id:"creation-of-an-unknown-unidentified-bt-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-an-unknown-unidentified-bt-device"}},[e._v("#")]),e._v(" Creation of an unknown/unidentified BT device")]),e._v(" "),t("ul",[t("li",[e._v('Create a new equipment (not a Broker) in jMQTT on the "local" Broker,')]),e._v(" "),t("li",[e._v('Soberly call it "Trash",')]),e._v(" "),t("li",[e._v("Enter it in the corresponding Topic for you at "),t("code",[e._v("bt/OMG_tuto/BTtoMQTT/#")]),e._v(" (yes, with "),t("code",[e._v("/#")]),e._v(" at the end),")]),e._v(" "),t("li",[e._v('Check "Automatic command creation", "Enable", "Visible", and save,')]),e._v(" "),t("li",[e._v("Many devices are detected and added to this equipment:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(340),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("We see that the topics always end with the MAC address of the equipment,")]),e._v(" "),t("li",[e._v("Once you have identified the equipment you are interested in, 2 options are available to you:")])]),e._v(" "),t("ul",[t("li",[e._v("Disable automatic inclusion, remove all unnecessary commands; Where")]),e._v(" "),t("li",[e._v("Delete this equipment and create a new one next to it.")])]),e._v(" "),t("ul",[t("li",[e._v("Let's see this second method (let's start from nothing, just the MAC or the topic).")])]),e._v(" "),t("h3",{attrs:{id:"creation-of-a-known-identified-bt-device"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creation-of-a-known-identified-bt-device"}},[e._v("#")]),e._v(" Creation of a known/identified BT device")]),e._v(" "),t("ul",[t("li",[e._v("Identify in the list the MAC of your devices,")]),e._v(" "),t("li",[e._v("You may have seen this in the previous captures:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(341),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("This is exactly what you think it is!")]),e._v(" "),t("ul",[t("li",[e._v('Create a new equipment (not a Broker) in jMQTT on the "local" Broker,')]),e._v(" "),t("li",[e._v('Give it for example the name "Xiaomi Mi Jia",')]),e._v(" "),t("li",[e._v("Enter it in the corresponding Topic for you at "),t("code",[e._v("bt/OMG_tuto/BTtoMQTT/582D3431FE5F")]),e._v(" (be careful, no "),t("code",[e._v("/#")]),e._v(" at the end), with "),t("code",[e._v("582D3431FE5F")]),e._v(" being the MAC of your Bluetooth device,")]),e._v(" "),t("li",[e._v('Leave "Automatic addition of commands" deactivated,')]),e._v(" "),t("li",[e._v("Check Enable and Visible, but no need to save for now,")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(342),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('In the Commands tab, create an info "tmp" command of another type on the topic '),t("code",[e._v("bt/OMG_tuto/BTtoMQTT/582D3431FE5F")]),e._v(" and save:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(343),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("After a few minutes, a value arrives in the command,")]),e._v(" "),t("li",[e._v("Then switch to JSON view and create the commands you need:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(344),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v('Delete "tmp" which is no longer useful and save:')])]),e._v(" "),t("p",[t("img",{attrs:{src:n(345),alt:"Jeedom integration"}})]),e._v(" "),t("ul",[t("li",[e._v("All that remains is to do the visual part as you want it on your Dashboard:")])]),e._v(" "),t("p",[t("img",{attrs:{src:n(346),alt:"Jeedom integration"}})]),e._v(" "),t("p",[e._v("For example:")]),e._v(" "),t("p",[t("img",{attrs:{src:n(347),alt:"Jeedom integration"}})]),e._v(" "),t("hr"),e._v(" "),t("p",[e._v("This has be made using OpenMQTTGateway v0.9.13, Jeedom Core v4.2.20 and jMQTT plugin v2022-07-25.")]),e._v(" "),t("p",[e._v("The original discussion is available on "),t("a",{attrs:{href:"https://community.jeedom.com/t/antenne-bluetooth-avec-un-esp32-open-mqtt-gateway-et-jmqtt/87407",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jeedom Community"),t("OutboundLink")],1),e._v(" (in French).")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/12.93f212ae.js b/dev/assets/js/12.d5b3a47e.js similarity index 79% rename from dev/assets/js/12.93f212ae.js rename to dev/assets/js/12.d5b3a47e.js index af978eb4..d46b363c 100644 --- a/dev/assets/js/12.93f212ae.js +++ b/dev/assets/js/12.d5b3a47e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{324:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing.17f893db.png"},325:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing2.01f2ed1a.png"},326:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing3.b7cb2b69.png"},327:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing4.3284473c.png"},328:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Policy.7db34947.png"},329:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Policy2.8d94ec3f.png"},330:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Policy3.e0c6444a.png"},331:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Certificate.92ac0d8c.png"},332:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Certificate2.de17aacf.png"},333:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Certificate3.db0aa9d1.png"},334:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Policy.84a712d2.png"},335:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Policy2.d0fefb57.png"},336:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Thing.f8ca1bc7.png"},337:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Thing2.535be9dd.png"},338:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Find_Endpoint.6a2edb1c.png"},339:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_result_MQTT.5772237b.png"},427:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"integrate-aws-iot"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrate-aws-iot"}},[t._v("#")]),t._v(" Integrate AWS IOT")]),t._v(" "),a("h2",{attrs:{id:"create-a-thing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-thing"}},[t._v("#")]),t._v(" Create a thing")]),t._v(" "),a("ul",[a("li",[t._v("From AWS console, search for IOT core")]),t._v(" "),a("li",[t._v("Create a Thing and name it, this name will be used as the OpenMQTTGateway name.")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(324),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(325),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(326),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(327),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"create-a-policy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-policy"}},[t._v("#")]),t._v(" Create a policy")]),t._v(" "),a("p",[a("img",{attrs:{src:s(328),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(329),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(330),alt:"AWS tutorial step"}})]),t._v(" "),a("ul",[a("li",[t._v("Add this json code to the policy")])]),t._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Version"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2021-11-01"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Statement"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Effect"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Allow"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Action"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Connect"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Publish"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Subscribe"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Receive"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"greengrass:Discover"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Resource"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"*"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br"),a("span",{staticClass:"line-number"},[t._v("11")]),a("br"),a("span",{staticClass:"line-number"},[t._v("12")]),a("br"),a("span",{staticClass:"line-number"},[t._v("13")]),a("br"),a("span",{staticClass:"line-number"},[t._v("14")]),a("br"),a("span",{staticClass:"line-number"},[t._v("15")]),a("br"),a("span",{staticClass:"line-number"},[t._v("16")]),a("br"),a("span",{staticClass:"line-number"},[t._v("17")]),a("br"),a("span",{staticClass:"line-number"},[t._v("18")]),a("br")])]),a("h2",{attrs:{id:"create-a-certificate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-certificate"}},[t._v("#")]),t._v(" Create a certificate")]),t._v(" "),a("ul",[a("li",[t._v("Create a new certificate")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(331),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:s(332),alt:"AWS tutorial step"}})]),t._v(" "),a("ul",[a("li",[t._v("Download certificates and key")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(333),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"attach-policy-with-certificate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#attach-policy-with-certificate"}},[t._v("#")]),t._v(" Attach Policy with certificate")]),t._v(" "),a("p",[a("img",{attrs:{src:s(334),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:s(335),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"activate-certificate-and-attach-it-to-thing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#activate-certificate-and-attach-it-to-thing"}},[t._v("#")]),t._v(" Activate certificate and attach it to Thing")]),t._v(" "),a("p",[a("img",{attrs:{src:s(336),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:s(337),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"find-aws-endpoint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-aws-endpoint"}},[t._v("#")]),t._v(" Find AWS EndPoint")]),t._v(" "),a("p",[a("img",{attrs:{src:s(338),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"gather-the-information-for-openmqttgateway-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gather-the-information-for-openmqttgateway-configuration"}},[t._v("#")]),t._v(" Gather the information for OpenMQTTGateway configuration")]),t._v(" "),a("p",[t._v("Now you should have the following information for the OpenMQTTGateway configuration:")]),t._v(" "),a("ul",[a("li",[t._v("Root certificate")]),t._v(" "),a("li",[t._v("Client certificate")]),t._v(" "),a("li",[t._v("Client key")]),t._v(" "),a("li",[t._v("End point url")]),t._v(" "),a("li",[t._v("Gateway name")])]),t._v(" "),a("h2",{attrs:{id:"modify-openmqttgateway-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modify-openmqttgateway-configuration"}},[t._v("#")]),t._v(" Modify OpenMQTTGateway configuration")]),t._v(" "),a("p",[t._v("With PlatformIO you can directly leverage the environment "),a("code",[t._v("esp32dev-ble-aws")]),t._v(" as an example and modify it following your needs.")]),t._v(" "),a("h2",{attrs:{id:"build-and-upload"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-upload"}},[t._v("#")]),t._v(" Build and upload")]),t._v(" "),a("h2",{attrs:{id:"connect-to-a-wifi-access-point-see-portal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-a-wifi-access-point-see-portal"}},[t._v("#")]),t._v(" Connect to a WiFi Access point "),a("a",{attrs:{href:"../upload/portal"}},[t._v("see portal")])]),t._v(" "),a("p",[t._v("Enter your credentials and verify that Secure connection is marked.")]),t._v(" "),a("h2",{attrs:{id:"verify-that-you-receive-data-in-aws"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#verify-that-you-receive-data-in-aws"}},[t._v("#")]),t._v(" Verify that you receive data in AWS")]),t._v(" "),a("ul",[a("li",[t._v("Go to things")]),t._v(" "),a("li",[t._v("Click on the thing created")]),t._v(" "),a("li",[t._v("Go to Activity")]),t._v(" "),a("li",[t._v("Click on MQTT Test Client")]),t._v(" "),a("li",[t._v("Subscribe to "),a("code",[t._v("+/#")])])]),t._v(" "),a("p",[t._v("You should see messages coming.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(339),alt:"AWS tutorial step"}})])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{299:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing.17f893db.png"},300:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing2.01f2ed1a.png"},301:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing3.b7cb2b69.png"},302:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Thing4.3284473c.png"},303:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Policy.7db34947.png"},304:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Policy2.8d94ec3f.png"},305:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Policy3.e0c6444a.png"},306:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Certificate.92ac0d8c.png"},307:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Certificate2.de17aacf.png"},308:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Create_Certificate3.db0aa9d1.png"},309:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Policy.84a712d2.png"},310:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Policy2.d0fefb57.png"},311:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Thing.f8ca1bc7.png"},312:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Attach_Thing2.535be9dd.png"},313:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_Find_Endpoint.6a2edb1c.png"},314:function(t,a,s){t.exports=s.p+"assets/img/Integrate_AWS_IOT_result_MQTT.5772237b.png"},426:function(t,a,s){"use strict";s.r(a);var e=s(14),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"integrate-aws-iot"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrate-aws-iot"}},[t._v("#")]),t._v(" Integrate AWS IOT")]),t._v(" "),a("h2",{attrs:{id:"create-a-thing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-thing"}},[t._v("#")]),t._v(" Create a thing")]),t._v(" "),a("ul",[a("li",[t._v("From AWS console, search for IOT core")]),t._v(" "),a("li",[t._v("Create a Thing and name it, this name will be used as the OpenMQTTGateway name.")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(299),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(300),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(301),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(302),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"create-a-policy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-policy"}},[t._v("#")]),t._v(" Create a policy")]),t._v(" "),a("p",[a("img",{attrs:{src:s(303),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(304),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:s(305),alt:"AWS tutorial step"}})]),t._v(" "),a("ul",[a("li",[t._v("Add this json code to the policy")])]),t._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Version"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2021-11-01"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Statement"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Effect"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Allow"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Action"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Connect"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Publish"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Subscribe"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"iot:Receive"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"greengrass:Discover"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"Resource"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"*"')]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br"),a("span",{staticClass:"line-number"},[t._v("11")]),a("br"),a("span",{staticClass:"line-number"},[t._v("12")]),a("br"),a("span",{staticClass:"line-number"},[t._v("13")]),a("br"),a("span",{staticClass:"line-number"},[t._v("14")]),a("br"),a("span",{staticClass:"line-number"},[t._v("15")]),a("br"),a("span",{staticClass:"line-number"},[t._v("16")]),a("br"),a("span",{staticClass:"line-number"},[t._v("17")]),a("br"),a("span",{staticClass:"line-number"},[t._v("18")]),a("br")])]),a("h2",{attrs:{id:"create-a-certificate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-a-certificate"}},[t._v("#")]),t._v(" Create a certificate")]),t._v(" "),a("ul",[a("li",[t._v("Create a new certificate")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(306),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:s(307),alt:"AWS tutorial step"}})]),t._v(" "),a("ul",[a("li",[t._v("Download certificates and key")])]),t._v(" "),a("p",[a("img",{attrs:{src:s(308),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"attach-policy-with-certificate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#attach-policy-with-certificate"}},[t._v("#")]),t._v(" Attach Policy with certificate")]),t._v(" "),a("p",[a("img",{attrs:{src:s(309),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:s(310),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"activate-certificate-and-attach-it-to-thing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#activate-certificate-and-attach-it-to-thing"}},[t._v("#")]),t._v(" Activate certificate and attach it to Thing")]),t._v(" "),a("p",[a("img",{attrs:{src:s(311),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:s(312),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"find-aws-endpoint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-aws-endpoint"}},[t._v("#")]),t._v(" Find AWS EndPoint")]),t._v(" "),a("p",[a("img",{attrs:{src:s(313),alt:"AWS tutorial step"}})]),t._v(" "),a("h2",{attrs:{id:"gather-the-information-for-openmqttgateway-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gather-the-information-for-openmqttgateway-configuration"}},[t._v("#")]),t._v(" Gather the information for OpenMQTTGateway configuration")]),t._v(" "),a("p",[t._v("Now you should have the following information for the OpenMQTTGateway configuration:")]),t._v(" "),a("ul",[a("li",[t._v("Root certificate")]),t._v(" "),a("li",[t._v("Client certificate")]),t._v(" "),a("li",[t._v("Client key")]),t._v(" "),a("li",[t._v("End point url")]),t._v(" "),a("li",[t._v("Gateway name")])]),t._v(" "),a("h2",{attrs:{id:"modify-openmqttgateway-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modify-openmqttgateway-configuration"}},[t._v("#")]),t._v(" Modify OpenMQTTGateway configuration")]),t._v(" "),a("p",[t._v("With PlatformIO you can directly leverage the environment "),a("code",[t._v("esp32dev-ble-aws")]),t._v(" as an example and modify it following your needs.")]),t._v(" "),a("h2",{attrs:{id:"build-and-upload"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-and-upload"}},[t._v("#")]),t._v(" Build and upload")]),t._v(" "),a("h2",{attrs:{id:"connect-to-a-wifi-access-point-see-portal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#connect-to-a-wifi-access-point-see-portal"}},[t._v("#")]),t._v(" Connect to a WiFi Access point "),a("a",{attrs:{href:"../upload/portal"}},[t._v("see portal")])]),t._v(" "),a("p",[t._v("Enter your credentials and verify that Secure connection is marked.")]),t._v(" "),a("h2",{attrs:{id:"verify-that-you-receive-data-in-aws"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#verify-that-you-receive-data-in-aws"}},[t._v("#")]),t._v(" Verify that you receive data in AWS")]),t._v(" "),a("ul",[a("li",[t._v("Go to things")]),t._v(" "),a("li",[t._v("Click on the thing created")]),t._v(" "),a("li",[t._v("Go to Activity")]),t._v(" "),a("li",[t._v("Click on MQTT Test Client")]),t._v(" "),a("li",[t._v("Subscribe to "),a("code",[t._v("+/#")])])]),t._v(" "),a("p",[t._v("You should see messages coming.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(314),alt:"AWS tutorial step"}})])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/13.b86caa12.js b/dev/assets/js/13.ddbd1897.js similarity index 79% rename from dev/assets/js/13.b86caa12.js rename to dev/assets/js/13.ddbd1897.js index 805933b2..3b7b0e4f 100644 --- a/dev/assets/js/13.b86caa12.js +++ b/dev/assets/js/13.ddbd1897.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{348:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-ip.8d63f8c6.png"},349:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding.4a6275c5.png"},350:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding2.266324d8.png"},351:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding3.506b08c5.png"},352:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding4.3be7eff4.png"},353:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding5.8c71ca36.png"},354:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding6.48cd3dee.png"},355:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-jinja.270ad9f2.png"},356:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things.b9bcbb97.png"},357:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things2.550b24da.png"},358:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things3.e83eb23c.png"},359:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things4.45af5919.png"},360:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things5.bf15e337.png"},361:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt.719d8beb.png"},429:function(t,e,n){"use strict";n.r(e);var a=n(14),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"integrate-openhab-3-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#integrate-openhab-3-4"}},[t._v("#")]),t._v(" Integrate OPENHAB 3/4")]),t._v(" "),e("p",[t._v("This tutorial will show how to integrate the BLE gateway to OpenHAB 3 or 4 leveraging the auto discovery functionality.\nAfter this tutorial, you should see your Bluetooth Low Energy devices in OpenHAB without any file based manual configuration.")]),t._v(" "),e("h2",{attrs:{id:"prerequisites"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[t._v("#")]),t._v(" Prerequisites")]),t._v(" "),e("ul",[e("li",[t._v("OpenHAB 3.3 or higher")]),t._v(" "),e("li",[t._v("MQTT broker installed with or without authentication")]),t._v(" "),e("li",[t._v('A location defined in the "Model" section under "Settings"')])]),t._v(" "),e("h2",{attrs:{id:"ip-address-if-your-broker-is-installed-on-the-same-server-as-openhab"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ip-address-if-your-broker-is-installed-on-the-same-server-as-openhab"}},[t._v("#")]),t._v(" IP address (if your broker is installed on the same server as OpenHAB)")]),t._v(" "),e("p",[t._v("The goal is to disable the IPv6 address of the broker server, so that the gateway can connect through IPv4.")]),t._v(" "),e("ol",[e("li",[t._v("From the Administration click on Settings")]),t._v(" "),e("li",[t._v("Click on Network Settings")]),t._v(" "),e("li",[t._v("Click on Show Advanced")]),t._v(" "),e("li",[t._v("Disable IPv6")]),t._v(" "),e("li",[t._v("Click on Save")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(348),alt:"OpenHAB integration"}})]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("If the broker is installed on another server you will also need to configure it with an IPv4 address.")])]),t._v(" "),e("h2",{attrs:{id:"install-the-mqtt-binding"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-the-mqtt-binding"}},[t._v("#")]),t._v(" Install the MQTT binding")]),t._v(" "),e("ol",[e("li",[t._v("From the Administration click on Settings")]),t._v(" "),e("li",[t._v("Click on Bindings")]),t._v(" "),e("li",[t._v("Install the MQTT binding (you can search at the bottom right)")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(349),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[t._v("Once installed click on Things under Settings")]),t._v(" "),e("li",[t._v("Click on the + at the bottom right")]),t._v(" "),e("li",[t._v("Click on MQTT Binding")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(350),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"7"}},[e("li",[t._v("Click on MQTT broker")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(351),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"8"}},[e("li",[t._v('Enter for the "Broker Hostname/IP" field, the IP address of your broker, if it is installed on the same server you can enter '),e("code",[t._v("localhost")])])]),t._v(" "),e("p",[e("img",{attrs:{src:n(352),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"9"}},[e("li",[t._v('Click on "Show Advanced" if your broker has authentication activated, if not you can go to step 11')]),t._v(" "),e("li",[t._v("Enter the broker credentials: username and password")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(353),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"11"}},[e("li",[t._v('Click on Create Thing at the bottom, you should see your MQTT Broker in the Things list with the status "online"')])]),t._v(" "),e("p",[e("img",{attrs:{src:n(354),alt:"OpenHAB integration"}})]),t._v(" "),e("p",[t._v("Bravo👏, second step done! Now let's add the Jinja transformation service.")]),t._v(" "),e("h2",{attrs:{id:"install-jinja-and-jsonpath-transformations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-jinja-and-jsonpath-transformations"}},[t._v("#")]),t._v(" Install Jinja and JSONPath Transformations")]),t._v(" "),e("ol",[e("li",[t._v("From the Administration click on Settings")]),t._v(" "),e("li",[t._v("Click on Bindings")]),t._v(" "),e("li",[t._v("Install Jinja Transformation (you can search at the bottom right)")]),t._v(" "),e("li",[t._v("Install JSONPath Transformation")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(355),alt:"OpenHAB integration"}})]),t._v(" "),e("p",[t._v("Second step done!")]),t._v(" "),e("h2",{attrs:{id:"upload-openmqttgateway-to-an-esp32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#upload-openmqttgateway-to-an-esp32"}},[t._v("#")]),t._v(" Upload OpenMQTTGateway to an ESP32")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/upload/web-install.html"}},[t._v("Upload OpenMQTTGateway from the web")]),t._v(" by selecting the environment corresponding to your need.")],1),t._v(" "),e("p",[t._v("Or use another upload method from the Upload section.")]),t._v(" "),e("h2",{attrs:{id:"configure-openmqttgateway-from-the-web-portal"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configure-openmqttgateway-from-the-web-portal"}},[t._v("#")]),t._v(" Configure OpenMQTTGateway from the web portal")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/upload/portal.html"}},[t._v("Wifi and MQTT configuration")])],1),t._v(" "),e("p",[t._v("Or use another upload method from the Upload section that requires credentials before the build.")]),t._v(" "),e("p",[t._v("You should see the gateway connected to your broker by checking with an MQTT client like MQTT Explorer.")]),t._v(" "),e("h2",{attrs:{id:"adding-the-things"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-the-things"}},[t._v("#")]),t._v(" Adding the things")]),t._v(" "),e("ol",[e("li",[t._v('From the Administration click on "Things" under "Settings", you should see a number in the INBOX button')])]),t._v(" "),e("p",[e("img",{attrs:{src:n(356),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"2"}},[e("li",[t._v("Click on INBOX, you should see your BLE devices and the gateway")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(357),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[t._v('Click on a device, a pop up "Add as Thing" should appear')]),t._v(" "),e("li",[t._v("Rename it if you need, and click OK, repeat for each Thing discovered. The devices should appears as online progressively.")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(358),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"5"}},[e("li",[t._v("Click on Model")]),t._v(" "),e("li",[t._v("Select the location of where you want to create the Equipment")]),t._v(" "),e("li",[t._v('Click on "Create Equipment from Thing"')]),t._v(" "),e("li",[t._v("Click on Thing")]),t._v(" "),e("li",[t._v("Select a Thing")]),t._v(" "),e("li",[t._v("Rename your Equipment if you need")]),t._v(" "),e("li",[t._v("Select the Channels")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(359),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"12"}},[e("li",[t._v('Click on "Add to Model"')]),t._v(" "),e("li",[t._v("Go to Model, if you unfold your location and Equipment you should be able to see values")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(360),alt:"OpenHAB integration"}})]),t._v(" "),e("p",[t._v("Congratulation🎉! You were able to get data from your BLE sensors into OpenHAB. You can now add the others and use the data to build pages, leverage rules and enjoy all the function of your Home Automation controller with BLE devices.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(361),alt:"OpenHAB integration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{359:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-ip.8d63f8c6.png"},360:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding.4a6275c5.png"},361:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding2.266324d8.png"},362:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding3.506b08c5.png"},363:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding4.3be7eff4.png"},364:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding5.8c71ca36.png"},365:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding6.48cd3dee.png"},366:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-jinja.270ad9f2.png"},367:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things.b9bcbb97.png"},368:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things2.550b24da.png"},369:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things3.e83eb23c.png"},370:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things4.45af5919.png"},371:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things5.bf15e337.png"},372:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt.719d8beb.png"},431:function(t,e,n){"use strict";n.r(e);var a=n(14),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"integrate-openhab-3-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#integrate-openhab-3-4"}},[t._v("#")]),t._v(" Integrate OPENHAB 3/4")]),t._v(" "),e("p",[t._v("This tutorial will show how to integrate the BLE gateway to OpenHAB 3 or 4 leveraging the auto discovery functionality.\nAfter this tutorial, you should see your Bluetooth Low Energy devices in OpenHAB without any file based manual configuration.")]),t._v(" "),e("h2",{attrs:{id:"prerequisites"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[t._v("#")]),t._v(" Prerequisites")]),t._v(" "),e("ul",[e("li",[t._v("OpenHAB 3.3 or higher")]),t._v(" "),e("li",[t._v("MQTT broker installed with or without authentication")]),t._v(" "),e("li",[t._v('A location defined in the "Model" section under "Settings"')])]),t._v(" "),e("h2",{attrs:{id:"ip-address-if-your-broker-is-installed-on-the-same-server-as-openhab"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ip-address-if-your-broker-is-installed-on-the-same-server-as-openhab"}},[t._v("#")]),t._v(" IP address (if your broker is installed on the same server as OpenHAB)")]),t._v(" "),e("p",[t._v("The goal is to disable the IPv6 address of the broker server, so that the gateway can connect through IPv4.")]),t._v(" "),e("ol",[e("li",[t._v("From the Administration click on Settings")]),t._v(" "),e("li",[t._v("Click on Network Settings")]),t._v(" "),e("li",[t._v("Click on Show Advanced")]),t._v(" "),e("li",[t._v("Disable IPv6")]),t._v(" "),e("li",[t._v("Click on Save")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(359),alt:"OpenHAB integration"}})]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("If the broker is installed on another server you will also need to configure it with an IPv4 address.")])]),t._v(" "),e("h2",{attrs:{id:"install-the-mqtt-binding"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-the-mqtt-binding"}},[t._v("#")]),t._v(" Install the MQTT binding")]),t._v(" "),e("ol",[e("li",[t._v("From the Administration click on Settings")]),t._v(" "),e("li",[t._v("Click on Bindings")]),t._v(" "),e("li",[t._v("Install the MQTT binding (you can search at the bottom right)")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(360),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[t._v("Once installed click on Things under Settings")]),t._v(" "),e("li",[t._v("Click on the + at the bottom right")]),t._v(" "),e("li",[t._v("Click on MQTT Binding")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(361),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"7"}},[e("li",[t._v("Click on MQTT broker")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(362),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"8"}},[e("li",[t._v('Enter for the "Broker Hostname/IP" field, the IP address of your broker, if it is installed on the same server you can enter '),e("code",[t._v("localhost")])])]),t._v(" "),e("p",[e("img",{attrs:{src:n(363),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"9"}},[e("li",[t._v('Click on "Show Advanced" if your broker has authentication activated, if not you can go to step 11')]),t._v(" "),e("li",[t._v("Enter the broker credentials: username and password")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(364),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"11"}},[e("li",[t._v('Click on Create Thing at the bottom, you should see your MQTT Broker in the Things list with the status "online"')])]),t._v(" "),e("p",[e("img",{attrs:{src:n(365),alt:"OpenHAB integration"}})]),t._v(" "),e("p",[t._v("Bravo👏, second step done! Now let's add the Jinja transformation service.")]),t._v(" "),e("h2",{attrs:{id:"install-jinja-and-jsonpath-transformations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-jinja-and-jsonpath-transformations"}},[t._v("#")]),t._v(" Install Jinja and JSONPath Transformations")]),t._v(" "),e("ol",[e("li",[t._v("From the Administration click on Settings")]),t._v(" "),e("li",[t._v("Click on Bindings")]),t._v(" "),e("li",[t._v("Install Jinja Transformation (you can search at the bottom right)")]),t._v(" "),e("li",[t._v("Install JSONPath Transformation")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(366),alt:"OpenHAB integration"}})]),t._v(" "),e("p",[t._v("Second step done!")]),t._v(" "),e("h2",{attrs:{id:"upload-openmqttgateway-to-an-esp32"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#upload-openmqttgateway-to-an-esp32"}},[t._v("#")]),t._v(" Upload OpenMQTTGateway to an ESP32")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/upload/web-install.html"}},[t._v("Upload OpenMQTTGateway from the web")]),t._v(" by selecting the environment corresponding to your need.")],1),t._v(" "),e("p",[t._v("Or use another upload method from the Upload section.")]),t._v(" "),e("h2",{attrs:{id:"configure-openmqttgateway-from-the-web-portal"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configure-openmqttgateway-from-the-web-portal"}},[t._v("#")]),t._v(" Configure OpenMQTTGateway from the web portal")]),t._v(" "),e("p",[e("RouterLink",{attrs:{to:"/upload/portal.html"}},[t._v("Wifi and MQTT configuration")])],1),t._v(" "),e("p",[t._v("Or use another upload method from the Upload section that requires credentials before the build.")]),t._v(" "),e("p",[t._v("You should see the gateway connected to your broker by checking with an MQTT client like MQTT Explorer.")]),t._v(" "),e("h2",{attrs:{id:"adding-the-things"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-the-things"}},[t._v("#")]),t._v(" Adding the things")]),t._v(" "),e("ol",[e("li",[t._v('From the Administration click on "Things" under "Settings", you should see a number in the INBOX button')])]),t._v(" "),e("p",[e("img",{attrs:{src:n(367),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"2"}},[e("li",[t._v("Click on INBOX, you should see your BLE devices and the gateway")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(368),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[t._v('Click on a device, a pop up "Add as Thing" should appear')]),t._v(" "),e("li",[t._v("Rename it if you need, and click OK, repeat for each Thing discovered. The devices should appears as online progressively.")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(369),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"5"}},[e("li",[t._v("Click on Model")]),t._v(" "),e("li",[t._v("Select the location of where you want to create the Equipment")]),t._v(" "),e("li",[t._v('Click on "Create Equipment from Thing"')]),t._v(" "),e("li",[t._v("Click on Thing")]),t._v(" "),e("li",[t._v("Select a Thing")]),t._v(" "),e("li",[t._v("Rename your Equipment if you need")]),t._v(" "),e("li",[t._v("Select the Channels")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(370),alt:"OpenHAB integration"}})]),t._v(" "),e("ol",{attrs:{start:"12"}},[e("li",[t._v('Click on "Add to Model"')]),t._v(" "),e("li",[t._v("Go to Model, if you unfold your location and Equipment you should be able to see values")])]),t._v(" "),e("p",[e("img",{attrs:{src:n(371),alt:"OpenHAB integration"}})]),t._v(" "),e("p",[t._v("Congratulation🎉! You were able to get data from your BLE sensors into OpenHAB. You can now add the others and use the data to build pages, leverage rules and enjoy all the function of your Home Automation controller with BLE devices.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(372),alt:"OpenHAB integration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/16.41c95b60.js b/dev/assets/js/16.e4185a57.js similarity index 98% rename from dev/assets/js/16.41c95b60.js rename to dev/assets/js/16.e4185a57.js index 07df57a9..a4f65fe5 100644 --- a/dev/assets/js/16.41c95b60.js +++ b/dev/assets/js/16.e4185a57.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{276:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.531a7826.png"},277:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.8980f020.png"},340:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant-Discovery-Integration.15338e07.png"},341:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_Gateway_Home_Assistant.79982abd.gif"},342:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_BLE_Sensor_Home_Assistant.ad3bc9c2.gif"},343:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-DeviceTrigger.8d14f498.png"},344:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-Trigger-example.6dd53087.png"},345:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-MQTTSensor.62ca0325.png"},346:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-Sensor-example.2909340e.png"},347:function(t,s){t.exports="data:image/png;base64,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"},428:function(t,s,a){"use strict";a.r(s);var e=a(14),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"integrate-home-assistant"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#integrate-home-assistant"}},[t._v("#")]),t._v(" Integrate Home Assistant")]),t._v(" "),s("p",[t._v("Home Assistant provide the "),s("a",{attrs:{href:"https://www.home-assistant.io/integrations/mqtt/",target:"_blank",rel:"noopener noreferrer"}},[t._v("MQTT integration"),s("OutboundLink")],1),t._v(" and through this integration it is possible to exploit and manage the messages published by OpenMQTTGateway.")]),t._v(" "),s("p",[t._v("Once this integration on home assistant is configured with the same MQTT broker, it is possible to create devices manually or through the autodiscovery function.")]),t._v(" "),s("h2",{attrs:{id:"automatic-integration-with-auto-discovery"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#automatic-integration-with-auto-discovery"}},[t._v("#")]),t._v(" Automatic integration with Auto discovery")]),t._v(" "),s("p",[t._v("From Home Assistant site")]),t._v(" "),s("blockquote",[s("p",[t._v("The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device.")])]),t._v(" "),s("p",[t._v("On OpenMQTTGateway the Home Assistant discovery is enabled by default on all binaries and platformio configurations. Here are a few tips for activating discovery on Home Assistant, but for detailed configuration please refer to the Home Assistant website.")]),t._v(" "),s("p",[t._v("Enable discovery on your MQTT integration in HASS (activated per default).")]),t._v(" "),s("p",[s("img",{attrs:{src:a(340),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[t._v("The gateway will need an MQTT username and password, you have to create a new user (recommended) into Home Assistant->Configuration->Users (available in admin mode) or use an existing username/pwd combination (not recommended). This user doesn't need to be an administrator.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(276),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),s("p",[t._v("The max size of the username and password is 64 characters.")])]),t._v(" "),s("p",[t._v("OMG will use the auto discovery functionality of home assistant to create gateway and sensors into your HASS instance automatically.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(341),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(342),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(277),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("INFO")]),t._v(" "),s("p",[t._v("The Bluetooth and the RTL_433 gateway will automatically create devices and entities, the RF gateway will create DeviceTrigger.\nThe OpenMQTTGateway will also be available as a device to monitor its parameters and control it. The sensors (DHT for example) and actuators (relays) are attached to the gateway.")]),t._v(" "),s("p",[t._v("On first and subsequent startups, auto discovery will start. If you want to prevent this from happening, be sure to manually turn off auto discovery, either by using the UI in Home Assistant, or by publishing to the home/"),s("gatewayname",[t._v("/commands/MQTTtoSYS/config topic.\n30 minutes after its activation the auto discovery will be automatically deactivated, you can reactivate it from the gateway controls.\nSome devices may require a button push or motion/contact event to trigger a message and generate the auto discovery.")])],1)]),t._v(" "),s("h3",{attrs:{id:"rtl-433-auto-discovery-specificity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rtl-433-auto-discovery-specificity"}},[t._v("#")]),t._v(" RTL_433 auto discovery specificity")]),t._v(" "),s("p",[t._v("Even if the RTL_433 gateway will create automatically the devices and entities, you may lose the link to them when you change the batteries. This is proper to the RF devices. In this case new device and entities will be created. You may bypass this by creating entities through manual configuration that filter following the device model and other parameters and don't take into account the id.\nExample:")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/WS2032/+"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("instead of")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/WS2032/47998"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("Note also that the sensor may leverage channels, types or subtypes, they can be used in the filtering\nExample:\nIn the example below 9 is the "),s("code",[t._v("subtype")]),t._v(" and 1 is the "),s("code",[t._v("channel")])]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/Prologue-TH/9/1/+"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("instead of")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/Prologue-TH/9/1/215"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("Alternatively the rssi signal could be used also.")]),t._v(" "),s("h3",{attrs:{id:"rf-rcswitch-based-gateway-auto-discovery-specificity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rf-rcswitch-based-gateway-auto-discovery-specificity"}},[t._v("#")]),t._v(" RF (RCSwitch based gateway) Auto discovery specificity")]),t._v(" "),s("p",[t._v("With OpenMQTTGateway "),s("RouterLink",{attrs:{to:"/setitup/rf.html"}},[t._v("configured to receive RF signals")]),t._v(" messages are transmitted accordingly.")],1),t._v(" "),s("p",[t._v("As indicated in the "),s("RouterLink",{attrs:{to:"/use/rf.html#rcswitch-based-gateway"}},[t._v("RCSwitch based gateway")]),t._v(", it is possible to receive a pulse each time the sensor detects a signal. With auto-discovery enabled, you can configure two types of entities in Home Assistant to handle RF signals:")],1),t._v(" "),s("ol",[s("li",[t._v("An "),s("a",{attrs:{href:"https://www.home-assistant.io/integrations/device_trigger.mqtt/",target:"_blank",rel:"noopener noreferrer"}},[t._v("MQTT Device Trigger"),s("OutboundLink")],1),t._v(" which allows actions to be triggered when a specific RF signal is received.")]),t._v(" "),s("li",[t._v("An "),s("a",{attrs:{href:"https://www.home-assistant.io/integrations/sensor.mqtt/",target:"_blank",rel:"noopener noreferrer"}},[t._v("MQTT Sensor"),s("OutboundLink")],1),t._v("\nwhich stores the received RF data as a sensor value.")])]),t._v(" "),s("p",[t._v("Below are some examples of both configurations.")]),t._v(" "),s("h4",{attrs:{id:"example-a-rf-as-mqtt-device-trigger"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-a-rf-as-mqtt-device-trigger"}},[t._v("#")]),t._v(" Example A - RF as MQTT Device Trigger")]),t._v(" "),s("p",[t._v("If the following parameters are enabled in OpenMQTTGateway:")]),t._v(" "),s("ul",[s("li",[t._v('ZgatewayRF="RF"')]),t._v(" "),s("li",[t._v("valueAsATopic=true")]),t._v(" "),s("li",[t._v("HADiscovery=true")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_DeviceTrigger=true")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_MQTTSensor=false")])]),t._v(" "),s("p",[t._v("Then, each time an RF signal is received by OpenMQTTGateway, two messages are sent to the MQTT broker:")]),t._v(" "),s("ol",[s("li",[t._v("A device trigger announcement (used by Home Assistant to recognize the trigger).")]),t._v(" "),s("li",[t._v("The RF signal data on the corresponding MQTT topic.")])]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('...\nN: [ OMG->MQTT ] topic: homeassistant/device_automation/246F287AF0C4/15524904/config msg: {"automation_type":"trigger","platform ":"device_automation","type":"Received","subtype":"RF-15524904","device":{"configuration_url":"http://192.168.2.150/","connections":[["mac","246F287AF0C4"]],"identifiers":["246F287AF0C4"],"mf":"OMG_community","mdl":"[\\"WebUI\\",\\"RF\\"]","name":"OMG_DEVELOPMENT","sw":"1.8.0-o"},"value_template":"{{trigger.value.raw}}","topic":"home/OMG_DEVELOPMENT/433toMQTT/15524904"}\nT: Dequeue JSON\nN: [ OMG->MQTT ] topic: home/OMG_DEVELOPMENT/433toMQTT/15524904 msg: {"value":15524904,"protocol":1,"length":24,"delay":368,"tre_state":"-","binary":"111011001110010000101000","raw":"11427,1042,407,1039,417,1027,430,302,1148,1019,438,1015,440,295,1152,301,1153,1014,442,1012,441,1008,445,291,1160,293,1158,1011,444,292,1156,296,1157,296,1157,298,1154,1011,442,295,1153,1013,443,293,1157,295,1154,300"}\n...\n')])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("p",[t._v("These messages allow Home Assistant to recognize and integrate the RF signal as a device trigger.\n"),s("img",{attrs:{src:a(343),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF device trigger in Home Assistant: Green shows the real message, Yellow shows the device trigger configuration")])]),t._v(" "),s("p",[t._v("Once this process is completed, Home Assistant detects a new trigger associated with the OpenMQTTGateway device and linked to the received RF signal value.\nThis means that Home Assistant can now react to the received RF signal as an automation trigger.")]),t._v(" "),s("p",[t._v("Example of a detected RF trigger in Home Assistant:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(344),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF trigger in Home Assistant")])]),t._v(" "),s("h4",{attrs:{id:"example-b-rf-as-mqtt-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-b-rf-as-mqtt-sensor"}},[t._v("#")]),t._v(" Example B - RF As MQTT Sensor")]),t._v(" "),s("p",[t._v("If the following parameters are enabled in OpenMQTTGateway:")]),t._v(" "),s("ul",[s("li",[t._v('ZgatewayRF="RF"')]),t._v(" "),s("li",[t._v("HADiscovery=true")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_DeviceTrigger=false")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_MQTTSensor=true")])]),t._v(" "),s("p",[t._v("During any discovery round, a SYS message is sent, setting the MQTT Sensor as a sensor of the OpenMQTTGateway device.")]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('...\nN: [ OMG->MQTT ] topic: homeassistant/sensor/246F287AF0C4-gatewayRF/config msg: {"stat_t":"home/OMG_DEVELOPMENT/433toMQTT/#","avty_t":"home/OMG_DEVELOPMENT/LWT","name":"gatewayRF","uniq_id":"246F287AF0C4-gatewayRF","val_tpl":"{{ value_json.value | is_defined }}","pl_avail":"online","pl_not_avail":"offline","device":{"ids":["246F287AF0C4"],"name":"OMG_DEVELOPMENT","mdl":"[\\"WebUI\\",\\"RF\\"]","mf":"OMG_community","cu":"http://192.168.2.150/","sw":"1.8.0-o"}}\nT: Dequeue JSON\n')])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("Then, each time an RF signal is received by OpenMQTTGateway, the content of messages are sent to the MQTT broker on classic topic:")]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('T: Dequeue JSON\nN: [ OMG->MQTT ] topic: home/OMG_DEVELOPMENT/433toMQTT/15524904 msg: {"value":15524904,"protocol":1,"length":24,"delay":368,"tre_state":"-","binary":"111011001110010000101000","raw":"11404,1045,414,1034,424,1024,430,305,1146,1022,431,1019,436,299,1150,304,1145,1021,432,1017,438,1013,441,295,1156,299,1149,1018,436,300,1149,304,1146,307,1143,310,1141,1025,430,306,1143,1021,432,305,1145,310,1140,309"} \n\n')])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("These messages enable Home Assistant to recognize and integrate the RF signal as a sensor.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(345),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF sensor in Home Assistant: Yellow the configuration of sensor, Green the real message")])]),t._v(" "),s("p",[t._v("Once this process is completed, Home Assistant detects a device with the new sensor and linked to the received RF signal value.\nThis means that Home Assistant can now react to the received RF signal as an sensor event.")]),t._v(" "),s("p",[t._v("Example of a detected RF trigger in Home Assistant:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(346),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF sensor in Home Assistant: Yellow the real message")])]),t._v(" "),s("h2",{attrs:{id:"manual-integration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#manual-integration"}},[t._v("#")]),t._v(" Manual integration")]),t._v(" "),s("p",[t._v("If you prefer not to use MQTT auto-discovery, you can manually configure Home Assistant to manage MQTT topics. This approach gives you full control over the structure and behavior of your MQTT entities. Below are some examples of how to define your devices, sensors, and switches manually using YAML configuration.")]),t._v(" "),s("p",[t._v("From @123, @finity, @denniz03, @jrockstad, @anarchking, @dkluivingh, @Odyno")]),t._v(" "),s("h3",{attrs:{id:"pir-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pir-sensor"}},[t._v("#")]),t._v(" Pir Sensor")]),t._v(" "),s("p",[t._v("This is an example of how to configure a PIR (Passive Infrared) sensor in Home Assistant using MQTT.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(347),alt:"Pir Sensor"}})]),t._v(" "),s("p",[t._v("The configuration below sets up a binary sensor that detects motion and sends the state to Home Assistant.")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unique_id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" pir.15484294\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Pir.Mansarda"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" motion\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/+/433toMQTT/15484294"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{{ value_json.value }}"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"15484294"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("off_delay")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br")])]),s("h3",{attrs:{id:"door-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#door-sensor"}},[t._v("#")]),t._v(" Door sensor")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/433toMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '7821834' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% elif value_json.value == '7821838' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'OFF'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.test') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("qos")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" opening\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br")])]),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" doorbell\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/SRFBtoMQTT'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('#value_template: "{{ value_json.raw }}"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '14163857' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.doorbell') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("off_delay")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'sound'")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" light_back_sensor\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/SRFBtoMQTT'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#value_template: '{{ value_jason.value }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '1213858' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.light_back_sensor') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("off_delay")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" rf_outlet_sensor\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/SRFBtoMQTT'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '16766303' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.rf_outlet_sensor') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br"),s("span",{staticClass:"line-number"},[t._v("31")]),s("br"),s("span",{staticClass:"line-number"},[t._v("32")]),s("br"),s("span",{staticClass:"line-number"},[t._v("33")]),s("br")])]),s("h3",{attrs:{id:"motion-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#motion-sensor"}},[t._v("#")]),t._v(" Motion sensor")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Bewegung_Schlafzimmer"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#device_class: motion")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway1/HCSR501toMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json[\"presence\"] }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_off")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br")])]),s("h3",{attrs:{id:"switches"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#switches"}},[t._v("#")]),t._v(" Switches")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#switches")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("switch")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Plug1\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/SRFBtoMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("command_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/commands/MQTTtoSRFB"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{{ value_json.value }}"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{\"value\":4546575}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_off")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{\"value\":4546572}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4546575")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_off")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4546572")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("qos")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("retain")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br")])]),s("h3",{attrs:{id:"rf-gateway-mode-pilight-rf-kaku"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rf-gateway-mode-pilight-rf-kaku"}},[t._v("#")]),t._v(" RF gateway mode - Pilight, RF, kaku")]),t._v(" "),s("p",[t._v("insert an include statement in HA configuration.yaml")]),t._v(" "),s("div",{staticClass:"language-bash line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("grep")]),t._v(" homed ./configuration.yaml \nmqtt: "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("include homed-mqtt.yaml\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br")])]),s("p",[t._v("In the example, the included file is homed-mqtt.yaml. It provides an mqtt select entity with the ability to show and also change via dropdown - the desired mode of the RF receiver gateway. In the homed-mqtt.yaml snippet, the device section (as it is optional) is ommited,")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("select")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'RF: Mode receive'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unique_id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" espdevcho"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("rf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("mode\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#platform: mqtt")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("availability_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" home/espdevcho/LWT "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# espdevcho is a particular name of the gateway, instead of the default OpenMQTTGateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_available")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" online\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_not_available")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" offline\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("options")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Pilight"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RF classic"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RF2 kaku"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" home/espdevcho/RFtoMQTT "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# espdevcho is a particular name of the gateway, instead of the default OpenMQTTGateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v("\n {% if value_json.active == 1 %} Pilight\n {% elif value_json.active == 2 %} RF classic\n {% elif value_json.active == 4 %} RF2 kaku\n {% endif %}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#unit_of_measurement: s")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("command_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" home/espdevcho/commands/MQTTtoRF/config "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# espdevcho is a particular name of the gateway, instead of the default OpenMQTTGateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("command_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v('\n {% set value_map = {\n "Pilight": 1,\n "RF classic": 2,\n "RF2 kaku": 4,\n }\n %}\n {"active":{{ value_map[value] }}}')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("configuration_url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//192.168.1.11/ "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# device section is optional. It is almost ommited in this example. Values here will update the corresponding device, if it already exist")]),t._v("\n\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br")])]),s("h3",{attrs:{id:"mijia-thermometer-ble"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mijia-thermometer-ble"}},[t._v("#")]),t._v(" Mijia Thermometer BLE")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mijia_thermometer_temperature"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# MQTT topic, check MQTT messages; replace AA... with id (BLE MAC) of your device")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'°C'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json.tem | is_defined }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("expire_after")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("21600")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 6 hours")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("force_update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mijia_thermometer_humidity"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'%'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json.hum | is_defined }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("expire_after")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("21600")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 6 hours")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("force_update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mijia_thermometer_battery"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'%'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json.batt | is_defined }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("expire_after")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("21600")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 6 hours")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("force_update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br")])]),s("h3",{attrs:{id:"xiaomi-mi-scale-v2-ble-xmtzc05hm"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#xiaomi-mi-scale-v2-ble-xmtzc05hm"}},[t._v("#")]),t._v(" Xiaomi Mi Scale V2 BLE (XMTZC05HM)")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Weight"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# replace your MQTT topic here")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json[\"weight\"] }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"kg"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("icon")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mdi"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("weight"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("kilogram\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Impedance"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# replace your MQTT topic here also")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json[\"impedance\"] }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ohm"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("icon")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mdi"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("omega\n \n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("body_mass_index")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("friendly_name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'Body Mass Index'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% set HEIGHT = (1.76)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v("float %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# replace your height in meters")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% set WEIGHT = states('sensor.xmtzc05hm_weight')"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v("float %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" (WEIGHT/(HEIGHT"),s("span",{pre:!0,attrs:{class:"token important"}},[t._v("*HEIGHT))|float|round(1)")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("icon_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v("\n {{ 'mdi:human' }}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br")])]),s("h3",{attrs:{id:"mqtt-room-presence"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-room-presence"}},[t._v("#")]),t._v(" MQTT Room Presence")]),t._v(" "),s("p",[t._v("For the publication into the presence topic the following needs to be activated - "),s("RouterLink",{attrs:{to:"/use/ble.html#setting-if-the-gateway-publish-into-home-assistant-home-presence-topic-default-false-available-with-ha-discovery"}},[t._v("here is the command")])],1),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("platform")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mqtt_room\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#Mac Address of device wanting to track")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" you_are_in "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# home assistant will show a sensor named (you are in) with its value being the name you gave the gateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/presence"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#timeout:")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#away_timeout:")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br")])]),s("h3",{attrs:{id:"temperature-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#temperature-sensor"}},[t._v("#")]),t._v(" Temperature sensor")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" outdoor temp\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/433toMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'°C'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v("\n {% if value_json is defined and value_json.sensor == 125 %}\n {{ value_json.tempc }}\n {% else %}\n {{ states('sensor.outdoor_temp') }}\n {% endif %}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{276:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.531a7826.png"},277:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.8980f020.png"},315:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant-Discovery-Integration.15338e07.png"},316:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_Gateway_Home_Assistant.79982abd.gif"},317:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_BLE_Sensor_Home_Assistant.ad3bc9c2.gif"},318:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-DeviceTrigger.8d14f498.png"},319:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-Trigger-example.6dd53087.png"},320:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-MQTTSensor.62ca0325.png"},321:function(t,s,a){t.exports=a.p+"assets/img/HASS-RF-Sensor-example.2909340e.png"},322:function(t,s){t.exports="data:image/png;base64,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"},427:function(t,s,a){"use strict";a.r(s);var e=a(14),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"integrate-home-assistant"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#integrate-home-assistant"}},[t._v("#")]),t._v(" Integrate Home Assistant")]),t._v(" "),s("p",[t._v("Home Assistant provide the "),s("a",{attrs:{href:"https://www.home-assistant.io/integrations/mqtt/",target:"_blank",rel:"noopener noreferrer"}},[t._v("MQTT integration"),s("OutboundLink")],1),t._v(" and through this integration it is possible to exploit and manage the messages published by OpenMQTTGateway.")]),t._v(" "),s("p",[t._v("Once this integration on home assistant is configured with the same MQTT broker, it is possible to create devices manually or through the autodiscovery function.")]),t._v(" "),s("h2",{attrs:{id:"automatic-integration-with-auto-discovery"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#automatic-integration-with-auto-discovery"}},[t._v("#")]),t._v(" Automatic integration with Auto discovery")]),t._v(" "),s("p",[t._v("From Home Assistant site")]),t._v(" "),s("blockquote",[s("p",[t._v("The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device.")])]),t._v(" "),s("p",[t._v("On OpenMQTTGateway the Home Assistant discovery is enabled by default on all binaries and platformio configurations. Here are a few tips for activating discovery on Home Assistant, but for detailed configuration please refer to the Home Assistant website.")]),t._v(" "),s("p",[t._v("Enable discovery on your MQTT integration in HASS (activated per default).")]),t._v(" "),s("p",[s("img",{attrs:{src:a(315),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[t._v("The gateway will need an MQTT username and password, you have to create a new user (recommended) into Home Assistant->Configuration->Users (available in admin mode) or use an existing username/pwd combination (not recommended). This user doesn't need to be an administrator.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(276),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),s("p",[t._v("The max size of the username and password is 64 characters.")])]),t._v(" "),s("p",[t._v("OMG will use the auto discovery functionality of home assistant to create gateway and sensors into your HASS instance automatically.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(316),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(317),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(277),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("INFO")]),t._v(" "),s("p",[t._v("The Bluetooth and the RTL_433 gateway will automatically create devices and entities, the RF gateway will create DeviceTrigger.\nThe OpenMQTTGateway will also be available as a device to monitor its parameters and control it. The sensors (DHT for example) and actuators (relays) are attached to the gateway.")]),t._v(" "),s("p",[t._v("On first and subsequent startups, auto discovery will start. If you want to prevent this from happening, be sure to manually turn off auto discovery, either by using the UI in Home Assistant, or by publishing to the home/"),s("gatewayname",[t._v("/commands/MQTTtoSYS/config topic.\n30 minutes after its activation the auto discovery will be automatically deactivated, you can reactivate it from the gateway controls.\nSome devices may require a button push or motion/contact event to trigger a message and generate the auto discovery.")])],1)]),t._v(" "),s("h3",{attrs:{id:"rtl-433-auto-discovery-specificity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rtl-433-auto-discovery-specificity"}},[t._v("#")]),t._v(" RTL_433 auto discovery specificity")]),t._v(" "),s("p",[t._v("Even if the RTL_433 gateway will create automatically the devices and entities, you may lose the link to them when you change the batteries. This is proper to the RF devices. In this case new device and entities will be created. You may bypass this by creating entities through manual configuration that filter following the device model and other parameters and don't take into account the id.\nExample:")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/WS2032/+"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("instead of")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/WS2032/47998"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("Note also that the sensor may leverage channels, types or subtypes, they can be used in the filtering\nExample:\nIn the example below 9 is the "),s("code",[t._v("subtype")]),t._v(" and 1 is the "),s("code",[t._v("channel")])]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/Prologue-TH/9/1/+"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("instead of")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"+/+/RTL_433toMQTT/Prologue-TH/9/1/215"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("Alternatively the rssi signal could be used also.")]),t._v(" "),s("h3",{attrs:{id:"rf-rcswitch-based-gateway-auto-discovery-specificity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rf-rcswitch-based-gateway-auto-discovery-specificity"}},[t._v("#")]),t._v(" RF (RCSwitch based gateway) Auto discovery specificity")]),t._v(" "),s("p",[t._v("With OpenMQTTGateway "),s("RouterLink",{attrs:{to:"/setitup/rf.html"}},[t._v("configured to receive RF signals")]),t._v(" messages are transmitted accordingly.")],1),t._v(" "),s("p",[t._v("As indicated in the "),s("RouterLink",{attrs:{to:"/use/rf.html#rcswitch-based-gateway"}},[t._v("RCSwitch based gateway")]),t._v(", it is possible to receive a pulse each time the sensor detects a signal. With auto-discovery enabled, you can configure two types of entities in Home Assistant to handle RF signals:")],1),t._v(" "),s("ol",[s("li",[t._v("An "),s("a",{attrs:{href:"https://www.home-assistant.io/integrations/device_trigger.mqtt/",target:"_blank",rel:"noopener noreferrer"}},[t._v("MQTT Device Trigger"),s("OutboundLink")],1),t._v(" which allows actions to be triggered when a specific RF signal is received.")]),t._v(" "),s("li",[t._v("An "),s("a",{attrs:{href:"https://www.home-assistant.io/integrations/sensor.mqtt/",target:"_blank",rel:"noopener noreferrer"}},[t._v("MQTT Sensor"),s("OutboundLink")],1),t._v("\nwhich stores the received RF data as a sensor value.")])]),t._v(" "),s("p",[t._v("Below are some examples of both configurations.")]),t._v(" "),s("h4",{attrs:{id:"example-a-rf-as-mqtt-device-trigger"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-a-rf-as-mqtt-device-trigger"}},[t._v("#")]),t._v(" Example A - RF as MQTT Device Trigger")]),t._v(" "),s("p",[t._v("If the following parameters are enabled in OpenMQTTGateway:")]),t._v(" "),s("ul",[s("li",[t._v('ZgatewayRF="RF"')]),t._v(" "),s("li",[t._v("valueAsATopic=true")]),t._v(" "),s("li",[t._v("HADiscovery=true")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_DeviceTrigger=true")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_MQTTSensor=false")])]),t._v(" "),s("p",[t._v("Then, each time an RF signal is received by OpenMQTTGateway, two messages are sent to the MQTT broker:")]),t._v(" "),s("ol",[s("li",[t._v("A device trigger announcement (used by Home Assistant to recognize the trigger).")]),t._v(" "),s("li",[t._v("The RF signal data on the corresponding MQTT topic.")])]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('...\nN: [ OMG->MQTT ] topic: homeassistant/device_automation/246F287AF0C4/15524904/config msg: {"automation_type":"trigger","platform ":"device_automation","type":"Received","subtype":"RF-15524904","device":{"configuration_url":"http://192.168.2.150/","connections":[["mac","246F287AF0C4"]],"identifiers":["246F287AF0C4"],"mf":"OMG_community","mdl":"[\\"WebUI\\",\\"RF\\"]","name":"OMG_DEVELOPMENT","sw":"1.8.0-o"},"value_template":"{{trigger.value.raw}}","topic":"home/OMG_DEVELOPMENT/433toMQTT/15524904"}\nT: Dequeue JSON\nN: [ OMG->MQTT ] topic: home/OMG_DEVELOPMENT/433toMQTT/15524904 msg: {"value":15524904,"protocol":1,"length":24,"delay":368,"tre_state":"-","binary":"111011001110010000101000","raw":"11427,1042,407,1039,417,1027,430,302,1148,1019,438,1015,440,295,1152,301,1153,1014,442,1012,441,1008,445,291,1160,293,1158,1011,444,292,1156,296,1157,296,1157,298,1154,1011,442,295,1153,1013,443,293,1157,295,1154,300"}\n...\n')])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("p",[t._v("These messages allow Home Assistant to recognize and integrate the RF signal as a device trigger.\n"),s("img",{attrs:{src:a(318),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF device trigger in Home Assistant: Green shows the real message, Yellow shows the device trigger configuration")])]),t._v(" "),s("p",[t._v("Once this process is completed, Home Assistant detects a new trigger associated with the OpenMQTTGateway device and linked to the received RF signal value.\nThis means that Home Assistant can now react to the received RF signal as an automation trigger.")]),t._v(" "),s("p",[t._v("Example of a detected RF trigger in Home Assistant:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(319),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF trigger in Home Assistant")])]),t._v(" "),s("h4",{attrs:{id:"example-b-rf-as-mqtt-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#example-b-rf-as-mqtt-sensor"}},[t._v("#")]),t._v(" Example B - RF As MQTT Sensor")]),t._v(" "),s("p",[t._v("If the following parameters are enabled in OpenMQTTGateway:")]),t._v(" "),s("ul",[s("li",[t._v('ZgatewayRF="RF"')]),t._v(" "),s("li",[t._v("HADiscovery=true")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_DeviceTrigger=false")]),t._v(" "),s("li",[t._v("RF_on_HAS_as_MQTTSensor=true")])]),t._v(" "),s("p",[t._v("During any discovery round, a SYS message is sent, setting the MQTT Sensor as a sensor of the OpenMQTTGateway device.")]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('...\nN: [ OMG->MQTT ] topic: homeassistant/sensor/246F287AF0C4-gatewayRF/config msg: {"stat_t":"home/OMG_DEVELOPMENT/433toMQTT/#","avty_t":"home/OMG_DEVELOPMENT/LWT","name":"gatewayRF","uniq_id":"246F287AF0C4-gatewayRF","val_tpl":"{{ value_json.value | is_defined }}","pl_avail":"online","pl_not_avail":"offline","device":{"ids":["246F287AF0C4"],"name":"OMG_DEVELOPMENT","mdl":"[\\"WebUI\\",\\"RF\\"]","mf":"OMG_community","cu":"http://192.168.2.150/","sw":"1.8.0-o"}}\nT: Dequeue JSON\n')])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("Then, each time an RF signal is received by OpenMQTTGateway, the content of messages are sent to the MQTT broker on classic topic:")]),t._v(" "),s("div",{staticClass:"language- line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('T: Dequeue JSON\nN: [ OMG->MQTT ] topic: home/OMG_DEVELOPMENT/433toMQTT/15524904 msg: {"value":15524904,"protocol":1,"length":24,"delay":368,"tre_state":"-","binary":"111011001110010000101000","raw":"11404,1045,414,1034,424,1024,430,305,1146,1022,431,1019,436,299,1150,304,1145,1021,432,1017,438,1013,441,295,1156,299,1149,1018,436,300,1149,304,1146,307,1143,310,1141,1025,430,306,1143,1021,432,305,1145,310,1140,309"} \n\n')])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br")])]),s("p",[t._v("These messages enable Home Assistant to recognize and integrate the RF signal as a sensor.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(320),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF sensor in Home Assistant: Yellow the configuration of sensor, Green the real message")])]),t._v(" "),s("p",[t._v("Once this process is completed, Home Assistant detects a device with the new sensor and linked to the received RF signal value.\nThis means that Home Assistant can now react to the received RF signal as an sensor event.")]),t._v(" "),s("p",[t._v("Example of a detected RF trigger in Home Assistant:")]),t._v(" "),s("p",[s("img",{attrs:{src:a(321),alt:"MQTTExplorer Show Topic"}}),t._v(" "),s("em",[t._v("Example of a detected RF sensor in Home Assistant: Yellow the real message")])]),t._v(" "),s("h2",{attrs:{id:"manual-integration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#manual-integration"}},[t._v("#")]),t._v(" Manual integration")]),t._v(" "),s("p",[t._v("If you prefer not to use MQTT auto-discovery, you can manually configure Home Assistant to manage MQTT topics. This approach gives you full control over the structure and behavior of your MQTT entities. Below are some examples of how to define your devices, sensors, and switches manually using YAML configuration.")]),t._v(" "),s("p",[t._v("From @123, @finity, @denniz03, @jrockstad, @anarchking, @dkluivingh, @Odyno")]),t._v(" "),s("h3",{attrs:{id:"pir-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pir-sensor"}},[t._v("#")]),t._v(" Pir Sensor")]),t._v(" "),s("p",[t._v("This is an example of how to configure a PIR (Passive Infrared) sensor in Home Assistant using MQTT.")]),t._v(" "),s("p",[s("img",{attrs:{src:a(322),alt:"Pir Sensor"}})]),t._v(" "),s("p",[t._v("The configuration below sets up a binary sensor that detects motion and sends the state to Home Assistant.")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unique_id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" pir.15484294\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Pir.Mansarda"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" motion\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/+/433toMQTT/15484294"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{{ value_json.value }}"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"15484294"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("off_delay")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br")])]),s("h3",{attrs:{id:"door-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#door-sensor"}},[t._v("#")]),t._v(" Door sensor")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"test"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/433toMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '7821834' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% elif value_json.value == '7821838' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'OFF'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.test') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("qos")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" opening\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br")])]),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" doorbell\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/SRFBtoMQTT'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('#value_template: "{{ value_json.raw }}"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '14163857' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.doorbell') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("off_delay")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_class")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'sound'")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" light_back_sensor\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/SRFBtoMQTT'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#value_template: '{{ value_jason.value }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '1213858' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.light_back_sensor') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("off_delay")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" rf_outlet_sensor\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/SRFBtoMQTT'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% if value_json.value == '16766303' %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'ON'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% else %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("states('binary_sensor.rf_outlet_sensor') "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v(" upper"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% endif %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br"),s("span",{staticClass:"line-number"},[t._v("31")]),s("br"),s("span",{staticClass:"line-number"},[t._v("32")]),s("br"),s("span",{staticClass:"line-number"},[t._v("33")]),s("br")])]),s("h3",{attrs:{id:"motion-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#motion-sensor"}},[t._v("#")]),t._v(" Motion sensor")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("binary_sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Bewegung_Schlafzimmer"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#device_class: motion")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway1/HCSR501toMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json[\"presence\"] }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"true"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_off")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"false"')]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br")])]),s("h3",{attrs:{id:"switches"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#switches"}},[t._v("#")]),t._v(" Switches")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#switches")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("switch")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Plug1\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/SRFBtoMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("command_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/commands/MQTTtoSRFB"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"{{ value_json.value }}"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{\"value\":4546575}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_off")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{\"value\":4546572}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_on")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4546575")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_off")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4546572")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("qos")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"0"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("retain")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br")])]),s("h3",{attrs:{id:"rf-gateway-mode-pilight-rf-kaku"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rf-gateway-mode-pilight-rf-kaku"}},[t._v("#")]),t._v(" RF gateway mode - Pilight, RF, kaku")]),t._v(" "),s("p",[t._v("insert an include statement in HA configuration.yaml")]),t._v(" "),s("div",{staticClass:"language-bash line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("grep")]),t._v(" homed ./configuration.yaml \nmqtt: "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("include homed-mqtt.yaml\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br")])]),s("p",[t._v("In the example, the included file is homed-mqtt.yaml. It provides an mqtt select entity with the ability to show and also change via dropdown - the desired mode of the RF receiver gateway. In the homed-mqtt.yaml snippet, the device section (as it is optional) is ommited,")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("select")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'RF: Mode receive'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unique_id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" espdevcho"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("rf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("mode\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#platform: mqtt")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("availability_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" home/espdevcho/LWT "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# espdevcho is a particular name of the gateway, instead of the default OpenMQTTGateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_available")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" online\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("payload_not_available")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" offline\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("options")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Pilight"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RF classic"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"RF2 kaku"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" home/espdevcho/RFtoMQTT "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# espdevcho is a particular name of the gateway, instead of the default OpenMQTTGateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v("\n {% if value_json.active == 1 %} Pilight\n {% elif value_json.active == 2 %} RF classic\n {% elif value_json.active == 4 %} RF2 kaku\n {% endif %}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#unit_of_measurement: s")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("command_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" home/espdevcho/commands/MQTTtoRF/config "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# espdevcho is a particular name of the gateway, instead of the default OpenMQTTGateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("command_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v('\n {% set value_map = {\n "Pilight": 1,\n "RF classic": 2,\n "RF2 kaku": 4,\n }\n %}\n {"active":{{ value_map[value] }}}')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("configuration_url")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" http"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("//192.168.1.11/ "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# device section is optional. It is almost ommited in this example. Values here will update the corresponding device, if it already exist")]),t._v("\n\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br"),s("span",{staticClass:"line-number"},[t._v("25")]),s("br"),s("span",{staticClass:"line-number"},[t._v("26")]),s("br"),s("span",{staticClass:"line-number"},[t._v("27")]),s("br"),s("span",{staticClass:"line-number"},[t._v("28")]),s("br"),s("span",{staticClass:"line-number"},[t._v("29")]),s("br"),s("span",{staticClass:"line-number"},[t._v("30")]),s("br")])]),s("h3",{attrs:{id:"mijia-thermometer-ble"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mijia-thermometer-ble"}},[t._v("#")]),t._v(" Mijia Thermometer BLE")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mijia_thermometer_temperature"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# MQTT topic, check MQTT messages; replace AA... with id (BLE MAC) of your device")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'°C'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json.tem | is_defined }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("expire_after")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("21600")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 6 hours")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("force_update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mijia_thermometer_humidity"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'%'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json.hum | is_defined }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("expire_after")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("21600")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 6 hours")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("force_update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mijia_thermometer_battery"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'%'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json.batt | is_defined }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("expire_after")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("21600")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# 6 hours")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("force_update")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br")])]),s("h3",{attrs:{id:"xiaomi-mi-scale-v2-ble-xmtzc05hm"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#xiaomi-mi-scale-v2-ble-xmtzc05hm"}},[t._v("#")]),t._v(" Xiaomi Mi Scale V2 BLE (XMTZC05HM)")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Weight"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# replace your MQTT topic here")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json[\"weight\"] }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"kg"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("icon")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mdi"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("weight"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("kilogram\n \n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Impedance"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/BTtoMQTT/AAAAAAAAAAAA"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# replace your MQTT topic here also")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'{{ value_json[\"impedance\"] }}'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Ohm"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("icon")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mdi"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("omega\n \n"),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("body_mass_index")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("friendly_name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'Body Mass Index'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% set HEIGHT = (1.76)"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v("float %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# replace your height in meters")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("% set WEIGHT = states('sensor.xmtzc05hm_weight')"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("|")]),t._v("float %"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" (WEIGHT/(HEIGHT"),s("span",{pre:!0,attrs:{class:"token important"}},[t._v("*HEIGHT))|float|round(1)")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("icon_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v("\n {{ 'mdi:human' }}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br"),s("span",{staticClass:"line-number"},[t._v("12")]),s("br"),s("span",{staticClass:"line-number"},[t._v("13")]),s("br"),s("span",{staticClass:"line-number"},[t._v("14")]),s("br"),s("span",{staticClass:"line-number"},[t._v("15")]),s("br"),s("span",{staticClass:"line-number"},[t._v("16")]),s("br"),s("span",{staticClass:"line-number"},[t._v("17")]),s("br"),s("span",{staticClass:"line-number"},[t._v("18")]),s("br"),s("span",{staticClass:"line-number"},[t._v("19")]),s("br"),s("span",{staticClass:"line-number"},[t._v("20")]),s("br"),s("span",{staticClass:"line-number"},[t._v("21")]),s("br"),s("span",{staticClass:"line-number"},[t._v("22")]),s("br"),s("span",{staticClass:"line-number"},[t._v("23")]),s("br"),s("span",{staticClass:"line-number"},[t._v("24")]),s("br")])]),s("h3",{attrs:{id:"mqtt-room-presence"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-room-presence"}},[t._v("#")]),t._v(" MQTT Room Presence")]),t._v(" "),s("p",[t._v("For the publication into the presence topic the following needs to be activated - "),s("RouterLink",{attrs:{to:"/use/ble.html#setting-if-the-gateway-publish-into-home-assistant-home-presence-topic-default-false-available-with-ha-discovery"}},[t._v("here is the command")])],1),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("platform")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" mqtt_room\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("device_id")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("XX "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#Mac Address of device wanting to track")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" you_are_in "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# home assistant will show a sensor named (you are in) with its value being the name you gave the gateway")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/presence"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#timeout:")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#away_timeout:")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br")])]),s("h3",{attrs:{id:"temperature-sensor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#temperature-sensor"}},[t._v("#")]),t._v(" Temperature sensor")]),t._v(" "),s("div",{staticClass:"language-yaml line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-yaml"}},[s("code",[s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("mqtt")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("sensor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" outdoor temp\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("state_topic")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/OpenMQTTGateway/433toMQTT"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("unit_of_measurement")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'°C'")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("value_template")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")]),s("span",{pre:!0,attrs:{class:"token scalar string"}},[t._v("\n {% if value_json is defined and value_json.sensor == 125 %}\n {{ value_json.tempc }}\n {% else %}\n {{ states('sensor.outdoor_temp') }}\n {% endif %}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br"),s("span",{staticClass:"line-number"},[t._v("7")]),s("br"),s("span",{staticClass:"line-number"},[t._v("8")]),s("br"),s("span",{staticClass:"line-number"},[t._v("9")]),s("br"),s("span",{staticClass:"line-number"},[t._v("10")]),s("br"),s("span",{staticClass:"line-number"},[t._v("11")]),s("br")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/17.5ac40457.js b/dev/assets/js/17.923ad7c4.js similarity index 98% rename from dev/assets/js/17.5ac40457.js rename to dev/assets/js/17.923ad7c4.js index d43376d4..1d483dbe 100644 --- a/dev/assets/js/17.5ac40457.js +++ b/dev/assets/js/17.923ad7c4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{362:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration.b7bcc85b.png"},363:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug.223a3034.png"},364:function(s,t){s.exports="data:image/png;base64,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"},365:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug3.be5f1c56.png"},366:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-process.f067ee5a.png"},367:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-gauge.d54f29fc.png"},368:function(s,t){s.exports="data:image/png;base64,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"},369:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-chart.b3fd693b.png"},370:function(s,t){s.exports="data:image/png;base64,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"},371:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-flow-BLE-temperature.188db207.png"},430:function(s,t,a){"use strict";a.r(t);var n=a(14),r=Object(n.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"integrate-node-red"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-node-red"}},[s._v("#")]),s._v(" Integrate Node-Red")]),s._v(" "),t("h2",{attrs:{id:"integrate-ble-sensors-devices-and-display-a-dashboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-ble-sensors-devices-and-display-a-dashboard"}},[s._v("#")]),s._v(" Integrate BLE sensors, devices and display a dashboard")]),s._v(" "),t("p",[s._v("Prerequisites: node-red, node-red-dashboard")]),s._v(" "),t("h3",{attrs:{id:"broker-connection"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#broker-connection"}},[s._v("#")]),s._v(" Broker connection")]),s._v(" "),t("ul",[t("li",[s._v("Add a new "),t("code",[s._v("mqtt in")]),s._v(" node")]),s._v(" "),t("li",[s._v("Click 2 times on it")]),s._v(" "),t("li",[s._v("Add a new broker or connect to an existing one (server field)")]),s._v(" "),t("li",[s._v("Set the topic like below with the MAC address at the end being the one of the device you want to integrate")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(362),alt:"NodeRed integration"}})]),s._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[s._v("TIP")]),s._v(" "),t("p",[s._v('The "+" enables to process the data from all the gateways whatever name they have. So you may setup several OpenMQTTGateway, you will not have to change the Node-Red configuration.')])]),s._v(" "),t("p",[s._v("This configuration enables to process all the data coming from the sensor.")]),s._v(" "),t("ul",[t("li",[s._v("Click on done")]),s._v(" "),t("li",[s._v("So as to monitor the traffic coming; you can add a debug node with "),t("em",[s._v("msg.payload")]),s._v(" as Output")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(363),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Link it to the "),t("code",[s._v("mqtt in")]),s._v(" node")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(364),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Deploy")]),s._v(" "),t("li",[s._v("Open the debug panel")]),s._v(" "),t("li",[s._v("You should see messages coming when the gateway will receive data")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(365),alt:"NodeRed integration"}})]),s._v(" "),t("h3",{attrs:{id:"json-message-processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#json-message-processing"}},[s._v("#")]),s._v(" Json message processing")]),s._v(" "),t("p",[s._v("We need to process the json message so as to extract the value that we want to display.")]),s._v(" "),t("ul",[t("li",[s._v("Add a "),t("code",[s._v("change")]),s._v(" node")]),s._v(" "),t("li",[s._v("Configure it as "),t("code",[s._v("Move")])]),s._v(" "),t("li",[s._v("Add the msg value you would like to process example "),t("em",[s._v("msg.payload.tempc")]),s._v(" and the target "),t("em",[s._v("msg.payload")])])]),s._v(" "),t("p",[t("img",{attrs:{src:a(366),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Connect the "),t("code",[s._v("change")]),s._v(" node to the "),t("code",[s._v("mqtt in")]),s._v(" node")])]),s._v(" "),t("h3",{attrs:{id:"dashboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dashboard"}},[s._v("#")]),s._v(" Dashboard")]),s._v(" "),t("p",[s._v("You can now add widget so as to display the value processed above")]),s._v(" "),t("ul",[t("li",[s._v("Add a "),t("code",[s._v("gauge")]),s._v(" node")]),s._v(" "),t("li",[s._v("Add a group and organize your dashboard")]),s._v(" "),t("li",[s._v("Add your value format to process the payload like below")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(367),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Click on Done")]),s._v(" "),t("li",[s._v("Deploy")]),s._v(" "),t("li",[s._v("Go to your "),t("code",[s._v("node-red url")]),s._v("/ui")])]),s._v(" "),t("p",[s._v("You should see the gauge with the last value displayed")]),s._v(" "),t("p",[t("img",{attrs:{src:a(368),alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("You can also add easily a chart node:")]),s._v(" "),t("p",[t("img",{attrs:{src:a(369),alt:"NodeRed integration"}})]),s._v(" "),t("p",[t("img",{attrs:{src:a(370),alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("Or a function with a notification:")]),s._v(" "),t("p",[t("img",{attrs:{src:a(371),alt:"NodeRed integration"}})]),s._v(" "),t("h2",{attrs:{id:"integrate-rf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-rf"}},[s._v("#")]),s._v(" Integrate RF")]),s._v(" "),t("p",[s._v("Here is a simple set of flows for integrating OpenMQTTGateway with NodeRED via an ESP8266 module.")]),s._v(" "),t("p",[s._v("In this example I have used a Wemos D1 Mini with some cheap RF modules.")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://i.imgur.com/z2RFvUw.jpg",alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("A flow to receive 433MHz signals into NodeRED (you will need to update the IP address of your broker)")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://i.imgur.com/2UWYzHg.jpg",alt:"NodeRed integration"}})]),s._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6d1b2915.7ce798"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt in"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"433MQTT"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"home/OpenMQTTGateway/433toMQTT"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"qos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("740")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"fe53b819.4f9568"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"fe53b819.4f9568"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"debug"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"active"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tosidebar"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"console"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tostatus"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"complete"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("290")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("740")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt-broker"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"192.168.0.56"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1883"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clientid"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"usetls"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"compatmode"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"keepalive"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cleansession"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br")])]),t("p",[s._v("A flow to send 433MHz signals from NodeRED")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://i.imgur.com/PMlWyii.jpg",alt:"NodeRed integration"}})]),s._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"ff924d56.459d6"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt out"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"MQTTto433"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"home/OpenMQTTGateway/commands/MQTTto433"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"qos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"retain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("610")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("860")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6c25a2d4.6c733c"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"inject"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"On"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payloadType"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"repeat"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"crontab"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"once"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"onceDelay"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("90")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("840")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7689fe88.45679"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a76d2f03.5f3"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"change"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"rules"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"set"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"p"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"pt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"msg"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"5510487"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tot"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"action"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"property"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"from"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"reg"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("380")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("840")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"ff924d56.459d6"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7689fe88.45679"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"switch"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"property"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"propertyType"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"msg"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"rules"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"eq"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"v"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"On"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"vt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"eq"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"v"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Off"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"vt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"checkall"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"true"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"repair"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"outputs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("210")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("860")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a76d2f03.5f3"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6a7c2c3a.567794"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7e52ec9.00dde14"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"inject"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Off"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payloadType"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"repeat"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"crontab"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"once"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"onceDelay"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("90")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7689fe88.45679"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6a7c2c3a.567794"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"change"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"rules"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"set"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"p"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"pt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"msg"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4527444"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tot"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"action"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"property"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"from"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"reg"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("380")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"ff924d56.459d6"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"20991aea.cca8a6"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"comment"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Set you RF codes here."')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"info"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("380")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("800")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt-broker"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"192.168.0.56"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1883"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clientid"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"usetls"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"compatmode"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"keepalive"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cleansession"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br"),t("span",{staticClass:"line-number"},[s._v("55")]),t("br"),t("span",{staticClass:"line-number"},[s._v("56")]),t("br"),t("span",{staticClass:"line-number"},[s._v("57")]),t("br"),t("span",{staticClass:"line-number"},[s._v("58")]),t("br"),t("span",{staticClass:"line-number"},[s._v("59")]),t("br"),t("span",{staticClass:"line-number"},[s._v("60")]),t("br"),t("span",{staticClass:"line-number"},[s._v("61")]),t("br"),t("span",{staticClass:"line-number"},[s._v("62")]),t("br"),t("span",{staticClass:"line-number"},[s._v("63")]),t("br"),t("span",{staticClass:"line-number"},[s._v("64")]),t("br"),t("span",{staticClass:"line-number"},[s._v("65")]),t("br"),t("span",{staticClass:"line-number"},[s._v("66")]),t("br"),t("span",{staticClass:"line-number"},[s._v("67")]),t("br"),t("span",{staticClass:"line-number"},[s._v("68")]),t("br"),t("span",{staticClass:"line-number"},[s._v("69")]),t("br"),t("span",{staticClass:"line-number"},[s._v("70")]),t("br"),t("span",{staticClass:"line-number"},[s._v("71")]),t("br"),t("span",{staticClass:"line-number"},[s._v("72")]),t("br"),t("span",{staticClass:"line-number"},[s._v("73")]),t("br"),t("span",{staticClass:"line-number"},[s._v("74")]),t("br"),t("span",{staticClass:"line-number"},[s._v("75")]),t("br"),t("span",{staticClass:"line-number"},[s._v("76")]),t("br"),t("span",{staticClass:"line-number"},[s._v("77")]),t("br"),t("span",{staticClass:"line-number"},[s._v("78")]),t("br"),t("span",{staticClass:"line-number"},[s._v("79")]),t("br"),t("span",{staticClass:"line-number"},[s._v("80")]),t("br"),t("span",{staticClass:"line-number"},[s._v("81")]),t("br"),t("span",{staticClass:"line-number"},[s._v("82")]),t("br"),t("span",{staticClass:"line-number"},[s._v("83")]),t("br"),t("span",{staticClass:"line-number"},[s._v("84")]),t("br"),t("span",{staticClass:"line-number"},[s._v("85")]),t("br"),t("span",{staticClass:"line-number"},[s._v("86")]),t("br"),t("span",{staticClass:"line-number"},[s._v("87")]),t("br"),t("span",{staticClass:"line-number"},[s._v("88")]),t("br"),t("span",{staticClass:"line-number"},[s._v("89")]),t("br"),t("span",{staticClass:"line-number"},[s._v("90")]),t("br"),t("span",{staticClass:"line-number"},[s._v("91")]),t("br"),t("span",{staticClass:"line-number"},[s._v("92")]),t("br"),t("span",{staticClass:"line-number"},[s._v("93")]),t("br"),t("span",{staticClass:"line-number"},[s._v("94")]),t("br"),t("span",{staticClass:"line-number"},[s._v("95")]),t("br"),t("span",{staticClass:"line-number"},[s._v("96")]),t("br"),t("span",{staticClass:"line-number"},[s._v("97")]),t("br"),t("span",{staticClass:"line-number"},[s._v("98")]),t("br"),t("span",{staticClass:"line-number"},[s._v("99")]),t("br"),t("span",{staticClass:"line-number"},[s._v("100")]),t("br"),t("span",{staticClass:"line-number"},[s._v("101")]),t("br"),t("span",{staticClass:"line-number"},[s._v("102")]),t("br"),t("span",{staticClass:"line-number"},[s._v("103")]),t("br"),t("span",{staticClass:"line-number"},[s._v("104")]),t("br"),t("span",{staticClass:"line-number"},[s._v("105")]),t("br"),t("span",{staticClass:"line-number"},[s._v("106")]),t("br"),t("span",{staticClass:"line-number"},[s._v("107")]),t("br"),t("span",{staticClass:"line-number"},[s._v("108")]),t("br"),t("span",{staticClass:"line-number"},[s._v("109")]),t("br"),t("span",{staticClass:"line-number"},[s._v("110")]),t("br"),t("span",{staticClass:"line-number"},[s._v("111")]),t("br"),t("span",{staticClass:"line-number"},[s._v("112")]),t("br"),t("span",{staticClass:"line-number"},[s._v("113")]),t("br"),t("span",{staticClass:"line-number"},[s._v("114")]),t("br"),t("span",{staticClass:"line-number"},[s._v("115")]),t("br"),t("span",{staticClass:"line-number"},[s._v("116")]),t("br"),t("span",{staticClass:"line-number"},[s._v("117")]),t("br"),t("span",{staticClass:"line-number"},[s._v("118")]),t("br"),t("span",{staticClass:"line-number"},[s._v("119")]),t("br"),t("span",{staticClass:"line-number"},[s._v("120")]),t("br"),t("span",{staticClass:"line-number"},[s._v("121")]),t("br"),t("span",{staticClass:"line-number"},[s._v("122")]),t("br"),t("span",{staticClass:"line-number"},[s._v("123")]),t("br"),t("span",{staticClass:"line-number"},[s._v("124")]),t("br"),t("span",{staticClass:"line-number"},[s._v("125")]),t("br"),t("span",{staticClass:"line-number"},[s._v("126")]),t("br"),t("span",{staticClass:"line-number"},[s._v("127")]),t("br"),t("span",{staticClass:"line-number"},[s._v("128")]),t("br"),t("span",{staticClass:"line-number"},[s._v("129")]),t("br"),t("span",{staticClass:"line-number"},[s._v("130")]),t("br"),t("span",{staticClass:"line-number"},[s._v("131")]),t("br"),t("span",{staticClass:"line-number"},[s._v("132")]),t("br"),t("span",{staticClass:"line-number"},[s._v("133")]),t("br"),t("span",{staticClass:"line-number"},[s._v("134")]),t("br"),t("span",{staticClass:"line-number"},[s._v("135")]),t("br"),t("span",{staticClass:"line-number"},[s._v("136")]),t("br"),t("span",{staticClass:"line-number"},[s._v("137")]),t("br"),t("span",{staticClass:"line-number"},[s._v("138")]),t("br"),t("span",{staticClass:"line-number"},[s._v("139")]),t("br"),t("span",{staticClass:"line-number"},[s._v("140")]),t("br"),t("span",{staticClass:"line-number"},[s._v("141")]),t("br"),t("span",{staticClass:"line-number"},[s._v("142")]),t("br"),t("span",{staticClass:"line-number"},[s._v("143")]),t("br"),t("span",{staticClass:"line-number"},[s._v("144")]),t("br"),t("span",{staticClass:"line-number"},[s._v("145")]),t("br"),t("span",{staticClass:"line-number"},[s._v("146")]),t("br"),t("span",{staticClass:"line-number"},[s._v("147")]),t("br"),t("span",{staticClass:"line-number"},[s._v("148")]),t("br"),t("span",{staticClass:"line-number"},[s._v("149")]),t("br"),t("span",{staticClass:"line-number"},[s._v("150")]),t("br"),t("span",{staticClass:"line-number"},[s._v("151")]),t("br"),t("span",{staticClass:"line-number"},[s._v("152")]),t("br"),t("span",{staticClass:"line-number"},[s._v("153")]),t("br"),t("span",{staticClass:"line-number"},[s._v("154")]),t("br"),t("span",{staticClass:"line-number"},[s._v("155")]),t("br"),t("span",{staticClass:"line-number"},[s._v("156")]),t("br"),t("span",{staticClass:"line-number"},[s._v("157")]),t("br"),t("span",{staticClass:"line-number"},[s._v("158")]),t("br"),t("span",{staticClass:"line-number"},[s._v("159")]),t("br"),t("span",{staticClass:"line-number"},[s._v("160")]),t("br"),t("span",{staticClass:"line-number"},[s._v("161")]),t("br"),t("span",{staticClass:"line-number"},[s._v("162")]),t("br"),t("span",{staticClass:"line-number"},[s._v("163")]),t("br"),t("span",{staticClass:"line-number"},[s._v("164")]),t("br"),t("span",{staticClass:"line-number"},[s._v("165")]),t("br"),t("span",{staticClass:"line-number"},[s._v("166")]),t("br"),t("span",{staticClass:"line-number"},[s._v("167")]),t("br"),t("span",{staticClass:"line-number"},[s._v("168")]),t("br"),t("span",{staticClass:"line-number"},[s._v("169")]),t("br"),t("span",{staticClass:"line-number"},[s._v("170")]),t("br"),t("span",{staticClass:"line-number"},[s._v("171")]),t("br"),t("span",{staticClass:"line-number"},[s._v("172")]),t("br"),t("span",{staticClass:"line-number"},[s._v("173")]),t("br")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{348:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration.b7bcc85b.png"},349:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug.223a3034.png"},350:function(s,t){s.exports="data:image/png;base64,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"},351:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug3.be5f1c56.png"},352:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-process.f067ee5a.png"},353:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-gauge.d54f29fc.png"},354:function(s,t){s.exports="data:image/png;base64,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"},355:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-chart.b3fd693b.png"},356:function(s,t){s.exports="data:image/png;base64,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"},357:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-flow-BLE-temperature.188db207.png"},429:function(s,t,a){"use strict";a.r(t);var n=a(14),r=Object(n.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"integrate-node-red"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-node-red"}},[s._v("#")]),s._v(" Integrate Node-Red")]),s._v(" "),t("h2",{attrs:{id:"integrate-ble-sensors-devices-and-display-a-dashboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-ble-sensors-devices-and-display-a-dashboard"}},[s._v("#")]),s._v(" Integrate BLE sensors, devices and display a dashboard")]),s._v(" "),t("p",[s._v("Prerequisites: node-red, node-red-dashboard")]),s._v(" "),t("h3",{attrs:{id:"broker-connection"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#broker-connection"}},[s._v("#")]),s._v(" Broker connection")]),s._v(" "),t("ul",[t("li",[s._v("Add a new "),t("code",[s._v("mqtt in")]),s._v(" node")]),s._v(" "),t("li",[s._v("Click 2 times on it")]),s._v(" "),t("li",[s._v("Add a new broker or connect to an existing one (server field)")]),s._v(" "),t("li",[s._v("Set the topic like below with the MAC address at the end being the one of the device you want to integrate")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(348),alt:"NodeRed integration"}})]),s._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[s._v("TIP")]),s._v(" "),t("p",[s._v('The "+" enables to process the data from all the gateways whatever name they have. So you may setup several OpenMQTTGateway, you will not have to change the Node-Red configuration.')])]),s._v(" "),t("p",[s._v("This configuration enables to process all the data coming from the sensor.")]),s._v(" "),t("ul",[t("li",[s._v("Click on done")]),s._v(" "),t("li",[s._v("So as to monitor the traffic coming; you can add a debug node with "),t("em",[s._v("msg.payload")]),s._v(" as Output")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(349),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Link it to the "),t("code",[s._v("mqtt in")]),s._v(" node")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(350),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Deploy")]),s._v(" "),t("li",[s._v("Open the debug panel")]),s._v(" "),t("li",[s._v("You should see messages coming when the gateway will receive data")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(351),alt:"NodeRed integration"}})]),s._v(" "),t("h3",{attrs:{id:"json-message-processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#json-message-processing"}},[s._v("#")]),s._v(" Json message processing")]),s._v(" "),t("p",[s._v("We need to process the json message so as to extract the value that we want to display.")]),s._v(" "),t("ul",[t("li",[s._v("Add a "),t("code",[s._v("change")]),s._v(" node")]),s._v(" "),t("li",[s._v("Configure it as "),t("code",[s._v("Move")])]),s._v(" "),t("li",[s._v("Add the msg value you would like to process example "),t("em",[s._v("msg.payload.tempc")]),s._v(" and the target "),t("em",[s._v("msg.payload")])])]),s._v(" "),t("p",[t("img",{attrs:{src:a(352),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Connect the "),t("code",[s._v("change")]),s._v(" node to the "),t("code",[s._v("mqtt in")]),s._v(" node")])]),s._v(" "),t("h3",{attrs:{id:"dashboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dashboard"}},[s._v("#")]),s._v(" Dashboard")]),s._v(" "),t("p",[s._v("You can now add widget so as to display the value processed above")]),s._v(" "),t("ul",[t("li",[s._v("Add a "),t("code",[s._v("gauge")]),s._v(" node")]),s._v(" "),t("li",[s._v("Add a group and organize your dashboard")]),s._v(" "),t("li",[s._v("Add your value format to process the payload like below")])]),s._v(" "),t("p",[t("img",{attrs:{src:a(353),alt:"NodeRed integration"}})]),s._v(" "),t("ul",[t("li",[s._v("Click on Done")]),s._v(" "),t("li",[s._v("Deploy")]),s._v(" "),t("li",[s._v("Go to your "),t("code",[s._v("node-red url")]),s._v("/ui")])]),s._v(" "),t("p",[s._v("You should see the gauge with the last value displayed")]),s._v(" "),t("p",[t("img",{attrs:{src:a(354),alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("You can also add easily a chart node:")]),s._v(" "),t("p",[t("img",{attrs:{src:a(355),alt:"NodeRed integration"}})]),s._v(" "),t("p",[t("img",{attrs:{src:a(356),alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("Or a function with a notification:")]),s._v(" "),t("p",[t("img",{attrs:{src:a(357),alt:"NodeRed integration"}})]),s._v(" "),t("h2",{attrs:{id:"integrate-rf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#integrate-rf"}},[s._v("#")]),s._v(" Integrate RF")]),s._v(" "),t("p",[s._v("Here is a simple set of flows for integrating OpenMQTTGateway with NodeRED via an ESP8266 module.")]),s._v(" "),t("p",[s._v("In this example I have used a Wemos D1 Mini with some cheap RF modules.")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://i.imgur.com/z2RFvUw.jpg",alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("A flow to receive 433MHz signals into NodeRED (you will need to update the IP address of your broker)")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://i.imgur.com/2UWYzHg.jpg",alt:"NodeRed integration"}})]),s._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6d1b2915.7ce798"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt in"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"433MQTT"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"home/OpenMQTTGateway/433toMQTT"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"qos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("740")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"fe53b819.4f9568"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"fe53b819.4f9568"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"debug"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"active"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tosidebar"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"console"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tostatus"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"complete"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("290")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("740")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt-broker"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"192.168.0.56"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1883"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clientid"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"usetls"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"compatmode"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"keepalive"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cleansession"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br")])]),t("p",[s._v("A flow to send 433MHz signals from NodeRED")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://i.imgur.com/PMlWyii.jpg",alt:"NodeRed integration"}})]),s._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"ff924d56.459d6"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt out"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"MQTTto433"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"home/OpenMQTTGateway/commands/MQTTto433"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"qos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"retain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("610")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("860")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6c25a2d4.6c733c"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"inject"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"On"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payloadType"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"repeat"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"crontab"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"once"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"onceDelay"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("90")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("840")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7689fe88.45679"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a76d2f03.5f3"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"change"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"rules"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"set"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"p"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"pt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"msg"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"5510487"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tot"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"action"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"property"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"from"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"reg"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("380")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("840")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"ff924d56.459d6"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7689fe88.45679"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"switch"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"property"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"propertyType"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"msg"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"rules"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"eq"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"v"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"On"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"vt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"eq"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"v"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Off"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"vt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"checkall"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"true"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"repair"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"outputs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("210")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("860")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a76d2f03.5f3"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6a7c2c3a.567794"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7e52ec9.00dde14"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"inject"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"topic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Off"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"payloadType"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"repeat"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"crontab"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"once"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"onceDelay"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("90")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"7689fe88.45679"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6a7c2c3a.567794"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"change"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"rules"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"t"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"set"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"p"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"payload"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"pt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"msg"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4527444"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tot"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"str"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"action"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"property"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"from"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"to"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"reg"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("380")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("880")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"ff924d56.459d6"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"20991aea.cca8a6"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"comment"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a9a9b76b.e69998"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Set you RF codes here."')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"info"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"x"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("380")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"y"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("800")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"wires"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"id"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"4572f098.cc1"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mqtt-broker"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"z"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"broker"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"192.168.0.56"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1883"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clientid"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"usetls"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"compatmode"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"keepalive"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cleansession"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"willPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthTopic"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthQos"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthRetain"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"false"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"birthPayload"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br"),t("span",{staticClass:"line-number"},[s._v("55")]),t("br"),t("span",{staticClass:"line-number"},[s._v("56")]),t("br"),t("span",{staticClass:"line-number"},[s._v("57")]),t("br"),t("span",{staticClass:"line-number"},[s._v("58")]),t("br"),t("span",{staticClass:"line-number"},[s._v("59")]),t("br"),t("span",{staticClass:"line-number"},[s._v("60")]),t("br"),t("span",{staticClass:"line-number"},[s._v("61")]),t("br"),t("span",{staticClass:"line-number"},[s._v("62")]),t("br"),t("span",{staticClass:"line-number"},[s._v("63")]),t("br"),t("span",{staticClass:"line-number"},[s._v("64")]),t("br"),t("span",{staticClass:"line-number"},[s._v("65")]),t("br"),t("span",{staticClass:"line-number"},[s._v("66")]),t("br"),t("span",{staticClass:"line-number"},[s._v("67")]),t("br"),t("span",{staticClass:"line-number"},[s._v("68")]),t("br"),t("span",{staticClass:"line-number"},[s._v("69")]),t("br"),t("span",{staticClass:"line-number"},[s._v("70")]),t("br"),t("span",{staticClass:"line-number"},[s._v("71")]),t("br"),t("span",{staticClass:"line-number"},[s._v("72")]),t("br"),t("span",{staticClass:"line-number"},[s._v("73")]),t("br"),t("span",{staticClass:"line-number"},[s._v("74")]),t("br"),t("span",{staticClass:"line-number"},[s._v("75")]),t("br"),t("span",{staticClass:"line-number"},[s._v("76")]),t("br"),t("span",{staticClass:"line-number"},[s._v("77")]),t("br"),t("span",{staticClass:"line-number"},[s._v("78")]),t("br"),t("span",{staticClass:"line-number"},[s._v("79")]),t("br"),t("span",{staticClass:"line-number"},[s._v("80")]),t("br"),t("span",{staticClass:"line-number"},[s._v("81")]),t("br"),t("span",{staticClass:"line-number"},[s._v("82")]),t("br"),t("span",{staticClass:"line-number"},[s._v("83")]),t("br"),t("span",{staticClass:"line-number"},[s._v("84")]),t("br"),t("span",{staticClass:"line-number"},[s._v("85")]),t("br"),t("span",{staticClass:"line-number"},[s._v("86")]),t("br"),t("span",{staticClass:"line-number"},[s._v("87")]),t("br"),t("span",{staticClass:"line-number"},[s._v("88")]),t("br"),t("span",{staticClass:"line-number"},[s._v("89")]),t("br"),t("span",{staticClass:"line-number"},[s._v("90")]),t("br"),t("span",{staticClass:"line-number"},[s._v("91")]),t("br"),t("span",{staticClass:"line-number"},[s._v("92")]),t("br"),t("span",{staticClass:"line-number"},[s._v("93")]),t("br"),t("span",{staticClass:"line-number"},[s._v("94")]),t("br"),t("span",{staticClass:"line-number"},[s._v("95")]),t("br"),t("span",{staticClass:"line-number"},[s._v("96")]),t("br"),t("span",{staticClass:"line-number"},[s._v("97")]),t("br"),t("span",{staticClass:"line-number"},[s._v("98")]),t("br"),t("span",{staticClass:"line-number"},[s._v("99")]),t("br"),t("span",{staticClass:"line-number"},[s._v("100")]),t("br"),t("span",{staticClass:"line-number"},[s._v("101")]),t("br"),t("span",{staticClass:"line-number"},[s._v("102")]),t("br"),t("span",{staticClass:"line-number"},[s._v("103")]),t("br"),t("span",{staticClass:"line-number"},[s._v("104")]),t("br"),t("span",{staticClass:"line-number"},[s._v("105")]),t("br"),t("span",{staticClass:"line-number"},[s._v("106")]),t("br"),t("span",{staticClass:"line-number"},[s._v("107")]),t("br"),t("span",{staticClass:"line-number"},[s._v("108")]),t("br"),t("span",{staticClass:"line-number"},[s._v("109")]),t("br"),t("span",{staticClass:"line-number"},[s._v("110")]),t("br"),t("span",{staticClass:"line-number"},[s._v("111")]),t("br"),t("span",{staticClass:"line-number"},[s._v("112")]),t("br"),t("span",{staticClass:"line-number"},[s._v("113")]),t("br"),t("span",{staticClass:"line-number"},[s._v("114")]),t("br"),t("span",{staticClass:"line-number"},[s._v("115")]),t("br"),t("span",{staticClass:"line-number"},[s._v("116")]),t("br"),t("span",{staticClass:"line-number"},[s._v("117")]),t("br"),t("span",{staticClass:"line-number"},[s._v("118")]),t("br"),t("span",{staticClass:"line-number"},[s._v("119")]),t("br"),t("span",{staticClass:"line-number"},[s._v("120")]),t("br"),t("span",{staticClass:"line-number"},[s._v("121")]),t("br"),t("span",{staticClass:"line-number"},[s._v("122")]),t("br"),t("span",{staticClass:"line-number"},[s._v("123")]),t("br"),t("span",{staticClass:"line-number"},[s._v("124")]),t("br"),t("span",{staticClass:"line-number"},[s._v("125")]),t("br"),t("span",{staticClass:"line-number"},[s._v("126")]),t("br"),t("span",{staticClass:"line-number"},[s._v("127")]),t("br"),t("span",{staticClass:"line-number"},[s._v("128")]),t("br"),t("span",{staticClass:"line-number"},[s._v("129")]),t("br"),t("span",{staticClass:"line-number"},[s._v("130")]),t("br"),t("span",{staticClass:"line-number"},[s._v("131")]),t("br"),t("span",{staticClass:"line-number"},[s._v("132")]),t("br"),t("span",{staticClass:"line-number"},[s._v("133")]),t("br"),t("span",{staticClass:"line-number"},[s._v("134")]),t("br"),t("span",{staticClass:"line-number"},[s._v("135")]),t("br"),t("span",{staticClass:"line-number"},[s._v("136")]),t("br"),t("span",{staticClass:"line-number"},[s._v("137")]),t("br"),t("span",{staticClass:"line-number"},[s._v("138")]),t("br"),t("span",{staticClass:"line-number"},[s._v("139")]),t("br"),t("span",{staticClass:"line-number"},[s._v("140")]),t("br"),t("span",{staticClass:"line-number"},[s._v("141")]),t("br"),t("span",{staticClass:"line-number"},[s._v("142")]),t("br"),t("span",{staticClass:"line-number"},[s._v("143")]),t("br"),t("span",{staticClass:"line-number"},[s._v("144")]),t("br"),t("span",{staticClass:"line-number"},[s._v("145")]),t("br"),t("span",{staticClass:"line-number"},[s._v("146")]),t("br"),t("span",{staticClass:"line-number"},[s._v("147")]),t("br"),t("span",{staticClass:"line-number"},[s._v("148")]),t("br"),t("span",{staticClass:"line-number"},[s._v("149")]),t("br"),t("span",{staticClass:"line-number"},[s._v("150")]),t("br"),t("span",{staticClass:"line-number"},[s._v("151")]),t("br"),t("span",{staticClass:"line-number"},[s._v("152")]),t("br"),t("span",{staticClass:"line-number"},[s._v("153")]),t("br"),t("span",{staticClass:"line-number"},[s._v("154")]),t("br"),t("span",{staticClass:"line-number"},[s._v("155")]),t("br"),t("span",{staticClass:"line-number"},[s._v("156")]),t("br"),t("span",{staticClass:"line-number"},[s._v("157")]),t("br"),t("span",{staticClass:"line-number"},[s._v("158")]),t("br"),t("span",{staticClass:"line-number"},[s._v("159")]),t("br"),t("span",{staticClass:"line-number"},[s._v("160")]),t("br"),t("span",{staticClass:"line-number"},[s._v("161")]),t("br"),t("span",{staticClass:"line-number"},[s._v("162")]),t("br"),t("span",{staticClass:"line-number"},[s._v("163")]),t("br"),t("span",{staticClass:"line-number"},[s._v("164")]),t("br"),t("span",{staticClass:"line-number"},[s._v("165")]),t("br"),t("span",{staticClass:"line-number"},[s._v("166")]),t("br"),t("span",{staticClass:"line-number"},[s._v("167")]),t("br"),t("span",{staticClass:"line-number"},[s._v("168")]),t("br"),t("span",{staticClass:"line-number"},[s._v("169")]),t("br"),t("span",{staticClass:"line-number"},[s._v("170")]),t("br"),t("span",{staticClass:"line-number"},[s._v("171")]),t("br"),t("span",{staticClass:"line-number"},[s._v("172")]),t("br"),t("span",{staticClass:"line-number"},[s._v("173")]),t("br")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/24.b6ad2f1b.js b/dev/assets/js/24.23aa6c36.js similarity index 87% rename from dev/assets/js/24.b6ad2f1b.js rename to dev/assets/js/24.23aa6c36.js index a592a1a8..8fc9452c 100644 --- a/dev/assets/js/24.b6ad2f1b.js +++ b/dev/assets/js/24.23aa6c36.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{377:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_rf1.47444089.png"},378:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_rf2.0b5d6723.png"},379:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_rf3.374ee8dd.png"},380:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_ble.161a7c67.png"},443:function(e,t,r){"use strict";r.r(t);var a=r(14),s=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#devices"}},[e._v("#")]),e._v(" Devices")]),e._v(" "),t("p",[e._v("You can take a look to the "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenMQTTGateway compatible website"),t("OutboundLink")],1),e._v(" to have a view of the "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices/",target:"_blank",rel:"noopener noreferrer"}},[e._v("supported devices"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Added to that is an overview of devices supported by OpenMQTTGateway:")]),e._v(" "),t("h2",{attrs:{id:"for-radio-frequency-devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#for-radio-frequency-devices"}},[e._v("#")]),e._v(" For radio frequency devices")]),e._v(" "),t("p",[e._v("OpenMQTTGateway can support a wide range of 433mhz/315mhz devices, all the ones with SC5262 / SC5272, HX2262 / HX2272, PT2262 / PT2272, EV1527, RT1527, FP1527, HS1527 chipsets are supported by the RF gateway. Added to that RF2 support Kaku and Pilight an "),t("a",{attrs:{href:"https://wiki.pilight.org/devices",target:"_blank",rel:"noopener noreferrer"}},[e._v("huge list"),t("OutboundLink")],1),e._v(".\nNote that for the moment RF, RF2 and Pilight can not be activated on the same boards together.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(377),alt:"boards",title:":size=250%"}}),e._v(" "),t("img",{attrs:{src:r(378),alt:"boards",title:":size=250%"}}),e._v(" "),t("img",{attrs:{src:r(379),alt:"boards",title:":size=250%"}})]),e._v(" "),t("h2",{attrs:{id:"for-ble-devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#for-ble-devices"}},[e._v("#")]),e._v(" For BLE devices")]),e._v(" "),t("p",[e._v("OpenMQTTGateway is able to scan all the BLE devices that advertise their data so as to do presence detection.\nAdded to that it retrieves the measures from the devices mentioned and linked to below. By default the data are read from the advertisements (no or very little impact on device battery life). For some devices we may connect briefly only to retrieve one or several parameters.")]),e._v(" "),t("p",[e._v("OpenMQTTGateway currently supports the decoding of "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("more than 100 Bluetooth devices"),t("OutboundLink")],1),e._v(", which include popular devices like Mi Flora, Xiaomi scales, Inkbird, Govee and ThermoPro thermo-hygrometers and BBQ thermometers, SwitchBot devices status and many more.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("ul",[t("li",[e._v("(2) See https://github.com/atc1441/ATC_MiThermometer")]),e._v(" "),t("li",[e._v("(3) See https://github.com/pvvx/ATC_MiThermometer")])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(380),alt:"devices",title:":size=250%"}})]),e._v(" "),t("h2",{attrs:{id:"for-infrared-ir-devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#for-infrared-ir-devices"}},[e._v("#")]),e._v(" For infrared IR devices")]),e._v(" "),t("p",[e._v("The list of supported devices for ESP is "),t("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", and "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/6f73160d1421bebf2c1bbc9b8017978ff5b16520/main/config_IR.h#L123",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" for Arduino boards, as there is also the possibility of using raw and global cache (ESP) sending possibilities of this gateway is huge!")]),e._v(" "),t("h2",{attrs:{id:"lora"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lora"}},[e._v("#")]),e._v(" LORA")]),e._v(" "),t("p",[e._v("LoRa is more dedicated at this moment for tinkering and DIY and there is no Off the shelves devices compatible to my knowledge with this gateway.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{376:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_rf1.47444089.png"},377:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_rf2.0b5d6723.png"},378:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_rf3.374ee8dd.png"},379:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_devices_ble.161a7c67.png"},439:function(e,t,r){"use strict";r.r(t);var a=r(14),s=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#devices"}},[e._v("#")]),e._v(" Devices")]),e._v(" "),t("p",[e._v("You can take a look to the "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenMQTTGateway compatible website"),t("OutboundLink")],1),e._v(" to have a view of the "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices/",target:"_blank",rel:"noopener noreferrer"}},[e._v("supported devices"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Added to that is an overview of devices supported by OpenMQTTGateway:")]),e._v(" "),t("h2",{attrs:{id:"for-radio-frequency-devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#for-radio-frequency-devices"}},[e._v("#")]),e._v(" For radio frequency devices")]),e._v(" "),t("p",[e._v("OpenMQTTGateway can support a wide range of 433mhz/315mhz devices, all the ones with SC5262 / SC5272, HX2262 / HX2272, PT2262 / PT2272, EV1527, RT1527, FP1527, HS1527 chipsets are supported by the RF gateway. Added to that RF2 support Kaku and Pilight an "),t("a",{attrs:{href:"https://wiki.pilight.org/devices",target:"_blank",rel:"noopener noreferrer"}},[e._v("huge list"),t("OutboundLink")],1),e._v(".\nNote that for the moment RF, RF2 and Pilight can not be activated on the same boards together.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(376),alt:"boards",title:":size=250%"}}),e._v(" "),t("img",{attrs:{src:r(377),alt:"boards",title:":size=250%"}}),e._v(" "),t("img",{attrs:{src:r(378),alt:"boards",title:":size=250%"}})]),e._v(" "),t("h2",{attrs:{id:"for-ble-devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#for-ble-devices"}},[e._v("#")]),e._v(" For BLE devices")]),e._v(" "),t("p",[e._v("OpenMQTTGateway is able to scan all the BLE devices that advertise their data so as to do presence detection.\nAdded to that it retrieves the measures from the devices mentioned and linked to below. By default the data are read from the advertisements (no or very little impact on device battery life). For some devices we may connect briefly only to retrieve one or several parameters.")]),e._v(" "),t("p",[e._v("OpenMQTTGateway currently supports the decoding of "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("more than 100 Bluetooth devices"),t("OutboundLink")],1),e._v(", which include popular devices like Mi Flora, Xiaomi scales, Inkbird, Govee and ThermoPro thermo-hygrometers and BBQ thermometers, SwitchBot devices status and many more.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("ul",[t("li",[e._v("(2) See https://github.com/atc1441/ATC_MiThermometer")]),e._v(" "),t("li",[e._v("(3) See https://github.com/pvvx/ATC_MiThermometer")])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(379),alt:"devices",title:":size=250%"}})]),e._v(" "),t("h2",{attrs:{id:"for-infrared-ir-devices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#for-infrared-ir-devices"}},[e._v("#")]),e._v(" For infrared IR devices")]),e._v(" "),t("p",[e._v("The list of supported devices for ESP is "),t("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", and "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/6f73160d1421bebf2c1bbc9b8017978ff5b16520/main/config_IR.h#L123",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" for Arduino boards, as there is also the possibility of using raw and global cache (ESP) sending possibilities of this gateway is huge!")]),e._v(" "),t("h2",{attrs:{id:"lora"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lora"}},[e._v("#")]),e._v(" LORA")]),e._v(" "),t("p",[e._v("LoRa is more dedicated at this moment for tinkering and DIY and there is no Off the shelves devices compatible to my knowledge with this gateway.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/26.ee12f549.js b/dev/assets/js/26.8088da72.js similarity index 92% rename from dev/assets/js/26.ee12f549.js rename to dev/assets/js/26.8088da72.js index 0e6b7e3f..f42072d5 100644 --- a/dev/assets/js/26.ee12f549.js +++ b/dev/assets/js/26.8088da72.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{267:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.7a6039b8.png"},372:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Logo.0bf74c4e.png"},373:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Warning.a0afd25c.png"},435:function(a,s,e){"use strict";e.r(s);var t=e(14),r=Object(t.a)({},(function(){var a=this,s=a._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"m5-boards"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#m5-boards"}},[a._v("#")]),a._v(" M5 Boards")]),a._v(" "),s("p",[a._v("M5 boards, manufactured by "),s("a",{attrs:{href:"https://m5stack.com/",target:"_blank",rel:"noopener noreferrer"}},[a._v("M5Stack"),s("OutboundLink")],1),a._v(" are inexpensive, well featured boards based on ESP32.")]),a._v(" "),s("h2",{attrs:{id:"m5stickc-and-m5stack"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#m5stickc-and-m5stack"}},[a._v("#")]),a._v(" M5StickC and M5Stack")]),a._v(" "),s("p",[a._v("M5StickC and M5Stack are supported by OpenMQTTGateway and provide the following features:")]),a._v(" "),s("h3",{attrs:{id:"_3-low-power-modes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-low-power-modes"}},[a._v("#")]),a._v(" 3 low power modes")]),a._v(" "),s("h4",{attrs:{id:"always-on-display"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#always-on-display"}},[a._v("#")]),a._v(" Always ON display")]),a._v(" "),s("p",[a._v("The display is always ON but decrease its brightness when not processing.")]),a._v(" "),s("h4",{attrs:{id:"on-display-when-processing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#on-display-when-processing"}},[a._v("#")]),a._v(" ON display when processing")]),a._v(" "),s("p",[a._v("The display is OFF when not processing and the ESP32 is put in low power mode.")]),a._v(" "),s("h4",{attrs:{id:"always-off-display"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#always-off-display"}},[a._v("#")]),a._v(" Always OFF display")]),a._v(" "),s("p",[a._v("The display is always OFF, if the board has a led, the led is used when processing.")]),a._v(" "),s("p",[a._v("To change the low power mode you can do it by "),s("a",{attrs:{href:"../use/boards#low-power-mode-for-m5-boards"}},[a._v("MQTT")]),a._v(" or by pushing the middle button (btn B) of the M5Stack and the top button (btn B) of the M5Stick C")]),a._v(" "),s("h3",{attrs:{id:"start-screen"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#start-screen"}},[a._v("#")]),a._v(" Start screen")]),a._v(" "),s("p",[s("img",{attrs:{src:e(372),alt:"MStack core logo"}})]),a._v(" "),s("h3",{attrs:{id:"sleep-screen"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sleep-screen"}},[a._v("#")]),a._v(" Sleep screen")]),a._v(" "),s("p",[a._v("The screen brightness is put to a minimum so as to reduce power consumption.\n"),s("img",{attrs:{src:e(267),alt:"M5Stack core brightness"}})]),a._v(" "),s("h3",{attrs:{id:"log-display-in-case-of-warning"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#log-display-in-case-of-warning"}},[a._v("#")]),a._v(" Log display in case of warning")]),a._v(" "),s("p",[a._v("If the gateway detects a warning or an error the sleep go out the sleep screen and show the message with a red (error) or orange (warning) background.\n"),s("img",{attrs:{src:e(373),alt:"M5 Stack core warning"}})]),a._v(" "),s("p",[a._v("The M5Stick support low power mode 2 but its display is not supported for the moment.")])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{267:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.7a6039b8.png"},373:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Logo.0bf74c4e.png"},374:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Warning.a0afd25c.png"},435:function(a,s,e){"use strict";e.r(s);var t=e(14),r=Object(t.a)({},(function(){var a=this,s=a._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"m5-boards"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#m5-boards"}},[a._v("#")]),a._v(" M5 Boards")]),a._v(" "),s("p",[a._v("M5 boards, manufactured by "),s("a",{attrs:{href:"https://m5stack.com/",target:"_blank",rel:"noopener noreferrer"}},[a._v("M5Stack"),s("OutboundLink")],1),a._v(" are inexpensive, well featured boards based on ESP32.")]),a._v(" "),s("h2",{attrs:{id:"m5stickc-and-m5stack"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#m5stickc-and-m5stack"}},[a._v("#")]),a._v(" M5StickC and M5Stack")]),a._v(" "),s("p",[a._v("M5StickC and M5Stack are supported by OpenMQTTGateway and provide the following features:")]),a._v(" "),s("h3",{attrs:{id:"_3-low-power-modes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-low-power-modes"}},[a._v("#")]),a._v(" 3 low power modes")]),a._v(" "),s("h4",{attrs:{id:"always-on-display"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#always-on-display"}},[a._v("#")]),a._v(" Always ON display")]),a._v(" "),s("p",[a._v("The display is always ON but decrease its brightness when not processing.")]),a._v(" "),s("h4",{attrs:{id:"on-display-when-processing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#on-display-when-processing"}},[a._v("#")]),a._v(" ON display when processing")]),a._v(" "),s("p",[a._v("The display is OFF when not processing and the ESP32 is put in low power mode.")]),a._v(" "),s("h4",{attrs:{id:"always-off-display"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#always-off-display"}},[a._v("#")]),a._v(" Always OFF display")]),a._v(" "),s("p",[a._v("The display is always OFF, if the board has a led, the led is used when processing.")]),a._v(" "),s("p",[a._v("To change the low power mode you can do it by "),s("a",{attrs:{href:"../use/boards#low-power-mode-for-m5-boards"}},[a._v("MQTT")]),a._v(" or by pushing the middle button (btn B) of the M5Stack and the top button (btn B) of the M5Stick C")]),a._v(" "),s("h3",{attrs:{id:"start-screen"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#start-screen"}},[a._v("#")]),a._v(" Start screen")]),a._v(" "),s("p",[s("img",{attrs:{src:e(373),alt:"MStack core logo"}})]),a._v(" "),s("h3",{attrs:{id:"sleep-screen"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sleep-screen"}},[a._v("#")]),a._v(" Sleep screen")]),a._v(" "),s("p",[a._v("The screen brightness is put to a minimum so as to reduce power consumption.\n"),s("img",{attrs:{src:e(267),alt:"M5Stack core brightness"}})]),a._v(" "),s("h3",{attrs:{id:"log-display-in-case-of-warning"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#log-display-in-case-of-warning"}},[a._v("#")]),a._v(" Log display in case of warning")]),a._v(" "),s("p",[a._v("If the gateway detects a warning or an error the sleep go out the sleep screen and show the message with a red (error) or orange (warning) background.\n"),s("img",{attrs:{src:e(374),alt:"M5 Stack core warning"}})]),a._v(" "),s("p",[a._v("The M5Stick support low power mode 2 but its display is not supported for the moment.")])])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/27.65282af1.js b/dev/assets/js/27.8d8ada9a.js similarity index 95% rename from dev/assets/js/27.65282af1.js rename to dev/assets/js/27.8d8ada9a.js index 8ef6a3bc..3dfd3f43 100644 --- a/dev/assets/js/27.65282af1.js +++ b/dev/assets/js/27.8d8ada9a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{390:function(e,o,t){e.exports=t.p+"assets/img/OpenMQTTgateway_ESP32_binary_flash.7efd1e03.png"},391:function(e,o,t){e.exports=t.p+"assets/img/OpenMQTTgateway_ESP32_binary_flash2.d1b14293.png"},392:function(e,o,t){e.exports=t.p+"assets/img/OpenMQTTgateway_NodeMCU_PyFlasher.050597e1.png"},453:function(e,o,t){"use strict";t.r(o);var a=t(14),s=Object(a.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"option-2-upload-ready-to-go-binaries"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#option-2-upload-ready-to-go-binaries"}},[e._v("#")]),e._v(" (Option 2) Upload ready-to-go binaries")]),e._v(" "),o("p",[e._v("This section is useful if you want to directly flash your ESP from your desktop. Once flashed you can change wifi and broker settings.\nNevertheless you will not be able to change advanced parameters; if you want to do so, refer to "),o("RouterLink",{attrs:{to:"/upload/builds.html"}},[e._v("Upload your configurations")]),e._v(" section.")],1),e._v(" "),o("p",[e._v("Download the binary corresponding to your board and gateway "),o("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(" from github and uncompress it.")]),e._v(" "),o("h2",{attrs:{id:"esp32"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#esp32"}},[e._v("#")]),e._v(" ESP32")]),e._v(" "),o("ul",[o("li",[e._v("Download the bootloader "),o("a",{attrs:{href:"https://github.com/espressif/arduino-esp32/raw/2.0.5/tools/sdk/esp32/bin/bootloader_dio_80m.bin",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Download the boot_app0 from "),o("a",{attrs:{href:"https://github.com/espressif/arduino-esp32/raw/2.0.5/tools/partitions/boot_app0.bin",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Download the flash tool utility from espressif:\nhttps://www.espressif.com/en/products/hardware/esp32/resources")]),e._v(" "),o("li",[e._v("Uncompress the package")]),e._v(" "),o("li",[e._v("Execute "),o("code",[e._v("flash_download_tools")])]),e._v(" "),o("li",[e._v("Choose Developer mode")]),e._v(" "),o("li",[e._v("Choose ESP32 DownloadTool")]),e._v(" "),o("li",[e._v("Set the files and the address as below:\n"),o("img",{attrs:{src:t(390),alt:"Flash download tool"}})]),e._v(" "),o("li",[e._v("Set the config as above")]),e._v(" "),o("li",[e._v("Connect your ESP32 board and select the COM port")]),e._v(" "),o("li",[e._v("Click on erase if it is your first upload")]),e._v(" "),o("li",[e._v("If you see SYNC (above the START button) for more than 5 seconds, press the boot button of your ESP32")]),e._v(" "),o("li",[e._v("Once done you can click on START button")]),e._v(" "),o("li",[e._v("If you see SYNC (above the START button) for more than 5 seconds, press the boot button of your ESP32\nThe upload details appears in the rear shell windows, you can see also the progress bar changing.")]),e._v(" "),o("li",[e._v('Once done the flash tool display "FINISH" like below\n'),o("img",{attrs:{src:t(391),alt:"Flash download tool 2"}})])]),e._v(" "),o("h3",{attrs:{id:"linux-esptool-py"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#linux-esptool-py"}},[e._v("#")]),e._v(" Linux - esptool.py")]),e._v(" "),o("p",[e._v("If you want to upload the ready-to-go binary from Linux (or any other OS where you have Python) you can use the "),o("a",{attrs:{href:"https://github.com/espressif/esptool",target:"_blank",rel:"noopener noreferrer"}},[e._v("esptool.py"),o("OutboundLink")],1),e._v(". This an official Python based flashing tool from Espressif for ESP82XX and ESP32.")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Install esptool from PyPI via pip: "),o("code",[e._v("pip install esptool")]),e._v(" (or using the python package manager of your choice)")])]),e._v(" "),o("li",[o("p",[e._v("Now you should be able to run "),o("code",[e._v("esptool.py -h")]),e._v(" to see a summary of all available commands, command line options and verify the installation")])]),e._v(" "),o("li",[o("p",[e._v("Download the bootloader, boot_app0 and the binary for your board from the respective links "),o("a",{attrs:{href:"#esp32"}},[e._v("above")])])]),e._v(" "),o("li",[o("p",[e._v("Use the below command to upload the binary files to the board (change file names and serial port as needed, for Windows use port number e.g.: "),o("code",[e._v("COM4")]),e._v("):")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("esptool.py --port /dev/ttyUSB0 --chip esp32 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader_dio_80m.bin 0x8000 esp32dev-ble-cont-partitions.bin 0x10000 esp32dev-ble-cont-firmware.bin\n")])])])]),e._v(" "),o("li",[o("p",[e._v("Output for a successful upload should look like this:")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("esptool.py v2.8\nSerial port /dev/ttyUSB0\nConnecting.....\nChip is ESP32D0WDQ6 (revision 1)\nFeatures: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None\nCrystal is 40MHz\nMAC: 30:ae:a4:ff:48:14\nUploading stub...\nRunning stub...\nStub running...\nChanging baud rate to 921600\nChanged.\nConfiguring flash size...\nAuto-detected Flash size: 4MB\nCompressed 8192 bytes to 47...\nWrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 15741.5 kbit/s)...\nHash of data verified.\nFlash params set to 0x0320\nCompressed 17312 bytes to 11972...\nWrote 17312 bytes (11972 compressed) at 0x00001000 in 0.2 seconds (effective 903.1 kbit/s)...\nHash of data verified.\nCompressed 3072 bytes to 129...\nWrote 3072 bytes (129 compressed) at 0x00008000 in 0.0 seconds (effective 5168.4 kbit/s)...\nHash of data verified.\nCompressed 1444624 bytes to 838880...\nWrote 1444624 bytes (838880 compressed) at 0x00010000 in 13.1 seconds (effective 881.2 kbit/s)...\nHash of data verified.\n\nLeaving...\nHard resetting via RTS pin...\n")])])])]),e._v(" "),o("li",[o("p",[e._v("The board resets after the upload and boots the gateway firmware")])])]),e._v(" "),o("h3",{attrs:{id:"mac-esptool-py"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mac-esptool-py"}},[e._v("#")]),e._v(" Mac - esptool.py")]),e._v(" "),o("p",[e._v("The approach for Mac is similiar to Linux. You need to install "),o("a",{attrs:{href:"https://brew.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("Brew"),o("OutboundLink")],1),e._v(" for Mac to use "),o("a",{attrs:{href:"https://docs.brew.sh/Homebrew-and-Python",target:"_blank",rel:"noopener noreferrer"}},[e._v("pip"),o("OutboundLink")],1),e._v(".\nThe esptool.py tool needs to be adressed explicitly with .py at the end.\nIf you do fail with the command, run "),o("code",[e._v("esptool.py chip_id")]),e._v(" to let your Mac check for the ESP32 on your serial ports. A common failure for this looks like this:")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v(" A fatal error occurred: Unable to verify flash chip connection (Invalid head of packet (0xE0): Possible serial noise or corruption.).\n")])])]),o("p",[e._v("If you receive this error")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v(" A fatal error occurred: Unable to verify flash chip connection (Packet content transfer stopped (received 7 bytes)).\n")])])]),o("p",[e._v("while flashing, try to reduce the baud rate to "),o("code",[e._v("--baud 115200")]),e._v(", as this seems to help in most cases.")]),e._v(" "),o("h2",{attrs:{id:"esp8266"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#esp8266"}},[e._v("#")]),e._v(" ESP8266")]),e._v(" "),o("ul",[o("li",[e._v("Download the NodeMCU Py Flasher tool :\nhttps://github.com/marcelstoer/nodemcu-pyflasher/releases")]),e._v(" "),o("li",[e._v("Execute "),o("code",[e._v("NodeMCU-PyFlasher")])]),e._v(" "),o("li",[e._v("Set the files and parameters as below:\n"),o("img",{attrs:{src:t(392),alt:"NodeMCU Py Flasher"}})]),e._v(" "),o("li",[e._v("Connect your board and select the COM port")]),e._v(" "),o("li",[e._v("Click on "),o("em",[e._v("FlashNodeMCU")]),e._v("\nThe upload details appears.")])]),e._v(" "),o("p",[e._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),o("RouterLink",{attrs:{to:"/upload/portal.html"}},[e._v("web portal configuration")]),e._v(".")],1),e._v(" "),o("p",[e._v("Note that to reset the wifi and MQTT settings you can check "),o("em",[e._v("yes, wipes all data")])]),e._v(" "),o("p",[o("a",{attrs:{href:"https://hits.seeyoufarm.com",target:"_blank",rel:"noopener noreferrer"}},[o("img",{attrs:{src:"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fdocs.openmqttgateway.com%2Fupload%2Fbinaries.html&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false",alt:"Hits"}}),o("OutboundLink")],1)])])}),[],!1,null,null,null);o.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{388:function(e,o,t){e.exports=t.p+"assets/img/OpenMQTTgateway_ESP32_binary_flash.7efd1e03.png"},389:function(e,o,t){e.exports=t.p+"assets/img/OpenMQTTgateway_ESP32_binary_flash2.d1b14293.png"},390:function(e,o,t){e.exports=t.p+"assets/img/OpenMQTTgateway_NodeMCU_PyFlasher.050597e1.png"},450:function(e,o,t){"use strict";t.r(o);var a=t(14),s=Object(a.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"option-2-upload-ready-to-go-binaries"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#option-2-upload-ready-to-go-binaries"}},[e._v("#")]),e._v(" (Option 2) Upload ready-to-go binaries")]),e._v(" "),o("p",[e._v("This section is useful if you want to directly flash your ESP from your desktop. Once flashed you can change wifi and broker settings.\nNevertheless you will not be able to change advanced parameters; if you want to do so, refer to "),o("RouterLink",{attrs:{to:"/upload/builds.html"}},[e._v("Upload your configurations")]),e._v(" section.")],1),e._v(" "),o("p",[e._v("Download the binary corresponding to your board and gateway "),o("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1),e._v(" from github and uncompress it.")]),e._v(" "),o("h2",{attrs:{id:"esp32"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#esp32"}},[e._v("#")]),e._v(" ESP32")]),e._v(" "),o("ul",[o("li",[e._v("Download the bootloader "),o("a",{attrs:{href:"https://github.com/espressif/arduino-esp32/raw/2.0.5/tools/sdk/esp32/bin/bootloader_dio_80m.bin",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Download the boot_app0 from "),o("a",{attrs:{href:"https://github.com/espressif/arduino-esp32/raw/2.0.5/tools/partitions/boot_app0.bin",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),o("OutboundLink")],1)]),e._v(" "),o("li",[e._v("Download the flash tool utility from espressif:\nhttps://www.espressif.com/en/products/hardware/esp32/resources")]),e._v(" "),o("li",[e._v("Uncompress the package")]),e._v(" "),o("li",[e._v("Execute "),o("code",[e._v("flash_download_tools")])]),e._v(" "),o("li",[e._v("Choose Developer mode")]),e._v(" "),o("li",[e._v("Choose ESP32 DownloadTool")]),e._v(" "),o("li",[e._v("Set the files and the address as below:\n"),o("img",{attrs:{src:t(388),alt:"Flash download tool"}})]),e._v(" "),o("li",[e._v("Set the config as above")]),e._v(" "),o("li",[e._v("Connect your ESP32 board and select the COM port")]),e._v(" "),o("li",[e._v("Click on erase if it is your first upload")]),e._v(" "),o("li",[e._v("If you see SYNC (above the START button) for more than 5 seconds, press the boot button of your ESP32")]),e._v(" "),o("li",[e._v("Once done you can click on START button")]),e._v(" "),o("li",[e._v("If you see SYNC (above the START button) for more than 5 seconds, press the boot button of your ESP32\nThe upload details appears in the rear shell windows, you can see also the progress bar changing.")]),e._v(" "),o("li",[e._v('Once done the flash tool display "FINISH" like below\n'),o("img",{attrs:{src:t(389),alt:"Flash download tool 2"}})])]),e._v(" "),o("h3",{attrs:{id:"linux-esptool-py"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#linux-esptool-py"}},[e._v("#")]),e._v(" Linux - esptool.py")]),e._v(" "),o("p",[e._v("If you want to upload the ready-to-go binary from Linux (or any other OS where you have Python) you can use the "),o("a",{attrs:{href:"https://github.com/espressif/esptool",target:"_blank",rel:"noopener noreferrer"}},[e._v("esptool.py"),o("OutboundLink")],1),e._v(". This an official Python based flashing tool from Espressif for ESP82XX and ESP32.")]),e._v(" "),o("ul",[o("li",[o("p",[e._v("Install esptool from PyPI via pip: "),o("code",[e._v("pip install esptool")]),e._v(" (or using the python package manager of your choice)")])]),e._v(" "),o("li",[o("p",[e._v("Now you should be able to run "),o("code",[e._v("esptool.py -h")]),e._v(" to see a summary of all available commands, command line options and verify the installation")])]),e._v(" "),o("li",[o("p",[e._v("Download the bootloader, boot_app0 and the binary for your board from the respective links "),o("a",{attrs:{href:"#esp32"}},[e._v("above")])])]),e._v(" "),o("li",[o("p",[e._v("Use the below command to upload the binary files to the board (change file names and serial port as needed, for Windows use port number e.g.: "),o("code",[e._v("COM4")]),e._v("):")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("esptool.py --port /dev/ttyUSB0 --chip esp32 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader_dio_80m.bin 0x8000 esp32dev-ble-cont-partitions.bin 0x10000 esp32dev-ble-cont-firmware.bin\n")])])])]),e._v(" "),o("li",[o("p",[e._v("Output for a successful upload should look like this:")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v("esptool.py v2.8\nSerial port /dev/ttyUSB0\nConnecting.....\nChip is ESP32D0WDQ6 (revision 1)\nFeatures: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None\nCrystal is 40MHz\nMAC: 30:ae:a4:ff:48:14\nUploading stub...\nRunning stub...\nStub running...\nChanging baud rate to 921600\nChanged.\nConfiguring flash size...\nAuto-detected Flash size: 4MB\nCompressed 8192 bytes to 47...\nWrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 15741.5 kbit/s)...\nHash of data verified.\nFlash params set to 0x0320\nCompressed 17312 bytes to 11972...\nWrote 17312 bytes (11972 compressed) at 0x00001000 in 0.2 seconds (effective 903.1 kbit/s)...\nHash of data verified.\nCompressed 3072 bytes to 129...\nWrote 3072 bytes (129 compressed) at 0x00008000 in 0.0 seconds (effective 5168.4 kbit/s)...\nHash of data verified.\nCompressed 1444624 bytes to 838880...\nWrote 1444624 bytes (838880 compressed) at 0x00010000 in 13.1 seconds (effective 881.2 kbit/s)...\nHash of data verified.\n\nLeaving...\nHard resetting via RTS pin...\n")])])])]),e._v(" "),o("li",[o("p",[e._v("The board resets after the upload and boots the gateway firmware")])])]),e._v(" "),o("h3",{attrs:{id:"mac-esptool-py"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#mac-esptool-py"}},[e._v("#")]),e._v(" Mac - esptool.py")]),e._v(" "),o("p",[e._v("The approach for Mac is similiar to Linux. You need to install "),o("a",{attrs:{href:"https://brew.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("Brew"),o("OutboundLink")],1),e._v(" for Mac to use "),o("a",{attrs:{href:"https://docs.brew.sh/Homebrew-and-Python",target:"_blank",rel:"noopener noreferrer"}},[e._v("pip"),o("OutboundLink")],1),e._v(".\nThe esptool.py tool needs to be adressed explicitly with .py at the end.\nIf you do fail with the command, run "),o("code",[e._v("esptool.py chip_id")]),e._v(" to let your Mac check for the ESP32 on your serial ports. A common failure for this looks like this:")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v(" A fatal error occurred: Unable to verify flash chip connection (Invalid head of packet (0xE0): Possible serial noise or corruption.).\n")])])]),o("p",[e._v("If you receive this error")]),e._v(" "),o("div",{staticClass:"language- extra-class"},[o("pre",[o("code",[e._v(" A fatal error occurred: Unable to verify flash chip connection (Packet content transfer stopped (received 7 bytes)).\n")])])]),o("p",[e._v("while flashing, try to reduce the baud rate to "),o("code",[e._v("--baud 115200")]),e._v(", as this seems to help in most cases.")]),e._v(" "),o("h2",{attrs:{id:"esp8266"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#esp8266"}},[e._v("#")]),e._v(" ESP8266")]),e._v(" "),o("ul",[o("li",[e._v("Download the NodeMCU Py Flasher tool :\nhttps://github.com/marcelstoer/nodemcu-pyflasher/releases")]),e._v(" "),o("li",[e._v("Execute "),o("code",[e._v("NodeMCU-PyFlasher")])]),e._v(" "),o("li",[e._v("Set the files and parameters as below:\n"),o("img",{attrs:{src:t(390),alt:"NodeMCU Py Flasher"}})]),e._v(" "),o("li",[e._v("Connect your board and select the COM port")]),e._v(" "),o("li",[e._v("Click on "),o("em",[e._v("FlashNodeMCU")]),e._v("\nThe upload details appears.")])]),e._v(" "),o("p",[e._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),o("RouterLink",{attrs:{to:"/upload/portal.html"}},[e._v("web portal configuration")]),e._v(".")],1),e._v(" "),o("p",[e._v("Note that to reset the wifi and MQTT settings you can check "),o("em",[e._v("yes, wipes all data")])]),e._v(" "),o("p",[o("a",{attrs:{href:"https://hits.seeyoufarm.com",target:"_blank",rel:"noopener noreferrer"}},[o("img",{attrs:{src:"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fdocs.openmqttgateway.com%2Fupload%2Fbinaries.html&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false",alt:"Hits"}}),o("OutboundLink")],1)])])}),[],!1,null,null,null);o.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/33.9be368aa.js b/dev/assets/js/33.d1f71bc6.js similarity index 90% rename from dev/assets/js/33.9be368aa.js rename to dev/assets/js/33.d1f71bc6.js index fba16fb1..14343e09 100644 --- a/dev/assets/js/33.9be368aa.js +++ b/dev/assets/js/33.d1f71bc6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{267:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.7a6039b8.png"},376:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Atom_Board.043db6b5.png"},442:function(t,a,e){"use strict";e.r(a);var s=e(14),r=Object(s.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"ble-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ble-gateway"}},[t._v("#")]),t._v(" BLE gateway")]),t._v(" "),a("h2",{attrs:{id:"compatible-parts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),a("p",[a("strong",[t._v("The ESP32 has an integrated BLE module")]),t._v(", with this board the BLE gateway don't need any additional hardware. Making it the "),a("strong",[t._v("advised board for BLE")]),t._v(".")]),t._v(" "),a("p",[t._v("You can use a barebone ESP32 or some nice looking products like the ones below (from M5Stack):")]),t._v(" "),a("p",[a("img",{attrs:{src:e(376),alt:"M5 Atom"}}),t._v(" "),a("img",{attrs:{src:e(267),alt:"M5 Stack Core"}})]),t._v(" "),a("p",[t._v("For Arduino and ESP8266, we previously used HM10, this module is no longer supported by OpenMQTTGateway, prefer an ESP32.")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{267:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.7a6039b8.png"},380:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Atom_Board.043db6b5.png"},442:function(t,a,e){"use strict";e.r(a);var s=e(14),r=Object(s.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"ble-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ble-gateway"}},[t._v("#")]),t._v(" BLE gateway")]),t._v(" "),a("h2",{attrs:{id:"compatible-parts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),a("p",[a("strong",[t._v("The ESP32 has an integrated BLE module")]),t._v(", with this board the BLE gateway don't need any additional hardware. Making it the "),a("strong",[t._v("advised board for BLE")]),t._v(".")]),t._v(" "),a("p",[t._v("You can use a barebone ESP32 or some nice looking products like the ones below (from M5Stack):")]),t._v(" "),a("p",[a("img",{attrs:{src:e(380),alt:"M5 Atom"}}),t._v(" "),a("img",{attrs:{src:e(267),alt:"M5 Stack Core"}})]),t._v(" "),a("p",[t._v("For Arduino and ESP8266, we previously used HM10, this module is no longer supported by OpenMQTTGateway, prefer an ESP32.")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/34.2a7f60b2.js b/dev/assets/js/34.1144d4cf.js similarity index 92% rename from dev/assets/js/34.2a7f60b2.js rename to dev/assets/js/34.1144d4cf.js index 4b46d4b7..724ea8b8 100644 --- a/dev/assets/js/34.2a7f60b2.js +++ b/dev/assets/js/34.1144d4cf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{381:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_IR.7e5f71ea.png"},382:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_IR.18c7f044.png"},444:function(t,e,r){"use strict";r.r(e);var a=r(14),s=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ir-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ir-gateway"}},[t._v("#")]),t._v(" IR gateway")]),t._v(" "),e("h2",{attrs:{id:"compatible-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module")]),t._v(" "),e("th",[t._v("Purpose")]),t._v(" "),e("th",[t._v("Where to Buy")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("IR diode")]),t._v(" "),e("td",[t._v("Emitting")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("IR receiver")]),t._v(" "),e("td",[t._v("Receiving")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("transistor 2N2222")]),t._v(" "),e("td",[t._v("Amplify uC signal for the IR diode")]),t._v(" "),e("td",[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("330 ohms resistor")]),t._v(" "),e("td",[t._v("-")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("220 ohms resistor")]),t._v(" "),e("td",[t._v("limit current to LED")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])])])]),t._v(" "),e("p",[t._v("The IR setup can work with bc547 and a 4x3 LED-Matrix.")]),t._v(" "),e("h2",{attrs:{id:"pinout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pinout"}},[t._v("#")]),t._v(" Pinout")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Receiver Pin")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Emitter Pin")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D0")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("27/"),e("strong",[t._v("26")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("14")])])])]),t._v(" "),e("p",[t._v("Connect the Emitter and Receiver to a 5V supply source, and the ground of your supply source to the ground of your board.")]),t._v(" "),e("h2",{attrs:{id:"esp8266-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp8266-hardware-setup"}},[t._v("#")]),t._v(" ESP8266 Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(381),alt:"IR"}})]),t._v(" "),e("h2",{attrs:{id:"esp32-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp32-hardware-setup"}},[t._v("#")]),t._v(" ESP32 Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(382),alt:"IR"}})]),t._v(" "),e("h2",{attrs:{id:"credits"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#credits"}},[t._v("#")]),t._v(" Credits")]),t._v(" "),e("p",[t._v("This gateway exists thanks to the work done on "),e("a",{attrs:{href:"https://github.com/z3t0/Arduino-IRremote",target:"_blank",rel:"noopener noreferrer"}},[t._v("IRRemote"),e("OutboundLink")],1),t._v(" and "),e("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266",target:"_blank",rel:"noopener noreferrer"}},[t._v("IRremoteESP8266"),e("OutboundLink")],1),t._v(" libraries. Thanks for the works of contributors and especially "),e("a",{attrs:{href:"https://github.com/crankyoldgit",target:"_blank",rel:"noopener noreferrer"}},[t._v("@crankyoldgit"),e("OutboundLink")],1),t._v(" for its active contributions.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{382:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_IR.7e5f71ea.png"},383:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_IR.18c7f044.png"},445:function(t,e,r){"use strict";r.r(e);var a=r(14),s=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ir-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ir-gateway"}},[t._v("#")]),t._v(" IR gateway")]),t._v(" "),e("h2",{attrs:{id:"compatible-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module")]),t._v(" "),e("th",[t._v("Purpose")]),t._v(" "),e("th",[t._v("Where to Buy")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("IR diode")]),t._v(" "),e("td",[t._v("Emitting")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("IR receiver")]),t._v(" "),e("td",[t._v("Receiving")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("transistor 2N2222")]),t._v(" "),e("td",[t._v("Amplify uC signal for the IR diode")]),t._v(" "),e("td",[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("330 ohms resistor")]),t._v(" "),e("td",[t._v("-")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("220 ohms resistor")]),t._v(" "),e("td",[t._v("limit current to LED")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])])])]),t._v(" "),e("p",[t._v("The IR setup can work with bc547 and a 4x3 LED-Matrix.")]),t._v(" "),e("h2",{attrs:{id:"pinout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pinout"}},[t._v("#")]),t._v(" Pinout")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Receiver Pin")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Emitter Pin")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D0")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("27/"),e("strong",[t._v("26")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("14")])])])]),t._v(" "),e("p",[t._v("Connect the Emitter and Receiver to a 5V supply source, and the ground of your supply source to the ground of your board.")]),t._v(" "),e("h2",{attrs:{id:"esp8266-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp8266-hardware-setup"}},[t._v("#")]),t._v(" ESP8266 Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(382),alt:"IR"}})]),t._v(" "),e("h2",{attrs:{id:"esp32-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp32-hardware-setup"}},[t._v("#")]),t._v(" ESP32 Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(383),alt:"IR"}})]),t._v(" "),e("h2",{attrs:{id:"credits"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#credits"}},[t._v("#")]),t._v(" Credits")]),t._v(" "),e("p",[t._v("This gateway exists thanks to the work done on "),e("a",{attrs:{href:"https://github.com/z3t0/Arduino-IRremote",target:"_blank",rel:"noopener noreferrer"}},[t._v("IRRemote"),e("OutboundLink")],1),t._v(" and "),e("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266",target:"_blank",rel:"noopener noreferrer"}},[t._v("IRremoteESP8266"),e("OutboundLink")],1),t._v(" libraries. Thanks for the works of contributors and especially "),e("a",{attrs:{href:"https://github.com/crankyoldgit",target:"_blank",rel:"noopener noreferrer"}},[t._v("@crankyoldgit"),e("OutboundLink")],1),t._v(" for its active contributions.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/35.de5ccc4f.js b/dev/assets/js/35.790d5635.js similarity index 99% rename from dev/assets/js/35.de5ccc4f.js rename to dev/assets/js/35.790d5635.js index 107b8d5e..438baa73 100644 --- a/dev/assets/js/35.de5ccc4f.js +++ b/dev/assets/js/35.790d5635.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{384:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_RF.4cc8bb49.png"},385:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_RF.7c4ca06a.png"},447:function(t,e,r){"use strict";r.r(e);var a=r(14),s=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"rf-gateway-433mhz-315mhz"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rf-gateway-433mhz-315mhz"}},[t._v("#")]),t._v(" RF gateway (433mhz/315mhz)")]),t._v(" "),e("h2",{attrs:{id:"protocols-modules-and-library"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#protocols-modules-and-library"}},[t._v("#")]),t._v(" Protocols, modules and library")]),t._v(" "),e("p",[t._v("RTL_433 covers OOK protocols detailed "),e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("here")]),t._v(" and supports auto-discovery following Home Assistant convention. The other libraries/modules are more for advanced users.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Protocols")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Assembly/Soldering required")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("Heltec LORA V2 433Mhz")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", receiving only")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("No")])]),t._v(" "),e("tr",[e("td",[t._v("LILYGO® LoRa32 V2.1_1.6.1 433 Mhz")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", receiving only")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("No")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32 + SX127X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", receiving only")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32 + CC1101")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP8266 + Basic RF modules (SRX, STX, XD RF, FS1000A")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP8266 + CC1101 (might have lower range than with SRX/STX above)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32 + Basic RF modules (SRX, STX, XD RF, FS1000A")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])])])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("If you want to try the RTL_433 module with a combination or a board outside of this list, verify that it has an SX1278 or a SX1276")])]),t._v(" "),e("p",[t._v("Heltec LORA V3 is not compatible with RTL_433 library as it is based on an SX1262 module.")]),t._v(" "),e("h2",{attrs:{id:"assembly-soldering-required-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assembly-soldering-required-parts"}},[t._v("#")]),t._v(" Assembly/soldering required parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module")]),t._v(" "),e("th",[t._v("Purpose")]),t._v(" "),e("th",[t._v("Compatible modules")]),t._v(" "),e("th",[t._v("Receiver Switching")]),t._v(" "),e("th",[t._v("Where to Buy")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("SRX882 or SRX882S (recommended)")]),t._v(" "),e("td",[t._v("433Mhz Receiver")]),t._v(" "),e("td",[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",[t._v("Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("STX882 (recommended)")]),t._v(" "),e("td",[t._v("433Mhz Transmitter")]),t._v(" "),e("td",[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",[t._v("Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("CC1101")]),t._v(" "),e("td",[t._v("433Mhz Transceiver")]),t._v(" "),e("td",[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",[t._v("Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("SX1276/SX1278")]),t._v(" "),e("td",[t._v("433Mhz Transceiver")]),t._v(" "),e("td",[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")])]),t._v(" "),e("td",[t._v("Not Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("LilyGo/Heltec")]),t._v(" "),e("td",[t._v("433Mhz Transceiver")]),t._v(" "),e("td",[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")])]),t._v(" "),e("td",[t._v("Not Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])])])]),t._v(" "),e("h3",{attrs:{id:"srx-stx-pinout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#srx-stx-pinout"}},[t._v("#")]),t._v(" SRX STX Pinout")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Receiver Pin")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Emitter Pin")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2/"),e("strong",[t._v("D3")]),t._v("/D1/D8")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("RX")]),t._v("/D2")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("27")]),t._v("/26")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("12")])]),t._v(" "),e("tr",[e("td",[t._v("RF BRIDGE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("RF BRIDGE "),e("a",{attrs:{href:"https://github.com/xoseperez/espurna/wiki/Hardware-Itead-Sonoff-RF-Bridge---Direct-Hack",target:"_blank",rel:"noopener noreferrer"}},[t._v("DIRECT HACK"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("5")])]),t._v(" "),e("tr",[e("td",[t._v("SONOFF RFR3")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("RF WIFI GATEWAY")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])])])]),t._v(" "),e("p",[t._v("Connect the Emitter and Receiver to a 5V or 3.3V supply source, check datasheet of your modules to confirm ("),e("strong",[t._v("3.3V")]),t._v(" for CC1101), and the ground of your supply source to the ground of your board.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("With SRX882S receiver connect the CS pin to 3.3V")])]),t._v(" "),e("h3",{attrs:{id:"cc1101-pinout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cc1101-pinout"}},[t._v("#")]),t._v(" CC1101 Pinout")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Receiver Pin(GDO2)")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Emitter Pin(GDO0)")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("SCK")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("VCC")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("MOSI")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("MISO")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("CSN")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("GND")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2/"),e("strong",[t._v("D3")]),t._v("/D1/D8")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("RX")]),t._v("/D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("3V3")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D7")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D6")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D8")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("GND")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("D27")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D12")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D18")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("3V3")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D23")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D19")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("GND")])])])]),t._v(" "),e("p",[t._v("To use the CC1101 module, "),e("code",[t._v("ZradioCC1101")]),t._v(" must be uncomment in the "),e("code",[t._v("User_config.h")]),t._v(" or added to the "),e("code",[t._v("build_flags")]),t._v(".\nMore information about the "),e("a",{attrs:{href:"https://github.com/LSatan/SmartRC-CC1101-Driver-Lib#wiring",target:"_blank",rel:"noopener noreferrer"}},[t._v("CC1101 wiring"),e("OutboundLink")],1),t._v(". ( Please note that with OMG we are recommending CC1101 GDO2 to be connected to ESP32 D27 and GDO0 to be connected to D12, this is different than the LSatan diagram. This is due to the ESP32 using D2 as part of the boot process. )")]),t._v(" "),e("h2",{attrs:{id:"esp32-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp32-hardware-setup"}},[t._v("#")]),t._v(" ESP32 Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(384),alt:"Addon_RF"}})]),t._v(" "),e("h2",{attrs:{id:"esp8266-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp8266-hardware-setup"}},[t._v("#")]),t._v(" ESP8266 Hardware setup")]),t._v(" "),e("p",[t._v("If the gateway works only when serial monitor is connected don't use D3 use D2 instead (gpio 4) and modify config_RF.h accordingly.")]),t._v(" "),e("p",[t._v("With SRX882 some users reported that D3 is not working use D1 instead in this case and modify config_RF.h accordingly.")]),t._v(" "),e("p",[e("img",{attrs:{src:r(385),alt:"Addon_RF"}})]),t._v(" "),e("h2",{attrs:{id:"sonoff-rf-bridge-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sonoff-rf-bridge-hardware-setup"}},[t._v("#")]),t._v(" SONOFF RF Bridge Hardware setup")]),t._v(" "),e("p",[t._v("Per default there is no need on modifying the RF Bridge hardware, unless you don't want to use the provided RF controller (EFM8BB1). Indeed if you want to extend the protocols supported by the bridge you can "),e("a",{attrs:{href:"https://github.com/xoseperez/espurna/wiki/Hardware-Itead-Sonoff-RF-Bridge---Direct-Hack",target:"_blank",rel:"noopener noreferrer"}},[t._v("bypass this controller"),e("OutboundLink")],1),t._v(" and use the ESP8255 capacities to decode RF Signal.\nThe RF processing can be achieved after the modification by either RF, RF2 or Pilight gateways.")]),t._v(" "),e("h2",{attrs:{id:"sonoff-rfr3-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sonoff-rfr3-hardware-setup"}},[t._v("#")]),t._v(" SONOFF RFR3 Hardware setup")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://1technophile.blogspot.com/2019/08/new-sonoff-rfr3-as-433tomqtt-gateway.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Connect GPIO4 of the ESP8255 to the pin D0 of SYN470"),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"wifi-rf-gateway-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#wifi-rf-gateway-hardware-setup"}},[t._v("#")]),t._v(" WIFI RF GATEWAY Hardware setup")]),t._v(" "),e("p",[t._v("This board doesn't require any hardware modifications.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{384:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_RF.4cc8bb49.png"},385:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_RF.7c4ca06a.png"},446:function(t,e,r){"use strict";r.r(e);var a=r(14),s=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"rf-gateway-433mhz-315mhz"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rf-gateway-433mhz-315mhz"}},[t._v("#")]),t._v(" RF gateway (433mhz/315mhz)")]),t._v(" "),e("h2",{attrs:{id:"protocols-modules-and-library"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#protocols-modules-and-library"}},[t._v("#")]),t._v(" Protocols, modules and library")]),t._v(" "),e("p",[t._v("RTL_433 covers OOK protocols detailed "),e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("here")]),t._v(" and supports auto-discovery following Home Assistant convention. The other libraries/modules are more for advanced users.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Protocols")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Assembly/Soldering required")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("Heltec LORA V2 433Mhz")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", receiving only")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("No")])]),t._v(" "),e("tr",[e("td",[t._v("LILYGO® LoRa32 V2.1_1.6.1 433 Mhz")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", receiving only")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("No")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32 + SX127X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", receiving only")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32 + CC1101")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP8266 + Basic RF modules (SRX, STX, XD RF, FS1000A")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP8266 + CC1101 (might have lower range than with SRX/STX above)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32 + Basic RF modules (SRX, STX, XD RF, FS1000A")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Yes")])])])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("If you want to try the RTL_433 module with a combination or a board outside of this list, verify that it has an SX1278 or a SX1276")])]),t._v(" "),e("p",[t._v("Heltec LORA V3 is not compatible with RTL_433 library as it is based on an SX1262 module.")]),t._v(" "),e("h2",{attrs:{id:"assembly-soldering-required-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assembly-soldering-required-parts"}},[t._v("#")]),t._v(" Assembly/soldering required parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module")]),t._v(" "),e("th",[t._v("Purpose")]),t._v(" "),e("th",[t._v("Compatible modules")]),t._v(" "),e("th",[t._v("Receiver Switching")]),t._v(" "),e("th",[t._v("Where to Buy")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("SRX882 or SRX882S (recommended)")]),t._v(" "),e("td",[t._v("433Mhz Receiver")]),t._v(" "),e("td",[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",[t._v("Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("STX882 (recommended)")]),t._v(" "),e("td",[t._v("433Mhz Transmitter")]),t._v(" "),e("td",[t._v("RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",[t._v("Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("CC1101")]),t._v(" "),e("td",[t._v("433Mhz Transceiver")]),t._v(" "),e("td",[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")]),t._v(", RF(RCSwitch), RF2(KaKu), Pilight")]),t._v(" "),e("td",[t._v("Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("SX1276/SX1278")]),t._v(" "),e("td",[t._v("433Mhz Transceiver")]),t._v(" "),e("td",[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")])]),t._v(" "),e("td",[t._v("Not Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("LilyGo/Heltec")]),t._v(" "),e("td",[t._v("433Mhz Transceiver")]),t._v(" "),e("td",[e("a",{attrs:{href:"../use/rf#supported-decoders"}},[t._v("RTL_433")])]),t._v(" "),e("td",[t._v("Not Supported")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])])])]),t._v(" "),e("h3",{attrs:{id:"srx-stx-pinout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#srx-stx-pinout"}},[t._v("#")]),t._v(" SRX STX Pinout")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Receiver Pin")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Emitter Pin")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2/"),e("strong",[t._v("D3")]),t._v("/D1/D8")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("RX")]),t._v("/D2")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("27")]),t._v("/26")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("12")])]),t._v(" "),e("tr",[e("td",[t._v("RF BRIDGE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("RF BRIDGE "),e("a",{attrs:{href:"https://github.com/xoseperez/espurna/wiki/Hardware-Itead-Sonoff-RF-Bridge---Direct-Hack",target:"_blank",rel:"noopener noreferrer"}},[t._v("DIRECT HACK"),e("OutboundLink")],1)]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("5")])]),t._v(" "),e("tr",[e("td",[t._v("SONOFF RFR3")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("RF WIFI GATEWAY")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])])])]),t._v(" "),e("p",[t._v("Connect the Emitter and Receiver to a 5V or 3.3V supply source, check datasheet of your modules to confirm ("),e("strong",[t._v("3.3V")]),t._v(" for CC1101), and the ground of your supply source to the ground of your board.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("With SRX882S receiver connect the CS pin to 3.3V")])]),t._v(" "),e("h3",{attrs:{id:"cc1101-pinout"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cc1101-pinout"}},[t._v("#")]),t._v(" CC1101 Pinout")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Board")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Receiver Pin(GDO2)")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Emitter Pin(GDO0)")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("SCK")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("VCC")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("MOSI")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("MISO")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("CSN")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("GND")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2/"),e("strong",[t._v("D3")]),t._v("/D1/D8")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("RX")]),t._v("/D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("3V3")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D7")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D6")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D8")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("GND")])]),t._v(" "),e("tr",[e("td",[t._v("ESP32")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("D27")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D12")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D18")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("3V3")])]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D23")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D19")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("GND")])])])]),t._v(" "),e("p",[t._v("To use the CC1101 module, "),e("code",[t._v("ZradioCC1101")]),t._v(" must be uncomment in the "),e("code",[t._v("User_config.h")]),t._v(" or added to the "),e("code",[t._v("build_flags")]),t._v(".\nMore information about the "),e("a",{attrs:{href:"https://github.com/LSatan/SmartRC-CC1101-Driver-Lib#wiring",target:"_blank",rel:"noopener noreferrer"}},[t._v("CC1101 wiring"),e("OutboundLink")],1),t._v(". ( Please note that with OMG we are recommending CC1101 GDO2 to be connected to ESP32 D27 and GDO0 to be connected to D12, this is different than the LSatan diagram. This is due to the ESP32 using D2 as part of the boot process. )")]),t._v(" "),e("h2",{attrs:{id:"esp32-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp32-hardware-setup"}},[t._v("#")]),t._v(" ESP32 Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(384),alt:"Addon_RF"}})]),t._v(" "),e("h2",{attrs:{id:"esp8266-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#esp8266-hardware-setup"}},[t._v("#")]),t._v(" ESP8266 Hardware setup")]),t._v(" "),e("p",[t._v("If the gateway works only when serial monitor is connected don't use D3 use D2 instead (gpio 4) and modify config_RF.h accordingly.")]),t._v(" "),e("p",[t._v("With SRX882 some users reported that D3 is not working use D1 instead in this case and modify config_RF.h accordingly.")]),t._v(" "),e("p",[e("img",{attrs:{src:r(385),alt:"Addon_RF"}})]),t._v(" "),e("h2",{attrs:{id:"sonoff-rf-bridge-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sonoff-rf-bridge-hardware-setup"}},[t._v("#")]),t._v(" SONOFF RF Bridge Hardware setup")]),t._v(" "),e("p",[t._v("Per default there is no need on modifying the RF Bridge hardware, unless you don't want to use the provided RF controller (EFM8BB1). Indeed if you want to extend the protocols supported by the bridge you can "),e("a",{attrs:{href:"https://github.com/xoseperez/espurna/wiki/Hardware-Itead-Sonoff-RF-Bridge---Direct-Hack",target:"_blank",rel:"noopener noreferrer"}},[t._v("bypass this controller"),e("OutboundLink")],1),t._v(" and use the ESP8255 capacities to decode RF Signal.\nThe RF processing can be achieved after the modification by either RF, RF2 or Pilight gateways.")]),t._v(" "),e("h2",{attrs:{id:"sonoff-rfr3-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#sonoff-rfr3-hardware-setup"}},[t._v("#")]),t._v(" SONOFF RFR3 Hardware setup")]),t._v(" "),e("p",[e("a",{attrs:{href:"https://1technophile.blogspot.com/2019/08/new-sonoff-rfr3-as-433tomqtt-gateway.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Connect GPIO4 of the ESP8255 to the pin D0 of SYN470"),e("OutboundLink")],1)]),t._v(" "),e("h2",{attrs:{id:"wifi-rf-gateway-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#wifi-rf-gateway-hardware-setup"}},[t._v("#")]),t._v(" WIFI RF GATEWAY Hardware setup")]),t._v(" "),e("p",[t._v("This board doesn't require any hardware modifications.")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/37.8a3f6ff9.js b/dev/assets/js/37.2e8c2d14.js similarity index 99% rename from dev/assets/js/37.8a3f6ff9.js rename to dev/assets/js/37.2e8c2d14.js index fbb6a7bc..b8fde352 100644 --- a/dev/assets/js/37.8a3f6ff9.js +++ b/dev/assets/js/37.2e8c2d14.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{276:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.531a7826.png"},277:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.8980f020.png"},450:function(e,t,a){"use strict";a.r(t);var s=a(14),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"advanced-configuration-of-the-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advanced-configuration-of-the-gateway"}},[e._v("#")]),e._v(" Advanced configuration of the gateway")]),e._v(" "),t("h2",{attrs:{id:"secure-connection-to-the-broker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#secure-connection-to-the-broker"}},[e._v("#")]),e._v(" Secure connection to the broker")]),e._v(" "),t("p",[e._v("By default the connection between the gateway and the MQTT broker is not encrypted and the identity of the broker is not verified.\nFor connections in a private local area network this might not be a big issue, but if you connect to a broker on the internet or the gateway is connected to a public network there is a high security risk.")]),e._v(" "),t("p",[e._v("To secure the connection, Transport Layer Security (TLS) can be used which is supported by most MQTT brokers.\nSetting up and configuring TLS in the MQTT broker is a complex process and perhaps include creating a self-signed certificate.\nThe configuration of the broker is not covered here, you should look into the documentation of your broker.")]),e._v(" "),t("h3",{attrs:{id:"prerequisites"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[e._v("#")]),e._v(" Prerequisites")]),e._v(" "),t("p",[e._v("The MQTT broker is configured for TLS and you have access to the CA certificate which was used to sign the MQTT broker certificate.\nYou are using ESP8266 or ESP32.")]),e._v(" "),t("h3",{attrs:{id:"configure-secure-connection-in-the-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-secure-connection-in-the-gateway"}},[e._v("#")]),e._v(" Configure secure connection in the gateway")]),e._v(" "),t("p",[e._v("To enable the secure connection and use TLS set the "),t("code",[e._v("#define MQTT_DEFAULT_SECURE")]),e._v(" to true at build time, or the "),t("code",[e._v("mqtt secure")]),e._v(" parameter with WiFi Manager or "),t("code",[e._v("mqtt_secure")]),e._v(" with MQTT.\nSet "),t("code",[e._v("MQTT_SERVER")]),e._v(" to the Common Name (CN) of the certificate of the broker.")]),e._v(" "),t("p",[e._v("The server identity can be verified against a certificate or not, if you don't want to use a certicate to verify the server you can uncheck the option "),t("code",[e._v("validate cert")]),e._v(" with WiFi Manager or set "),t("code",[e._v("mqtt_validate")]),e._v(" to "),t("code",[e._v("false")]),e._v(" with MQTT")]),e._v(" "),t("p",[e._v("The CA certificate should be in PEM ascii format.\nIf your CA certificate is not in the correct format or you don't know the format, use "),t("code",[e._v("openssl")]),e._v(" to convert the certificate to the correct format.\nAt build time, in "),t("code",[e._v("main/certs/default_server_cert.h")]),e._v(" replace the "),t("code",[e._v("...")]),e._v(" with the content of your certificate which is between the "),t("code",[e._v("-----BEGIN CERTIFICATE-----")]),e._v(" and "),t("code",[e._v("-----END CERTIFICATE-----")]),e._v(" lines:")]),e._v(" "),t("div",{staticClass:"language-cpp line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" certificate CERT_ATTRIBUTE "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token raw-string string"}},[e._v('R"EOF("\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n")EOF"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("With WiFi Manager copy your certificate from "),t("code",[e._v("-----BEGIN CERTIFICATE-----")]),e._v(" to "),t("code",[e._v("-----END CERTIFICATE-----")]),e._v(" (included) and paste it into the input field:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("This process can also be used for the other certificates, OTA, client key, client certificate if necessary.")]),e._v(" "),t("h2",{attrs:{id:"add-the-received-value-at-the-end-of-the-topic"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#add-the-received-value-at-the-end-of-the-topic"}},[e._v("#")]),e._v(' Add the received "value" at the end of the topic')]),e._v(" "),t("p",[e._v('For the gateways that publish a "value" parameter on the json (RF, IR...), it is possible to concatenate this parameter at the end of the topic.\nSo as to activate this function you need to set '),t("code",[e._v("valueAsATopic")]),e._v(" to true in User_config.h")]),e._v(" "),t("div",{staticClass:"language-cpp line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token macro property"}},[t("span",{pre:!0,attrs:{class:"token directive-hash"}},[e._v("#")]),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("ifndef")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[e._v("valueAsATopic")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token macro property"}},[t("span",{pre:!0,attrs:{class:"token directive-hash"}},[e._v("#")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("valueAsATopic")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// define true to integrate msg value into the subject when receiving")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token macro property"}},[t("span",{pre:!0,attrs:{class:"token directive-hash"}},[e._v("#")]),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("endif")])]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("Per default you see the following data:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('home/OpenMQTTGateway/SRFBtoMQTT {"raw":"2B660186042E00E7E5","value":"59365","delay":"1111","val_Thigh":"390","val_Tlow":"1070"}\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("With the line uncommented you will see:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('home/OpenMQTTGateway/SRFBtoMQTT/59365 {"raw":"2B660186042E00E7E5","value":"59365","delay":"1111","val_Thigh":"390","val_Tlow":"1070"}\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("It can be useful to avoid warning or errors on certain controllers.")]),e._v(" "),t("h2",{attrs:{id:"auto-discovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery"}},[e._v("#")]),e._v(" Auto discovery")]),e._v(" "),t("p",[e._v("Home Assistant discovery is enabled by default on all binaries and platformio configurations.")]),e._v(" "),t("p",[e._v("To have a working discovery setup you need to enable it on your MQTT integration definition in HASS.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("With platformio you can deactivate discovery by adding:")]),e._v(" "),t("div",{staticClass:"language-ini line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-UZmqttDiscovery")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"HADiscovery"\'')]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("To your environment definition.")])]),e._v(" "),t("p",[e._v("So as to create the MQTT username and password, you have to create a new user(recommended) into Home Assistant->Configuration->Users (available in admin mode) or use an existing username/pwd combination (not recommended). This user doesn't need to be an administrator.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(276),alt:"MQTT User"}})]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("The max size of the username is 30 and 60 for the password.")])]),e._v(" "),t("p",[e._v("OMG will use the auto discovery functionality of home assistant to create sensors and gateways into your HASS instance automatically.")]),e._v(" "),t("p",[e._v("The gateway device will be available into Configuration->Devices section of Home Assistant.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(277),alt:"MQTT Device settings"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{276:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.531a7826.png"},277:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.8980f020.png"},453:function(e,t,a){"use strict";a.r(t);var s=a(14),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"advanced-configuration-of-the-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advanced-configuration-of-the-gateway"}},[e._v("#")]),e._v(" Advanced configuration of the gateway")]),e._v(" "),t("h2",{attrs:{id:"secure-connection-to-the-broker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#secure-connection-to-the-broker"}},[e._v("#")]),e._v(" Secure connection to the broker")]),e._v(" "),t("p",[e._v("By default the connection between the gateway and the MQTT broker is not encrypted and the identity of the broker is not verified.\nFor connections in a private local area network this might not be a big issue, but if you connect to a broker on the internet or the gateway is connected to a public network there is a high security risk.")]),e._v(" "),t("p",[e._v("To secure the connection, Transport Layer Security (TLS) can be used which is supported by most MQTT brokers.\nSetting up and configuring TLS in the MQTT broker is a complex process and perhaps include creating a self-signed certificate.\nThe configuration of the broker is not covered here, you should look into the documentation of your broker.")]),e._v(" "),t("h3",{attrs:{id:"prerequisites"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[e._v("#")]),e._v(" Prerequisites")]),e._v(" "),t("p",[e._v("The MQTT broker is configured for TLS and you have access to the CA certificate which was used to sign the MQTT broker certificate.\nYou are using ESP8266 or ESP32.")]),e._v(" "),t("h3",{attrs:{id:"configure-secure-connection-in-the-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-secure-connection-in-the-gateway"}},[e._v("#")]),e._v(" Configure secure connection in the gateway")]),e._v(" "),t("p",[e._v("To enable the secure connection and use TLS set the "),t("code",[e._v("#define MQTT_DEFAULT_SECURE")]),e._v(" to true at build time, or the "),t("code",[e._v("mqtt secure")]),e._v(" parameter with WiFi Manager or "),t("code",[e._v("mqtt_secure")]),e._v(" with MQTT.\nSet "),t("code",[e._v("MQTT_SERVER")]),e._v(" to the Common Name (CN) of the certificate of the broker.")]),e._v(" "),t("p",[e._v("The server identity can be verified against a certificate or not, if you don't want to use a certicate to verify the server you can uncheck the option "),t("code",[e._v("validate cert")]),e._v(" with WiFi Manager or set "),t("code",[e._v("mqtt_validate")]),e._v(" to "),t("code",[e._v("false")]),e._v(" with MQTT")]),e._v(" "),t("p",[e._v("The CA certificate should be in PEM ascii format.\nIf your CA certificate is not in the correct format or you don't know the format, use "),t("code",[e._v("openssl")]),e._v(" to convert the certificate to the correct format.\nAt build time, in "),t("code",[e._v("main/certs/default_server_cert.h")]),e._v(" replace the "),t("code",[e._v("...")]),e._v(" with the content of your certificate which is between the "),t("code",[e._v("-----BEGIN CERTIFICATE-----")]),e._v(" and "),t("code",[e._v("-----END CERTIFICATE-----")]),e._v(" lines:")]),e._v(" "),t("div",{staticClass:"language-cpp line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("const")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("char")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" certificate CERT_ATTRIBUTE "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token raw-string string"}},[e._v('R"EOF("\n-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n")EOF"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("With WiFi Manager copy your certificate from "),t("code",[e._v("-----BEGIN CERTIFICATE-----")]),e._v(" to "),t("code",[e._v("-----END CERTIFICATE-----")]),e._v(" (included) and paste it into the input field:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("This process can also be used for the other certificates, OTA, client key, client certificate if necessary.")]),e._v(" "),t("h2",{attrs:{id:"add-the-received-value-at-the-end-of-the-topic"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#add-the-received-value-at-the-end-of-the-topic"}},[e._v("#")]),e._v(' Add the received "value" at the end of the topic')]),e._v(" "),t("p",[e._v('For the gateways that publish a "value" parameter on the json (RF, IR...), it is possible to concatenate this parameter at the end of the topic.\nSo as to activate this function you need to set '),t("code",[e._v("valueAsATopic")]),e._v(" to true in User_config.h")]),e._v(" "),t("div",{staticClass:"language-cpp line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[t("span",{pre:!0,attrs:{class:"token macro property"}},[t("span",{pre:!0,attrs:{class:"token directive-hash"}},[e._v("#")]),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("ifndef")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[e._v("valueAsATopic")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token macro property"}},[t("span",{pre:!0,attrs:{class:"token directive-hash"}},[e._v("#")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("valueAsATopic")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("false")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// define true to integrate msg value into the subject when receiving")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token macro property"}},[t("span",{pre:!0,attrs:{class:"token directive-hash"}},[e._v("#")]),t("span",{pre:!0,attrs:{class:"token directive keyword"}},[e._v("endif")])]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("Per default you see the following data:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('home/OpenMQTTGateway/SRFBtoMQTT {"raw":"2B660186042E00E7E5","value":"59365","delay":"1111","val_Thigh":"390","val_Tlow":"1070"}\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("With the line uncommented you will see:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('home/OpenMQTTGateway/SRFBtoMQTT/59365 {"raw":"2B660186042E00E7E5","value":"59365","delay":"1111","val_Thigh":"390","val_Tlow":"1070"}\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("It can be useful to avoid warning or errors on certain controllers.")]),e._v(" "),t("h2",{attrs:{id:"auto-discovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery"}},[e._v("#")]),e._v(" Auto discovery")]),e._v(" "),t("p",[e._v("Home Assistant discovery is enabled by default on all binaries and platformio configurations.")]),e._v(" "),t("p",[e._v("To have a working discovery setup you need to enable it on your MQTT integration definition in HASS.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("With platformio you can deactivate discovery by adding:")]),e._v(" "),t("div",{staticClass:"language-ini line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-UZmqttDiscovery")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"HADiscovery"\'')]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("To your environment definition.")])]),e._v(" "),t("p",[e._v("So as to create the MQTT username and password, you have to create a new user(recommended) into Home Assistant->Configuration->Users (available in admin mode) or use an existing username/pwd combination (not recommended). This user doesn't need to be an administrator.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(276),alt:"MQTT User"}})]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("The max size of the username is 30 and 60 for the password.")])]),e._v(" "),t("p",[e._v("OMG will use the auto discovery functionality of home assistant to create sensors and gateways into your HASS instance automatically.")]),e._v(" "),t("p",[e._v("The gateway device will be available into Configuration->Devices section of Home Assistant.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(277),alt:"MQTT Device settings"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/38.fed67d25.js b/dev/assets/js/38.55a68009.js similarity index 86% rename from dev/assets/js/38.fed67d25.js rename to dev/assets/js/38.55a68009.js index 99ad2a2f..3bedac37 100644 --- a/dev/assets/js/38.fed67d25.js +++ b/dev/assets/js/38.55a68009.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{388:function(t,e,o){t.exports=o.p+"assets/img/OpenMQTTGateway-Build-gitpod-env.10d54621.png"},389:function(t,e,o){t.exports=o.p+"assets/img/OpenMQTTGateway-Build-gitpod.70f041ae.png"},451:function(t,e,o){"use strict";o.r(e);var n=o(14),i=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"option-4-build-from-the-web"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-4-build-from-the-web"}},[t._v("#")]),t._v(" (Option 4) Build from the web")]),t._v(" "),e("p",[t._v("To build OpenMQTTGateway from the web and download the binary, follow these steps:")]),t._v(" "),e("ol",[e("li",[e("p",[t._v("Use Gitpod by clicking on the link below:\n"),e("a",{attrs:{href:"https://gitpod.io#https://github.com/1technophile/OpenMQTTGateway/tree/development",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://gitpod.io#https://github.com/1technophile/OpenMQTTGateway/tree/development"),e("OutboundLink")],1)])]),t._v(" "),e("li",[e("p",[t._v("This will generate a development environment in your browser and install "),e("a",{attrs:{href:"https://platformio.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("platformio"),e("OutboundLink")],1),t._v(" as a build environment.")])]),t._v(" "),e("li",[e("p",[t._v("A first build for "),e("code",[t._v("esp32dev-ble")]),t._v(" will be launched automatically. To modify the environment configuration, go to the environments.ini file in the root folder and launch the command like the one shown at the bottom of the image below:\n"),e("code",[t._v("platformio run -e ")])])])]),t._v(" "),e("p",[e("img",{attrs:{src:o(388),alt:"Gitpod build success"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[e("p",[t._v("Wait for the server to build the binary. Once you see [SUCCESS], you can go to "),e("code",[t._v(".pio/build/")]),t._v(" and download "),e("code",[t._v("firmware.bin")]),t._v(" and "),e("code",[t._v("partitions.bin")]),t._v(' by right-clicking on each and selecting "Download."\n'),e("img",{attrs:{src:o(389),alt:"Gitpod build download"}})])]),t._v(" "),e("li",[e("p",[t._v("Finally, follow "),e("RouterLink",{attrs:{to:"/upload/binaries.html"}},[t._v("Option 2")]),t._v(" to upload the binary.")],1)])])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{391:function(t,e,o){t.exports=o.p+"assets/img/OpenMQTTGateway-Build-gitpod-env.10d54621.png"},392:function(t,e,o){t.exports=o.p+"assets/img/OpenMQTTGateway-Build-gitpod.70f041ae.png"},452:function(t,e,o){"use strict";o.r(e);var n=o(14),i=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"option-4-build-from-the-web"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-4-build-from-the-web"}},[t._v("#")]),t._v(" (Option 4) Build from the web")]),t._v(" "),e("p",[t._v("To build OpenMQTTGateway from the web and download the binary, follow these steps:")]),t._v(" "),e("ol",[e("li",[e("p",[t._v("Use Gitpod by clicking on the link below:\n"),e("a",{attrs:{href:"https://gitpod.io#https://github.com/1technophile/OpenMQTTGateway/tree/development",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://gitpod.io#https://github.com/1technophile/OpenMQTTGateway/tree/development"),e("OutboundLink")],1)])]),t._v(" "),e("li",[e("p",[t._v("This will generate a development environment in your browser and install "),e("a",{attrs:{href:"https://platformio.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("platformio"),e("OutboundLink")],1),t._v(" as a build environment.")])]),t._v(" "),e("li",[e("p",[t._v("A first build for "),e("code",[t._v("esp32dev-ble")]),t._v(" will be launched automatically. To modify the environment configuration, go to the environments.ini file in the root folder and launch the command like the one shown at the bottom of the image below:\n"),e("code",[t._v("platformio run -e ")])])])]),t._v(" "),e("p",[e("img",{attrs:{src:o(391),alt:"Gitpod build success"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[e("p",[t._v("Wait for the server to build the binary. Once you see [SUCCESS], you can go to "),e("code",[t._v(".pio/build/")]),t._v(" and download "),e("code",[t._v("firmware.bin")]),t._v(" and "),e("code",[t._v("partitions.bin")]),t._v(' by right-clicking on each and selecting "Download."\n'),e("img",{attrs:{src:o(392),alt:"Gitpod build download"}})])]),t._v(" "),e("li",[e("p",[t._v("Finally, follow "),e("RouterLink",{attrs:{to:"/upload/binaries.html"}},[t._v("Option 2")]),t._v(" to upload the binary.")],1)])])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/40.eb26a150.js b/dev/assets/js/40.54f66a91.js similarity index 85% rename from dev/assets/js/40.eb26a150.js rename to dev/assets/js/40.54f66a91.js index 11621130..98e62e55 100644 --- a/dev/assets/js/40.eb26a150.js +++ b/dev/assets/js/40.54f66a91.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{405:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_1.80def2ff.jpg"},406:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_2.48b36c44.jpg"},461:function(e,t,a){"use strict";a.r(t);var s=a(14),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"gsm-2g-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gsm-2g-gateway"}},[e._v("#")]),e._v(" GSM 2G gateway")]),e._v(" "),t("h2",{attrs:{id:"receiving-sms-from-2g"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-sms-from-2g"}},[e._v("#")]),e._v(" Receiving SMS from 2G")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:\n"),t("code",[e._v("mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your SMS by sending an SMS to the phone number of the A6/A7 SIM card you will see :")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('home/OpenMQTTGateway/2GtoMQTT {"phone":"+33123456789","date":"2018/04/22,16:17:51+02","message":"Hello OpenMQTTGateway"}\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("h2",{attrs:{id:"send-data-by-mqtt-to-send-an-sms-message-with-a6-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-send-an-sms-message-with-a6-7"}},[e._v("#")]),e._v(" Send data by MQTT to send an SMS message with A6/7")]),e._v(" "),t("p",[t("code",[e._v('sudo mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTto2G -m \'{"phone":"+33123456789","date":"2018/04/22,16:17:51+02","message":"hello"}\'')])]),e._v(" "),t("p",[e._v('This command will send by SMS the sentence "hello" and use the phone number 0123456789')]),e._v(" "),t("p",[e._v("Arduino IDE serial data received when publishing data by MQTT")]),e._v(" "),t("p",[t("img",{attrs:{src:a(405),alt:""}})]),e._v(" "),t("p",[e._v("Arduino IDE serial data received when receiving SMS")]),e._v(" "),t("p",[t("img",{attrs:{src:a(406),alt:""}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{406:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_1.80def2ff.jpg"},407:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_2.48b36c44.jpg"},462:function(e,t,a){"use strict";a.r(t);var s=a(14),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"gsm-2g-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gsm-2g-gateway"}},[e._v("#")]),e._v(" GSM 2G gateway")]),e._v(" "),t("h2",{attrs:{id:"receiving-sms-from-2g"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-sms-from-2g"}},[e._v("#")]),e._v(" Receiving SMS from 2G")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:\n"),t("code",[e._v("mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your SMS by sending an SMS to the phone number of the A6/A7 SIM card you will see :")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('home/OpenMQTTGateway/2GtoMQTT {"phone":"+33123456789","date":"2018/04/22,16:17:51+02","message":"Hello OpenMQTTGateway"}\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("h2",{attrs:{id:"send-data-by-mqtt-to-send-an-sms-message-with-a6-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-send-an-sms-message-with-a6-7"}},[e._v("#")]),e._v(" Send data by MQTT to send an SMS message with A6/7")]),e._v(" "),t("p",[t("code",[e._v('sudo mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTto2G -m \'{"phone":"+33123456789","date":"2018/04/22,16:17:51+02","message":"hello"}\'')])]),e._v(" "),t("p",[e._v('This command will send by SMS the sentence "hello" and use the phone number 0123456789')]),e._v(" "),t("p",[e._v("Arduino IDE serial data received when publishing data by MQTT")]),e._v(" "),t("p",[t("img",{attrs:{src:a(406),alt:""}})]),e._v(" "),t("p",[e._v("Arduino IDE serial data received when receiving SMS")]),e._v(" "),t("p",[t("img",{attrs:{src:a(407),alt:""}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/42.f10c05f2.js b/dev/assets/js/42.a8267a4e.js similarity index 99% rename from dev/assets/js/42.f10c05f2.js rename to dev/assets/js/42.a8267a4e.js index 5021df64..a1fce305 100644 --- a/dev/assets/js/42.f10c05f2.js +++ b/dev/assets/js/42.a8267a4e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{374:function(t,a){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABmAAAACSCAMAAABlqfVbAAACplBMVEX4+Pj39/f19fXy8vLv7+/t7e3r6+vp6eno6Ojn5+f5+fn09PTx8fHw8PD29vb+/v7////u7u79/f3q6urm5ubj4+Ph4eHg4ODf39/e3t7k5OSgoKD6+vqdnZ3AwMDBwcHa2tqpqan8/PyxsbHMzMx7e3t5eXkxMTFNTU13d3fb29vGxsYtLS0AAACCgoLExMTIyMiDg4Ovr6+ysrK3t7fd3d1KSkqcnJzQ0NA3NzewsLDl5eVgYGDV1dUhISF1dXWXl5fCwsLW1tY8PDxDQ0ONjY2VlZW/v7+fn58iIiLs7Ox8fHwsLCxbW1vX19fz8/Nubm6+vr5RUVFeXl6Ojo5qamp+fn7JyclUVFTi4uJHR0dLS0sdHR0SEhKnp6d9fX2JiYltbW2FhYVxcXG4uLhoaGhzc3O7u7tiYmKPj4/FxcU7OzuBgYGTk5ORkZFnZ2eSkpLNzc3Ozs5YWFiQkJDT09NWVla8vLykpKTDw8NGRkbY2Ni0tLSenp6Li4tra2ulpaVISEjR0dF4eHiGhoZjY2N/f3+qqqrS0tKWlpazs7OamppZWVlmZmZsbGx2dnarq6umpqbU1NStra26urpFRUVycnJfX1+AgIDHx8eYmJiKiorc3NxPT0+EhITZ2dlMTEyhoaHPz890dHS1tbVwcHB6eno1NTXLy8tlZWU/Pz+ZmZk6Ojr7+/vN6c6f1KF7xH5huGVRsVVMr1Dr9utctl+k1qbc791xv3TI5smHh4e2trZcXFyMjIyDyIbr9uz2+/aNzJCPzZL0+vWbm5ujo6OIiIisrKyl16fm9OeV0Jd/xoLl8+b9/v35/PmioqL0+vTK58yCx4Xh8uFhYWE0NDRSUlLP6dD5/Prt9+1Vs1m03bau26/A48Hw+PGoqKiUlJTKyspf5M7bAAAV6ElEQVR4AezaCWprIQCGUa+a0cTaudn/Rh+FB8iQKEMo4DlLCD9+QW8IW0x5tz8cTyzreNjvcopbCOd7DGWKoVhKz1J+51DS5ZoXxvWSyuNj49wNBUOZWwqWEsJWayxLI9Y6ODZmhoKhWErHUsL/ObC48bFhKGOGYik9SxEYBAaBeQpLcUWGKzJckT2FpXjkxyM/Hvmfw1LCFlN8aSzuJQ4/UzaUMUPpl4KlbDG9vvkxeHv9ncP5npmhYCj9UrCUUEt+b9Dec6l3/5mGmaFgKP1SsJRQ0+6jQfvYpbrdDcw2MRQMpV8KlhLiZf/ZoH3uL/FBYCaGgqH0S8FSQrkevhq0r8O1PAjMxFAwlH4pWEoo+fjdoH0f88PA9EPBUMZLwVJCyaefBu3nNAhMPxQMxVIYLUVgnkdgEBgE5tYa3AaB6YeCoVgKAzeBQWAQGAQGgfljCAwCg8AgMAgMAoPAIDAIDAgMAoPAIDAIDAKDwCAwCMzKEBgEBoFBYBAYBAaBQWAQGBAYBAaBQWAQGAQGgUFgEJiVITAIDAKDwCAwCAwCg8AgMCAwCAwCg8AgMAgMAoPAIDBLQ2AQGAQGgUFg/rF33m9tXPkejobQ5Kucj8aNh0i54tDW6N4YUGSwggUYUi6myLhg9t5rjFcCGxcENrFZrw2OsRfc0uOe3nus7b333vvun7IzZ4Rn8CBBGI+ex+H7bolEDswP8z7nnXJGKrzbAwvkeCUQiyIw7J7/hBV8RRyLCAqMmFxuG2MoMFJxNoyUlDowH5aVlX9iZcpArKqAFZjfy5Eewv9f/61w72rx/xYCY6sojtISpKWySoIV5OoAA2GzKNZNsQa/b4XlycW6MWTK3IEJrqlhSFK7NgTcX7cOKAknCc3XBqne6+A8lQ4NjQDY+lVN4eYHlmMB8AcbkR7i3rWBhx56aH3OQw//j6XAWBDFemBaNuQDcN5X1xpuK5KwAKSqdtgMiWLdFGt0RDZan1zIGOumzB2Yzk250OCbwyHzMcY8bVi5JQ8pad8qAay4rsuBrOptXVgA3WUuEOlt+GSLtiv+9//+30JgLIhiPTBsexEAqadqBZeX7ejNwQKo3emEjZAo9ptixsbJxboxZEqawPR+KgoNX6xv4TYEI26kgm/uV0fs6oaKv3chqeC7BzAnZIOQYc/qT1oIjAVRrAcm91OFAEJ7nVDg+2oYPjrSVh9shESx3xQzNk4u1o0hU9IEJrKxTIIKq6nZHwLckeAsNiwvK28drGQA4tVDba3DyG5oDh8I8BvThnbyC2egM9y2Wlb/7vKDTT13QCW3Ps+glSs2MmNcTvSR8COHZAB3Kn+z87CE2baH0SoP5oZs8H16z5GOhs9YCIydomiBCcWhEg8hf5faG3b0GIdgQLyIhyAYHssCpKPNrWMjTP2tOx9sau0rgMKRemUzfhkAGxlrLa8/AsAdOTLevMsFjHtB2CtKBkxxRyoOtYU7A1w6fDzc5mfGfa1pdKsmF4vGkCnpA1NYVguV3JgvnsqGym2NnD9aV8yAeM+JoNuT01vtYCsiR9nMMxjp3olcVnBSGRccLKvOzmJQGT6lhia4qQJJjONiE5+V5OEDXYCrd7uE3IlTs20PKIzkgZjDBlWGT/usryKzSxRTYNDY6wImNy2HxtRpKITKJEyT03umQx4+WwmETmwY5o7t51qAybNDXJ6sC4hrI5Oy555tlYD7/IYzOS4ZGHlsCQhbRcmAKe7zOx6X5ODJJyYOefjQ2UnjvtY0ulWTi0VjyJT0gXFHN3MoRI/xVDa0bPFDoWJXEIjvWgrAKy5ePLnFPTMwUTEzVJzPRXBNNUOSp7xQ4DWdoxwaxnHb1XHjBxmG+9S97N7SbtqeypLHRkDMZYMmQ4v1S2Q2iWIKDD92lHXUPw2NuzaInZzd27eCQcBq9nEAfkWY0DPtqgfPdgFT42KLijDJmaVyrAXuC2IokBcpBGGrKBkwxX1BtGa0tREK41Mw7Gs9MNYnF+vGkCnpA5Mb6QYgldVCtyGsEdJsGNXkYPvGgfg4AL6+ENDGGgMj1Y9CwVM1imAsDwL9iofsP9l08ZIE8zhtKyMxdW+zLI95e8nBxBw2HNmjymBXYKyLYg4M8gfXVYt7rMZxylWRzss+DiB3sB0KWX3tCF3h07/lFSnhWTLG9zHtz47CHRNDtcGEraJkwBT3+atQuDqWnZwgjPtaD4z1ycW6MWRK2sCwmiIAtWUSUh1ueL0Q9F/hYkwSMTauSHPBrQWm8NzK5E4X75Pc0dMFDba0P7LWK5nHia3whgvFSxkA8/aSg4k5bMi6shLWA2OnKKbAoPHAruVIsjKSDQ0ePPzItdUyRmKuZJeMv5UT23BJ0qaRfgi842IjesQIO0XJgCnJ3alPEIZ9re9i65OLdWPIlPSBgS/SAr45ipQ2xEM3v2YVzzUrGqyZeQYTXBPW0ANj2nu5Pacc5nFig/LzD7xw/LAE8/bmHRi6I2c9MLaKYg7Mf/S+yGZdiyi/9EhAf3xiRmDgaHy56aRf1t0Kxe0PDImSSVNMgTHu6+Rr65PL3MaQKZYD49wbRXckF3MfblR5kvvklW0bs8yXyAr73NAwncHotGwZMY+b3iDLn3jVZd4eBWa+T0UJAmvtCYx1UcyBYdVbzrWbz2AEXZGskVMOCIy/JVDu077I9KNar/2BIVEyaUqaMxivvoutTy7WjSFT0gdGnMsW1bDUNozudeqXLUMAsiK1gDkwS15rn/HemAZP1ekbO1OMMzkgiW1mPTts2t7878HQ5zoIXn/DlsBYF8UcmIpzyxvrOwyTin6lVd1m3rN55sDIWRwKT553YbxGvwcTCdIVdftFsdeUNIEx7mu9CBYnF+vGkClzB0Yqe6jPh9Q2tIxV6gsvQgBc58UOqdw2MzAIac8ztPDke+NCj6dLJajkD/rM48RBjfBnSd+weXvWV5ER1gNjXRQtMGL5F9DyZgiQSgNw7tzODKvIlPfV2vvGxyQ+Jf4dW8oMgUlORu1KYIK79FVkkSBoTZD9omTIFHNg9H2tB8bq5GLdGGLuwCD61oQTQNpF6/KktnQ8BIC/XZbPsqrP3hwYqWcinzmir+bMCEyJWKouHRub9MDT9ebb3DRObKXgbLWEjjO9LvP2QM/BZD4wNogiAiMeSnDIBc++EwKrPuUAlu9qh4DtOw2Fgrr9y2S4Ht/WBeTEzrjQcfiiZAgMAnWPcvHMhPZsBG/cVgk9MPRUg+2i2G+KOTDGfa0HxvrkQsbYH5jcXbVIZ4N4cnpsiCXHAA7l6drOw3ljJTP/DpyBA+HmhmzMCEzyMoc8tKop3LRqSDaP07aSd6xZ+eGdMG1PjNjpAWF/YGwWRZsZlolnqfeHUKEdlAamL5KNakuRpeK61vAL++4Xr4++IB7BNgaGDUXKw21RdSyrHGwtLwvCEJiQF4S9othvijkw+r7WA2N9crn9jaHvg+GbR2/RRw4RH/PvgxEf/GERqWwEROYDc/tOLmTM7R0YTJZKmBv6NGUKDDtaBCP02bgUGAuTy+IwhgJj/dtc+INP4+MPBQZLS/NhDenUJBYLFBgxuSxmYygw9I2W6aHA0DdaUmAsQN9oSYFB4Yvv0nfyzwv6Tv4B+k5+CoyFyWXxGUOBISgwBAWGoMAQFBiCoMAQFBiCAkNQYAgKDEGBISgwBAWGoMAsZggKDEGBISgwBAWGoMAQFBiCAkNQYAgKDEFQYAgKDEGBISgwBAWGoMAQFBiCAkNQYBYnBAWGoMAQFBiCAkNQYAgKDEGBISgw773/wYfXE9c//OD99yAgKDAkColCphCWA/O59z+f0Pn8+58DQYEhUUgUMoWwHpgvJG7mCyAoMCQKiUKmEBYD88UvJcx86YsgKDAkColCphBWAvPl64nZuP5lEBQYEoVEIVOIhQfmy4lUkA4UGBKFRCFTiIUH5ovXE6m4/kUQFBgShUQhU4gFBuZLidR8CQQFhkQhUcgUYmGB+UIiHV8AQYEhUUgUMoVYSGA+l0jP50BQYEgUEoVMIRYQmPcT6XkfBAXm4yYKEYrbFhgyhQKj8/lEej4/H1lLkAr2maYppINw3tcWLq9fzwCwysHWpqplmOZIfXl5mfp2WVVT69g6KCx/rjncdFEdrcJqonYEJvOiOOJufEQI2T/Y2jrol6EZEj4QcApFlJedhyUodIUFpQ4otLw44bAlMPabYj8EL+kbAuAoDSfxQmOkrrUse6GBeS8xF+9BJ14EQbTU4XpsBUqS9qaxofsrS5AOgje8tpzxS2dLAFZcNyk7vnq2AhrtX7vHI22P5SDvXLXk6Vd/XrntUBYcjdsCDCq5q3JtDIz9olBgLMCKY+2y3H4yAKDia4c8bEWkgasvow60fP2UA0BoCknk50+9taXUrsDYb0p6Lt8HwhIdxdc2XSuBjrTVB0Fu5Hm5f4cTuBRdQGBMp7NpT2jPbHCJbfcIe1ESmuNwQwxJCzHS64JCtMqD+2MiLaGdTqjwzUUAnHv7UbSZA6zGC/e5WqhU7OqGSn8NszEw9otCgbFAYUxIUBvJUiSJQqH7gg+eKvHS1TsCwBtCkqG+El5iR2DsN8V+CMfEiy2O0hLoDEw4IRj1Aksm8uC6N38BgfkgYeYb3wS+9e1Ekg+gs318QCh9OU6BuVU8fTdUfGNujCqRUciLFELFEyiAQjyEjcPJOSEYcUPljp5+KDiv+ADIq9vCTV/PBtyRikNt4c4Alw4fD7f5mdXA2C8KBcYCIw/cAYWcsSAKI3lQUKcIV9UKKMgPhFR3RmHg5sAIm8SPLQbGflPsh5gRGOfOWmiEQoDjK0FWFMACAvNhYha+812DDR8abXh+ygnw7z0ad6gzgsEGHjje2lcA99e/3xRyPNzcWr8MKqFweE2Q+R9RL+IF41PlpE0qoj/wTB9V3rVhBDr8Sj80xtUzGD8M+LZKACt+dQVzfDaWA/f5HY9LcvDkExOHPHzo7KSFwGRaFHWUNyj+WflDhoJjEoj5UftsB3iWDIUlj90wxxVZJ6YMmwOTeVPc+0OdrRfzjzY1jXMoU0v45DC75T2iwNSWSdDoGhdnMMGd0kICcz0xgx/9+CeJxE9/9vNf6DZch854y/d9QPf3WpI2hBUuuNXdGzrYIU+uynefrOZ4/IceefUOz40zmJLdLnk47gyeHZAxK4QUjRUA/Ve4CMyJEuhURrIhqDhXALxyvNoBwHiL3zeYj+QFtAtHGYDR1kaxs6YsBCbDohgDw70l0u7lIOaFx//mkHlWkFdseJEDSzb8UqwasS8wmTfFfbLI4XziE4f4kr0j6OrJZStOtN/qwFBg+NcHAOM9mI5jk1hIYG6S4Vv41U8UGX79m98KGwTQ8QZ932f4Ya375sONrGMuAA+ddl9ZAoEyIh4Ox9Uhnni3Ov+tDD7IMRtEPBzuVSPRPdgtktJUghsM/a4CgoJzlQDY+r61z250wXCLf3wfS14wcZ+/CoWrY9nmecNSYOwXxRAYdBz0VoKYD6Fw+MDzmMb1rCZOcE349wEuTmO82dx95g8VtgUm86aI98EzDBg9LaYWPOm91YGhwPj6XJhmXUy5AOU/w2HtDEbI8K0//ulbf/75r/+S0Lk+wwbn27mufZLJBuUHAHxR8c87G5qnV0aqQ7R1b2uCQS+IFHj8v+sC2IuxAuaIvjam7+iKc89DkNPrZxC4Greu3SESMuBl2j2aJO5IEBDzhsXAZF4UY2Dw0AYHiPnB140FGASOeDGDBlu6u0pCEnZ0M7crMJk3RbwPesXcImxBzvgtDgwFhm+OYgbZp/ILz4djBRbuwQgZfpT46590GQQfzrABtf0DUaQ+3Ig7wOP9HqFBMjCey9lQSRMYQqwFAo+q9+jzRCcEYkmQwGtcL9YR35Kt3YezJzCZF0UdVXMVuOugGzkHxwMMxDzpjhUm17s3cCTRFh9O037eZUNgMm+KKTB0BmNTYLojuTDCip52nXhJfumEy8IqMiFDIvG3v+syqHww0wbpwR25ZhvY9uQF07gDnt3rmeOrF28EBo0HXZCe5OkCQ4g46POB/lPTztfe9otb/DYFJvOiqKNOTzn5oXNufrlC+S8+GjQvyNVCB/M6ZE0I+wNjvymmwKDxNRvuwVBgWM12BiMVO6X2/Rx8f7uF52D++o8fpV+0LmxAtIbBnWrJh9j7BbFw5z93ZE8HRiz1aPOzWQND3P30TYFhNakfbvFOQSCq4o1C5al9Yrh7HbczMDaLoo6SDpY3/esH2YEAQ86OOzE3tMBdnxdYcbIvK6pcNwqyURtx9VVbzmAyb4opMLSKzJbA5Ee6YcS5uR0lcQDxEjue5LcTIlom3bhEJqg8W4BUTG5ZCpWO+gG49uYC+iqy7TXs1gWGRLkNqI0t1S+RVfbmQODq9d+4ROaLtAg1UtyDcW9pB8Cn0otCpiy6wBRNcRhp/B6HOIPZPGLDZ5HZCiH1TOQz/ui5Sqjw/LevDRn2+VezIeAPrRD/eLFttQP8SN+9EgZ2c6hoz8FU9+bg1gWGRLkN4A2RAlkueLWYqX3JR5LKbfd44DqzVVJH9OQz8RlDswaGHS3LVUY+k14UMmWxBaYl4oMRp3cpoN+DoU9Tvm0/7BKh1ron3NC5v80PQUfkh1BhFcqHXZaP3ePUH7UVT/I3N2TDlsCQKLfBh13qn1B4wW38sEuxaqTpteWYPTBQnl9URq42ikKfpkyBie50woxYRbZIvg+GELf4/93e3eS0DYRxHHbz5bSBaFC+piwRK47BAbgQF2DdI7BiAwEb6uY4vUnFbhbEtrC6YZ7nCNFf+UkjS697MLgHwxAuWuKiJS5a4iY/bvIjMJYiMImmqo+pmoDAGIqhWMonCUw41MccAgJjKIZiKZ8mMOFQ1R+pjEFgDMVQLGUQgQnNn48eS5uAwBiKoVhKfwLT88OP3wGBMRRDsZTBBCa87t+SKbztXwMCYyiGYikDCEziaf/8UtXVy/P+KSAwQ4aCwFiKwNBCYDAUS0FgEBgEBoFBYBAYBOarQWAQGAQGgUFgEBgEBoFBYEBgEBgEBoFBYBAYBAaBQWDImcAgMAgMAoPAIDAIDAKDwIDAIDAIDAKDwCAwCAwCg8CQM4FBYBAYBAaBQWAQGAQGgQGBQWAQGAQGgUFgEBgEBoEhZwKDwCAwCAwCg8AgMAgMAgMCg8AgMAgMAoPAIDAIDAJDtgQGgUFgEBgEBoFBYBAYBCaGALEzMIbSzlAshUQUGAQGgfl/BGa+CwF2847AGEonQ7EU0qUUi9Nye+Gn4GJbnrYGxlC6GYqlkC6lGJ3MNuVjIHOP5WZ2MmoJjKH0YCiWQrqUYjmeruPt3f3lw18y9XB5f3cb19PxsiUwhtKDoVgK6VKK5WKyOo9XN9e/yNb1zVU8X00Wy+JoYAylD0OxFNKlFN9G47PVerPdxfiTLMW4227Wq7Nxy8PHD0PpxVAshWQpxfscJtNZOf9OtublbDp5/9toCYyh9GEolkKylH8vU6QQ8oi1OwAAAABJRU5ErkJggg=="},436:function(t,a,s){"use strict";s.r(a);var n=s(14),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"integrate-openhab2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrate-openhab2"}},[t._v("#")]),t._v(" Integrate OPENHAB2")]),t._v(" "),a("h2",{attrs:{id:"auto-discovery-through-home-assistant-convention"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery-through-home-assistant-convention"}},[t._v("#")]),t._v(" Auto discovery through home assistant convention")]),t._v(" "),a("p",[t._v("OpenMQTTGateway support autodiscovery of things for OpenHAB 2.4, so as to do that it rely on home assistant auto discovery convention.\nSo as to use the autodiscovery function you need to have:")]),t._v(" "),a("ul",[a("li",[t._v("The Jinga transformation addon installed")]),t._v(" "),a("li",[t._v("The Json transformation addon installed")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you are connecting to BLE devices it is highly recommended to set "),a("code",[t._v("filterConnectable")]),t._v(" to "),a("code",[t._v("true")]),t._v(" in "),a("RouterLink",{attrs:{to:"/use/ble.html#advanced-filter-out-connectable-devices"}},[t._v("BT configuration")]),t._v(". Otherwise you may encounter incomplete data.")],1)]),t._v(" "),a("p",[t._v("The things will appear in the inbox of the paperUI, add them and links the channels. You should see them into the control panel for further usage.\n"),a("img",{attrs:{src:s(374),alt:"OpenHAB integration"}})]),t._v(" "),a("h2",{attrs:{id:"mqtt-2-manual-setup-openhab2-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-2-manual-setup-openhab2-4"}},[t._v("#")]),t._v(" MQTT 2 manual setup >=Openhab2.4")]),t._v(" "),a("p",[t._v("You should have an MQTT broker installed (either mosquitto or the OpenHAB2 embedded one)")]),t._v(" "),a("p",[t._v("In paper UI")]),t._v(" "),a("ul",[a("li",[t._v("In bindings add the MQTT Things binding")]),t._v(" "),a("li",[t._v("Inbox > MQTT Things binding > Add manually >MQTT Broker : configure your broker")]),t._v(" "),a("li",[t._v("Inbox > MQTT Things binding > Add manually >Generic MQTT Thing : select your previously configured broker as a bridge and enter your thing definition (example RF plug, weather station, PIR sensor)")]),t._v(" "),a("li",[t._v('Configuration > Things > "Your thing" : click on + and add one channel for each thing parameter (example for a weather station, you will have one channel for the temperature, one channel for the humidity etc..)')]),t._v(" "),a("li",[t._v("For a state channel define the MQTT topic like this:")])]),t._v(" "),a("h2",{attrs:{id:"for-a-mi-flora-or-mi-jia-temperature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#for-a-mi-flora-or-mi-jia-temperature"}},[t._v("#")]),t._v(" For a mi flora or mi jia temperature :")]),t._v(" "),a("p",[a("code",[t._v("home/+/BTtoMQTT/C47C9999D1B8")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Click on show more")])]),t._v(" "),a("li",[a("p",[t._v('And add in "Incoming values transformation"')])])]),t._v(" "),a("p",[a("code",[t._v("JSONPATH:$.tem")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Click on Save")])]),t._v(" "),a("li",[a("p",[t._v("Repeat for each channels and each things")])]),t._v(" "),a("li",[a("p",[t._v('Configuration > Things > "Your thing" : click on a channel and add 1 or several items per channel defining what you want to display in the sitemap\nor')])]),t._v(" "),a("li",[a("p",[t._v("Define your items in an item file like this by referring to your MQTT things channels:\nFor a mi flora and mi jia")])])]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// MI JIA")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" humidity\t\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Humidité air[%.1f %%]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("water"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:dc2222e6:humidite-mijia"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" temperature \t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Température[%.1f °C]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("temperature"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:dc2222e6:temperature-mijia"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" battery \t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Batterie capteur[%.1f %]"')]),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("volt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:dc2222e6:batterie-mijia"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// MI FLORA")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" humidity_P\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hygrométrie plante[%.1f %%]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("water"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:humidite-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" temperature_P \t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Température plante[%.1f °C]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("temperature"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:temperature-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" fertility_P\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Fertilité plante[%.1f uS/cm]"')]),t._v(" \t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:fertilite-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" lux_P\t\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Luminiosité plante[%.1f lux]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:lux-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br")])]),a("h2",{attrs:{id:"for-a-switch-channel-add-a-channel-by-choosing-the-type-on-off-switch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#for-a-switch-channel-add-a-channel-by-choosing-the-type-on-off-switch"}},[t._v("#")]),t._v(' For a switch channel, add a channel by choosing the type "On/Off switch"')]),t._v(" "),a("p",[t._v("define the MQTT state topic like this:\n"),a("code",[t._v("home/+/433toMQTT")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Click on show more")])]),t._v(" "),a("li",[a("p",[t._v('add in "Incoming values transformation"\n'),a("code",[t._v("JSONPATH:$.value")])])]),t._v(" "),a("li",[a("p",[t._v("define the command topic like this:\n"),a("code",[t._v("home/+/commands/MQTTto433")])])]),t._v(" "),a("li",[a("p",[t._v("add the value corresponding to ON state and to OFF state\n1312081\n1312084")])]),t._v(" "),a("li",[a("p",[t._v("Click on Save")])]),t._v(" "),a("li",[a("p",[t._v("Repeat for each channels and each things")])]),t._v(" "),a("li",[a("p",[t._v('Configuration > Things > "Your thing" : click on a channel and add 1 or several switch per channel\nor')])]),t._v(" "),a("li",[a("p",[t._v("Define your items in an item file like this by referring to your MQTT thing channel:")])])]),t._v(" "),a("p",[a("code",[t._v('Switch OMGSwitch "Prise 1" {channel="mqtt:topic:08998877:Power1"}')])]),t._v(" "),a("h1",{attrs:{id:"presence-detection-from-rickitaly"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#presence-detection-from-rickitaly"}},[t._v("#")]),t._v(" Presence detection (from @rickitaly)")]),t._v(" "),a("p",[t._v("in thing file:")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Thing")]),t._v(" mqtt"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("topic"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("omgentrance "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mqtt"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("broker"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("localBroker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Channels")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),t._v(" string "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" blepresence "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"People Presence"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v(" stateTopic"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/home_presence/OpenMQTTGatewayEntrance"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br")])]),a("p",[t._v("in item file")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OMG_BLE_Entrance")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"BLE Entrance Detector"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:omgentrance:blepresence"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Switch")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Presence_Keys_Rick")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rick\'s Keys"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("keyring"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("People")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" gKeys"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("expire"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"240s,OFF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br")])]),a("p",[t._v("In rule file:")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[t._v("rule "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"BLE Presence Detector"')]),t._v("\nwhen\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Item")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OMG_BLE_Entrance")]),t._v(" received update\nthen\nval "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" msg "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OMG_BLE_Entrance")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("state as "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringType")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("toString\nval "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("transform")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"JSONPATH"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"$.id"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("toString\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"xx:xx:xx:xx:xx:xx"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Presence_Keys_Rick")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("postUpdate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("ON")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nend\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{358:function(t,a){t.exports="data:image/png;base64,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"},430:function(t,a,s){"use strict";s.r(a);var n=s(14),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"integrate-openhab2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#integrate-openhab2"}},[t._v("#")]),t._v(" Integrate OPENHAB2")]),t._v(" "),a("h2",{attrs:{id:"auto-discovery-through-home-assistant-convention"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery-through-home-assistant-convention"}},[t._v("#")]),t._v(" Auto discovery through home assistant convention")]),t._v(" "),a("p",[t._v("OpenMQTTGateway support autodiscovery of things for OpenHAB 2.4, so as to do that it rely on home assistant auto discovery convention.\nSo as to use the autodiscovery function you need to have:")]),t._v(" "),a("ul",[a("li",[t._v("The Jinga transformation addon installed")]),t._v(" "),a("li",[t._v("The Json transformation addon installed")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you are connecting to BLE devices it is highly recommended to set "),a("code",[t._v("filterConnectable")]),t._v(" to "),a("code",[t._v("true")]),t._v(" in "),a("RouterLink",{attrs:{to:"/use/ble.html#advanced-filter-out-connectable-devices"}},[t._v("BT configuration")]),t._v(". Otherwise you may encounter incomplete data.")],1)]),t._v(" "),a("p",[t._v("The things will appear in the inbox of the paperUI, add them and links the channels. You should see them into the control panel for further usage.\n"),a("img",{attrs:{src:s(358),alt:"OpenHAB integration"}})]),t._v(" "),a("h2",{attrs:{id:"mqtt-2-manual-setup-openhab2-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-2-manual-setup-openhab2-4"}},[t._v("#")]),t._v(" MQTT 2 manual setup >=Openhab2.4")]),t._v(" "),a("p",[t._v("You should have an MQTT broker installed (either mosquitto or the OpenHAB2 embedded one)")]),t._v(" "),a("p",[t._v("In paper UI")]),t._v(" "),a("ul",[a("li",[t._v("In bindings add the MQTT Things binding")]),t._v(" "),a("li",[t._v("Inbox > MQTT Things binding > Add manually >MQTT Broker : configure your broker")]),t._v(" "),a("li",[t._v("Inbox > MQTT Things binding > Add manually >Generic MQTT Thing : select your previously configured broker as a bridge and enter your thing definition (example RF plug, weather station, PIR sensor)")]),t._v(" "),a("li",[t._v('Configuration > Things > "Your thing" : click on + and add one channel for each thing parameter (example for a weather station, you will have one channel for the temperature, one channel for the humidity etc..)')]),t._v(" "),a("li",[t._v("For a state channel define the MQTT topic like this:")])]),t._v(" "),a("h2",{attrs:{id:"for-a-mi-flora-or-mi-jia-temperature"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#for-a-mi-flora-or-mi-jia-temperature"}},[t._v("#")]),t._v(" For a mi flora or mi jia temperature :")]),t._v(" "),a("p",[a("code",[t._v("home/+/BTtoMQTT/C47C9999D1B8")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Click on show more")])]),t._v(" "),a("li",[a("p",[t._v('And add in "Incoming values transformation"')])])]),t._v(" "),a("p",[a("code",[t._v("JSONPATH:$.tem")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Click on Save")])]),t._v(" "),a("li",[a("p",[t._v("Repeat for each channels and each things")])]),t._v(" "),a("li",[a("p",[t._v('Configuration > Things > "Your thing" : click on a channel and add 1 or several items per channel defining what you want to display in the sitemap\nor')])]),t._v(" "),a("li",[a("p",[t._v("Define your items in an item file like this by referring to your MQTT things channels:\nFor a mi flora and mi jia")])])]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// MI JIA")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" humidity\t\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Humidité air[%.1f %%]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("water"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:dc2222e6:humidite-mijia"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" temperature \t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Température[%.1f °C]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("temperature"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:dc2222e6:temperature-mijia"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" battery \t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Batterie capteur[%.1f %]"')]),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("volt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:dc2222e6:batterie-mijia"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// MI FLORA")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" humidity_P\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hygrométrie plante[%.1f %%]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("water"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:humidite-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" temperature_P \t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Température plante[%.1f °C]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("temperature"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:temperature-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" fertility_P\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Fertilité plante[%.1f uS/cm]"')]),t._v(" \t "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:fertilite-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Number")]),t._v(" lux_P\t\t"),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Luminiosité plante[%.1f lux]"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:1fb33334:lux-miflora"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br")])]),a("h2",{attrs:{id:"for-a-switch-channel-add-a-channel-by-choosing-the-type-on-off-switch"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#for-a-switch-channel-add-a-channel-by-choosing-the-type-on-off-switch"}},[t._v("#")]),t._v(' For a switch channel, add a channel by choosing the type "On/Off switch"')]),t._v(" "),a("p",[t._v("define the MQTT state topic like this:\n"),a("code",[t._v("home/+/433toMQTT")])]),t._v(" "),a("ul",[a("li",[a("p",[t._v("Click on show more")])]),t._v(" "),a("li",[a("p",[t._v('add in "Incoming values transformation"\n'),a("code",[t._v("JSONPATH:$.value")])])]),t._v(" "),a("li",[a("p",[t._v("define the command topic like this:\n"),a("code",[t._v("home/+/commands/MQTTto433")])])]),t._v(" "),a("li",[a("p",[t._v("add the value corresponding to ON state and to OFF state\n1312081\n1312084")])]),t._v(" "),a("li",[a("p",[t._v("Click on Save")])]),t._v(" "),a("li",[a("p",[t._v("Repeat for each channels and each things")])]),t._v(" "),a("li",[a("p",[t._v('Configuration > Things > "Your thing" : click on a channel and add 1 or several switch per channel\nor')])]),t._v(" "),a("li",[a("p",[t._v("Define your items in an item file like this by referring to your MQTT thing channel:")])])]),t._v(" "),a("p",[a("code",[t._v('Switch OMGSwitch "Prise 1" {channel="mqtt:topic:08998877:Power1"}')])]),t._v(" "),a("h1",{attrs:{id:"presence-detection-from-rickitaly"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#presence-detection-from-rickitaly"}},[t._v("#")]),t._v(" Presence detection (from @rickitaly)")]),t._v(" "),a("p",[t._v("in thing file:")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Thing")]),t._v(" mqtt"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("topic"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("omgentrance "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mqtt"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("broker"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("localBroker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Channels")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Type")]),t._v(" string "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" blepresence "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"People Presence"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v(" stateTopic"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"home/home_presence/OpenMQTTGatewayEntrance"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br")])]),a("p",[t._v("in item file")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OMG_BLE_Entrance")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"BLE Entrance Detector"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" channel"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mqtt:topic:omgentrance:blepresence"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Switch")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Presence_Keys_Rick")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Rick\'s Keys"')]),t._v(" "),a("span",{pre:!0,attrs:{class:"token generics"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("keyring"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("People")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" gKeys"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("expire"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"240s,OFF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br")])]),a("p",[t._v("In rule file:")]),t._v(" "),a("div",{staticClass:"language-java line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-java"}},[a("code",[t._v("rule "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"BLE Presence Detector"')]),t._v("\nwhen\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Item")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OMG_BLE_Entrance")]),t._v(" received update\nthen\nval "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" msg "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("OMG_BLE_Entrance")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("state as "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("StringType")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("toString\nval "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("String")]),t._v(" id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("transform")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"JSONPATH"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"$.id"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" msg"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("toString\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("id "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"xx:xx:xx:xx:xx:xx"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Presence_Keys_Rick")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("postUpdate")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("ON")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nend\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/43.60c6e9df.js b/dev/assets/js/43.73d8f4d8.js similarity index 96% rename from dev/assets/js/43.60c6e9df.js rename to dev/assets/js/43.73d8f4d8.js index 4b3ab645..8f387dd4 100644 --- a/dev/assets/js/43.60c6e9df.js +++ b/dev/assets/js/43.73d8f4d8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{375:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_controllers.3b7dc536.png"},439:function(e,t,r){"use strict";r.r(t);var o=r(14),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"controller"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#controller"}},[e._v("#")]),e._v(" Controller")]),e._v(" "),t("p",[e._v("MQTT enables you to connect easily a controller so as to monitor, control and automate scenarios.")]),e._v(" "),t("p",[e._v("The following controllers (and many other software) are compatible with MQTT:")]),e._v(" "),t("p",[t("img",{attrs:{src:r(375),alt:"controllers"}})]),e._v(" "),t("p",[e._v("OpenMQTTGateway is independent from these projects, you have the liberty of choice among all the compatible software.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://www.openhab.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenHAB"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.home-assistant.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Home Assistant"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.domoticz.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Domoticz"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.jeedom.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jeedom"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://nodered.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Node Red"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://fhem.de",target:"_blank",rel:"noopener noreferrer"}},[e._v("FHEM"),t("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{375:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_controllers.3b7dc536.png"},438:function(e,t,r){"use strict";r.r(t);var o=r(14),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"controller"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#controller"}},[e._v("#")]),e._v(" Controller")]),e._v(" "),t("p",[e._v("MQTT enables you to connect easily a controller so as to monitor, control and automate scenarios.")]),e._v(" "),t("p",[e._v("The following controllers (and many other software) are compatible with MQTT:")]),e._v(" "),t("p",[t("img",{attrs:{src:r(375),alt:"controllers"}})]),e._v(" "),t("p",[e._v("OpenMQTTGateway is independent from these projects, you have the liberty of choice among all the compatible software.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://www.openhab.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenHAB"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.home-assistant.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Home Assistant"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.domoticz.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Domoticz"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.jeedom.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Jeedom"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://nodered.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("Node Red"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://fhem.de",target:"_blank",rel:"noopener noreferrer"}},[e._v("FHEM"),t("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/44.0acd16fd.js b/dev/assets/js/44.790d8d70.js similarity index 93% rename from dev/assets/js/44.0acd16fd.js rename to dev/assets/js/44.790d8d70.js index b4a64714..d68c37cf 100644 --- a/dev/assets/js/44.0acd16fd.js +++ b/dev/assets/js/44.790d8d70.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{383:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_2G.48dafe5f.png"},445:function(t,e,a){"use strict";a.r(e);var r=a(14),s=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"gsm-2g-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gsm-2g-gateway"}},[t._v("#")]),t._v(" GSM 2G gateway")]),t._v(" "),e("h2",{attrs:{id:"compatible-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module")]),t._v(" "),e("th",[t._v("Purpose")]),t._v(" "),e("th",[t._v("Where to Buy")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("A6")]),t._v(" "),e("td",[t._v("GSM GPRS module")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("A7")]),t._v(" "),e("td",[t._v("GSM GPRS module with GPS")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])])])]),t._v(" "),e("h2",{attrs:{id:"hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hardware-setup"}},[t._v("#")]),t._v(" Hardware setup")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module Pin")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("NodeMCU / ESP8266 Pin")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("H_RXD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D6")])]),t._v(" "),e("tr",[e("td",[t._v("H_TXD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D7")])]),t._v(" "),e("tr",[e("td",[t._v("GND")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("GND")])]),t._v(" "),e("tr",[e("td",[t._v("VCC5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MOSFET driven by D5")])])])]),t._v(" "),e("p",[t._v("For VCC5 you can power it directly all the time with an USB cable or use a MOSFET like "),e("a",{attrs:{href:"https://gitlab.com/stavros/A6-ESP8266-breakout/raw/master/images/schematic.png",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("Don't use the nodemcu/wemos 5V pin for the A6/7 power, use a dedicated power supply for both or dedicated to the A6/7 with at least 2 amps ability.")]),t._v(" "),e("p",[t._v("So as to start your A6/7 module press the red button for 4 seconds, or link the PWR_KEY GPIO to VCC5.0 for the same time.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(383),alt:"Addon_2G"}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{381:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_2G.48dafe5f.png"},444:function(t,e,a){"use strict";a.r(e);var r=a(14),s=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"gsm-2g-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#gsm-2g-gateway"}},[t._v("#")]),t._v(" GSM 2G gateway")]),t._v(" "),e("h2",{attrs:{id:"compatible-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module")]),t._v(" "),e("th",[t._v("Purpose")]),t._v(" "),e("th",[t._v("Where to Buy")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("A6")]),t._v(" "),e("td",[t._v("GSM GPRS module")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])]),t._v(" "),e("tr",[e("td",[t._v("A7")]),t._v(" "),e("td",[t._v("GSM GPRS module with GPS")]),t._v(" "),e("td",[e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),e("OutboundLink")],1)])])])]),t._v(" "),e("h2",{attrs:{id:"hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hardware-setup"}},[t._v("#")]),t._v(" Hardware setup")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Module Pin")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("NodeMCU / ESP8266 Pin")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("H_RXD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D6")])]),t._v(" "),e("tr",[e("td",[t._v("H_TXD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D7")])]),t._v(" "),e("tr",[e("td",[t._v("GND")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("GND")])]),t._v(" "),e("tr",[e("td",[t._v("VCC5")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MOSFET driven by D5")])])])]),t._v(" "),e("p",[t._v("For VCC5 you can power it directly all the time with an USB cable or use a MOSFET like "),e("a",{attrs:{href:"https://gitlab.com/stavros/A6-ESP8266-breakout/raw/master/images/schematic.png",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1)]),t._v(" "),e("p",[t._v("Don't use the nodemcu/wemos 5V pin for the A6/7 power, use a dedicated power supply for both or dedicated to the A6/7 with at least 2 amps ability.")]),t._v(" "),e("p",[t._v("So as to start your A6/7 module press the red button for 4 seconds, or link the PWR_KEY GPIO to VCC5.0 for the same time.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(381),alt:"Addon_2G"}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/45.421db05c.js b/dev/assets/js/45.aa140053.js similarity index 99% rename from dev/assets/js/45.421db05c.js rename to dev/assets/js/45.aa140053.js index cd925321..0390f350 100644 --- a/dev/assets/js/45.421db05c.js +++ b/dev/assets/js/45.aa140053.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{407:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway-OTA-Update-Home-Assistant.1b857c45.png"},462:function(e,t,a){"use strict";a.r(t);var s=a(14),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"system-commands-esp-only"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-commands-esp-only"}},[e._v("#")]),e._v(" System commands (ESP only)")]),e._v(" "),t("h2",{attrs:{id:"restart-the-esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restart-the-esp"}},[e._v("#")]),e._v(" Restart the ESP")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"cmd":"restart"}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("With Home Assistant, this command is directly available through MQTT auto discovery as a switch into the HASS OpenMQTTGateway device entities list.")])]),e._v(" "),t("h2",{attrs:{id:"erase-the-esp-settings"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#erase-the-esp-settings"}},[e._v("#")]),e._v(" Erase the ESP settings")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"cmd":"erase"}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("With Home Assistant, this command is directly available through MQTT auto discovery as a switch into the HASS OpenMQTTGateway device entities list.")])]),e._v(" "),t("h2",{attrs:{id:"retrieve-current-status-of-the-esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#retrieve-current-status-of-the-esp"}},[e._v("#")]),e._v(" Retrieve current status of the ESP")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"cmd":"status"}\'')])]),e._v(" "),t("h2",{attrs:{id:"auto-discovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery"}},[e._v("#")]),e._v(" Auto discovery")]),e._v(" "),t("p",[e._v("You can deactivate the MQTT auto-discovery function, which enables you to create devices/entities with the Home Assistant convention automatically. This function is set to "),t("code",[e._v("true")]),e._v(" at startup for 30 minutes unless you deactivate it.")]),e._v(" "),t("h3",{attrs:{id:"deactivate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deactivate"}},[e._v("#")]),e._v(" Deactivate")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"disc":false}\'')])]),e._v(" "),t("h3",{attrs:{id:"activate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#activate"}},[e._v("#")]),e._v(" Activate")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"disc":true}\'')])]),e._v(" "),t("p",[e._v("If you want the settings to be kept upon gateway restart, you can save the state by adding "),t("code",[e._v('"save":true')]),e._v(" (ESP32 only).\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"disc":false, "save":true}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Auto discovery is enabled by default on release binaries and platformio.")])]),e._v(" "),t("h2",{attrs:{id:"activate-offline-mode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#activate-offline-mode"}},[e._v("#")]),e._v(" Activate Offline mode")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"offline":true,"save":true}\'')])]),e._v(" "),t("h2",{attrs:{id:"change-the-wifi-credentials"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-wifi-credentials"}},[e._v("#")]),e._v(" Change the WiFi credentials")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"wifi_ssid":"ssid", "wifi_pass":"password"}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the new connection fails the gateway will fallback to the previous connection.")])]),e._v(" "),t("h2",{attrs:{id:"change-the-gateway-password"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-gateway-password"}},[e._v("#")]),e._v(" Change the gateway password")]),e._v(" "),t("p",[e._v("The password must be 8 characters minimum.")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"gw_pass":"12345678"}\'')])]),e._v(" "),t("h2",{attrs:{id:"change-the-mqtt-broker-credentials"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-mqtt-broker-credentials"}},[e._v("#")]),e._v(" Change the MQTT broker credentials")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "mqtt_user": "user_name",\n "mqtt_pass": "password",\n "mqtt_server": "host",\n "mqtt_port": "port",\n "mqtt_validate": false,\n "mqtt_secure": false\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br"),t("span",{staticClass:"line-number"},[e._v("8")]),t("br"),t("span",{staticClass:"line-number"},[e._v("9")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("INFO")]),e._v(" "),t("p",[e._v("By default this function is not available on the pre built binary of RFBridge, in order to have less code size and enable to have OTA update working properly. So as to enable it remove from the rf bridge env:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("build_flags = '-UMQTTsetMQTT'\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the new connection fails the gateway will fallback to the previous connection.")])]),e._v(" "),t("h2",{attrs:{id:"change-the-mqtt-main-topic-discovery-prefix-and-or-gateway-name"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-mqtt-main-topic-discovery-prefix-and-or-gateway-name"}},[e._v("#")]),e._v(" Change the MQTT main topic, discovery prefix, and or gateway name")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "mqtt_topic": "topic/",\n "discovery_prefix": "prefix",\n "gateway_name": "name"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("INFO")]),e._v(" "),t("p",[e._v("This will change the subscribed and published mqtt_topic/gateway_name that the gateway uses. No parameters are mandatory, the current topic or gateway name will be used if not supplied.")])]),e._v(" "),t("h2",{attrs:{id:"switching-brokers-and-using-signed-and-client-certificates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#switching-brokers-and-using-signed-and-client-certificates"}},[e._v("#")]),e._v(" Switching brokers and using signed and client certificates")]),e._v(" "),t("p",[e._v("In the "),t("code",[e._v("user_config.h")]),e._v(" file it is possible to specify multiple MQTT brokers and client certificates.\nAdditionally, support for multiple brokers and client certificates has been added. To use this, it is required that the server certificate, client certificate, and client key are provided as their own constant string value as demonstrated in the file."),t("br"),e._v("\nTo add more than one broker and switch between them it is necessary to provide all of the relevant certificates/keys and add their respective variable names in the "),t("code",[e._v("cnt_parameters_array")]),e._v(" structure, as shown in "),t("code",[e._v("user_config.h")]),e._v("..")]),e._v(" "),t("p",[e._v("To switch between these connections with an MQTT command message, the format is as follows:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "mqtt_user": "user",\n "mqtt_pass": "password",\n "mqtt_server": "host",\n "mqtt_port": "port",\n "mqtt_secure": true,\n "mqtt_validate": true,\n "cnt_index":1,\n "save_cnt": true\n }\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br"),t("span",{staticClass:"line-number"},[e._v("8")]),t("br"),t("span",{staticClass:"line-number"},[e._v("9")]),t("br"),t("span",{staticClass:"line-number"},[e._v("10")]),t("br"),t("span",{staticClass:"line-number"},[e._v("11")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("cnt_index")]),e._v(" value corresponds to the 0 to 2 index of the "),t("code",[e._v("cnt_parameters_array")]),e._v(" in "),t("code",[e._v("user_config.h")]),e._v(".\n0 being the default index, containing the onboarding parameters.")])]),e._v(" "),t("p",[e._v("To read the connection parameters:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "cnt_index":1,\n "read_cnt": true\n }\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("To test a connection change without saving:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "cnt_index":1,\n "test_cnt": true\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the client can't connect to the MQTT broker corresponding to the current "),t("code",[e._v("cnt_index")]),e._v(", it will increment the index to the next valid connection set and restart with it.")])]),e._v(" "),t("h2",{attrs:{id:"saving-loading-connection-parameters-certificates-at-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#saving-loading-connection-parameters-certificates-at-runtime"}},[e._v("#")]),e._v(" Saving/Loading connection parameters/certificates at runtime")]),e._v(" "),t("p",[e._v("This chapter details the process for managing certificates/connections parameters used for secure MQTT communication with OpenMQTTGateway")]),e._v(" "),t("h3",{attrs:{id:"storing-and-loading-certificates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#storing-and-loading-certificates"}},[e._v("#")]),e._v(" Storing and Loading Certificates")]),e._v(" "),t("ul",[t("li",[e._v("Flash Memory Storage:\nCertificates can be saved to the flash memory using specific indices. Valid indices for storing certificates are 1 and 2, as 0 is reserved for the default certificate.")]),e._v(" "),t("li",[e._v("RAM Memory Loading:\nCertificates can be loaded from RAM, where valid indices range from 0 to 2. The device publishes a hash of the certificate to the broker to verify its identity. If the connection using the current certificate fails, the device will revert to the previous certificate.")])]),e._v(" "),t("h3",{attrs:{id:"use-case-changing-a-group-of-certificates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-case-changing-a-group-of-certificates"}},[e._v("#")]),e._v(" Use Case: Changing a Group of Certificates")]),e._v(" "),t("p",[e._v("When updating certificates, follow these steps to ensure that the new certificates are correctly loaded and used:")]),e._v(" "),t("ol",[t("li",[e._v("Push Certificates via MQTT:\nSend the new certificates one by one through MQTT, using indices 1 or 2. Replace newline characters (\\n) in the certificates with spaces.")])]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"cnt_index"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"mqtt_server_cert"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN CERTIFICATE----- MIIDQTCC----END CERTIFICATE-----"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("Accepted certificates are:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("mqtt_server_cert")])]),e._v(" "),t("li",[t("code",[e._v("mqtt_client_cert")])]),e._v(" "),t("li",[t("code",[e._v("mqtt_client_key")])]),e._v(" "),t("li",[t("code",[e._v("ota_server_cert")])])]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Verify Certificates in RAM:\nAfter pushing the certificates, verify that they have been correctly loaded into RAM.")])]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"cnt_index"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"read_cnt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Test and Save Certificates:\nOnce verification is complete, test the connection using the new certificates. If the connection is successful, send the command to save the certificates to flash.")])]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"cnt_index"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"save_cnt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("ol",{attrs:{start:"4"}},[t("li",[t("p",[e._v("Broker Connection:\nThe broker will attempt to use the newly received certificates for the connection.")])]),e._v(" "),t("li",[t("p",[e._v("Successful Connection Handling:\nIf the connection is successful, the certificates are permanently stored in the flash memory at the specified index.")])]),e._v(" "),t("li",[t("p",[e._v("Handling Connection Failures:\nIf the connection fails, the device will revert to the previously used certificate index, and the new certificates will not be saved.")])])]),e._v(" "),t("h1",{attrs:{id:"firmware-update-from-mqtt-esp-only"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#firmware-update-from-mqtt-esp-only"}},[e._v("#")]),e._v(" Firmware update from MQTT (ESP only)")]),e._v(" "),t("p",[e._v("When the gateway used is from a standard ESP32 environment "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/environments.ini",target:"_blank",rel:"noopener noreferrer"}},[e._v("listed and defined here"),t("OutboundLink")],1),e._v(", it can be updated through a simple MQTT command:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "latest"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("This would download the latest version firmware binary from Github and install it.\nIt can be used with version 1.5.0 and above.")]),e._v(" "),t("p",[e._v("Note that this update option is also autodiscovered through Home Assistant convention, you can update directly from the device page with 2 clicks.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(407),alt:"Home Assistant OTA Update"}})]),e._v(" "),t("p",[e._v("You can also indicate the target version to update:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "v1.2.0"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("OpenMQTTGateway checks at start and every hour if an update is available.")]),e._v(" "),t("p",[e._v("Alternatively if you want to choose the update URL you can use the command below (ESP32 and ESP8266):")]),e._v(" "),t("p",[e._v("Without certificate, in this case the gateway will use the ota_server_cert certificate defined in default_ota_cert.h")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "test",\n "password": "OTAPASSWORD",\n "url": "https://github.com/1technophile/OpenMQTTGateway/releases/download/v0.9.12/esp32dev-ble-firmware.bin"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("With certificate (replace the \\n in the certificate by spaces to publish it easily):")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "test",\n "password": "OTAPASSWORD",\n "url": "https://github.com/1technophile/OpenMQTTGateway/releases/download/v0.9.12/esp32dev-ble-firmware.bin",\n "ota_server_cert": "-----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE-----"}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("A bash script is available "),t("a",{attrs:{href:"ota_command_cert.zip"}},[e._v("here also")]),e._v(" to simplify the use of the "),t("code",[e._v("server_cert")]),e._v(" parameter.")]),e._v(" "),t("p",[e._v("Alternatively the OTA certificate can also be saved with the cnt_index for future use:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/config" -m \'{\n "cnt_index": 1,\n "save_cnt":true,\n "ota_server_cert": "-----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE-----"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("The other connection parameters corresponding to the index need to be valid for the save function to work. This command will switch to connection parameters of index 1.")]),e._v(" "),t("p",[e._v("To enable this functionality, "),t("code",[e._v("MQTT_HTTPS_FW_UPDATE")]),e._v(" will need to be defined or the line that defines in in user_config.h will need to be uncommented.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If using an unsecure MQTT broker it is "),t("strong",[e._v("highly recommended")]),e._v(" to disable the password checking by setting the macro "),t("code",[e._v("MQTT_HTTPS_FW_UPDATE_USE_PASSWORD")]),e._v(" to 0 (default is 1 (enabled)), otherwise a clear text password may be sent over the network.")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("server_cert")]),e._v(" parameter is optional. If the update server has changed or certificate updated or not set in "),t("code",[e._v("user_config.h")]),e._v(" then you can provide the certificate here.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("The pre-built binaries for "),t("strong",[e._v("rfbridge")]),e._v(" and "),t("strong",[e._v("avatto-bakeey-ir")]),e._v(" have the above WiFi and MQTT broker credentials and the Firmware update via MQTT options disabled. This is due to the restricted available flash, so as to still be able to use OTA firmware updates for these boards.")])]),e._v(" "),t("h1",{attrs:{id:"communication-layers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communication-layers"}},[e._v("#")]),e._v(" Communication layers")]),e._v(" "),t("h2",{attrs:{id:"mqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mqtt"}},[e._v("#")]),e._v(" MQTT")]),e._v(" "),t("p",[e._v("OpenMQTTGateway uses per default MQTT on top of Ethernet or WiFi for communicating (default: true).\nThe MQTT communication can be deactivated with the following command:\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"mqtt":false}\'')]),e._v("\nOnce activated the MQTT API is no longer accessible")]),e._v(" "),t("h2",{attrs:{id:"serial"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serial"}},[e._v("#")]),e._v(" Serial")]),e._v(" "),t("p",[e._v("Added to MQTT, OpenMQTTGateway cans use Serial to transmit or receive json data (default: false):\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"serial":true}\'')])]),e._v(" "),t("p",[e._v("The build need to have the following macro:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" '-DZgatewaySERIAL=\"SERIAL\"'\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("An example scenario is a slave offline ESP32 dedicated to RF decoding connected to another online ESP32 through Serial.")]),e._v(" "),t("h1",{attrs:{id:"indicators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#indicators"}},[e._v("#")]),e._v(" Indicators")]),e._v(" "),t("h2",{attrs:{id:"change-the-led-indicator-brightness"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-led-indicator-brightness"}},[e._v("#")]),e._v(" Change the LED indicator brightness")]),e._v(" "),t("p",[e._v("Minimum: 0, Maximum: 255, Default defined by DEFAULT_ADJ_BRIGHTNESS")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"brightness":200}\'')])]),e._v(" "),t("h2",{attrs:{id:"understanding-led-indicators-in-openmqttgateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#understanding-led-indicators-in-openmqttgateway"}},[e._v("#")]),e._v(" Understanding LED Indicators in OpenMQTTGateway")]),e._v(" "),t("p",[e._v("With boards having one or several RGB Led, OpenMQTTGateway uses them to provide visual feedback about its current state. This guide will help you interpret these LED signals to understand what's happening with your gateway.")]),e._v(" "),t("h2",{attrs:{id:"led-color-guide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#led-color-guide"}},[e._v("#")]),e._v(" LED Color Guide")]),e._v(" "),t("p",[e._v("OpenMQTTGateway uses a variety of colors to indicate different states:")]),e._v(" "),t("p",[e._v("Green (0x00FF00): Indicates normal operation or successful connections\nBlue (0x0000FF): Shows processing or offline status\nOrange (0xFFA500): Indicates waiting states or minor issues\nYellow (0xFFFF00): Used during the onboarding process\nRed (0xFF0000): Signals an error state\nMagenta (0xFF00FF): Indicates local Over-The-Air (OTA) updates\nPurple (0x8000FF): Shows remote OTA updates are in progress")]),e._v(" "),t("h2",{attrs:{id:"understanding-gateway-states"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#understanding-gateway-states"}},[e._v("#")]),e._v(" Understanding Gateway States")]),e._v(" "),t("p",[e._v("Here's what different LED behaviors mean:")]),e._v(" "),t("h3",{attrs:{id:"power-on"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#power-on"}},[e._v("#")]),e._v(" Power On")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Solid light\nMeaning: The gateway is powered and operational")]),e._v(" "),t("h3",{attrs:{id:"processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#processing"}},[e._v("#")]),e._v(" Processing")]),e._v(" "),t("p",[e._v("Color: Blue\nBehavior: Blinking (3 times)\nMeaning: The gateway is processing data")]),e._v(" "),t("h3",{attrs:{id:"waiting-for-onboarding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#waiting-for-onboarding"}},[e._v("#")]),e._v(" Waiting for Onboarding")]),e._v(" "),t("p",[e._v("Color: Orange\nBehavior: Solid light\nMeaning: The gateway is ready to be set up")]),e._v(" "),t("h3",{attrs:{id:"onboarding-in-progress"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#onboarding-in-progress"}},[e._v("#")]),e._v(" Onboarding in Progress")]),e._v(" "),t("p",[e._v("Color: Yellow\nBehavior: Solid light\nMeaning: The gateway is being configured")]),e._v(" "),t("h3",{attrs:{id:"network-connected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#network-connected"}},[e._v("#")]),e._v(" Network Connected")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Solid light\nMeaning: Successfully connected to the network")]),e._v(" "),t("h3",{attrs:{id:"network-disconnected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#network-disconnected"}},[e._v("#")]),e._v(" Network Disconnected")]),e._v(" "),t("p",[e._v("Color: Orange\nBehavior: Blinking\nMeaning: Lost connection to the network")]),e._v(" "),t("h3",{attrs:{id:"mqtt-broker-connected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-broker-connected"}},[e._v("#")]),e._v(" MQTT Broker Connected")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Solid light\nMeaning: Successfully connected to the MQTT broker")]),e._v(" "),t("h3",{attrs:{id:"mqtt-broker-disconnected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-broker-disconnected"}},[e._v("#")]),e._v(" MQTT Broker Disconnected")]),e._v(" "),t("p",[e._v("Color: Orange\nBehavior: Blinking\nMeaning: Lost connection to the MQTT broker")]),e._v(" "),t("h3",{attrs:{id:"offline"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#offline"}},[e._v("#")]),e._v(" Offline")]),e._v(" "),t("p",[e._v("Color: Blue\nBehavior: Blinking\nMeaning: The gateway is offline")]),e._v(" "),t("h3",{attrs:{id:"local-ota-update"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#local-ota-update"}},[e._v("#")]),e._v(" Local OTA Update")]),e._v(" "),t("p",[e._v("Color: Magenta\nBehavior: Blinking\nMeaning: A local Over-The-Air update is in progress")]),e._v(" "),t("h3",{attrs:{id:"remote-ota-update"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remote-ota-update"}},[e._v("#")]),e._v(" Remote OTA Update")]),e._v(" "),t("p",[e._v("Color: Purple\nBehavior: Blinking\nMeaning: A remote Over-The-Air update is in progress")]),e._v(" "),t("h3",{attrs:{id:"error"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#error"}},[e._v("#")]),e._v(" Error")]),e._v(" "),t("p",[e._v("Color: Red\nBehavior: Blinking (3 times)\nMeaning: An error has occurred")]),e._v(" "),t("h3",{attrs:{id:"actuator-on-off"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#actuator-on-off"}},[e._v("#")]),e._v(" Actuator On/Off")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Depends on actuator state\nMeaning: Indicates the state of a connected actuator")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{405:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway-OTA-Update-Home-Assistant.1b857c45.png"},461:function(e,t,a){"use strict";a.r(t);var s=a(14),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"system-commands-esp-only"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#system-commands-esp-only"}},[e._v("#")]),e._v(" System commands (ESP only)")]),e._v(" "),t("h2",{attrs:{id:"restart-the-esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restart-the-esp"}},[e._v("#")]),e._v(" Restart the ESP")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"cmd":"restart"}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("With Home Assistant, this command is directly available through MQTT auto discovery as a switch into the HASS OpenMQTTGateway device entities list.")])]),e._v(" "),t("h2",{attrs:{id:"erase-the-esp-settings"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#erase-the-esp-settings"}},[e._v("#")]),e._v(" Erase the ESP settings")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"cmd":"erase"}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("With Home Assistant, this command is directly available through MQTT auto discovery as a switch into the HASS OpenMQTTGateway device entities list.")])]),e._v(" "),t("h2",{attrs:{id:"retrieve-current-status-of-the-esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#retrieve-current-status-of-the-esp"}},[e._v("#")]),e._v(" Retrieve current status of the ESP")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"cmd":"status"}\'')])]),e._v(" "),t("h2",{attrs:{id:"auto-discovery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery"}},[e._v("#")]),e._v(" Auto discovery")]),e._v(" "),t("p",[e._v("You can deactivate the MQTT auto-discovery function, which enables you to create devices/entities with the Home Assistant convention automatically. This function is set to "),t("code",[e._v("true")]),e._v(" at startup for 30 minutes unless you deactivate it.")]),e._v(" "),t("h3",{attrs:{id:"deactivate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deactivate"}},[e._v("#")]),e._v(" Deactivate")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"disc":false}\'')])]),e._v(" "),t("h3",{attrs:{id:"activate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#activate"}},[e._v("#")]),e._v(" Activate")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"disc":true}\'')])]),e._v(" "),t("p",[e._v("If you want the settings to be kept upon gateway restart, you can save the state by adding "),t("code",[e._v('"save":true')]),e._v(" (ESP32 only).\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"disc":false, "save":true}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Auto discovery is enabled by default on release binaries and platformio.")])]),e._v(" "),t("h2",{attrs:{id:"activate-offline-mode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#activate-offline-mode"}},[e._v("#")]),e._v(" Activate Offline mode")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"offline":true,"save":true}\'')])]),e._v(" "),t("h2",{attrs:{id:"change-the-wifi-credentials"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-wifi-credentials"}},[e._v("#")]),e._v(" Change the WiFi credentials")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"wifi_ssid":"ssid", "wifi_pass":"password"}\'')])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the new connection fails the gateway will fallback to the previous connection.")])]),e._v(" "),t("h2",{attrs:{id:"change-the-gateway-password"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-gateway-password"}},[e._v("#")]),e._v(" Change the gateway password")]),e._v(" "),t("p",[e._v("The password must be 8 characters minimum.")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"gw_pass":"12345678"}\'')])]),e._v(" "),t("h2",{attrs:{id:"change-the-mqtt-broker-credentials"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-mqtt-broker-credentials"}},[e._v("#")]),e._v(" Change the MQTT broker credentials")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "mqtt_user": "user_name",\n "mqtt_pass": "password",\n "mqtt_server": "host",\n "mqtt_port": "port",\n "mqtt_validate": false,\n "mqtt_secure": false\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br"),t("span",{staticClass:"line-number"},[e._v("8")]),t("br"),t("span",{staticClass:"line-number"},[e._v("9")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("INFO")]),e._v(" "),t("p",[e._v("By default this function is not available on the pre built binary of RFBridge, in order to have less code size and enable to have OTA update working properly. So as to enable it remove from the rf bridge env:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("build_flags = '-UMQTTsetMQTT'\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the new connection fails the gateway will fallback to the previous connection.")])]),e._v(" "),t("h2",{attrs:{id:"change-the-mqtt-main-topic-discovery-prefix-and-or-gateway-name"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-mqtt-main-topic-discovery-prefix-and-or-gateway-name"}},[e._v("#")]),e._v(" Change the MQTT main topic, discovery prefix, and or gateway name")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "mqtt_topic": "topic/",\n "discovery_prefix": "prefix",\n "gateway_name": "name"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("INFO")]),e._v(" "),t("p",[e._v("This will change the subscribed and published mqtt_topic/gateway_name that the gateway uses. No parameters are mandatory, the current topic or gateway name will be used if not supplied.")])]),e._v(" "),t("h2",{attrs:{id:"switching-brokers-and-using-signed-and-client-certificates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#switching-brokers-and-using-signed-and-client-certificates"}},[e._v("#")]),e._v(" Switching brokers and using signed and client certificates")]),e._v(" "),t("p",[e._v("In the "),t("code",[e._v("user_config.h")]),e._v(" file it is possible to specify multiple MQTT brokers and client certificates.\nAdditionally, support for multiple brokers and client certificates has been added. To use this, it is required that the server certificate, client certificate, and client key are provided as their own constant string value as demonstrated in the file."),t("br"),e._v("\nTo add more than one broker and switch between them it is necessary to provide all of the relevant certificates/keys and add their respective variable names in the "),t("code",[e._v("cnt_parameters_array")]),e._v(" structure, as shown in "),t("code",[e._v("user_config.h")]),e._v("..")]),e._v(" "),t("p",[e._v("To switch between these connections with an MQTT command message, the format is as follows:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "mqtt_user": "user",\n "mqtt_pass": "password",\n "mqtt_server": "host",\n "mqtt_port": "port",\n "mqtt_secure": true,\n "mqtt_validate": true,\n "cnt_index":1,\n "save_cnt": true\n }\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br"),t("span",{staticClass:"line-number"},[e._v("8")]),t("br"),t("span",{staticClass:"line-number"},[e._v("9")]),t("br"),t("span",{staticClass:"line-number"},[e._v("10")]),t("br"),t("span",{staticClass:"line-number"},[e._v("11")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("cnt_index")]),e._v(" value corresponds to the 0 to 2 index of the "),t("code",[e._v("cnt_parameters_array")]),e._v(" in "),t("code",[e._v("user_config.h")]),e._v(".\n0 being the default index, containing the onboarding parameters.")])]),e._v(" "),t("p",[e._v("To read the connection parameters:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "cnt_index":1,\n "read_cnt": true\n }\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("To test a connection change without saving:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m\n\'{\n "cnt_index":1,\n "test_cnt": true\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If the client can't connect to the MQTT broker corresponding to the current "),t("code",[e._v("cnt_index")]),e._v(", it will increment the index to the next valid connection set and restart with it.")])]),e._v(" "),t("h2",{attrs:{id:"saving-loading-connection-parameters-certificates-at-runtime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#saving-loading-connection-parameters-certificates-at-runtime"}},[e._v("#")]),e._v(" Saving/Loading connection parameters/certificates at runtime")]),e._v(" "),t("p",[e._v("This chapter details the process for managing certificates/connections parameters used for secure MQTT communication with OpenMQTTGateway")]),e._v(" "),t("h3",{attrs:{id:"storing-and-loading-certificates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#storing-and-loading-certificates"}},[e._v("#")]),e._v(" Storing and Loading Certificates")]),e._v(" "),t("ul",[t("li",[e._v("Flash Memory Storage:\nCertificates can be saved to the flash memory using specific indices. Valid indices for storing certificates are 1 and 2, as 0 is reserved for the default certificate.")]),e._v(" "),t("li",[e._v("RAM Memory Loading:\nCertificates can be loaded from RAM, where valid indices range from 0 to 2. The device publishes a hash of the certificate to the broker to verify its identity. If the connection using the current certificate fails, the device will revert to the previous certificate.")])]),e._v(" "),t("h3",{attrs:{id:"use-case-changing-a-group-of-certificates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-case-changing-a-group-of-certificates"}},[e._v("#")]),e._v(" Use Case: Changing a Group of Certificates")]),e._v(" "),t("p",[e._v("When updating certificates, follow these steps to ensure that the new certificates are correctly loaded and used:")]),e._v(" "),t("ol",[t("li",[e._v("Push Certificates via MQTT:\nSend the new certificates one by one through MQTT, using indices 1 or 2. Replace newline characters (\\n) in the certificates with spaces.")])]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"cnt_index"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"mqtt_server_cert"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN CERTIFICATE----- MIIDQTCC----END CERTIFICATE-----"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("Accepted certificates are:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("mqtt_server_cert")])]),e._v(" "),t("li",[t("code",[e._v("mqtt_client_cert")])]),e._v(" "),t("li",[t("code",[e._v("mqtt_client_key")])]),e._v(" "),t("li",[t("code",[e._v("ota_server_cert")])])]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("Verify Certificates in RAM:\nAfter pushing the certificates, verify that they have been correctly loaded into RAM.")])]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"cnt_index"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"read_cnt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Test and Save Certificates:\nOnce verification is complete, test the connection using the new certificates. If the connection is successful, send the command to save the certificates to flash.")])]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"cnt_index"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"save_cnt"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("ol",{attrs:{start:"4"}},[t("li",[t("p",[e._v("Broker Connection:\nThe broker will attempt to use the newly received certificates for the connection.")])]),e._v(" "),t("li",[t("p",[e._v("Successful Connection Handling:\nIf the connection is successful, the certificates are permanently stored in the flash memory at the specified index.")])]),e._v(" "),t("li",[t("p",[e._v("Handling Connection Failures:\nIf the connection fails, the device will revert to the previously used certificate index, and the new certificates will not be saved.")])])]),e._v(" "),t("h1",{attrs:{id:"firmware-update-from-mqtt-esp-only"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#firmware-update-from-mqtt-esp-only"}},[e._v("#")]),e._v(" Firmware update from MQTT (ESP only)")]),e._v(" "),t("p",[e._v("When the gateway used is from a standard ESP32 environment "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/environments.ini",target:"_blank",rel:"noopener noreferrer"}},[e._v("listed and defined here"),t("OutboundLink")],1),e._v(", it can be updated through a simple MQTT command:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "latest"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("This would download the latest version firmware binary from Github and install it.\nIt can be used with version 1.5.0 and above.")]),e._v(" "),t("p",[e._v("Note that this update option is also autodiscovered through Home Assistant convention, you can update directly from the device page with 2 clicks.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(405),alt:"Home Assistant OTA Update"}})]),e._v(" "),t("p",[e._v("You can also indicate the target version to update:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "v1.2.0"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("OpenMQTTGateway checks at start and every hour if an update is available.")]),e._v(" "),t("p",[e._v("Alternatively if you want to choose the update URL you can use the command below (ESP32 and ESP8266):")]),e._v(" "),t("p",[e._v("Without certificate, in this case the gateway will use the ota_server_cert certificate defined in default_ota_cert.h")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "test",\n "password": "OTAPASSWORD",\n "url": "https://github.com/1technophile/OpenMQTTGateway/releases/download/v0.9.12/esp32dev-ble-firmware.bin"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("With certificate (replace the \\n in the certificate by spaces to publish it easily):")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/firmware_update" -m \'{\n "version": "test",\n "password": "OTAPASSWORD",\n "url": "https://github.com/1technophile/OpenMQTTGateway/releases/download/v0.9.12/esp32dev-ble-firmware.bin",\n "ota_server_cert": "-----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE-----"}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("A bash script is available "),t("a",{attrs:{href:"ota_command_cert.zip"}},[e._v("here also")]),e._v(" to simplify the use of the "),t("code",[e._v("server_cert")]),e._v(" parameter.")]),e._v(" "),t("p",[e._v("Alternatively the OTA certificate can also be saved with the cnt_index for future use:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway_ESP32_BLE/commands/MQTTtoSYS/config" -m \'{\n "cnt_index": 1,\n "save_cnt":true,\n "ota_server_cert": "-----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE-----"\n}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br")])]),t("p",[e._v("The other connection parameters corresponding to the index need to be valid for the save function to work. This command will switch to connection parameters of index 1.")]),e._v(" "),t("p",[e._v("To enable this functionality, "),t("code",[e._v("MQTT_HTTPS_FW_UPDATE")]),e._v(" will need to be defined or the line that defines in in user_config.h will need to be uncommented.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("If using an unsecure MQTT broker it is "),t("strong",[e._v("highly recommended")]),e._v(" to disable the password checking by setting the macro "),t("code",[e._v("MQTT_HTTPS_FW_UPDATE_USE_PASSWORD")]),e._v(" to 0 (default is 1 (enabled)), otherwise a clear text password may be sent over the network.")]),e._v(" "),t("p",[e._v("The "),t("code",[e._v("server_cert")]),e._v(" parameter is optional. If the update server has changed or certificate updated or not set in "),t("code",[e._v("user_config.h")]),e._v(" then you can provide the certificate here.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("The pre-built binaries for "),t("strong",[e._v("rfbridge")]),e._v(" and "),t("strong",[e._v("avatto-bakeey-ir")]),e._v(" have the above WiFi and MQTT broker credentials and the Firmware update via MQTT options disabled. This is due to the restricted available flash, so as to still be able to use OTA firmware updates for these boards.")])]),e._v(" "),t("h1",{attrs:{id:"communication-layers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#communication-layers"}},[e._v("#")]),e._v(" Communication layers")]),e._v(" "),t("h2",{attrs:{id:"mqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mqtt"}},[e._v("#")]),e._v(" MQTT")]),e._v(" "),t("p",[e._v("OpenMQTTGateway uses per default MQTT on top of Ethernet or WiFi for communicating (default: true).\nThe MQTT communication can be deactivated with the following command:\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"mqtt":false}\'')]),e._v("\nOnce activated the MQTT API is no longer accessible")]),e._v(" "),t("h2",{attrs:{id:"serial"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#serial"}},[e._v("#")]),e._v(" Serial")]),e._v(" "),t("p",[e._v("Added to MQTT, OpenMQTTGateway cans use Serial to transmit or receive json data (default: false):\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"serial":true}\'')])]),e._v(" "),t("p",[e._v("The build need to have the following macro:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" '-DZgatewaySERIAL=\"SERIAL\"'\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("An example scenario is a slave offline ESP32 dedicated to RF decoding connected to another online ESP32 through Serial.")]),e._v(" "),t("h1",{attrs:{id:"indicators"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#indicators"}},[e._v("#")]),e._v(" Indicators")]),e._v(" "),t("h2",{attrs:{id:"change-the-led-indicator-brightness"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-the-led-indicator-brightness"}},[e._v("#")]),e._v(" Change the LED indicator brightness")]),e._v(" "),t("p",[e._v("Minimum: 0, Maximum: 255, Default defined by DEFAULT_ADJ_BRIGHTNESS")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"brightness":200}\'')])]),e._v(" "),t("h2",{attrs:{id:"understanding-led-indicators-in-openmqttgateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#understanding-led-indicators-in-openmqttgateway"}},[e._v("#")]),e._v(" Understanding LED Indicators in OpenMQTTGateway")]),e._v(" "),t("p",[e._v("With boards having one or several RGB Led, OpenMQTTGateway uses them to provide visual feedback about its current state. This guide will help you interpret these LED signals to understand what's happening with your gateway.")]),e._v(" "),t("h2",{attrs:{id:"led-color-guide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#led-color-guide"}},[e._v("#")]),e._v(" LED Color Guide")]),e._v(" "),t("p",[e._v("OpenMQTTGateway uses a variety of colors to indicate different states:")]),e._v(" "),t("p",[e._v("Green (0x00FF00): Indicates normal operation or successful connections\nBlue (0x0000FF): Shows processing or offline status\nOrange (0xFFA500): Indicates waiting states or minor issues\nYellow (0xFFFF00): Used during the onboarding process\nRed (0xFF0000): Signals an error state\nMagenta (0xFF00FF): Indicates local Over-The-Air (OTA) updates\nPurple (0x8000FF): Shows remote OTA updates are in progress")]),e._v(" "),t("h2",{attrs:{id:"understanding-gateway-states"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#understanding-gateway-states"}},[e._v("#")]),e._v(" Understanding Gateway States")]),e._v(" "),t("p",[e._v("Here's what different LED behaviors mean:")]),e._v(" "),t("h3",{attrs:{id:"power-on"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#power-on"}},[e._v("#")]),e._v(" Power On")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Solid light\nMeaning: The gateway is powered and operational")]),e._v(" "),t("h3",{attrs:{id:"processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#processing"}},[e._v("#")]),e._v(" Processing")]),e._v(" "),t("p",[e._v("Color: Blue\nBehavior: Blinking (3 times)\nMeaning: The gateway is processing data")]),e._v(" "),t("h3",{attrs:{id:"waiting-for-onboarding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#waiting-for-onboarding"}},[e._v("#")]),e._v(" Waiting for Onboarding")]),e._v(" "),t("p",[e._v("Color: Orange\nBehavior: Solid light\nMeaning: The gateway is ready to be set up")]),e._v(" "),t("h3",{attrs:{id:"onboarding-in-progress"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#onboarding-in-progress"}},[e._v("#")]),e._v(" Onboarding in Progress")]),e._v(" "),t("p",[e._v("Color: Yellow\nBehavior: Solid light\nMeaning: The gateway is being configured")]),e._v(" "),t("h3",{attrs:{id:"network-connected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#network-connected"}},[e._v("#")]),e._v(" Network Connected")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Solid light\nMeaning: Successfully connected to the network")]),e._v(" "),t("h3",{attrs:{id:"network-disconnected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#network-disconnected"}},[e._v("#")]),e._v(" Network Disconnected")]),e._v(" "),t("p",[e._v("Color: Orange\nBehavior: Blinking\nMeaning: Lost connection to the network")]),e._v(" "),t("h3",{attrs:{id:"mqtt-broker-connected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-broker-connected"}},[e._v("#")]),e._v(" MQTT Broker Connected")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Solid light\nMeaning: Successfully connected to the MQTT broker")]),e._v(" "),t("h3",{attrs:{id:"mqtt-broker-disconnected"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-broker-disconnected"}},[e._v("#")]),e._v(" MQTT Broker Disconnected")]),e._v(" "),t("p",[e._v("Color: Orange\nBehavior: Blinking\nMeaning: Lost connection to the MQTT broker")]),e._v(" "),t("h3",{attrs:{id:"offline"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#offline"}},[e._v("#")]),e._v(" Offline")]),e._v(" "),t("p",[e._v("Color: Blue\nBehavior: Blinking\nMeaning: The gateway is offline")]),e._v(" "),t("h3",{attrs:{id:"local-ota-update"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#local-ota-update"}},[e._v("#")]),e._v(" Local OTA Update")]),e._v(" "),t("p",[e._v("Color: Magenta\nBehavior: Blinking\nMeaning: A local Over-The-Air update is in progress")]),e._v(" "),t("h3",{attrs:{id:"remote-ota-update"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#remote-ota-update"}},[e._v("#")]),e._v(" Remote OTA Update")]),e._v(" "),t("p",[e._v("Color: Purple\nBehavior: Blinking\nMeaning: A remote Over-The-Air update is in progress")]),e._v(" "),t("h3",{attrs:{id:"error"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#error"}},[e._v("#")]),e._v(" Error")]),e._v(" "),t("p",[e._v("Color: Red\nBehavior: Blinking (3 times)\nMeaning: An error has occurred")]),e._v(" "),t("h3",{attrs:{id:"actuator-on-off"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#actuator-on-off"}},[e._v("#")]),e._v(" Actuator On/Off")]),e._v(" "),t("p",[e._v("Color: Green\nBehavior: Depends on actuator state\nMeaning: Indicates the state of a connected actuator")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/49.d705f84d.js b/dev/assets/js/49.be3c6616.js similarity index 97% rename from dev/assets/js/49.d705f84d.js rename to dev/assets/js/49.be3c6616.js index efcab3e7..26109a33 100644 --- a/dev/assets/js/49.d705f84d.js +++ b/dev/assets/js/49.be3c6616.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{431:function(e,t,r){"use strict";r.r(t);var o=r(14),a=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"adding-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-protocols"}},[e._v("#")]),e._v(" Adding protocols")]),e._v(" "),t("p",[e._v("Adding your device protocol to OpenMQTTGateway enables it to increase interoperability and to create new use cases with your device. Below you will find some guidance to do that.")]),e._v(" "),t("h2",{attrs:{id:"rf-or-ir"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf-or-ir"}},[e._v("#")]),e._v(" RF or IR")]),e._v(" "),t("p",[e._v("For adding RF and IR protocols to OpenMQTTGateway the best way is to do a pull request to "),t("a",{attrs:{href:"https://github.com/1technophile/rc-switch",target:"_blank",rel:"noopener noreferrer"}},[e._v("RCSwitch"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://github.com/pilight/pilight",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pilight"),t("OutboundLink")],1),e._v(" for RF, and "),t("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266",target:"_blank",rel:"noopener noreferrer"}},[e._v("IRRemoteESP8266"),t("OutboundLink")],1),e._v(" for IR.")]),e._v(" "),t("h2",{attrs:{id:"ble"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ble"}},[e._v("#")]),e._v(" BLE")]),e._v(" "),t("p",[e._v("For BLE message decoding OpenMQTTGateway uses the "),t("a",{attrs:{href:"https://decoder.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs Decoder"),t("OutboundLink")],1),e._v(" library. New device decoder pull requests can be submitted directly to the "),t("a",{attrs:{href:"https://github.com/theengs/decoder",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repository"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Currently we support the reading of advertizing BLE devices, advertizing means that the BLE device broadcasts regularly its sensor data without the need of a BLE connection.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{433:function(e,t,r){"use strict";r.r(t);var o=r(14),a=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"adding-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-protocols"}},[e._v("#")]),e._v(" Adding protocols")]),e._v(" "),t("p",[e._v("Adding your device protocol to OpenMQTTGateway enables it to increase interoperability and to create new use cases with your device. Below you will find some guidance to do that.")]),e._v(" "),t("h2",{attrs:{id:"rf-or-ir"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf-or-ir"}},[e._v("#")]),e._v(" RF or IR")]),e._v(" "),t("p",[e._v("For adding RF and IR protocols to OpenMQTTGateway the best way is to do a pull request to "),t("a",{attrs:{href:"https://github.com/1technophile/rc-switch",target:"_blank",rel:"noopener noreferrer"}},[e._v("RCSwitch"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://github.com/pilight/pilight",target:"_blank",rel:"noopener noreferrer"}},[e._v("Pilight"),t("OutboundLink")],1),e._v(" for RF, and "),t("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266",target:"_blank",rel:"noopener noreferrer"}},[e._v("IRRemoteESP8266"),t("OutboundLink")],1),e._v(" for IR.")]),e._v(" "),t("h2",{attrs:{id:"ble"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ble"}},[e._v("#")]),e._v(" BLE")]),e._v(" "),t("p",[e._v("For BLE message decoding OpenMQTTGateway uses the "),t("a",{attrs:{href:"https://decoder.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs Decoder"),t("OutboundLink")],1),e._v(" library. New device decoder pull requests can be submitted directly to the "),t("a",{attrs:{href:"https://github.com/theengs/decoder",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repository"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Currently we support the reading of advertizing BLE devices, advertizing means that the BLE device broadcasts regularly its sensor data without the need of a BLE connection.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/51.f851c3ef.js b/dev/assets/js/51.91585bcb.js similarity index 99% rename from dev/assets/js/51.f851c3ef.js rename to dev/assets/js/51.91585bcb.js index 27341a90..aac9c727 100644 --- a/dev/assets/js/51.f851c3ef.js +++ b/dev/assets/js/51.91585bcb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{433:function(e,t,n){"use strict";n.r(t);var a=n(14),r=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"development-contributions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#development-contributions"}},[e._v("#")]),e._v(" Development contributions")]),e._v(" "),t("p",[e._v("We like pull requests from everyone. By participating in this project, you\nagree to follow the code of conduct below")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/CODE_OF_CONDUCT.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("code of conduct"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://google.github.io/styleguide/cppguide.html#Formatting",target:"_blank",rel:"noopener noreferrer"}},[e._v("code style guide"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v('So as to format automatically your document you have to add the "clang-Format" extension to VSCode, once done, you can format the code by doing a right click into the code file window and clicking "Format document".')]),e._v(" "),t("p",[e._v("Fork the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/tree/development",target:"_blank",rel:"noopener noreferrer"}},[e._v("development branch"),t("OutboundLink")],1),e._v(", then clone the repo")]),e._v(" "),t("p",[e._v("Make your modification,")]),e._v(" "),t("ul",[t("li",[e._v("If you want to add a new gateway, name it "),t("code",[e._v("ZgatewayXXX")]),e._v(", "),t("code",[e._v("XXX")]),e._v(" replaced by your gateway communication type, can be more than three letters")]),e._v(" "),t("li",[e._v("If you want to add a new sensor, name it "),t("code",[e._v("ZsensorYYY")]),e._v(", "),t("code",[e._v("YYY")]),e._v(" replaced by your sensor type, can be more than three letters")]),e._v(" "),t("li",[e._v("If you want to add a new actuator, name it "),t("code",[e._v("ZactuatorZZZ")]),e._v(", "),t("code",[e._v("ZZZ")]),e._v(" replaced by your actuator type, can be more than three letters")])]),e._v(" "),t("p",[e._v("Review your code, compile it for ESP32 and ESP8266")]),e._v(" "),t("p",[e._v("Test it locally on your hardware config")]),e._v(" "),t("p",[e._v("Emit a pull request")]),e._v(" "),t("p",[e._v("Verify the GitHub Actions CI compilation results")]),e._v(" "),t("p",[e._v("Request for review")]),e._v(" "),t("p",[e._v("We may suggest some changes, improvements or alternatives.")]),e._v(" "),t("p",[e._v("Some things that will increase the chance that your pull request is accepted:")]),e._v(" "),t("ul",[t("li",[e._v("Comment your code,")]),e._v(" "),t("li",[e._v("Ask eventually for design guidelines,")]),e._v(" "),t("li",[e._v("Write a "),t("a",{attrs:{href:"http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("good commit message"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"nightly-builds"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nightly-builds"}},[e._v("#")]),e._v(" Nightly builds")]),e._v(" "),t("p",[e._v("Nightly builds can be found "),t("a",{attrs:{href:"https://docs.openmqttgateway.com/dev/upload/web-install.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" for testing purposes only.\nThey are generated from the development branch nightly or from a particular pull request upon request.")]),e._v(" "),t("h2",{attrs:{id:"developer-certificate-of-origin"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#developer-certificate-of-origin"}},[e._v("#")]),e._v(" Developer Certificate Of Origin")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" By making a contribution to this project, I certify that:\n\n (a) The contribution was created in whole or in part by me and I\n have the right to submit it under the open source license\n indicated in the file; or\n\n (b) The contribution is based upon previous work that, to the best\n of my knowledge, is covered under an appropriate open source\n license and I have the right under that license to submit that\n work with modifications, whether created in whole or in part\n by me, under the same open source license (unless I am\n permitted to submit under a different license), as indicated\n in the file; or\n\n (c) The contribution was provided directly to me by some other\n person who certified (a), (b) or (c) and I have not modified\n it.\n\n (d) I understand and agree that this project and the contribution\n are public and that a record of the contribution (including all\n personal information I submit with it, including my sign-off) is\n maintained indefinitely and may be redistributed consistent with\n this project or the open source license(s) involved.\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br"),t("span",{staticClass:"line-number"},[e._v("8")]),t("br"),t("span",{staticClass:"line-number"},[e._v("9")]),t("br"),t("span",{staticClass:"line-number"},[e._v("10")]),t("br"),t("span",{staticClass:"line-number"},[e._v("11")]),t("br"),t("span",{staticClass:"line-number"},[e._v("12")]),t("br"),t("span",{staticClass:"line-number"},[e._v("13")]),t("br"),t("span",{staticClass:"line-number"},[e._v("14")]),t("br"),t("span",{staticClass:"line-number"},[e._v("15")]),t("br"),t("span",{staticClass:"line-number"},[e._v("16")]),t("br"),t("span",{staticClass:"line-number"},[e._v("17")]),t("br"),t("span",{staticClass:"line-number"},[e._v("18")]),t("br"),t("span",{staticClass:"line-number"},[e._v("19")]),t("br"),t("span",{staticClass:"line-number"},[e._v("20")]),t("br"),t("span",{staticClass:"line-number"},[e._v("21")]),t("br"),t("span",{staticClass:"line-number"},[e._v("22")]),t("br"),t("span",{staticClass:"line-number"},[e._v("23")]),t("br")])]),t("p",[e._v("This Developer Certificate Of Origin (DCO) was adopted on June 7, 2021.")]),e._v(" "),t("p",[e._v("The text of this license is available under the "),t("a",{attrs:{href:"http://creativecommons.org/licenses/by-sa/3.0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Creative Commons Attribution-ShareAlike 3.0 Unported License"),t("OutboundLink")],1),e._v(". It is based on the Linux "),t("a",{attrs:{href:"http://elinux.org/Developer_Certificate_Of_Origin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Developer Certificate Of Origin"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("To accept the DCO it is required to put a x between [ ] on "),t("code",[e._v("[ ] I accept the DCO")]),e._v(" in the PR template when submitting it. The [ ] is an opt-in box, so you have to manually accept it.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{434:function(e,t,n){"use strict";n.r(t);var a=n(14),r=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"development-contributions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#development-contributions"}},[e._v("#")]),e._v(" Development contributions")]),e._v(" "),t("p",[e._v("We like pull requests from everyone. By participating in this project, you\nagree to follow the code of conduct below")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/CODE_OF_CONDUCT.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("code of conduct"),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://google.github.io/styleguide/cppguide.html#Formatting",target:"_blank",rel:"noopener noreferrer"}},[e._v("code style guide"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v('So as to format automatically your document you have to add the "clang-Format" extension to VSCode, once done, you can format the code by doing a right click into the code file window and clicking "Format document".')]),e._v(" "),t("p",[e._v("Fork the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/tree/development",target:"_blank",rel:"noopener noreferrer"}},[e._v("development branch"),t("OutboundLink")],1),e._v(", then clone the repo")]),e._v(" "),t("p",[e._v("Make your modification,")]),e._v(" "),t("ul",[t("li",[e._v("If you want to add a new gateway, name it "),t("code",[e._v("ZgatewayXXX")]),e._v(", "),t("code",[e._v("XXX")]),e._v(" replaced by your gateway communication type, can be more than three letters")]),e._v(" "),t("li",[e._v("If you want to add a new sensor, name it "),t("code",[e._v("ZsensorYYY")]),e._v(", "),t("code",[e._v("YYY")]),e._v(" replaced by your sensor type, can be more than three letters")]),e._v(" "),t("li",[e._v("If you want to add a new actuator, name it "),t("code",[e._v("ZactuatorZZZ")]),e._v(", "),t("code",[e._v("ZZZ")]),e._v(" replaced by your actuator type, can be more than three letters")])]),e._v(" "),t("p",[e._v("Review your code, compile it for ESP32 and ESP8266")]),e._v(" "),t("p",[e._v("Test it locally on your hardware config")]),e._v(" "),t("p",[e._v("Emit a pull request")]),e._v(" "),t("p",[e._v("Verify the GitHub Actions CI compilation results")]),e._v(" "),t("p",[e._v("Request for review")]),e._v(" "),t("p",[e._v("We may suggest some changes, improvements or alternatives.")]),e._v(" "),t("p",[e._v("Some things that will increase the chance that your pull request is accepted:")]),e._v(" "),t("ul",[t("li",[e._v("Comment your code,")]),e._v(" "),t("li",[e._v("Ask eventually for design guidelines,")]),e._v(" "),t("li",[e._v("Write a "),t("a",{attrs:{href:"http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("good commit message"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"nightly-builds"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nightly-builds"}},[e._v("#")]),e._v(" Nightly builds")]),e._v(" "),t("p",[e._v("Nightly builds can be found "),t("a",{attrs:{href:"https://docs.openmqttgateway.com/dev/upload/web-install.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" for testing purposes only.\nThey are generated from the development branch nightly or from a particular pull request upon request.")]),e._v(" "),t("h2",{attrs:{id:"developer-certificate-of-origin"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#developer-certificate-of-origin"}},[e._v("#")]),e._v(" Developer Certificate Of Origin")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v(" By making a contribution to this project, I certify that:\n\n (a) The contribution was created in whole or in part by me and I\n have the right to submit it under the open source license\n indicated in the file; or\n\n (b) The contribution is based upon previous work that, to the best\n of my knowledge, is covered under an appropriate open source\n license and I have the right under that license to submit that\n work with modifications, whether created in whole or in part\n by me, under the same open source license (unless I am\n permitted to submit under a different license), as indicated\n in the file; or\n\n (c) The contribution was provided directly to me by some other\n person who certified (a), (b) or (c) and I have not modified\n it.\n\n (d) I understand and agree that this project and the contribution\n are public and that a record of the contribution (including all\n personal information I submit with it, including my sign-off) is\n maintained indefinitely and may be redistributed consistent with\n this project or the open source license(s) involved.\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br"),t("span",{staticClass:"line-number"},[e._v("8")]),t("br"),t("span",{staticClass:"line-number"},[e._v("9")]),t("br"),t("span",{staticClass:"line-number"},[e._v("10")]),t("br"),t("span",{staticClass:"line-number"},[e._v("11")]),t("br"),t("span",{staticClass:"line-number"},[e._v("12")]),t("br"),t("span",{staticClass:"line-number"},[e._v("13")]),t("br"),t("span",{staticClass:"line-number"},[e._v("14")]),t("br"),t("span",{staticClass:"line-number"},[e._v("15")]),t("br"),t("span",{staticClass:"line-number"},[e._v("16")]),t("br"),t("span",{staticClass:"line-number"},[e._v("17")]),t("br"),t("span",{staticClass:"line-number"},[e._v("18")]),t("br"),t("span",{staticClass:"line-number"},[e._v("19")]),t("br"),t("span",{staticClass:"line-number"},[e._v("20")]),t("br"),t("span",{staticClass:"line-number"},[e._v("21")]),t("br"),t("span",{staticClass:"line-number"},[e._v("22")]),t("br"),t("span",{staticClass:"line-number"},[e._v("23")]),t("br")])]),t("p",[e._v("This Developer Certificate Of Origin (DCO) was adopted on June 7, 2021.")]),e._v(" "),t("p",[e._v("The text of this license is available under the "),t("a",{attrs:{href:"http://creativecommons.org/licenses/by-sa/3.0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Creative Commons Attribution-ShareAlike 3.0 Unported License"),t("OutboundLink")],1),e._v(". It is based on the Linux "),t("a",{attrs:{href:"http://elinux.org/Developer_Certificate_Of_Origin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Developer Certificate Of Origin"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("To accept the DCO it is required to put a x between [ ] on "),t("code",[e._v("[ ] I accept the DCO")]),e._v(" in the PR template when submitting it. The [ ] is an opt-in box, so you have to manually accept it.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/52.08fbfe1b.js b/dev/assets/js/52.0ad86cbd.js similarity index 97% rename from dev/assets/js/52.08fbfe1b.js rename to dev/assets/js/52.0ad86cbd.js index 5f17333d..c86c1413 100644 --- a/dev/assets/js/52.08fbfe1b.js +++ b/dev/assets/js/52.0ad86cbd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{434:function(e,t,r){"use strict";r.r(t);var o=r(14),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"supporting-the-project"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supporting-the-project"}},[e._v("#")]),e._v(" Supporting the project")]),e._v(" "),t("p",[e._v("If you like the project and/or used it please consider supporting it! It can be done in different ways:")]),e._v(" "),t("ul",[t("li",[e._v("Purchase the "),t("a",{attrs:{href:"https://app.theengs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs mobile application"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Purchase the "),t("a",{attrs:{href:"https://shop.theengs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Helping other users in the "),t("a",{attrs:{href:"https://community.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("community"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"development"}},[e._v("Contribute")]),e._v(" to the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway",target:"_blank",rel:"noopener noreferrer"}},[e._v("code"),t("OutboundLink")],1),e._v(" or the "),t("a",{attrs:{href:"https://docs.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Buy devices, boards or parts from the "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible web site"),t("OutboundLink")],1),e._v(", the devices and parts linked use affiliated links.")]),e._v(" "),t("li",[e._v("Donate or sponsor the project "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/graphs/contributors",target:"_blank",rel:"noopener noreferrer"}},[e._v("developers"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Make a video or a blog article about what you have done with "),t("a",{attrs:{href:"https://docs.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenMQTTGateway"),t("OutboundLink")],1),e._v(" and share it.")])]),e._v(" "),t("p",[e._v("Support open-source development through sponsorship and gain exclusive access to our private forum. Your questions, issues, and feature requests will receive priority attention, plus you'll gain insider access to our roadmap.")]),e._v(" "),t("div",{staticStyle:{"text-align":"center"}},[t("iframe",{staticStyle:{border:"0","border-radius":"6px"},attrs:{src:"https://github.com/sponsors/theengs/button",title:"Sponsor Theengs",height:"32",width:"228"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{436:function(e,t,r){"use strict";r.r(t);var o=r(14),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"supporting-the-project"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supporting-the-project"}},[e._v("#")]),e._v(" Supporting the project")]),e._v(" "),t("p",[e._v("If you like the project and/or used it please consider supporting it! It can be done in different ways:")]),e._v(" "),t("ul",[t("li",[e._v("Purchase the "),t("a",{attrs:{href:"https://app.theengs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs mobile application"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Purchase the "),t("a",{attrs:{href:"https://shop.theengs.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Helping other users in the "),t("a",{attrs:{href:"https://community.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("community"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"development"}},[e._v("Contribute")]),e._v(" to the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway",target:"_blank",rel:"noopener noreferrer"}},[e._v("code"),t("OutboundLink")],1),e._v(" or the "),t("a",{attrs:{href:"https://docs.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Buy devices, boards or parts from the "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible web site"),t("OutboundLink")],1),e._v(", the devices and parts linked use affiliated links.")]),e._v(" "),t("li",[e._v("Donate or sponsor the project "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/graphs/contributors",target:"_blank",rel:"noopener noreferrer"}},[e._v("developers"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Make a video or a blog article about what you have done with "),t("a",{attrs:{href:"https://docs.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenMQTTGateway"),t("OutboundLink")],1),e._v(" and share it.")])]),e._v(" "),t("p",[e._v("Support open-source development through sponsorship and gain exclusive access to our private forum. Your questions, issues, and feature requests will receive priority attention, plus you'll gain insider access to our roadmap.")]),e._v(" "),t("div",{staticStyle:{"text-align":"center"}},[t("iframe",{staticStyle:{border:"0","border-radius":"6px"},attrs:{src:"https://github.com/sponsors/theengs/button",title:"Sponsor Theengs",height:"32",width:"228"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/54.01a6176d.js b/dev/assets/js/54.e0ceb1a4.js similarity index 97% rename from dev/assets/js/54.01a6176d.js rename to dev/assets/js/54.e0ceb1a4.js index d5710674..2dd610ff 100644 --- a/dev/assets/js/54.01a6176d.js +++ b/dev/assets/js/54.e0ceb1a4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{438:function(e,t,r){"use strict";r.r(t);var o=r(14),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"broker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#broker"}},[e._v("#")]),e._v(" Broker")]),e._v(" "),t("p",[e._v("The broker will act as an intermediary between OpenMQTTGateway and your "),t("a",{attrs:{href:"/prerequisites/controller"}},[e._v("controller")]),e._v(", it can be seen as a centralized hub at the heart of your automation system. It carry on messages following a publish / subscribe mechanism.")]),e._v(" "),t("p",[e._v("All the events or commands could pass by the broker.")]),e._v(" "),t("p",[e._v("There are many choices of brokers, here are some of the most popular:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://mosquitto.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mosquitto"),t("OutboundLink")],1),e._v(" (Open source)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://moquette-io.github.io/moquette/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Moquette"),t("OutboundLink")],1),e._v(" (Open source)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.emqx.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("EMQX"),t("OutboundLink")],1),e._v(" (Open Source)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.hivemq.com/hivemq/features/",target:"_blank",rel:"noopener noreferrer"}},[e._v("HiveMQ"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Embedded MQTT brokers (Home Assistant and OpenHAB)")])]),e._v(" "),t("p",[e._v("This "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Comparison_of_MQTT_implementations",target:"_blank",rel:"noopener noreferrer"}},[e._v("wikipedia list"),t("OutboundLink")],1),e._v(" gives you more details about the different choices you have.\nThis "),t("a",{attrs:{href:"https://github.com/mqtt/mqtt.github.io/wiki/libraries",target:"_blank",rel:"noopener noreferrer"}},[e._v("github list"),t("OutboundLink")],1),e._v(" seems to be the most exhaustive ones.\nHere is also some "),t("a",{attrs:{href:"https://www.hivemq.com/blog/top-10-mqtt-broker-criteria/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ideas of criteria"),t("OutboundLink")],1),e._v(" from HiveMQ.")]),e._v(" "),t("p",[e._v("Once your broker is installed it can be interesting to see the traffic passing to it and to publish data, so as to do that there are several tools available:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://mqtt-explorer.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT Explorer"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/hivemq/hivemq-mqtt-web-client",target:"_blank",rel:"noopener noreferrer"}},[e._v("HIVE MQ Web client"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://mqttfx.jensd.de/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT FX"),t("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{440:function(e,t,r){"use strict";r.r(t);var o=r(14),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"broker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#broker"}},[e._v("#")]),e._v(" Broker")]),e._v(" "),t("p",[e._v("The broker will act as an intermediary between OpenMQTTGateway and your "),t("a",{attrs:{href:"/prerequisites/controller"}},[e._v("controller")]),e._v(", it can be seen as a centralized hub at the heart of your automation system. It carry on messages following a publish / subscribe mechanism.")]),e._v(" "),t("p",[e._v("All the events or commands could pass by the broker.")]),e._v(" "),t("p",[e._v("There are many choices of brokers, here are some of the most popular:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://mosquitto.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mosquitto"),t("OutboundLink")],1),e._v(" (Open source)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://moquette-io.github.io/moquette/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Moquette"),t("OutboundLink")],1),e._v(" (Open source)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.emqx.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("EMQX"),t("OutboundLink")],1),e._v(" (Open Source)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.hivemq.com/hivemq/features/",target:"_blank",rel:"noopener noreferrer"}},[e._v("HiveMQ"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Embedded MQTT brokers (Home Assistant and OpenHAB)")])]),e._v(" "),t("p",[e._v("This "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Comparison_of_MQTT_implementations",target:"_blank",rel:"noopener noreferrer"}},[e._v("wikipedia list"),t("OutboundLink")],1),e._v(" gives you more details about the different choices you have.\nThis "),t("a",{attrs:{href:"https://github.com/mqtt/mqtt.github.io/wiki/libraries",target:"_blank",rel:"noopener noreferrer"}},[e._v("github list"),t("OutboundLink")],1),e._v(" seems to be the most exhaustive ones.\nHere is also some "),t("a",{attrs:{href:"https://www.hivemq.com/blog/top-10-mqtt-broker-criteria/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ideas of criteria"),t("OutboundLink")],1),e._v(" from HiveMQ.")]),e._v(" "),t("p",[e._v("Once your broker is installed it can be interesting to see the traffic passing to it and to publish data, so as to do that there are several tools available:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://mqtt-explorer.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT Explorer"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/hivemq/hivemq-mqtt-web-client",target:"_blank",rel:"noopener noreferrer"}},[e._v("HIVE MQ Web client"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://mqttfx.jensd.de/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT FX"),t("OutboundLink")],1)])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/55.502699e0.js b/dev/assets/js/55.a83c3bcc.js similarity index 98% rename from dev/assets/js/55.502699e0.js rename to dev/assets/js/55.a83c3bcc.js index facfe924..79580453 100644 --- a/dev/assets/js/55.502699e0.js +++ b/dev/assets/js/55.a83c3bcc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{440:function(t,e,a){"use strict";a.r(e);var n=a(14),r=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parts"}},[t._v("#")]),t._v(" Parts")]),t._v(" "),e("p",[t._v("Depending on the gateway you would like to setup and your board, you may need extra parts/module to add.")]),t._v(" "),e("p",[t._v("You can take a look to the "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("OpenMQTTGateway compatible website"),e("OutboundLink")],1),t._v(" to have a view of the "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts/",target:"_blank",rel:"noopener noreferrer"}},[t._v("supported parts"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Here is below the main parts reference.")]),t._v(" "),e("h2",{attrs:{id:"main-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#main-parts"}},[t._v("#")]),t._v(" Main parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Parts")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("RF")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("IR")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("BLE")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("LoRa")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("GSM")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("SRX882 / STX882")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("CC1101")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("38KHz IR emitter and receiver")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("SX1276 / SX1278")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("A6/A7")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")])])])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("There is a wide range of parts available that may be compatible with OpenMQTTGateway, the ones "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts/",target:"_blank",rel:"noopener noreferrer"}},[t._v("listed"),e("OutboundLink")],1),t._v(" are the ones tested and for which you can ask for support. Indeed for other parts we may not have it so as to reproduce the issue, or in the worst case they may not be compatible.")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{441:function(t,e,a){"use strict";a.r(e);var n=a(14),r=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parts"}},[t._v("#")]),t._v(" Parts")]),t._v(" "),e("p",[t._v("Depending on the gateway you would like to setup and your board, you may need extra parts/module to add.")]),t._v(" "),e("p",[t._v("You can take a look to the "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("OpenMQTTGateway compatible website"),e("OutboundLink")],1),t._v(" to have a view of the "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts/",target:"_blank",rel:"noopener noreferrer"}},[t._v("supported parts"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Here is below the main parts reference.")]),t._v(" "),e("h2",{attrs:{id:"main-parts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#main-parts"}},[t._v("#")]),t._v(" Main parts")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Parts")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("RF")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("IR")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("BLE")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("LoRa")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("GSM")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("SRX882 / STX882")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("CC1101")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("38KHz IR emitter and receiver")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("SX1276 / SX1278")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")])]),t._v(" "),e("tr",[e("td",[t._v("A6/A7")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("-")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("X")])])])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("There is a wide range of parts available that may be compatible with OpenMQTTGateway, the ones "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts/",target:"_blank",rel:"noopener noreferrer"}},[t._v("listed"),e("OutboundLink")],1),t._v(" are the ones tested and for which you can ask for support. Indeed for other parts we may not have it so as to reproduce the issue, or in the worst case they may not be compatible.")])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/56.1fe4be81.js b/dev/assets/js/56.b44366aa.js similarity index 97% rename from dev/assets/js/56.1fe4be81.js rename to dev/assets/js/56.b44366aa.js index b6842612..14556ff6 100644 --- a/dev/assets/js/56.1fe4be81.js +++ b/dev/assets/js/56.b44366aa.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{441:function(t,r,e){"use strict";e.r(r);var a=e(14),o=Object(a.a)({},(function(){var t=this,r=t._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"actuators"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#actuators"}},[t._v("#")]),t._v(" Actuators")]),t._v(" "),r("h2",{attrs:{id:"compatible-parts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Module")]),t._v(" "),r("th",[t._v("Purpose")]),t._v(" "),r("th",[t._v("Where to Buy")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[t._v("LED")]),t._v(" "),r("td",[t._v("Basic led")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])]),t._v(" "),r("tr",[r("td",[t._v("FASTLED")]),t._v(" "),r("td",[t._v("RGB Leds management")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])]),t._v(" "),r("tr",[r("td",[t._v("BUZZER")]),t._v(" "),r("td",[t._v("-")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])]),t._v(" "),r("tr",[r("td",[t._v("RELAY")]),t._v(" "),r("td",[t._v("Switch power circuit")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])])])]),t._v(" "),r("h2",{attrs:{id:"pinout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pinout"}},[t._v("#")]),t._v(" Pinout")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Module")]),t._v(" "),r("th",[t._v("Boards")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[t._v("RELAY")]),t._v(" "),r("td",[t._v("all output compatible pins")])]),t._v(" "),r("tr",[r("td",[t._v("FASTLED")]),t._v(" "),r("td",[t._v("all output compatible pins")])])])]),t._v(" "),r("p",[t._v("Vcc pin of the board and the Module to a 5V supply source\nGround pins of the board and the Module to the ground of the supply source.")]),t._v(" "),r("h2",{attrs:{id:"somfy-rts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#somfy-rts"}},[t._v("#")]),t._v(" Somfy RTS")]),t._v(" "),r("p",[t._v("For this actuator a 433.42 MHz RF transmitter is required.\nThe standard 433.92 MHz transmitter don't work.\nThe CC1101 Transceiver supports both 433.42 MHz and 433.92 MHz and can be used with the Somfy RTS actor.\nThe wiring of the hardware is described in the "),r("a",{attrs:{href:"rf"}},[t._v("RF gateway")]),t._v(".")])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{443:function(t,r,e){"use strict";e.r(r);var a=e(14),o=Object(a.a)({},(function(){var t=this,r=t._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"actuators"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#actuators"}},[t._v("#")]),t._v(" Actuators")]),t._v(" "),r("h2",{attrs:{id:"compatible-parts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Module")]),t._v(" "),r("th",[t._v("Purpose")]),t._v(" "),r("th",[t._v("Where to Buy")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[t._v("LED")]),t._v(" "),r("td",[t._v("Basic led")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])]),t._v(" "),r("tr",[r("td",[t._v("FASTLED")]),t._v(" "),r("td",[t._v("RGB Leds management")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])]),t._v(" "),r("tr",[r("td",[t._v("BUZZER")]),t._v(" "),r("td",[t._v("-")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])]),t._v(" "),r("tr",[r("td",[t._v("RELAY")]),t._v(" "),r("td",[t._v("Switch power circuit")]),t._v(" "),r("td",[r("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),r("OutboundLink")],1)])])])]),t._v(" "),r("h2",{attrs:{id:"pinout"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#pinout"}},[t._v("#")]),t._v(" Pinout")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Module")]),t._v(" "),r("th",[t._v("Boards")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[t._v("RELAY")]),t._v(" "),r("td",[t._v("all output compatible pins")])]),t._v(" "),r("tr",[r("td",[t._v("FASTLED")]),t._v(" "),r("td",[t._v("all output compatible pins")])])])]),t._v(" "),r("p",[t._v("Vcc pin of the board and the Module to a 5V supply source\nGround pins of the board and the Module to the ground of the supply source.")]),t._v(" "),r("h2",{attrs:{id:"somfy-rts"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#somfy-rts"}},[t._v("#")]),t._v(" Somfy RTS")]),t._v(" "),r("p",[t._v("For this actuator a 433.42 MHz RF transmitter is required.\nThe standard 433.92 MHz transmitter don't work.\nThe CC1101 Transceiver supports both 433.42 MHz and 433.92 MHz and can be used with the Somfy RTS actor.\nThe wiring of the hardware is described in the "),r("a",{attrs:{href:"rf"}},[t._v("RF gateway")]),t._v(".")])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/57.bbcbc292.js b/dev/assets/js/57.71ecb21f.js similarity index 93% rename from dev/assets/js/57.bbcbc292.js rename to dev/assets/js/57.71ecb21f.js index 8a7a5103..b40d84f3 100644 --- a/dev/assets/js/57.bbcbc292.js +++ b/dev/assets/js/57.71ecb21f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{446:function(t,a,e){"use strict";e.r(a);var r=e(14),o=Object(r.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lora-gateway"}},[t._v("#")]),t._v(" LoRa gateway")]),t._v(" "),a("h2",{attrs:{id:"compatible-parts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),a("p",[t._v("An ESP32 board with a LoRa module.\nIdeally a TTGO board with LoRa module included see "),a("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("With this kind of board there is no hardware modification needed.")])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{447:function(t,a,e){"use strict";e.r(a);var r=e(14),o=Object(r.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lora-gateway"}},[t._v("#")]),t._v(" LoRa gateway")]),t._v(" "),a("h2",{attrs:{id:"compatible-parts"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#compatible-parts"}},[t._v("#")]),t._v(" Compatible parts")]),t._v(" "),a("p",[t._v("An ESP32 board with a LoRa module.\nIdeally a TTGO board with LoRa module included see "),a("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("compatible parts list"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("With this kind of board there is no hardware modification needed.")])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/59.31bcc9c8.js b/dev/assets/js/59.f844504f.js similarity index 99% rename from dev/assets/js/59.31bcc9c8.js rename to dev/assets/js/59.f844504f.js index 7089c98b..500daa3c 100644 --- a/dev/assets/js/59.31bcc9c8.js +++ b/dev/assets/js/59.f844504f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{452:function(t,e,a){"use strict";a.r(e);var s=a(14),n=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"option-3-upload-your-configurations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-3-upload-your-configurations"}},[t._v("#")]),t._v(" (Option 3) Upload your configurations")]),t._v(" "),e("h2",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("This section is useful if you want to make an advanced project configuration not supported by the pre-built binaries.")]),t._v(" "),e("p",[t._v("Advanced configuration means changing the default pins, the MQTT topics, and all the expert parameters that you can find in "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/main/User_config.h",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("User_config.h")]),e("OutboundLink")],1),t._v(" and in all "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/tree/development/main",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("config_XX.h")]),e("OutboundLink")],1),t._v(" files. If you don't have to change the default parameters except Wi-Fi and MQTT broker settings, you don't need advanced configuration; you can go directly to the "),e("RouterLink",{attrs:{to:"/upload/binaries.html"}},[t._v("Upload Binaries")]),t._v(" section instead.")],1),t._v(" "),e("h2",{attrs:{id:"configure-upload-with-platformio"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configure-upload-with-platformio"}},[t._v("#")]),t._v(" Configure & Upload with PlatformIO")]),t._v(" "),e("ul",[e("li",[t._v("Download the "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("CODE"),e("OutboundLink")],1),t._v(" from github.")]),t._v(" "),e("li",[t._v("Open the "),e("code",[t._v("OpenMQTTGateway")]),t._v(" folder")])]),t._v(" "),e("p",[t._v("You will find inside the folder a "),e("code",[t._v("platformio.ini")]),t._v(" config file. PlatformIO uses this file to define how to build OMG for different kinds of hardware. Not just that, but it also specifies which modules to turn on and off. And there's more: it also lets you configure the settings of those modules.")]),t._v(" "),e("p",[t._v('PlatformIO config files work on the concept of overriding. At first, a very simple base "environment" is specified that specifies common variables shared by all situations:')]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("framework")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("arduino")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${libraries.picomqtt}\n ${libraries.arduinojson}\n ${libraries.arduinolog}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n -w ; supress all warnings\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("; '-DLOG_LEVEL=LOG_LEVEL_TRACE' ; Enable trace level logging")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("monitor_speed")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("115200")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br")])]),e("p",[t._v('Later "environments" get more specific, but inherit everything that was defined in this common environment:')]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("com-esp")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env.lib_deps} ; Inherit all the library dependencies from [env]\n ${libraries.wifimanager} ; Add another library dependency on top of them\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env.build_flags} ; Inherit all the build flags from [env]\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DsimpleReceiving")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("true' ; Add some of our own build flags")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZmqttDiscovery")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"HADiscovery"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";'-DCORE_DEBUG_LEVEL=4'")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br")])]),e("p",[t._v('Here, build flags starting with "-D" let us set configuration values you would normally find in '),e("code",[t._v("User_config.h")]),t._v(" and "),e("code",[t._v("config_xx.h")]),t._v(" files by specifying them here, overriding the default values set in those files. To include special characters, you can triple escape them with a backslash like so:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dwifi_password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("p",[t._v("The different listed configurations in "),e("code",[t._v("platformio.ini")]),t._v(" represent some standard environments and boards. For example, the environment")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:nodemcuv2-pilight")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("p",[t._v("sets the default settings for ESP8266 (NodeMCU v2) devices using the Plight module.")]),t._v(" "),e("h3",{attrs:{id:"option-a-creating-a-portable-config-file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-a-creating-a-portable-config-file"}},[t._v("#")]),t._v(" "),e("em",[t._v("(Option A)")]),t._v(" Creating a portable config file")]),t._v(" "),e("p",[t._v("You could make your configuration changes directly by editing the values in "),e("code",[t._v("User_config.h")]),t._v(" (for main OMG settings) and "),e("code",[t._v("config_XX.h")]),t._v(" (for module-specific settings). You could also make most of those changes by instead writing some -D build flags in "),e("code",[t._v("platformio.ini")]),t._v(". But for maximum portability, a feature of PlatformIO allows you to make your configurations by creating a new file and listing all of your overrides there. This way, you can pull the latest OMG code changes without losing your configurations, or having to re-enter them manually.")]),t._v(" "),e("p",[t._v("To do this, create a file with a name ending in "),e("code",[t._v("_env.ini")]),t._v(", such as "),e("code",[t._v("production_env.ini")]),t._v(", into the root folder next to "),e("code",[t._v("platformio.ini")]),t._v(". PlatformIO will scan for all files ending in "),e("code",[t._v("_env.ini")]),t._v(" and use it to override the default values in "),e("code",[t._v("platformio.ini")]),t._v(".")]),t._v(" "),e("p",[t._v("At the top of your "),e("code",[t._v("*_env.ini")]),t._v(" file, for example, put the following to enable the ESP8266 (NodeMCU v2) with the Pilight module.")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("platformio")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("default_envs")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("nodemcuv2-pilight")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br")])]),e("p",[t._v("This will make this environment the default environment for this PlatformIO project. If another environment isn't specified when building, it will default to this one.")]),t._v(" "),e("p",[t._v("For the rest of your config file, you can override the default configurations or add new configurations to existing environments in "),e("code",[t._v("platformio.ini")]),t._v(", or create a new environment. For example, if want to use both Pilight module and the BME280 module with an ESP8266, we can create a new environment. This is an example "),e("code",[t._v("my_env.ini")]),t._v(" file that creates two new environments:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("platformio")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("default_envs")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("nodemcuv2-pilight-bme280-ota")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:nodemcuv2-pilight-bme280")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("extends")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("env:nodemcuv2-pilight")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env:nodemcuv2-pilight.lib_deps}\n ${libraries.bme280}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env:nodemcuv2-pilight.build_flags}\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DGateway_Name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"OpenMQTTGateway"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZsensorBME280")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"BME280"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DBase_Topic")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"rf/"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DESPWifiManualSetup")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dwifi_ssid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mynetwork"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dwifi_password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DMQTT_USER")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mqttusername"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DMQTT_PASS")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mqttpassword"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DMQTT_SERVER")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mqttserver.local"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dgw_password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"12345678"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DLED_RECEIVE")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("LED_BUILTIN' ; Comment 1")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DLED_RECEIVE_ON")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("LOW' ; Comment 2")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DRF_RECEIVER_GPIO")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("13'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DRF_EMITTER_GPIO")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("15'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DsimpleReceiving")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("false'")]),t._v("\n '-UZmqttDiscovery' ; Disable HA discovery\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("monitor_speed")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("115200")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:nodemcuv2-pilight-bme280-ota")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("extends")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("env:nodemcuv2-pilight-bme280")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_protocol")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("espota")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_port")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("OpenMQTTGateway.local")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--auth")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("otapassword")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--port")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("8266")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br"),e("span",{staticClass:"line-number"},[t._v("13")]),e("br"),e("span",{staticClass:"line-number"},[t._v("14")]),e("br"),e("span",{staticClass:"line-number"},[t._v("15")]),e("br"),e("span",{staticClass:"line-number"},[t._v("16")]),e("br"),e("span",{staticClass:"line-number"},[t._v("17")]),e("br"),e("span",{staticClass:"line-number"},[t._v("18")]),e("br"),e("span",{staticClass:"line-number"},[t._v("19")]),e("br"),e("span",{staticClass:"line-number"},[t._v("20")]),e("br"),e("span",{staticClass:"line-number"},[t._v("21")]),e("br"),e("span",{staticClass:"line-number"},[t._v("22")]),e("br"),e("span",{staticClass:"line-number"},[t._v("23")]),e("br"),e("span",{staticClass:"line-number"},[t._v("24")]),e("br"),e("span",{staticClass:"line-number"},[t._v("25")]),e("br"),e("span",{staticClass:"line-number"},[t._v("26")]),e("br"),e("span",{staticClass:"line-number"},[t._v("27")]),e("br"),e("span",{staticClass:"line-number"},[t._v("28")]),e("br"),e("span",{staticClass:"line-number"},[t._v("29")]),e("br"),e("span",{staticClass:"line-number"},[t._v("30")]),e("br"),e("span",{staticClass:"line-number"},[t._v("31")]),e("br"),e("span",{staticClass:"line-number"},[t._v("32")]),e("br"),e("span",{staticClass:"line-number"},[t._v("33")]),e("br"),e("span",{staticClass:"line-number"},[t._v("34")]),e("br"),e("span",{staticClass:"line-number"},[t._v("35")]),e("br")])]),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Adding manual WiFi and MQTT credentials to an environment also requires to define\n"),e("code",[t._v("'-DESPWifiManualSetup=true'")]),t._v("\nfor the credentials to be registered correctly.")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Manual network configuration (IP, netmask, gateway, DNS) requires to define\n"),e("code",[t._v("'-DNetworkAdvancedSetup=true'")]),t._v("\nand related network parameters, e.g.:")]),t._v(" "),e("div",{staticClass:"language- line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("'-DNET_IP=\"192.168.1.99\"'\n'-DNET_MASK=\"255.255.255.0\"'\n'-DNET_GW=\"192.168.1.1\"'\n'-DNET_DNS=\"1.1.1.1\"'\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br")])])]),t._v(" "),e("p",[t._v("The first new environment we create, "),e("code",[t._v("nodemcuv2-pilight-bme280")]),t._v(", inherits the default "),e("code",[t._v("nodemcuv2-pilight")]),t._v(" environment in "),e("code",[t._v("platformio.ini")]),t._v(" with the "),e("code",[t._v("extends = env:nodemcuv2-pilight")]),t._v(" line. In the "),e("code",[t._v("lib_deps")]),t._v(" section, it imports all the "),e("code",[t._v("lib_deps")]),t._v(" of "),e("code",[t._v("nodemcuv2-pilight")]),t._v(" with the "),e("code",[t._v("${env:nodemcuv2-pilight.lib_deps}")]),t._v(" line, and adds BME280 on top of it. (Since the environment we're extending already has this "),e("code",[t._v("lib_deps")]),t._v(" attribute, specifying it again would normally replace it completely with our new attribute; instead, to keep its value but simply append to it, we import the original in the beginning of our "),e("code",[t._v("lib_deps")]),t._v(" attribute.) In the "),e("code",[t._v("build_flags")]),t._v(" section, it again imports all the "),e("code",[t._v("build_flags")]),t._v(" of "),e("code",[t._v("nodemcuv2-pilight")]),t._v(" and many of its own overrides, e.g. changing "),e("code",[t._v("Base_Topic")]),t._v(" found in "),e("code",[t._v("User_config.h")]),t._v(' from the default to "rf/" by using the '),e("code",[t._v("'-DBase_Topic=\"rf/\"'")]),t._v(" line. It also unsets previously set configurations (i.e. "),e("code",[t._v("mqttDiscovery")]),t._v(") by using "),e("code",[t._v("'-UZmqttDiscovery'")]),t._v(". This environment will work over serial upload.")]),t._v(" "),e("p",[t._v("The second new environment, "),e("code",[t._v("nodemcuv2-pilight-bme280-ota")]),t._v(", inherits everything we specified in the first environment (with the line "),e("code",[t._v("extends = env:nodemcuv2-pilight-bme280")]),t._v("), but modifies it to upload over OTA (Wi-Fi). We also specified this as the "),e("code",[t._v("default_env")]),t._v(" in the beginning of the file, so PlatformIO will choose this environment to build and upload if we don't specify otherwise.")]),t._v(" "),e("p",[t._v("The first time we're flashing OMG to the board, we can use the command "),e("code",[t._v("pio run --target upload --environment nodemcuv2-pilight-bme280")]),t._v(" to specify that we want to build and run the "),e("code",[t._v("nodemcuv2-pilight-bme280")]),t._v(" environment (over USB serial). Afterwards, we don't have to specify "),e("code",[t._v("--environment")]),t._v(" (e.g. just run "),e("code",[t._v("pio run --target upload")]),t._v(") to run the default "),e("code",[t._v("nodemcuv2-pilight-bme280-ota")]),t._v(" environment and update the code over the air.")]),t._v(" "),e("h3",{attrs:{id:"option-b-editing-files-directly"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-b-editing-files-directly"}},[t._v("#")]),t._v(" "),e("em",[t._v("(Option B)")]),t._v(" Editing files directly")]),t._v(" "),e("p",[t._v("You can also modify the "),e("code",[t._v("User_config.h")]),t._v(" file and your modules' "),e("code",[t._v("config_XX.h")]),t._v(" files to your liking, and then edit the "),e("code",[t._v("platformio.ini")]),t._v(" file to uncomment the "),e("code",[t._v("default_envs")]),t._v(" lines corresponding to your board and chosen modules, like below:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = sonoff-basic-rfr3")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = rfbridge")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = esp32dev-all")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("default_envs")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("esp32dev-rf")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = esp32dev-ir")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = esp32dev-ble")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = ttgo-lora32-v1")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br")])]),e("p",[t._v("If you don't know which "),e("code",[t._v("env")]),t._v(" to activate, you can refer to "),e("a",{attrs:{href:"../prerequisites/devices"}},[t._v("devices")]),t._v(".")]),t._v(" "),e("p",[t._v("If you want to add more sensors or gateways to one "),e("code",[t._v("default_envs")]),t._v(" you can add the modules directly into your environment definition of your "),e("code",[t._v(".ini")]),t._v(" files or uncomment them in "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/d2dd6138558909b71cc44f69665340247bd5f356/main/User_config.h#L84",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("User_config.h")]),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Example to add IR to "),e("code",[t._v("esp32dev-rf")]),t._v(" add the "),e("code",[t._v("build_flags")]),t._v(" below to the env definition:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayIR")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"IR"\'')]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:esp32dev-rf")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform_packages")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform_packages}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("board")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("esp32dev")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.lib_deps}\n ${libraries.rc-switch}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.build_flags}\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayRF")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"RF"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayIR")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"IR"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DGateway_Name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"OpenMQTTGateway_ESP32_RF_IR"\'')]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br")])]),e("p",[t._v("Once your configuration is done you can upload the program to your board by clicking on the white arrow at the blue bottom bar of your PIO editor or with the following command:\n"),e("code",[t._v("pio run --target upload")])]),t._v(" "),e("p",[t._v("PIO will download the necessaries platform and libraries with the correct versions, build the code and upload it.")]),t._v(" "),e("p",[t._v("If you encounter errors the first thing to do is to clean your environment by using the white dust bin in the blue bottom bar of your PIO editor or with the following command:\n"),e("code",[t._v("pio run --target clean")])]),t._v(" "),e("p",[t._v("With some ESP it could be necessary to push the reset button when the upload begin.")]),t._v(" "),e("p",[t._v("If you want to erase the settings stored in the ESP memory use:\n"),e("code",[t._v("pio run --target erase")]),t._v("\nThis can be useful especially before the first upload or when you change the board partitions sizing.")]),t._v(" "),e("p",[t._v("Once done the gateway should connect to your network and your broker, you should see it into the broker in the form of the following messages:")]),t._v(" "),e("div",{staticClass:"language- line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("home/OpenMQTTGateway/LWT Online\nhome/OpenMQTTGateway/version\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br")])]),e("p",[t._v("With PIO you can also upload the firmware through Over the Air, so as to do that you can add the upload options flags used below, "),e("code",[t._v("upload_port")]),t._v(" is the IP address of your ESP:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:esp32-ble")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform_packages")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform_packages}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("board")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("esp32dev")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("board_build.partitions")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("min_spiffs.csv")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.lib_deps}\n ${libraries.ble}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.build_flags}\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayBT")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"BT"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DGateway_Name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"OpenMQTTGateway_ESP32"\'')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_protocol")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("espota")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_port")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("192.168.1.22")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--auth")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("OTAPASSWORD")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--port")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("8266")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br"),e("span",{staticClass:"line-number"},[t._v("13")]),e("br"),e("span",{staticClass:"line-number"},[t._v("14")]),e("br"),e("span",{staticClass:"line-number"},[t._v("15")]),e("br"),e("span",{staticClass:"line-number"},[t._v("16")]),e("br"),e("span",{staticClass:"line-number"},[t._v("17")]),e("br")])]),e("h2",{attrs:{id:"api"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),e("p",[t._v("With the V0.9 we added the support of json for receiving and publishing.\nPer default Json reception and Json publication is activated, the previous simple reception mode is also activated to avoid regression on commands.")]),t._v(" "),e("p",[t._v("You can deactivate Json or simple mode following theses instructions:")]),t._v(" "),e("div",{staticClass:"language-cpp line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("jsonPublishing")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define false if you don't want to use Json publishing (one topic for all the parameters)")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v('//example home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4 {"rssi":-63,"servicedata":"fe0000000000000000000000000000000000000000"}')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("simplePublishing")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define true if you want to use simple publishing (one topic for one parameter)")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//example")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/rssi -63.0")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/servicedata fe0000000000000000000000000000000000000000")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("simpleReceiving")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define false if you don't want to use old way reception analysis")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("jsonReceiving")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define false if you don't want to use Json reception analysis")])]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br")])]),e("p",[t._v("If you are using platformio you can also comment the definitions above and define your parameters into platformio.ini file by setting the following "),e("code",[t._v("build_flags")]),t._v(":")]),t._v(" "),e("div",{staticClass:"language-cpp line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DjsonPublishing=true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DjsonReceiving=true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DsimpleReceiving=true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DsimplePublishing=true'")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br")])]),e("p",[t._v("Note that depending on the environment the default platformio.ini has common option defined see sections:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("com-arduino")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("com-esp")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br")])]),e("p",[t._v("If you want to use HASS MQTT discovery you need to have\n"),e("code",[t._v("#define jsonPublishing true")]),t._v("\n&\n"),e("code",[t._v('#define ZmqttDiscovery "HADiscovery"')]),t._v("\nuncommented.\nAdded to that auto discovery box should be selected into your Home Assistant MQTT integration configuration.")]),t._v(" "),e("p",[t._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),e("RouterLink",{attrs:{to:"/upload/portal.html"}},[t._v("web portal configuration")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("simpleReceiving on Arduino boards doesn't accept 64 bits MQTT values, you can only send 32bits values from the MQTT broker.")])]),t._v(" "),e("p",[e("a",{attrs:{href:"https://hits.seeyoufarm.com",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fdocs.openmqttgateway.com%2Fupload%2Fbuilds.html&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false",alt:"Hits"}}),e("OutboundLink")],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{451:function(t,e,a){"use strict";a.r(e);var s=a(14),n=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"option-3-upload-your-configurations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-3-upload-your-configurations"}},[t._v("#")]),t._v(" (Option 3) Upload your configurations")]),t._v(" "),e("h2",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("This section is useful if you want to make an advanced project configuration not supported by the pre-built binaries.")]),t._v(" "),e("p",[t._v("Advanced configuration means changing the default pins, the MQTT topics, and all the expert parameters that you can find in "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/main/User_config.h",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("User_config.h")]),e("OutboundLink")],1),t._v(" and in all "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/tree/development/main",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("config_XX.h")]),e("OutboundLink")],1),t._v(" files. If you don't have to change the default parameters except Wi-Fi and MQTT broker settings, you don't need advanced configuration; you can go directly to the "),e("RouterLink",{attrs:{to:"/upload/binaries.html"}},[t._v("Upload Binaries")]),t._v(" section instead.")],1),t._v(" "),e("h2",{attrs:{id:"configure-upload-with-platformio"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configure-upload-with-platformio"}},[t._v("#")]),t._v(" Configure & Upload with PlatformIO")]),t._v(" "),e("ul",[e("li",[t._v("Download the "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("CODE"),e("OutboundLink")],1),t._v(" from github.")]),t._v(" "),e("li",[t._v("Open the "),e("code",[t._v("OpenMQTTGateway")]),t._v(" folder")])]),t._v(" "),e("p",[t._v("You will find inside the folder a "),e("code",[t._v("platformio.ini")]),t._v(" config file. PlatformIO uses this file to define how to build OMG for different kinds of hardware. Not just that, but it also specifies which modules to turn on and off. And there's more: it also lets you configure the settings of those modules.")]),t._v(" "),e("p",[t._v('PlatformIO config files work on the concept of overriding. At first, a very simple base "environment" is specified that specifies common variables shared by all situations:')]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("framework")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("arduino")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${libraries.picomqtt}\n ${libraries.arduinojson}\n ${libraries.arduinolog}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n -w ; supress all warnings\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("; '-DLOG_LEVEL=LOG_LEVEL_TRACE' ; Enable trace level logging")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("monitor_speed")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("115200")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br")])]),e("p",[t._v('Later "environments" get more specific, but inherit everything that was defined in this common environment:')]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("com-esp")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env.lib_deps} ; Inherit all the library dependencies from [env]\n ${libraries.wifimanager} ; Add another library dependency on top of them\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env.build_flags} ; Inherit all the build flags from [env]\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DsimpleReceiving")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("true' ; Add some of our own build flags")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZmqttDiscovery")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"HADiscovery"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";'-DCORE_DEBUG_LEVEL=4'")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br")])]),e("p",[t._v('Here, build flags starting with "-D" let us set configuration values you would normally find in '),e("code",[t._v("User_config.h")]),t._v(" and "),e("code",[t._v("config_xx.h")]),t._v(" files by specifying them here, overriding the default values set in those files. To include special characters, you can triple escape them with a backslash like so:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dwifi_password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("p",[t._v("The different listed configurations in "),e("code",[t._v("platformio.ini")]),t._v(" represent some standard environments and boards. For example, the environment")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:nodemcuv2-pilight")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("p",[t._v("sets the default settings for ESP8266 (NodeMCU v2) devices using the Plight module.")]),t._v(" "),e("h3",{attrs:{id:"option-a-creating-a-portable-config-file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-a-creating-a-portable-config-file"}},[t._v("#")]),t._v(" "),e("em",[t._v("(Option A)")]),t._v(" Creating a portable config file")]),t._v(" "),e("p",[t._v("You could make your configuration changes directly by editing the values in "),e("code",[t._v("User_config.h")]),t._v(" (for main OMG settings) and "),e("code",[t._v("config_XX.h")]),t._v(" (for module-specific settings). You could also make most of those changes by instead writing some -D build flags in "),e("code",[t._v("platformio.ini")]),t._v(". But for maximum portability, a feature of PlatformIO allows you to make your configurations by creating a new file and listing all of your overrides there. This way, you can pull the latest OMG code changes without losing your configurations, or having to re-enter them manually.")]),t._v(" "),e("p",[t._v("To do this, create a file with a name ending in "),e("code",[t._v("_env.ini")]),t._v(", such as "),e("code",[t._v("production_env.ini")]),t._v(", into the root folder next to "),e("code",[t._v("platformio.ini")]),t._v(". PlatformIO will scan for all files ending in "),e("code",[t._v("_env.ini")]),t._v(" and use it to override the default values in "),e("code",[t._v("platformio.ini")]),t._v(".")]),t._v(" "),e("p",[t._v("At the top of your "),e("code",[t._v("*_env.ini")]),t._v(" file, for example, put the following to enable the ESP8266 (NodeMCU v2) with the Pilight module.")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("platformio")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("default_envs")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("nodemcuv2-pilight")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br")])]),e("p",[t._v("This will make this environment the default environment for this PlatformIO project. If another environment isn't specified when building, it will default to this one.")]),t._v(" "),e("p",[t._v("For the rest of your config file, you can override the default configurations or add new configurations to existing environments in "),e("code",[t._v("platformio.ini")]),t._v(", or create a new environment. For example, if want to use both Pilight module and the BME280 module with an ESP8266, we can create a new environment. This is an example "),e("code",[t._v("my_env.ini")]),t._v(" file that creates two new environments:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("platformio")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("default_envs")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("nodemcuv2-pilight-bme280-ota")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:nodemcuv2-pilight-bme280")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("extends")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("env:nodemcuv2-pilight")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env:nodemcuv2-pilight.lib_deps}\n ${libraries.bme280}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${env:nodemcuv2-pilight.build_flags}\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DGateway_Name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"OpenMQTTGateway"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZsensorBME280")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"BME280"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DBase_Topic")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"rf/"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DESPWifiManualSetup")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dwifi_ssid")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mynetwork"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dwifi_password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DMQTT_USER")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mqttusername"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DMQTT_PASS")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mqttpassword"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DMQTT_SERVER")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"mqttserver.local"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-Dgw_password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"12345678"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DLED_RECEIVE")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("LED_BUILTIN' ; Comment 1")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DLED_RECEIVE_ON")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("LOW' ; Comment 2")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DRF_RECEIVER_GPIO")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("13'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DRF_EMITTER_GPIO")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("15'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DsimpleReceiving")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("false'")]),t._v("\n '-UZmqttDiscovery' ; Disable HA discovery\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("monitor_speed")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("115200")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:nodemcuv2-pilight-bme280-ota")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("extends")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("env:nodemcuv2-pilight-bme280")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_protocol")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("espota")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_port")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("OpenMQTTGateway.local")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--auth")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("otapassword")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--port")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("8266")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br"),e("span",{staticClass:"line-number"},[t._v("13")]),e("br"),e("span",{staticClass:"line-number"},[t._v("14")]),e("br"),e("span",{staticClass:"line-number"},[t._v("15")]),e("br"),e("span",{staticClass:"line-number"},[t._v("16")]),e("br"),e("span",{staticClass:"line-number"},[t._v("17")]),e("br"),e("span",{staticClass:"line-number"},[t._v("18")]),e("br"),e("span",{staticClass:"line-number"},[t._v("19")]),e("br"),e("span",{staticClass:"line-number"},[t._v("20")]),e("br"),e("span",{staticClass:"line-number"},[t._v("21")]),e("br"),e("span",{staticClass:"line-number"},[t._v("22")]),e("br"),e("span",{staticClass:"line-number"},[t._v("23")]),e("br"),e("span",{staticClass:"line-number"},[t._v("24")]),e("br"),e("span",{staticClass:"line-number"},[t._v("25")]),e("br"),e("span",{staticClass:"line-number"},[t._v("26")]),e("br"),e("span",{staticClass:"line-number"},[t._v("27")]),e("br"),e("span",{staticClass:"line-number"},[t._v("28")]),e("br"),e("span",{staticClass:"line-number"},[t._v("29")]),e("br"),e("span",{staticClass:"line-number"},[t._v("30")]),e("br"),e("span",{staticClass:"line-number"},[t._v("31")]),e("br"),e("span",{staticClass:"line-number"},[t._v("32")]),e("br"),e("span",{staticClass:"line-number"},[t._v("33")]),e("br"),e("span",{staticClass:"line-number"},[t._v("34")]),e("br"),e("span",{staticClass:"line-number"},[t._v("35")]),e("br")])]),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Adding manual WiFi and MQTT credentials to an environment also requires to define\n"),e("code",[t._v("'-DESPWifiManualSetup=true'")]),t._v("\nfor the credentials to be registered correctly.")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Manual network configuration (IP, netmask, gateway, DNS) requires to define\n"),e("code",[t._v("'-DNetworkAdvancedSetup=true'")]),t._v("\nand related network parameters, e.g.:")]),t._v(" "),e("div",{staticClass:"language- line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("'-DNET_IP=\"192.168.1.99\"'\n'-DNET_MASK=\"255.255.255.0\"'\n'-DNET_GW=\"192.168.1.1\"'\n'-DNET_DNS=\"1.1.1.1\"'\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br")])])]),t._v(" "),e("p",[t._v("The first new environment we create, "),e("code",[t._v("nodemcuv2-pilight-bme280")]),t._v(", inherits the default "),e("code",[t._v("nodemcuv2-pilight")]),t._v(" environment in "),e("code",[t._v("platformio.ini")]),t._v(" with the "),e("code",[t._v("extends = env:nodemcuv2-pilight")]),t._v(" line. In the "),e("code",[t._v("lib_deps")]),t._v(" section, it imports all the "),e("code",[t._v("lib_deps")]),t._v(" of "),e("code",[t._v("nodemcuv2-pilight")]),t._v(" with the "),e("code",[t._v("${env:nodemcuv2-pilight.lib_deps}")]),t._v(" line, and adds BME280 on top of it. (Since the environment we're extending already has this "),e("code",[t._v("lib_deps")]),t._v(" attribute, specifying it again would normally replace it completely with our new attribute; instead, to keep its value but simply append to it, we import the original in the beginning of our "),e("code",[t._v("lib_deps")]),t._v(" attribute.) In the "),e("code",[t._v("build_flags")]),t._v(" section, it again imports all the "),e("code",[t._v("build_flags")]),t._v(" of "),e("code",[t._v("nodemcuv2-pilight")]),t._v(" and many of its own overrides, e.g. changing "),e("code",[t._v("Base_Topic")]),t._v(" found in "),e("code",[t._v("User_config.h")]),t._v(' from the default to "rf/" by using the '),e("code",[t._v("'-DBase_Topic=\"rf/\"'")]),t._v(" line. It also unsets previously set configurations (i.e. "),e("code",[t._v("mqttDiscovery")]),t._v(") by using "),e("code",[t._v("'-UZmqttDiscovery'")]),t._v(". This environment will work over serial upload.")]),t._v(" "),e("p",[t._v("The second new environment, "),e("code",[t._v("nodemcuv2-pilight-bme280-ota")]),t._v(", inherits everything we specified in the first environment (with the line "),e("code",[t._v("extends = env:nodemcuv2-pilight-bme280")]),t._v("), but modifies it to upload over OTA (Wi-Fi). We also specified this as the "),e("code",[t._v("default_env")]),t._v(" in the beginning of the file, so PlatformIO will choose this environment to build and upload if we don't specify otherwise.")]),t._v(" "),e("p",[t._v("The first time we're flashing OMG to the board, we can use the command "),e("code",[t._v("pio run --target upload --environment nodemcuv2-pilight-bme280")]),t._v(" to specify that we want to build and run the "),e("code",[t._v("nodemcuv2-pilight-bme280")]),t._v(" environment (over USB serial). Afterwards, we don't have to specify "),e("code",[t._v("--environment")]),t._v(" (e.g. just run "),e("code",[t._v("pio run --target upload")]),t._v(") to run the default "),e("code",[t._v("nodemcuv2-pilight-bme280-ota")]),t._v(" environment and update the code over the air.")]),t._v(" "),e("h3",{attrs:{id:"option-b-editing-files-directly"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#option-b-editing-files-directly"}},[t._v("#")]),t._v(" "),e("em",[t._v("(Option B)")]),t._v(" Editing files directly")]),t._v(" "),e("p",[t._v("You can also modify the "),e("code",[t._v("User_config.h")]),t._v(" file and your modules' "),e("code",[t._v("config_XX.h")]),t._v(" files to your liking, and then edit the "),e("code",[t._v("platformio.ini")]),t._v(" file to uncomment the "),e("code",[t._v("default_envs")]),t._v(" lines corresponding to your board and chosen modules, like below:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = sonoff-basic-rfr3")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = rfbridge")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = esp32dev-all")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("default_envs")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("esp32dev-rf")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = esp32dev-ir")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = esp32dev-ble")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v(";default_envs = ttgo-lora32-v1")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br")])]),e("p",[t._v("If you don't know which "),e("code",[t._v("env")]),t._v(" to activate, you can refer to "),e("a",{attrs:{href:"../prerequisites/devices"}},[t._v("devices")]),t._v(".")]),t._v(" "),e("p",[t._v("If you want to add more sensors or gateways to one "),e("code",[t._v("default_envs")]),t._v(" you can add the modules directly into your environment definition of your "),e("code",[t._v(".ini")]),t._v(" files or uncomment them in "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/d2dd6138558909b71cc44f69665340247bd5f356/main/User_config.h#L84",target:"_blank",rel:"noopener noreferrer"}},[e("code",[t._v("User_config.h")]),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Example to add IR to "),e("code",[t._v("esp32dev-rf")]),t._v(" add the "),e("code",[t._v("build_flags")]),t._v(" below to the env definition:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayIR")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"IR"\'')]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:esp32dev-rf")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform_packages")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform_packages}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("board")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("esp32dev")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.lib_deps}\n ${libraries.rc-switch}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.build_flags}\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayRF")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"RF"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayIR")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"IR"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DGateway_Name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"OpenMQTTGateway_ESP32_RF_IR"\'')]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br")])]),e("p",[t._v("Once your configuration is done you can upload the program to your board by clicking on the white arrow at the blue bottom bar of your PIO editor or with the following command:\n"),e("code",[t._v("pio run --target upload")])]),t._v(" "),e("p",[t._v("PIO will download the necessaries platform and libraries with the correct versions, build the code and upload it.")]),t._v(" "),e("p",[t._v("If you encounter errors the first thing to do is to clean your environment by using the white dust bin in the blue bottom bar of your PIO editor or with the following command:\n"),e("code",[t._v("pio run --target clean")])]),t._v(" "),e("p",[t._v("With some ESP it could be necessary to push the reset button when the upload begin.")]),t._v(" "),e("p",[t._v("If you want to erase the settings stored in the ESP memory use:\n"),e("code",[t._v("pio run --target erase")]),t._v("\nThis can be useful especially before the first upload or when you change the board partitions sizing.")]),t._v(" "),e("p",[t._v("Once done the gateway should connect to your network and your broker, you should see it into the broker in the form of the following messages:")]),t._v(" "),e("div",{staticClass:"language- line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("home/OpenMQTTGateway/LWT Online\nhome/OpenMQTTGateway/version\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br")])]),e("p",[t._v("With PIO you can also upload the firmware through Over the Air, so as to do that you can add the upload options flags used below, "),e("code",[t._v("upload_port")]),t._v(" is the IP address of your ESP:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("env:esp32-ble")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("platform_packages")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("${com.esp32_platform_packages}")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("board")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("esp32dev")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("board_build.partitions")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("min_spiffs.csv")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("lib_deps")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.lib_deps}\n ${libraries.ble}\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("build_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n ${com-esp.build_flags}\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DZgatewayBT")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"BT"\'')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("'-DGateway_Name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v('"OpenMQTTGateway_ESP32"\'')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_protocol")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("espota")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_port")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("192.168.1.22")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("upload_flags")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--auth")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("OTAPASSWORD")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("--port")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("8266")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br"),e("span",{staticClass:"line-number"},[t._v("9")]),e("br"),e("span",{staticClass:"line-number"},[t._v("10")]),e("br"),e("span",{staticClass:"line-number"},[t._v("11")]),e("br"),e("span",{staticClass:"line-number"},[t._v("12")]),e("br"),e("span",{staticClass:"line-number"},[t._v("13")]),e("br"),e("span",{staticClass:"line-number"},[t._v("14")]),e("br"),e("span",{staticClass:"line-number"},[t._v("15")]),e("br"),e("span",{staticClass:"line-number"},[t._v("16")]),e("br"),e("span",{staticClass:"line-number"},[t._v("17")]),e("br")])]),e("h2",{attrs:{id:"api"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[t._v("#")]),t._v(" API")]),t._v(" "),e("p",[t._v("With the V0.9 we added the support of json for receiving and publishing.\nPer default Json reception and Json publication is activated, the previous simple reception mode is also activated to avoid regression on commands.")]),t._v(" "),e("p",[t._v("You can deactivate Json or simple mode following theses instructions:")]),t._v(" "),e("div",{staticClass:"language-cpp line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("jsonPublishing")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define false if you don't want to use Json publishing (one topic for all the parameters)")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v('//example home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4 {"rssi":-63,"servicedata":"fe0000000000000000000000000000000000000000"}')]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("simplePublishing")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define true if you want to use simple publishing (one topic for one parameter)")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//example")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/rssi -63.0")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/servicedata fe0000000000000000000000000000000000000000")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("simpleReceiving")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define false if you don't want to use old way reception analysis")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token macro property"}},[e("span",{pre:!0,attrs:{class:"token directive-hash"}},[t._v("#")]),e("span",{pre:!0,attrs:{class:"token directive keyword"}},[t._v("define")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token macro-name"}},[t._v("jsonReceiving")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token expression"}},[e("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),t._v(" ")]),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//define false if you don't want to use Json reception analysis")])]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br"),e("span",{staticClass:"line-number"},[t._v("5")]),e("br"),e("span",{staticClass:"line-number"},[t._v("6")]),e("br"),e("span",{staticClass:"line-number"},[t._v("7")]),e("br"),e("span",{staticClass:"line-number"},[t._v("8")]),e("br")])]),e("p",[t._v("If you are using platformio you can also comment the definitions above and define your parameters into platformio.ini file by setting the following "),e("code",[t._v("build_flags")]),t._v(":")]),t._v(" "),e("div",{staticClass:"language-cpp line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-cpp"}},[e("code",[t._v(" "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DjsonPublishing=true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DjsonReceiving=true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DsimpleReceiving=true'")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token char"}},[t._v("'-DsimplePublishing=true'")]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br"),e("span",{staticClass:"line-number"},[t._v("3")]),e("br"),e("span",{staticClass:"line-number"},[t._v("4")]),e("br")])]),e("p",[t._v("Note that depending on the environment the default platformio.ini has common option defined see sections:")]),t._v(" "),e("div",{staticClass:"language-ini line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-ini"}},[e("code",[e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("com-arduino")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token section"}},[e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("com-esp")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br"),e("span",{staticClass:"line-number"},[t._v("2")]),e("br")])]),e("p",[t._v("If you want to use HASS MQTT discovery you need to have\n"),e("code",[t._v("#define jsonPublishing true")]),t._v("\n&\n"),e("code",[t._v('#define ZmqttDiscovery "HADiscovery"')]),t._v("\nuncommented.\nAdded to that auto discovery box should be selected into your Home Assistant MQTT integration configuration.")]),t._v(" "),e("p",[t._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),e("RouterLink",{attrs:{to:"/upload/portal.html"}},[t._v("web portal configuration")]),t._v(".")],1),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("simpleReceiving on Arduino boards doesn't accept 64 bits MQTT values, you can only send 32bits values from the MQTT broker.")])]),t._v(" "),e("p",[e("a",{attrs:{href:"https://hits.seeyoufarm.com",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fdocs.openmqttgateway.com%2Fupload%2Fbuilds.html&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false",alt:"Hits"}}),e("OutboundLink")],1)])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/66.9165dde9.js b/dev/assets/js/66.147c03e8.js similarity index 99% rename from dev/assets/js/66.9165dde9.js rename to dev/assets/js/66.147c03e8.js index 2a8af925..81e68302 100644 --- a/dev/assets/js/66.9165dde9.js +++ b/dev/assets/js/66.147c03e8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{469:function(e,s,a){"use strict";a.r(s);var t=a(14),n=Object(t.a)({},(function(){var e=this,s=e._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"rs232-serial-gateway"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rs232-serial-gateway"}},[e._v("#")]),e._v(" RS232/Serial gateway")]),e._v(" "),s("p",[e._v("The SERIAL gateway can be used to send and receive data from the serial connection to and from MQTT. Both softwareSerial as hardwareSerial are supported. HardwareSerial can be used for higher baud rates, but is limited to specific pins on most platforms.")]),e._v(" "),s("h2",{attrs:{id:"sending-an-serial-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sending-an-serial-message"}},[e._v("#")]),e._v(" Sending an SERIAL message")]),e._v(" "),s("p",[e._v("Simply publish the message you wish to transmit, minus the prefix and postfix. For example, to send the \"Turn On\" signal for a Mitsubishi XD221U projector, the code is simply '!' so you would use the command")]),e._v(" "),s("p",[s("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/XtoSERIAL -m \'{"value": "!"}\'')])]),e._v(" "),s("p",[e._v("It will automatically add the prefix and postfix you set in "),s("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/main/config_SERIAL.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_SERIAL.h"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("h2",{attrs:{id:"receiving-an-serial-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#receiving-an-serial-message"}},[e._v("#")]),e._v(" Receiving an SERIAL message")]),e._v(" "),s("p",[e._v("Two modes are available for receiving SERIAL messages.")]),e._v(" "),s("h3",{attrs:{id:"single-mqtt-message-mode-default"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#single-mqtt-message-mode-default"}},[e._v("#")]),e._v(" Single MQTT message mode (default)")]),e._v(" "),s("p",[e._v("To receive a message, subscribe to all with "),s("code",[e._v("mosquitto_sub -t +/# -v")]),e._v('\nand perform an action that should get a response from the device. For example, If I were to send the "Turn On" signal from earlier, I would receive back')]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br")])]),s("p",[e._v("Because this projector echoes back a received command to acknowledge. Some devices will send a NACK, or Negative Acknowledge, to confirm that they received your message but could not comply. That would look like")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"!:N"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br")])]),s("h3",{attrs:{id:"json-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#json-mode"}},[e._v("#")]),e._v(" JSON mode")]),e._v(" "),s("p",[e._v("This mode can be used if the received message on the serial link is JSON. The JSON keys are used as separate MQTT sub-topics. For nested JSON this will be repeated for sub-keys up to the specified nesting level.")]),e._v(" "),s("p",[e._v("For example:")]),e._v(" "),s("p",[e._v("input received at serial link:")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("temperature"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("sens1"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("22")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" sens2"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("23")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" humidity"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("sens1"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("80")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" sens2"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("60")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br")])]),s("p",[e._v("output in case of max nesting level 1:")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT/temperature "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{sens1: 22, sens2: 23}"')]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/humidity "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{sens1: 80, sens2: 60}"')]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br"),s("span",{staticClass:"line-number"},[e._v("2")]),s("br")])]),s("p",[e._v("output in case of max nesting level 2 (or higher):")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT/temperature/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("22")]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/temperature/sens2 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("23")]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/humidity/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("80")]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/humidity/sens2 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("60")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br"),s("span",{staticClass:"line-number"},[e._v("2")]),s("br"),s("span",{staticClass:"line-number"},[e._v("3")]),s("br"),s("span",{staticClass:"line-number"},[e._v("4")]),s("br")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{468:function(e,s,a){"use strict";a.r(s);var t=a(14),n=Object(t.a)({},(function(){var e=this,s=e._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"rs232-serial-gateway"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rs232-serial-gateway"}},[e._v("#")]),e._v(" RS232/Serial gateway")]),e._v(" "),s("p",[e._v("The SERIAL gateway can be used to send and receive data from the serial connection to and from MQTT. Both softwareSerial as hardwareSerial are supported. HardwareSerial can be used for higher baud rates, but is limited to specific pins on most platforms.")]),e._v(" "),s("h2",{attrs:{id:"sending-an-serial-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sending-an-serial-message"}},[e._v("#")]),e._v(" Sending an SERIAL message")]),e._v(" "),s("p",[e._v("Simply publish the message you wish to transmit, minus the prefix and postfix. For example, to send the \"Turn On\" signal for a Mitsubishi XD221U projector, the code is simply '!' so you would use the command")]),e._v(" "),s("p",[s("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/XtoSERIAL -m \'{"value": "!"}\'')])]),e._v(" "),s("p",[e._v("It will automatically add the prefix and postfix you set in "),s("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/main/config_SERIAL.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_SERIAL.h"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("h2",{attrs:{id:"receiving-an-serial-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#receiving-an-serial-message"}},[e._v("#")]),e._v(" Receiving an SERIAL message")]),e._v(" "),s("p",[e._v("Two modes are available for receiving SERIAL messages.")]),e._v(" "),s("h3",{attrs:{id:"single-mqtt-message-mode-default"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#single-mqtt-message-mode-default"}},[e._v("#")]),e._v(" Single MQTT message mode (default)")]),e._v(" "),s("p",[e._v("To receive a message, subscribe to all with "),s("code",[e._v("mosquitto_sub -t +/# -v")]),e._v('\nand perform an action that should get a response from the device. For example, If I were to send the "Turn On" signal from earlier, I would receive back')]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br")])]),s("p",[e._v("Because this projector echoes back a received command to acknowledge. Some devices will send a NACK, or Negative Acknowledge, to confirm that they received your message but could not comply. That would look like")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"!:N"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br")])]),s("h3",{attrs:{id:"json-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#json-mode"}},[e._v("#")]),e._v(" JSON mode")]),e._v(" "),s("p",[e._v("This mode can be used if the received message on the serial link is JSON. The JSON keys are used as separate MQTT sub-topics. For nested JSON this will be repeated for sub-keys up to the specified nesting level.")]),e._v(" "),s("p",[e._v("For example:")]),e._v(" "),s("p",[e._v("input received at serial link:")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("temperature"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("sens1"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("22")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" sens2"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("23")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" humidity"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("sens1"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("80")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" sens2"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("60")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br")])]),s("p",[e._v("output in case of max nesting level 1:")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT/temperature "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{sens1: 22, sens2: 23}"')]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/humidity "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{sens1: 80, sens2: 60}"')]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br"),s("span",{staticClass:"line-number"},[e._v("2")]),s("br")])]),s("p",[e._v("output in case of max nesting level 2 (or higher):")]),e._v(" "),s("div",{staticClass:"language-json line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[e._v("home/OpenMQTTGateway/SERIALtoMQTT/temperature/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("22")]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/temperature/sens2 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("23")]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/humidity/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("80")]),e._v("\nhome/OpenMQTTGateway/SERIALtoMQTT/humidity/sens2 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("60")]),e._v("\n")])]),e._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[e._v("1")]),s("br"),s("span",{staticClass:"line-number"},[e._v("2")]),s("br"),s("span",{staticClass:"line-number"},[e._v("3")]),s("br"),s("span",{staticClass:"line-number"},[e._v("4")]),s("br")])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/67.9685d727.js b/dev/assets/js/67.0d566ba2.js similarity index 98% rename from dev/assets/js/67.9685d727.js rename to dev/assets/js/67.0d566ba2.js index ba5f3af2..8d16d4fa 100644 --- a/dev/assets/js/67.9685d727.js +++ b/dev/assets/js/67.0d566ba2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{468:function(t,e,a){"use strict";a.r(e);var i=a(14),o=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"webui"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#webui"}},[t._v("#")]),t._v(" WebUI")]),t._v(" "),e("p",[t._v("For ESP32 based environments a WebUI is available to provide basic configuration and monitoring of your OpenMQTTGateway Device. Functions included are:")]),t._v(" "),e("ul",[e("li",[t._v("Configuration")]),t._v(" "),e("li",[t._v("Information")]),t._v(" "),e("li",[t._v("Firmware Upgrade")]),t._v(" "),e("li",[t._v("Console")]),t._v(" "),e("li",[t._v("Restart")])]),t._v(" "),e("h1",{attrs:{id:"login-authentication"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#login-authentication"}},[t._v("#")]),t._v(" Login Authentication")]),t._v(" "),e("p",[t._v("By default access to the WebUI uses basic authentication to control access to your OpenMQTTGateway Device. The login is "),e("code",[t._v("admin")]),t._v(" and the password is your "),e("code",[t._v("gateway password")]),t._v(" (if unchanged during onboarding there is no password).")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("The communication with the WebUI is not encrypted, which means that your data may be visible on your local network.")])]),t._v(" "),e("h1",{attrs:{id:"configuration-options"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuration-options"}},[t._v("#")]),t._v(" Configuration Options")]),t._v(" "),e("h2",{attrs:{id:"wifi"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#wifi"}},[t._v("#")]),t._v(" WiFi")]),t._v(" "),e("p",[t._v("Ability to change the SSID and password for your WiFi, if the change is unsuccessful it will revert back to the previous WiFi settings.")]),t._v(" "),e("h2",{attrs:{id:"mqtt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#mqtt"}},[t._v("#")]),t._v(" MQTT")]),t._v(" "),e("p",[t._v("Ability to change the mqtt settings, if the change is unsuccessful it will revert back to the previous mqtt settings.")]),t._v(" "),e("h2",{attrs:{id:"webui-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#webui-2"}},[t._v("#")]),t._v(" WebUI")]),t._v(" "),e("p",[t._v("Ability to change the display of sensor to Metric or Imperial, and disable the WebUI Authentication")]),t._v(" "),e("h2",{attrs:{id:"bluetooth-low-energy-ble"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bluetooth-low-energy-ble"}},[t._v("#")]),t._v(" Bluetooth Low Energy - BLE")]),t._v(" "),e("p",[t._v("Ability to add the default AES BLE decryption key, and multiple per-device "),e("code",[t._v("macaddress:aeskey")]),t._v(" allowing for devices that cannot have their AES key changed.")]),t._v(" "),e("h2",{attrs:{id:"logging"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logging"}},[t._v("#")]),t._v(" Logging")]),t._v(" "),e("p",[t._v("Ability to temporarily change the logging level.")]),t._v(" "),e("h1",{attrs:{id:"information"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#information"}},[t._v("#")]),t._v(" Information")]),t._v(" "),e("p",[t._v("Details of OpenMQTTGateway Device status")]),t._v(" "),e("h1",{attrs:{id:"firmware-upgrade"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#firmware-upgrade"}},[t._v("#")]),t._v(" Firmware Upgrade")]),t._v(" "),e("p",[t._v("Ability to upgrade firmware by URL or to latest version.")]),t._v(" "),e("h1",{attrs:{id:"console"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#console"}},[t._v("#")]),t._v(" Console")]),t._v(" "),e("p",[t._v("Ability to view messages from the OpenMQTTGateway console. The scope of messages visible in the UI is limited to just the OpenMQTTGateway codebase, messages from the ESP hardware or other libraries are not visible,")]),t._v(" "),e("p",[t._v("Ability to inject commands to OpenMQTTGateway for processing. The commands accepted are of the form mqtt topic then json message. And as you are already on the target device, you do not need to include the device name ie")]),t._v(" "),e("p",[e("code",[t._v('commands/MQTTtoSYS/config {"cmd":"restart"}')])]),t._v(" "),e("p",[t._v("This works for all modules in your environment.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{469:function(t,e,a){"use strict";a.r(e);var i=a(14),o=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"webui"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#webui"}},[t._v("#")]),t._v(" WebUI")]),t._v(" "),e("p",[t._v("For ESP32 based environments a WebUI is available to provide basic configuration and monitoring of your OpenMQTTGateway Device. Functions included are:")]),t._v(" "),e("ul",[e("li",[t._v("Configuration")]),t._v(" "),e("li",[t._v("Information")]),t._v(" "),e("li",[t._v("Firmware Upgrade")]),t._v(" "),e("li",[t._v("Console")]),t._v(" "),e("li",[t._v("Restart")])]),t._v(" "),e("h1",{attrs:{id:"login-authentication"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#login-authentication"}},[t._v("#")]),t._v(" Login Authentication")]),t._v(" "),e("p",[t._v("By default access to the WebUI uses basic authentication to control access to your OpenMQTTGateway Device. The login is "),e("code",[t._v("admin")]),t._v(" and the password is your "),e("code",[t._v("gateway password")]),t._v(" (if unchanged during onboarding there is no password).")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("The communication with the WebUI is not encrypted, which means that your data may be visible on your local network.")])]),t._v(" "),e("h1",{attrs:{id:"configuration-options"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuration-options"}},[t._v("#")]),t._v(" Configuration Options")]),t._v(" "),e("h2",{attrs:{id:"wifi"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#wifi"}},[t._v("#")]),t._v(" WiFi")]),t._v(" "),e("p",[t._v("Ability to change the SSID and password for your WiFi, if the change is unsuccessful it will revert back to the previous WiFi settings.")]),t._v(" "),e("h2",{attrs:{id:"mqtt"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#mqtt"}},[t._v("#")]),t._v(" MQTT")]),t._v(" "),e("p",[t._v("Ability to change the mqtt settings, if the change is unsuccessful it will revert back to the previous mqtt settings.")]),t._v(" "),e("h2",{attrs:{id:"webui-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#webui-2"}},[t._v("#")]),t._v(" WebUI")]),t._v(" "),e("p",[t._v("Ability to change the display of sensor to Metric or Imperial, and disable the WebUI Authentication")]),t._v(" "),e("h2",{attrs:{id:"bluetooth-low-energy-ble"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bluetooth-low-energy-ble"}},[t._v("#")]),t._v(" Bluetooth Low Energy - BLE")]),t._v(" "),e("p",[t._v("Ability to add the default AES BLE decryption key, and multiple per-device "),e("code",[t._v("macaddress:aeskey")]),t._v(" allowing for devices that cannot have their AES key changed.")]),t._v(" "),e("h2",{attrs:{id:"logging"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logging"}},[t._v("#")]),t._v(" Logging")]),t._v(" "),e("p",[t._v("Ability to temporarily change the logging level.")]),t._v(" "),e("h1",{attrs:{id:"information"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#information"}},[t._v("#")]),t._v(" Information")]),t._v(" "),e("p",[t._v("Details of OpenMQTTGateway Device status")]),t._v(" "),e("h1",{attrs:{id:"firmware-upgrade"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#firmware-upgrade"}},[t._v("#")]),t._v(" Firmware Upgrade")]),t._v(" "),e("p",[t._v("Ability to upgrade firmware by URL or to latest version.")]),t._v(" "),e("h1",{attrs:{id:"console"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#console"}},[t._v("#")]),t._v(" Console")]),t._v(" "),e("p",[t._v("Ability to view messages from the OpenMQTTGateway console. The scope of messages visible in the UI is limited to just the OpenMQTTGateway codebase, messages from the ESP hardware or other libraries are not visible,")]),t._v(" "),e("p",[t._v("Ability to inject commands to OpenMQTTGateway for processing. The commands accepted are of the form mqtt topic then json message. And as you are already on the target device, you do not need to include the device name ie")]),t._v(" "),e("p",[e("code",[t._v('commands/MQTTtoSYS/config {"cmd":"restart"}')])]),t._v(" "),e("p",[t._v("This works for all modules in your environment.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/app.35d2b575.js b/dev/assets/js/app.405a371d.js similarity index 89% rename from dev/assets/js/app.35d2b575.js rename to dev/assets/js/app.405a371d.js index bf4857a1..16d1e5ae 100644 --- a/dev/assets/js/app.35d2b575.js +++ b/dev/assets/js/app.405a371d.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],l=e[1],c=e[2],f=0,p=[];f
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var l=n.render(!e),c=l.querySelector(r.barSelector),u=r.speed,f=r.easing;return l.offsetWidth,a((function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,function(t,e,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(t)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(t)+"%,0)"}:{"margin-left":i(t)+"%"}).transition="all "+e+"ms "+n,o}(t,u,f)),1===t?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){s(l,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),e()}),u)}),u)):setTimeout(e,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout((function(){n.status&&(n.trickle(),t())}),r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===e&&n.start(),t++,e++,r.always((function(){0==--e?(t=0,n.done()):n.set((t-e)/t)})),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),l=t?"-100":i(n.status||0),u=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(e),e},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&p(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),s=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function l(t,e){return("string"==typeof t?t:f(t)).indexOf(" "+e+" ")>=0}function c(t,e){var n=f(t),r=n+e;l(n,e)||(t.className=r.substring(1))}function u(t,e){var n,r=f(t);l(t,e)&&(n=r.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function f(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e,n){"use strict";var r=n(0),o=n(45).f,i=n(12),a=n(92),s=n(32),l=n(60),c=n(120);t.exports=function(t,e){var n,u,f,p,d,h=t.target,v=t.global,m=t.stat;if(n=v?r:m?r[h]||s(h,{}):(r[h]||{}).prototype)for(u in e){if(p=e[u],f=t.dontCallGetSet?(d=o(n,u))&&d.value:n[u],!c(v?u:h+(m?".":"#")+u,t.forced)&&void 0!==f){if(typeof p==typeof f)continue;l(p,f)}(t.sham||f&&f.sham)&&i(p,"sham",!0),a(n,u,p,t)}}},function(t,e,n){"use strict";var r=n(25),o=Function.prototype.call;t.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},function(t,e,n){"use strict";var r=n(3);t.exports=!r((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},function(t,e,n){"use strict";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){"use strict";var r=n(46),o=n(47);t.exports=function(t){return r(o(t))}},function(t,e,n){"use strict";var r=n(0),o=n(1),i=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t]):r[t]&&r[t][e]}},function(t,e,n){"use strict";var r=n(1),o=n(102),i=TypeError;t.exports=function(t){if(r(t))return t;throw new i(o(t)+" is not a function")}},function(t,e,n){"use strict";var r=n(0),o=n(55),i=n(8),a=n(57),s=n(53),l=n(52),c=r.Symbol,u=o("wks"),f=l?c.for||c:c&&c.withoutSetter||a;t.exports=function(t){return i(u,t)||(u[t]=s&&i(c,t)?c[t]:f("Symbol."+t)),u[t]}},function(t,e,n){"use strict";var r=n(0),o=n(32),i=r["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},function(t,e,n){"use strict";var r=n(0),o=Object.defineProperty;t.exports=function(t,e){try{o(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},function(t,e,n){"use strict";var r=n(47),o=Object;t.exports=function(t){return o(r(t))}},function(t,e,n){"use strict";var r=n(7),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw new i(o(t)+" is not an object")}},function(t,e,n){"use strict";var r=n(117);t.exports=function(t){return r(t.length)}},function(t,e,n){var r=n(144),o=n(10),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(t){return o(t)&&a.call(t,"callee")&&!s.call(t,"callee")};t.exports=l},function(t,e,n){var r=n(9)(n(6),"Map");t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(164),o=n(171),i=n(173),a=n(174),s=n(175);function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){var r=n(4),o=n(43),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!o(t))||(a.test(t)||!i.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(11),o=n(10);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){"use strict";var r=n(5),o=n(24),i=n(98),a=n(26),s=n(27),l=n(49),c=n(8),u=n(58),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=s(t),e=l(e),u)try{return f(t,e)}catch(t){}if(c(t,e))return a(!o(i.f,t,e),t[e])}},function(t,e,n){"use strict";var r=n(2),o=n(3),i=n(16),a=Object,s=r("".split);t.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"===i(t)?s(t,""):a(t)}:a},function(t,e,n){"use strict";var r=n(48),o=TypeError;t.exports=function(t){if(r(t))throw new o("Can't call method on "+t);return t}},function(t,e,n){"use strict";t.exports=function(t){return null==t}},function(t,e,n){"use strict";var r=n(99),o=n(50);t.exports=function(t){var e=r(t,"string");return o(e)?e:e+""}},function(t,e,n){"use strict";var r=n(28),o=n(1),i=n(51),a=n(52),s=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return o(e)&&i(e.prototype,s(t))}},function(t,e,n){"use strict";var r=n(2);t.exports=r({}.isPrototypeOf)},function(t,e,n){"use strict";var r=n(53);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,n){"use strict";var r=n(54),o=n(3),i=n(0).String;t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol("symbol detection");return!i(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(t,e,n){"use strict";var r,o,i=n(0),a=n(100),s=i.process,l=i.Deno,c=s&&s.versions||l&&l.version,u=c&&c.v8;u&&(o=(r=u.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),t.exports=o},function(t,e,n){"use strict";var r=n(56),o=n(31);(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.35.0",mode:r?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.35.0/LICENSE",source:"https://github.com/zloirock/core-js"})},function(t,e,n){"use strict";t.exports=!1},function(t,e,n){"use strict";var r=n(2),o=0,i=Math.random(),a=r(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++o+i,36)}},function(t,e,n){"use strict";var r=n(5),o=n(3),i=n(104);t.exports=!r&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){"use strict";t.exports={}},function(t,e,n){"use strict";var r=n(8),o=n(111),i=n(45),a=n(15);t.exports=function(t,e,n){for(var s=o(e),l=a.f,c=i.f,u=0;uu))return!1;var p=l.get(t),d=l.get(e);if(p&&d)return p==e&&d==t;var h=-1,v=!0,m=2&n?new r:void 0;for(l.set(t,e),l.set(e,t);++h-1&&t%1==0&&t=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return a(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function m(t){return null==t?"":Array.isArray(t)||p(t)&&t.toString===f?JSON.stringify(t,g,2):String(t)}function g(t,e){return e&&e.__v_isRef?e.value:e}function y(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function S(t,e){return x.call(t,e)}function k(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var O=/-(\w)/g,P=k((function(t){return t.replace(O,(function(t,e){return e?e.toUpperCase():""}))})),T=k((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),C=/\B([A-Z])/g,E=k((function(t){return t.replace(C,"-$1").toLowerCase()}));var j=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function $(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function A(t,e){for(var n in e)t[n]=e[n];return t}function M(t){for(var e={},n=0;n0,Z=K&&K.indexOf("edge/")>0;K&&K.indexOf("android");var tt=K&&/iphone|ipad|ipod|ios/.test(K);K&&/chrome\/\d+/.test(K),K&&/phantomjs/.test(K);var et,nt=K&&K.match(/firefox\/(\d+)/),rt={}.watch,ot=!1;if(X)try{var it={};Object.defineProperty(it,"passive",{get:function(){ot=!0}}),window.addEventListener("test-passive",null,it)}catch(t){}var at=function(){return void 0===et&&(et=!X&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),et},st=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function lt(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,ut="undefined"!=typeof Symbol&<(Symbol)&&"undefined"!=typeof Reflect&<(Reflect.ownKeys);ct="undefined"!=typeof Set&<(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=null;function pt(t){void 0===t&&(t=null),t||ft&&ft._scope.off(),ft=t,t&&t._scope.on()}var dt=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),ht=function(t){void 0===t&&(t="");var e=new dt;return e.text=t,e.isComment=!0,e};function vt(t){return new dt(void 0,void 0,void 0,String(t))}function mt(t){var e=new dt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}"function"==typeof SuppressedError&&SuppressedError;var gt=0,yt=[],bt=function(){function t(){this._pending=!1,this.id=gt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,yt.push(this))},t.prototype.depend=function(e){t.target&&t.target.addDep(this)},t.prototype.notify=function(t){var e=this.subs.filter((function(t){return t}));for(var n=0,r=e.length;n0&&(Kt((c=t(c,"".concat(n||"","_").concat(r)))[0])&&Kt(f)&&(p[u]=vt(f.text+c[0].text),c.shift()),p.push.apply(p,c)):l(c)?Kt(f)?p[u]=vt(f.text+c):""!==c&&p.push(vt(c)):Kt(c)&&Kt(f)?p[u]=vt(f.text+c.text):(s(e._isVList)&&a(c.tag)&&i(c.key)&&a(n)&&(c.key="__vlist".concat(n,"_").concat(r,"__")),p.push(c)));return p}(t):void 0}function Kt(t){return a(t)&&a(t.text)&&!1===t.isComment}function Yt(t,e){var n,r,i,s,l=null;if(o(t)||"string"==typeof t)for(l=new Array(t.length),n=0,r=t.length;n0,s=e?!!e.$stable:!a,l=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&o&&o!==r&&l===o.$key&&!a&&!o.$hasNormal)return o;for(var c in i={},e)e[c]&&"$"!==c[0]&&(i[c]=me(t,n,c,e[c]))}else i={};for(var u in n)u in i||(i[u]=ge(n,u));return e&&Object.isExtensible(e)&&(e._normalized=i),W(i,"$stable",s),W(i,"$key",l),W(i,"$hasNormal",a),i}function me(t,e,n,r){var i=function(){var e=ft;pt(t);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Xt(n))&&n[0];return pt(e),n&&(!i||1===n.length&&i.isComment&&!he(i))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:i,enumerable:!0,configurable:!0}),i}function ge(t,e){return function(){return t[e]}}function ye(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};W(e,"_v_attr_proxy",!0),be(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){t._listenersProxy||be(t._listenersProxy={},t.$listeners,r,t,"$listeners");return t._listenersProxy},get slots(){return function(t){t._slotsProxy||_e(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(t)},emit:j(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return Ft(t,e,n)}))}}}function be(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,we(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function we(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function _e(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}var xe=null;function Se(t,e){return(t.__esModule||ut&&"Module"===t[Symbol.toStringTag])&&(t=t.default),u(t)?e.extend(t):t}function ke(t){if(o(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(cn=function(){return un.now()})}var fn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function pn(){var t,e;for(ln=cn(),an=!0,en.sort(fn),sn=0;snsn&&en[n].id>t.id;)n--;en.splice(n+1,0,t)}else en.push(t);on||(on=!0,De(pn))}}function hn(t,e){if(t){for(var n=Object.create(null),r=ut?Reflect.ownKeys(t):Object.keys(t),o=0;o-1)if(i&&!S(o,"default"))a=!1;else if(""===a||a===E(t)){var l=Un(String,o.type);(l<0||s-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Yn(t,e){var n=t.cache,r=t.keys,o=t._vnode,i=t.$vnode;for(var a in n){var s=n[a];if(s){var l=s.name;l&&!e(l)&&Jn(n,a,r,o)}}i.componentOptions.children=void 0}function Jn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Qn.prototype._init=function(t){var e=this;e._uid=Vn++,e._isVue=!0,e.__v_skip=!0,e._scope=new Nt(!0),e._scope.parent=void 0,e._scope._vm=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=jn(Wn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=pe(e._renderChildren,o),t.$scopedSlots=n?ve(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,o){return Oe(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Oe(t,e,n,r,o,!0)};var i=n&&n.data;At(t,"$attrs",i&&i.attrs||r,null,!0),At(t,"$listeners",e._parentListeners||r,null,!0)}(e),tn(e,"beforeCreate",void 0,!1),function(t){var e=hn(t.$options.inject,t);e&&(Ct(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),Ct(!0))}(e),Dn(e),function(t){var e=t.$options.provide;if(e){var n=c(e)?e.call(t):e;if(!u(n))return;for(var r=Ht(t),o=ut?Reflect.ownKeys(n):Object.keys(n),i=0;i1?$(n):n;for(var r=$(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;iparseInt(this.max)&&Jn(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Jn(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Yn(t,(function(t){return Kn(e,t)}))})),this.$watch("exclude",(function(e){Yn(t,(function(t){return!Kn(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=ke(t),n=e&&e.componentOptions;if(n){var r=Xn(n),o=this.include,i=this.exclude;if(o&&(!r||!Kn(o,r))||i&&r&&Kn(i,r))return e;var a=this.cache,s=this.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[l]?(e.componentInstance=a[l].componentInstance,_(s,l),s.push(l)):(this.vnodeToCache=e,this.keyToCache=l),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return H}};Object.defineProperty(t,"config",e),t.util={warn:Sn,extend:A,mergeOptions:jn,defineReactive:At},t.set=Mt,t.delete=Lt,t.nextTick=De,t.observable=function(t){return $t(t),t},t.options=Object.create(null),q.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,A(t.options.components,tr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=$(arguments,1);return n.unshift(this),c(t.install)?t.install.apply(t,n):c(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=jn(this.options,t),this}}(t),Gn(t),function(t){q.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&c(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Qn),Object.defineProperty(Qn.prototype,"$isServer",{get:at}),Object.defineProperty(Qn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Qn,"FunctionalRenderContext",{value:vn}),Qn.version="2.7.16";var er=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),or=b("events,caret,typing,plaintext-only"),ir=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},lr=function(t){return sr(t)?t.slice(6,t.length):""},cr=function(t){return null==t||!1===t};function ur(t){for(var e=t.data,n=t,r=t;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=fr(r.data,e));for(;a(n=n.parent);)n&&n.data&&(e=fr(e,n.data));return function(t,e){if(a(t)||a(e))return pr(t,dr(e));return""}(e.staticClass,e.class)}function fr(t,e){return{staticClass:pr(t.staticClass,e.staticClass),class:a(t.class)?[t.class,e.class]:e.class}}function pr(t,e){return t?e?t+" "+e:t:e||""}function dr(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?Ir(t,e,n):ir(e)?cr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):rr(e)?t.setAttribute(e,function(t,e){return cr(e)||"false"===e?"false":"contenteditable"===t&&or(e)?e:"true"}(e,n)):sr(e)?cr(n)?t.removeAttributeNS(ar,lr(e)):t.setAttributeNS(ar,e,n):Ir(t,e,n)}function Ir(t,e,n){if(cr(n))t.removeAttribute(e);else{if(Y&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Br={create:Rr,update:Rr};function Dr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=ur(e),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Fr,qr={create:Dr,update:Dr};function Nr(t,e,n){var r=Fr;return function o(){var i=e.apply(null,arguments);null!==i&&Vr(t,o,n,r)}}var Hr=$e&&!(nt&&Number(nt[1])<=53);function zr(t,e,n,r){if(Hr){var o=ln,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Fr.addEventListener(t,e,ot?{capture:n,passive:r}:n)}function Vr(t,e,n,r){(r||Fr).removeEventListener(t,e._wrapper||e,n)}function Wr(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Fr=e.elm||t.elm,function(t){if(a(t.__r)){var e=Y?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}a(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),Wt(n,r,zr,Vr,Nr,e.context),Fr=void 0}}var Qr,Gr={create:Wr,update:Wr,destroy:function(t){return Wr(t,kr)}};function Xr(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,o=e.elm,l=t.data.domProps||{},c=e.data.domProps||{};for(n in(a(c.__ob__)||s(c._v_attr_proxy))&&(c=e.data.domProps=A({},c)),l)n in c||(o[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===l[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var u=i(r)?"":String(r);Kr(o,u)&&(o.value=u)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Qr=Qr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Qr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==l[n])try{o[n]=r}catch(t){}}}}function Kr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(a(r)){if(r.number)return y(n)!==y(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Yr={create:Xr,update:Xr},Jr=k((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Zr(t){var e=to(t.style);return t.staticStyle?A(t.staticStyle,e):e}function to(t){return Array.isArray(t)?M(t):"string"==typeof t?Jr(t):t}var eo,no=/^--/,ro=/\s*!important$/,oo=function(t,e,n){if(no.test(e))t.style.setProperty(e,n);else if(ro.test(n))t.style.setProperty(E(e),n.replace(ro,""),"important");else{var r=ao(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(co).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function fo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(co).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function po(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&A(e,ho(t.name||"v")),A(e,t),e}return"string"==typeof t?ho(t):void 0}}var ho=k((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),vo=X&&!J,mo="transition",go="transitionend",yo="animation",bo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",go="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(yo="WebkitAnimation",bo="webkitAnimationEnd"));var wo=X?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function _o(t){wo((function(){wo(t)}))}function xo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),uo(t,e))}function So(t,e){t._transitionClasses&&_(t._transitionClasses,e),fo(t,e)}function ko(t,e,n){var r=Po(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?go:bo,l=0,c=function(){t.removeEventListener(s,u),n()},u=function(e){e.target===t&&++l>=a&&c()};setTimeout((function(){l0&&(n="transition",u=a,f=i.length):"animation"===e?c>0&&(n="animation",u=c,f=l.length):f=(n=(u=Math.max(a,c))>0?a>c?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:u,propCount:f,hasTransform:"transition"===n&&Oo.test(r[mo+"Property"])}}function To(t,e){for(;t.length1}function Mo(t,e){!0!==e.data.show&&Eo(e)}var Lo=function(t){var e,n,r={},c=t.modules,u=t.nodeOps;for(e=0;eh?w(t,i(n[g+1])?null:n[g+1].elm,n,d,g,r):d>g&&x(e,f,h)}(f,v,g,n,c):a(g)?(a(t.text)&&u.setTextContent(f,""),w(f,null,g,0,g.length-1,n)):a(v)?x(v,0,v.length-1):a(t.text)&&u.setTextContent(f,""):t.text!==e.text&&u.setTextContent(f,e.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(t,e)}}}function P(t,e,n){if(s(n)&&a(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(I(Do(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Bo(t,e){return e.every((function(e){return!I(e,t)}))}function Do(t){return"_value"in t?t._value:t.value}function Fo(t){t.target.composing=!0}function qo(t){t.target.composing&&(t.target.composing=!1,No(t.target,"input"))}function No(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ho(t){return!t.componentInstance||t.data&&t.data.transition?t:Ho(t.componentInstance._vnode)}var zo={model:Ro,show:{bind:function(t,e,n){var r=e.value,o=(n=Ho(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Eo(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Ho(n)).data&&n.data.transition?(n.data.show=!0,r?Eo(n,(function(){t.style.display=t.__vOriginalDisplay})):jo(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},Vo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Wo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Wo(ke(e.children)):t}function Qo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[P(r)]=o[r];return e}function Go(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Xo=function(t){return t.tag||he(t)},Ko=function(t){return"show"===t.name},Yo={name:"transition",props:Vo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Xo)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Wo(o);if(!i)return o;if(this._leaving)return Go(t,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:l(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Qo(this),c=this._vnode,u=Wo(c);if(i.data.directives&&i.data.directives.some(Ko)&&(i.data.show=!0),u&&u.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,u)&&!he(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var f=u.data.transition=A({},s);if("out-in"===r)return this._leaving=!0,Qt(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Go(t,o);if("in-out"===r){if(he(i))return c;var p,d=function(){p()};Qt(s,"afterEnter",d),Qt(s,"enterCancelled",d),Qt(f,"delayLeave",(function(t){p=t}))}}return o}}},Jo=A({tag:String,moveClass:String},Vo);function Zo(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ti(t){t.data.newPos=t.elm.getBoundingClientRect()}function ei(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Jo.mode;var ni={Transition:Yo,TransitionGroup:{props:Jo,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Ye(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Qo(this),s=0;s-1?yr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:yr[t]=/HTMLUnknownElement/.test(e.toString())},A(Qn.options.directives,zo),A(Qn.options.components,ni),Qn.prototype.__patch__=X?Lo:L,Qn.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=ht),tn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new Ve(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&tn(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),c=e&&e.path||"/",u=l.path?Si(l.path,c,n||o.append):c,f=function(t,e,n){void 0===e&&(e={});var r,o=n||ui;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(ci):ci(a)}return r}(l.query,o.query,r&&r.options.parseQuery),p=o.hash||l.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:u,query:f,hash:p}}var zi,Vi=function(){},Wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,f=null==c?"router-link-active":c,p=null==u?"router-link-exact-active":u,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?di(null,Hi(a.redirectedFrom),null,n):a;l[h]=yi(r,v,this.exactPath),l[d]=this.exact||this.exactPath?l[h]:function(t,e){return 0===t.path.replace(pi,"/").indexOf(e.path.replace(pi,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=l[h]?this.ariaCurrentValue:null,g=function(t){Qi(t)&&(e.replace?n.replace(i,Vi):n.push(i,Vi))},y={click:Qi};Array.isArray(this.event)?this.event.forEach((function(t){y[t]=g})):y[this.event]=g;var b={class:l},w=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:g,isActive:l[d],isExactActive:l[h]});if(w){if(1===w.length)return w[0];if(w.length>1||!w.length)return 0===w.length?t():t("span",{},w)}if("a"===this.tag)b.on=y,b.attrs={href:s,"aria-current":m};else{var _=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=Ni(u.path,s.params),l(u,s,a)}if(s.path){s.params={};for(var d=0;d-1}function ka(t,e){return Sa(t)&&t._isRouter&&(null==e||t.type===e)}function Oa(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Pa(t){return function(e,n,r){var o=!1,i=0,a=null;Ta(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var l,c=ja((function(e){var o;((o=e).__esModule||Ea&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:zi.extend(e),n.components[s]=e,--i<=0&&r()})),u=ja((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Sa(t)?t:new Error(e),r(a))}));try{l=t(c,u)}catch(t){u(t)}if(l)if("function"==typeof l.then)l.then(c,u);else{var f=l.component;f&&"function"==typeof f.then&&f.then(c,u)}}})),o||r()}}function Ta(t,e){return Ca(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Ca(t){return Array.prototype.concat.apply([],t)}var Ea="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function ja(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var $a=function(t,e){this.router=t,this.base=function(t){if(!t)if(Gi){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=vi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Aa(t,e,n,r){var o=Ta(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=zi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return Ca(r?o.reverse():o)}function Ma(t,e){if(e)return function(){return t.apply(e,arguments)}}$a.prototype.listen=function(t){this.cb=t},$a.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},$a.prototype.onError=function(t){this.errorCbs.push(t)},$a.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(ka(t,ya.redirected)&&i===vi||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},$a.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,s=function(t){!ka(t)&&Sa(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},l=t.matched.length-1,c=o.matched.length-1;if(yi(t,o)&&l===c&&t.matched[l]===o.matched[c])return this.ensureURL(),t.hash&&aa(this.router,o,t,!1),s(((a=_a(i=o,t,ya.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=va&&n;r&&this.listeners.push(ia());var o=function(){var n=t.current,o=Ra(t.base);t.current===vi&&o===t._startLocation||t.transitionTo(o,(function(t){r&&aa(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ma(ki(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ga(ki(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Ra(this.base)!==this.current.fullPath){var e=ki(this.base+this.current.fullPath);t?ma(e):ga(e)}},e.prototype.getCurrentLocation=function(){return Ra(this.base)},e}($a);function Ra(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(ki(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ua=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Ra(t);if(!/^\/#/.test(e))return window.location.replace(ki(t+"/#"+e)),!0}(this.base)||Ia()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=va&&e;n&&this.listeners.push(ia());var r=function(){var e=t.current;Ia()&&t.transitionTo(Ba(),(function(r){n&&aa(t.router,r,e,!0),va||qa(r.fullPath)}))},o=va?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Fa(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){qa(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ba()!==e&&(t?Fa(e):qa(e))},e.prototype.getCurrentLocation=function(){return Ba()},e}($a);function Ia(){var t=Ba();return"/"===t.charAt(0)||(qa("/"+t),!1)}function Ba(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Da(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Fa(t){va?ma(Da(t)):window.location.hash=t}function qa(t){va?ga(Da(t)):window.location.replace(Da(t))}var Na=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){ka(t,ya.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}($a),Ha=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Yi(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!va&&!1!==t.fallback,this.fallback&&(e="hash"),Gi||(e="abstract"),this.mode=e,e){case"history":this.history=new La(this,t.base);break;case"hash":this.history=new Ua(this,t.base,this.fallback);break;case"abstract":this.history=new Na(this,t.base);break;default:0}},za={currentRoute:{configurable:!0}};Ha.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},za.currentRoute.get=function(){return this.history&&this.history.current},Ha.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof La||n instanceof Ua){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;va&&o&&"fullPath"in t&&aa(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Ha.prototype.beforeEach=function(t){return Wa(this.beforeHooks,t)},Ha.prototype.beforeResolve=function(t){return Wa(this.resolveHooks,t)},Ha.prototype.afterEach=function(t){return Wa(this.afterHooks,t)},Ha.prototype.onReady=function(t,e){this.history.onReady(t,e)},Ha.prototype.onError=function(t){this.history.onError(t)},Ha.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Ha.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Ha.prototype.go=function(t){this.history.go(t)},Ha.prototype.back=function(){this.go(-1)},Ha.prototype.forward=function(){this.go(1)},Ha.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Ha.prototype.resolve=function(t,e,n){var r=Hi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ki(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ha.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ha.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Ha.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ha.prototype,za);var Va=Ha;function Wa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Ha.install=function t(e){if(!t.installed||zi!==e){t.installed=!0,zi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",_i),e.component("RouterLink",Wi);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ha.version="3.6.5",Ha.isNavigationFailure=ka,Ha.NavigationFailureType=ya,Ha.START_LOCATION=vi,Gi&&window.Vue&&window.Vue.use(Ha);n(97);n(90),n(127);var Qa={"components/AlgoliaSearchBox":()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,418)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,256)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(31)]).then(n.bind(null,244)),"components/Home":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,285)),"components/NavLink":()=>n.e(41).then(n.bind(null,243)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,268)),"components/Navbar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,415)),"components/Page":()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,286)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,270)),"components/PageNav":()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,271)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,287)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(32)]).then(n.bind(null,288)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,269)),"components/SidebarLink":()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,257)),"components/SidebarLinks":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,255)),"global-components/Badge":()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,424)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,419)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,420)),"layouts/404":()=>n.e(7).then(n.bind(null,421)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,422)),NotFound:()=>n.e(7).then(n.bind(null,421)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,422))},Ga={"v-96f26938":()=>n.e(48).then(n.bind(null,425)),"v-b936cd92":()=>n.e(10).then(n.bind(null,426)),"v-347fe277":()=>n.e(12).then(n.bind(null,427)),"v-06f4d0aa":()=>n.e(16).then(n.bind(null,428)),"v-08357a02":()=>n.e(13).then(n.bind(null,429)),"v-73cb197f":()=>n.e(17).then(n.bind(null,430)),"v-e115e73a":()=>n.e(49).then(n.bind(null,431)),"v-2db1db37":()=>n.e(50).then(n.bind(null,432)),"v-117d8812":()=>n.e(51).then(n.bind(null,433)),"v-f3fbff12":()=>n.e(52).then(n.bind(null,434)),"v-412f01af":()=>n.e(26).then(n.bind(null,435)),"v-095f6301":()=>n.e(42).then(n.bind(null,436)),"v-01bee537":()=>n.e(53).then(n.bind(null,437)),"v-56e06d4d":()=>n.e(54).then(n.bind(null,438)),"v-5e0eec87":()=>n.e(43).then(n.bind(null,439)),"v-29f81312":()=>n.e(55).then(n.bind(null,440)),"v-0c47cd52":()=>n.e(56).then(n.bind(null,441)),"v-cf2ed192":()=>n.e(33).then(n.bind(null,442)),"v-204c7852":()=>n.e(24).then(n.bind(null,443)),"v-eab731fa":()=>n.e(34).then(n.bind(null,444)),"v-b5aec012":()=>n.e(44).then(n.bind(null,445)),"v-0d1e8e9e":()=>n.e(57).then(n.bind(null,446)),"v-2fe62c26":()=>n.e(35).then(n.bind(null,447)),"v-aa1cc612":()=>n.e(58).then(n.bind(null,448)),"v-255607ed":()=>n.e(36).then(n.bind(null,449)),"v-7df515d2":()=>n.e(37).then(n.bind(null,450)),"v-2c32e617":()=>n.e(38).then(n.bind(null,451)),"v-303bd052":()=>n.e(59).then(n.bind(null,452)),"v-6e14dcd7":()=>n.e(27).then(n.bind(null,453)),"v-27c660f7":()=>n.e(28).then(n.bind(null,454)),"v-246d3f77":()=>n.e(60).then(n.bind(null,455)),"v-2b7b8f3b":()=>n.e(61).then(n.bind(null,456)),"v-0d819412":()=>n.e(62).then(n.bind(null,457)),"v-bbb970d2":()=>n.e(18).then(n.bind(null,458)),"v-3043a2b9":()=>n.e(39).then(n.bind(null,459)),"v-288d7b9e":()=>n.e(63).then(n.bind(null,460)),"v-131b9357":()=>n.e(40).then(n.bind(null,461)),"v-20c05837":()=>n.e(45).then(n.bind(null,462)),"v-a9ffe0fe":()=>n.e(46).then(n.bind(null,463)),"v-749f316f":()=>n.e(29).then(n.bind(null,464)),"v-947f362a":()=>n.e(30).then(n.bind(null,465)),"v-21b208b7":()=>n.e(64).then(n.bind(null,466)),"v-2494b4d7":()=>n.e(65).then(n.bind(null,467)),"v-2566e137":()=>n.e(67).then(n.bind(null,468)),"v-93d2a72a":()=>n.e(66).then(n.bind(null,469))};function Xa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Ka=/-(\w)/g,Ya=Xa(t=>t.replace(Ka,(t,e)=>e?e.toUpperCase():"")),Ja=/\B([A-Z])/g,Za=Xa(t=>t.replace(Ja,"-$1").toLowerCase()),ts=Xa(t=>t.charAt(0).toUpperCase()+t.slice(1));function es(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(ts(Ya(e))):t(ts(e))||t(Za(e))}const ns=Object.assign({},Qa,Ga),rs=t=>ns[t],os=t=>Ga[t],is=t=>Qa[t],as=t=>Qn.component(t);function ss(t){return es(os,t)}function ls(t){return es(is,t)}function cs(t){return es(rs,t)}function us(t){return es(as,t)}function fs(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!us(t)&&cs(t)){const e=await cs(t)();Qn.component(t,e.default)}}))}function ps(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var ds=n(86),hs=n.n(ds),vs=n(87),ms=n.n(vs),gs={created(){if(this.siteMeta=this.$site.headTags.filter(([t])=>"meta"===t).map(([t,e])=>e),this.$ssrContext){const e=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(t=e)?t.map(t=>{let e="{e+=` ${n}="${ms()(t[n])}"`}),e+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var t},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.getMergedMetaTags();this.currentMetaTags=ws(t,this.currentMetaTags)},getMergedMetaTags(){const t=this.$page.frontmatter.meta||[];return hs()([{name:"description",content:this.$description}],t,this.siteMeta,_s)},updateCanonicalLink(){ys(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){ws(null,this.currentMetaTags),ys()}};function ys(){const t=document.querySelector("link[rel='canonical']");t&&t.remove()}function bs(t=""){return t?``:""}function ws(t,e){if(e&&[...e].filter(t=>t.parentNode===document.head).forEach(t=>document.head.removeChild(t)),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}function _s(t){for(const e of["name","property","itemprop"])if(t.hasOwnProperty(e))return t[e]+e;return JSON.stringify(t)}var xs=n(88),Ss={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(xs)()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},ks=n(22),Os=n.n(ks),Ps={mounted(){Os.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||Qn.component(t.name)||Os.a.start(),n()}),this.$router.afterEach(()=>{Os.a.done(),this.isSidebarOpen=!1})}},Ts=n(89),Cs=n.n(Ts),Es=[gs,Ss,Ps,{mounted(){Cs.a.polyfill()}}],js={name:"GlobalLayout",computed:{layout(){const t=this.getLayout();return ps("layout",t),Qn.component(t)}},methods:{getLayout(){if(this.$page.path){const t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},$s=n(14),As=Object($s.a)(js,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(As,"mixins",Es);const Ms=[{name:"v-96f26938",path:"/",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-96f26938").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-b936cd92",path:"/integrate/jeedom.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b936cd92").then(n)}},{name:"v-347fe277",path:"/integrate/aws_iot.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-347fe277").then(n)}},{name:"v-06f4d0aa",path:"/integrate/home_assistant.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-06f4d0aa").then(n)}},{name:"v-08357a02",path:"/integrate/openhab3.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-08357a02").then(n)}},{name:"v-73cb197f",path:"/integrate/node_red.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-73cb197f").then(n)}},{name:"v-e115e73a",path:"/participate/adding-protocols.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-e115e73a").then(n)}},{name:"v-2db1db37",path:"/participate/community.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2db1db37").then(n)}},{name:"v-117d8812",path:"/participate/development.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-117d8812").then(n)}},{name:"v-f3fbff12",path:"/participate/support.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-f3fbff12").then(n)}},{name:"v-412f01af",path:"/prerequisites/M5.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-412f01af").then(n)}},{name:"v-095f6301",path:"/integrate/openhab2.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-095f6301").then(n)}},{name:"v-01bee537",path:"/prerequisites/board.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-01bee537").then(n)}},{name:"v-56e06d4d",path:"/prerequisites/broker.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-56e06d4d").then(n)}},{name:"v-5e0eec87",path:"/prerequisites/controller.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-5e0eec87").then(n)}},{name:"v-29f81312",path:"/prerequisites/parts.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-29f81312").then(n)}},{name:"v-0c47cd52",path:"/setitup/actuators.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-0c47cd52").then(n)}},{name:"v-cf2ed192",path:"/setitup/ble.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-cf2ed192").then(n)}},{name:"v-204c7852",path:"/prerequisites/devices.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-204c7852").then(n)}},{name:"v-eab731fa",path:"/setitup/ir.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-eab731fa").then(n)}},{name:"v-b5aec012",path:"/setitup/gsm.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b5aec012").then(n)}},{name:"v-0d1e8e9e",path:"/setitup/lora.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-0d1e8e9e").then(n)}},{name:"v-2fe62c26",path:"/setitup/rf.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2fe62c26").then(n)}},{name:"v-aa1cc612",path:"/setitup/sensors.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-aa1cc612").then(n)}},{name:"v-255607ed",path:"/setitup/serial.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-255607ed").then(n)}},{name:"v-7df515d2",path:"/upload/advanced-configuration.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-7df515d2").then(n)}},{name:"v-2c32e617",path:"/upload/gitpod.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2c32e617").then(n)}},{name:"v-303bd052",path:"/upload/builds.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-303bd052").then(n)}},{name:"v-6e14dcd7",path:"/upload/binaries.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-6e14dcd7").then(n)}},{name:"v-27c660f7",path:"/upload/portal.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-27c660f7").then(n)}},{name:"v-246d3f77",path:"/upload/troubleshoot.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-246d3f77").then(n)}},{name:"v-2b7b8f3b",path:"/upload/web-install.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2b7b8f3b").then(n)}},{name:"v-0d819412",path:"/use/actuators.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-0d819412").then(n)}},{name:"v-bbb970d2",path:"/use/ble.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-bbb970d2").then(n)}},{name:"v-3043a2b9",path:"/use/boards.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-3043a2b9").then(n)}},{name:"v-288d7b9e",path:"/use/displays.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-288d7b9e").then(n)}},{name:"v-131b9357",path:"/use/gsm.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-131b9357").then(n)}},{name:"v-20c05837",path:"/use/gateway.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-20c05837").then(n)}},{name:"v-a9ffe0fe",path:"/use/ir.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-a9ffe0fe").then(n)}},{name:"v-749f316f",path:"/use/lora.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-749f316f").then(n)}},{name:"v-947f362a",path:"/use/rf.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-947f362a").then(n)}},{name:"v-21b208b7",path:"/use/rfm69.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-21b208b7").then(n)}},{name:"v-2494b4d7",path:"/use/sensors.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2494b4d7").then(n)}},{name:"v-2566e137",path:"/use/webui.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2566e137").then(n)}},{name:"v-93d2a72a",path:"/use/serial.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-93d2a72a").then(n)}},{path:"*",component:As}],Ls={title:"Theengs OpenMQTTGateway DEVELOPMENT SHA:e91086 TEST ONLY",description:"One gateway, many technologies: MQTT gateway for ESP8266 or ESP32 with bidirectional 433mhz/315mhz/868mhz, Infrared communications, BLE, LoRa, beacons detection, mi flora / mi jia / LYWSD02/ Mi Scale compatibility, SMS & LORA.",base:"/dev/",headTags:[["meta",{name:"viewport",content:"width=device-width, initial-scale=1"}],["link",{rel:"apple-touch-icon",sizes:"180x180",href:".apple-touch-icon.png"}],["link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/dev/favicon-32x32.png"}],["link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/dev/favicon-16x16.png"}],["link",{rel:"manifest",href:"/dev/manifest.json"}],["meta",{name:"theme-color",content:"#3eaf7c"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["meta",{name:"apple-mobile-web-app-status-bar-style",content:"black"}],["link",{rel:"mask-icon",href:"/dev/icons/safari-pinned-tab.svg",color:"#3eaf7c"}],["meta",{name:"msapplication-TileImage",content:"/favicon-144x144.png"}],["meta",{name:"msapplication-TileColor",content:"#000000"}],["script",{type:"module",src:"https://unpkg.com/esp-web-tools@9.4.3/dist/web/install-button.js?module"}]],pages:[{frontmatter:{},regularPath:"/",relativePath:"README.md",key:"v-96f26938",path:"/",headers:[{level:2,title:"Using OpenMQTTGateway ?",slug:"using-openmqttgateway"},{level:2,title:"Products powered by OpenMQTTGateway",slug:"products-powered-by-openmqttgateway"},{level:3,title:"Theengs Bridge, BLE gateway with external antenna",slug:"theengs-bridge-ble-gateway-with-external-antenna"},{level:3,title:"Theengs Plug, BLE gateway and Smart Plug",slug:"theengs-plug-ble-gateway-and-smart-plug"},{level:2,title:"Media",slug:"media"},{level:3,title:"Theengs Plug",slug:"theengs-plug"},{level:3,title:"433Mhz and BLE",slug:"_433mhz-and-ble"},{level:3,title:"BLE",slug:"ble"},{level:3,title:"433Mhz",slug:"_433mhz"},{level:3,title:"LORA",slug:"lora"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate Jeedom",frontmatter:{},regularPath:"/integrate/jeedom.html",relativePath:"integrate/jeedom.md",key:"v-b936cd92",path:"/integrate/jeedom.html",headers:[{level:2,title:"Installation of jMQTT",slug:"installation-of-jmqtt"},{level:2,title:"Configuration the Broker in jMQTT",slug:"configuration-the-broker-in-jmqtt"},{level:2,title:"Creation of the OMG device",slug:"creation-of-the-omg-device"},{level:3,title:"Creation of the Last Will and Testament command",slug:"creation-of-the-last-will-and-testament-command"},{level:3,title:"Creation of an action command to restart the OMG device",slug:"creation-of-an-action-command-to-restart-the-omg-device"},{level:2,title:'Creation of the equipment for the "Xiaomi Mi Jia" sensor',slug:"creation-of-the-equipment-for-the-xiaomi-mi-jia-sensor"},{level:3,title:"Creation of an unknown/unidentified BT device",slug:"creation-of-an-unknown-unidentified-bt-device"},{level:3,title:"Creation of a known/identified BT device",slug:"creation-of-a-known-identified-bt-device"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate AWS IOT",frontmatter:{},regularPath:"/integrate/aws_iot.html",relativePath:"integrate/aws_iot.md",key:"v-347fe277",path:"/integrate/aws_iot.html",headers:[{level:2,title:"Create a thing",slug:"create-a-thing"},{level:2,title:"Create a policy",slug:"create-a-policy"},{level:2,title:"Create a certificate",slug:"create-a-certificate"},{level:2,title:"Attach Policy with certificate",slug:"attach-policy-with-certificate"},{level:2,title:"Activate certificate and attach it to Thing",slug:"activate-certificate-and-attach-it-to-thing"},{level:2,title:"Find AWS EndPoint",slug:"find-aws-endpoint"},{level:2,title:"Gather the information for OpenMQTTGateway configuration",slug:"gather-the-information-for-openmqttgateway-configuration"},{level:2,title:"Modify OpenMQTTGateway configuration",slug:"modify-openmqttgateway-configuration"},{level:2,title:"Build and upload",slug:"build-and-upload"},{level:2,title:"Connect to a WiFi Access point see portal",slug:"connect-to-a-wifi-access-point-see-portal"},{level:2,title:"Verify that you receive data in AWS",slug:"verify-that-you-receive-data-in-aws"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate Home Assistant",frontmatter:{},regularPath:"/integrate/home_assistant.html",relativePath:"integrate/home_assistant.md",key:"v-06f4d0aa",path:"/integrate/home_assistant.html",headers:[{level:2,title:"Automatic integration with Auto discovery",slug:"automatic-integration-with-auto-discovery"},{level:3,title:"RTL_433 auto discovery specificity",slug:"rtl-433-auto-discovery-specificity"},{level:3,title:"RF (RCSwitch based gateway) Auto discovery specificity",slug:"rf-rcswitch-based-gateway-auto-discovery-specificity"},{level:2,title:"Manual integration",slug:"manual-integration"},{level:3,title:"Pir Sensor",slug:"pir-sensor"},{level:3,title:"Door sensor",slug:"door-sensor"},{level:3,title:"Motion sensor",slug:"motion-sensor"},{level:3,title:"Switches",slug:"switches"},{level:3,title:"RF gateway mode - Pilight, RF, kaku",slug:"rf-gateway-mode-pilight-rf-kaku"},{level:3,title:"Mijia Thermometer BLE",slug:"mijia-thermometer-ble"},{level:3,title:"Xiaomi Mi Scale V2 BLE (XMTZC05HM)",slug:"xiaomi-mi-scale-v2-ble-xmtzc05hm"},{level:3,title:"MQTT Room Presence",slug:"mqtt-room-presence"},{level:3,title:"Temperature sensor",slug:"temperature-sensor"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate OPENHAB 3/4",frontmatter:{},regularPath:"/integrate/openhab3.html",relativePath:"integrate/openhab3.md",key:"v-08357a02",path:"/integrate/openhab3.html",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"IP address (if your broker is installed on the same server as OpenHAB)",slug:"ip-address-if-your-broker-is-installed-on-the-same-server-as-openhab"},{level:2,title:"Install the MQTT binding",slug:"install-the-mqtt-binding"},{level:2,title:"Install Jinja and JSONPath Transformations",slug:"install-jinja-and-jsonpath-transformations"},{level:2,title:"Upload OpenMQTTGateway to an ESP32",slug:"upload-openmqttgateway-to-an-esp32"},{level:2,title:"Configure OpenMQTTGateway from the web portal",slug:"configure-openmqttgateway-from-the-web-portal"},{level:2,title:"Adding the things",slug:"adding-the-things"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate Node-Red",frontmatter:{},regularPath:"/integrate/node_red.html",relativePath:"integrate/node_red.md",key:"v-73cb197f",path:"/integrate/node_red.html",headers:[{level:2,title:"Integrate BLE sensors, devices and display a dashboard",slug:"integrate-ble-sensors-devices-and-display-a-dashboard"},{level:3,title:"Broker connection",slug:"broker-connection"},{level:3,title:"Json message processing",slug:"json-message-processing"},{level:3,title:"Dashboard",slug:"dashboard"},{level:2,title:"Integrate RF",slug:"integrate-rf"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Adding protocols",frontmatter:{},regularPath:"/participate/adding-protocols.html",relativePath:"participate/adding-protocols.md",key:"v-e115e73a",path:"/participate/adding-protocols.html",headers:[{level:2,title:"RF or IR",slug:"rf-or-ir"},{level:2,title:"BLE",slug:"ble"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Community participation",frontmatter:{},regularPath:"/participate/community.html",relativePath:"participate/community.md",key:"v-2db1db37",path:"/participate/community.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Development contributions",frontmatter:{},regularPath:"/participate/development.html",relativePath:"participate/development.md",key:"v-117d8812",path:"/participate/development.html",headers:[{level:2,title:"Nightly builds",slug:"nightly-builds"},{level:2,title:"Developer Certificate Of Origin",slug:"developer-certificate-of-origin"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Supporting the project",frontmatter:{},regularPath:"/participate/support.html",relativePath:"participate/support.md",key:"v-f3fbff12",path:"/participate/support.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"M5 Boards",frontmatter:{},regularPath:"/prerequisites/M5.html",relativePath:"prerequisites/M5.md",key:"v-412f01af",path:"/prerequisites/M5.html",headers:[{level:2,title:"M5StickC and M5Stack",slug:"m5stickc-and-m5stack"},{level:3,title:"3 low power modes",slug:"_3-low-power-modes"},{level:3,title:"Start screen",slug:"start-screen"},{level:3,title:"Sleep screen",slug:"sleep-screen"},{level:3,title:"Log display in case of warning",slug:"log-display-in-case-of-warning"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate OPENHAB2",frontmatter:{},regularPath:"/integrate/openhab2.html",relativePath:"integrate/openhab2.md",key:"v-095f6301",path:"/integrate/openhab2.html",headers:[{level:2,title:"Auto discovery through home assistant convention",slug:"auto-discovery-through-home-assistant-convention"},{level:2,title:"MQTT 2 manual setup >=Openhab2.4",slug:"mqtt-2-manual-setup-openhab2-4"},{level:2,title:"For a mi flora or mi jia temperature :",slug:"for-a-mi-flora-or-mi-jia-temperature"},{level:2,title:'For a switch channel, add a channel by choosing the type "On/Off switch"',slug:"for-a-switch-channel-add-a-channel-by-choosing-the-type-on-off-switch"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Boards",frontmatter:{},regularPath:"/prerequisites/board.html",relativePath:"prerequisites/board.md",key:"v-01bee537",path:"/prerequisites/board.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Broker",frontmatter:{},regularPath:"/prerequisites/broker.html",relativePath:"prerequisites/broker.md",key:"v-56e06d4d",path:"/prerequisites/broker.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Controller",frontmatter:{},regularPath:"/prerequisites/controller.html",relativePath:"prerequisites/controller.md",key:"v-5e0eec87",path:"/prerequisites/controller.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Parts",frontmatter:{},regularPath:"/prerequisites/parts.html",relativePath:"prerequisites/parts.md",key:"v-29f81312",path:"/prerequisites/parts.html",headers:[{level:2,title:"Main parts",slug:"main-parts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Actuators",frontmatter:{},regularPath:"/setitup/actuators.html",relativePath:"setitup/actuators.md",key:"v-0c47cd52",path:"/setitup/actuators.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"Somfy RTS",slug:"somfy-rts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"BLE gateway",frontmatter:{},regularPath:"/setitup/ble.html",relativePath:"setitup/ble.md",key:"v-cf2ed192",path:"/setitup/ble.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Devices",frontmatter:{},regularPath:"/prerequisites/devices.html",relativePath:"prerequisites/devices.md",key:"v-204c7852",path:"/prerequisites/devices.html",headers:[{level:2,title:"For radio frequency devices",slug:"for-radio-frequency-devices"},{level:2,title:"For BLE devices",slug:"for-ble-devices"},{level:2,title:"For infrared IR devices",slug:"for-infrared-ir-devices"},{level:2,title:"LORA",slug:"lora"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"IR gateway",frontmatter:{},regularPath:"/setitup/ir.html",relativePath:"setitup/ir.md",key:"v-eab731fa",path:"/setitup/ir.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"ESP8266 Hardware setup",slug:"esp8266-hardware-setup"},{level:2,title:"ESP32 Hardware setup",slug:"esp32-hardware-setup"},{level:2,title:"Credits",slug:"credits"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"GSM 2G gateway",frontmatter:{},regularPath:"/setitup/gsm.html",relativePath:"setitup/gsm.md",key:"v-b5aec012",path:"/setitup/gsm.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Hardware setup",slug:"hardware-setup"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"LoRa gateway",frontmatter:{},regularPath:"/setitup/lora.html",relativePath:"setitup/lora.md",key:"v-0d1e8e9e",path:"/setitup/lora.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RF gateway (433mhz/315mhz)",frontmatter:{},regularPath:"/setitup/rf.html",relativePath:"setitup/rf.md",key:"v-2fe62c26",path:"/setitup/rf.html",headers:[{level:2,title:"Protocols, modules and library",slug:"protocols-modules-and-library"},{level:2,title:"Assembly/soldering required parts",slug:"assembly-soldering-required-parts"},{level:3,title:"SRX STX Pinout",slug:"srx-stx-pinout"},{level:3,title:"CC1101 Pinout",slug:"cc1101-pinout"},{level:2,title:"ESP32 Hardware setup",slug:"esp32-hardware-setup"},{level:2,title:"ESP8266 Hardware setup",slug:"esp8266-hardware-setup"},{level:2,title:"SONOFF RF Bridge Hardware setup",slug:"sonoff-rf-bridge-hardware-setup"},{level:2,title:"SONOFF RFR3 Hardware setup",slug:"sonoff-rfr3-hardware-setup"},{level:2,title:"WIFI RF GATEWAY Hardware setup",slug:"wifi-rf-gateway-hardware-setup"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Sensors",frontmatter:{},regularPath:"/setitup/sensors.html",relativePath:"setitup/sensors.md",key:"v-aa1cc612",path:"/setitup/sensors.html",headers:[{level:2,title:"Compatible sensors",slug:"compatible-sensors"},{level:2,title:"Pinout",slug:"pinout"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Serial/RS232 gateway",frontmatter:{},regularPath:"/setitup/serial.html",relativePath:"setitup/serial.md",key:"v-255607ed",path:"/setitup/serial.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"ESP8266 Hardware setup",slug:"esp8266-hardware-setup"},{level:2,title:"ESP32 Hardware setup",slug:"esp32-hardware-setup"},{level:2,title:"Credits",slug:"credits"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Advanced configuration of the gateway",frontmatter:{},regularPath:"/upload/advanced-configuration.html",relativePath:"upload/advanced-configuration.md",key:"v-7df515d2",path:"/upload/advanced-configuration.html",headers:[{level:2,title:"Secure connection to the broker",slug:"secure-connection-to-the-broker"},{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Configure secure connection in the gateway",slug:"configure-secure-connection-in-the-gateway"},{level:2,title:'Add the received "value" at the end of the topic',slug:"add-the-received-value-at-the-end-of-the-topic"},{level:2,title:"Auto discovery",slug:"auto-discovery"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 4) Build from the web",frontmatter:{},regularPath:"/upload/gitpod.html",relativePath:"upload/gitpod.md",key:"v-2c32e617",path:"/upload/gitpod.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 3) Upload your configurations",frontmatter:{},regularPath:"/upload/builds.html",relativePath:"upload/builds.md",key:"v-303bd052",path:"/upload/builds.html",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Configure & Upload with PlatformIO",slug:"configure-upload-with-platformio"},{level:3,title:"(Option A) Creating a portable config file",slug:"option-a-creating-a-portable-config-file"},{level:3,title:"(Option B) Editing files directly",slug:"option-b-editing-files-directly"},{level:2,title:"API",slug:"api"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 2) Upload ready-to-go binaries",frontmatter:{},regularPath:"/upload/binaries.html",relativePath:"upload/binaries.md",key:"v-6e14dcd7",path:"/upload/binaries.html",headers:[{level:2,title:"ESP32",slug:"esp32"},{level:3,title:"Linux - esptool.py",slug:"linux-esptool-py"},{level:3,title:"Mac - esptool.py",slug:"mac-esptool-py"},{level:2,title:"ESP8266",slug:"esp8266"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Wifi and MQTT configuration",frontmatter:{},regularPath:"/upload/portal.html",relativePath:"upload/portal.md",key:"v-27c660f7",path:"/upload/portal.html",headers:[{level:2,title:"Configuration portal",slug:"configuration-portal"},{level:2,title:"Build time configuration",slug:"build-time-configuration"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Troubleshooting",frontmatter:{},regularPath:"/upload/troubleshoot.html",relativePath:"upload/troubleshoot.md",key:"v-246d3f77",path:"/upload/troubleshoot.html",headers:[{level:2,title:"Compilation/build error",slug:"compilation-build-error"},{level:2,title:"ESP32 compilation errors related to WiFi",slug:"esp32-compilation-errors-related-to-wifi"},{level:2,title:"Not able to send or receive RF or IR",slug:"not-able-to-send-or-receive-rf-or-ir"},{level:2,title:"Repetitive MQTT disconnections or/and commands sent to the gateway not taken into account",slug:"repetitive-mqtt-disconnections-or-and-commands-sent-to-the-gateway-not-taken-into-account"},{level:2,title:"OMG ignores messages sent to it via MQTT",slug:"omg-ignores-messages-sent-to-it-via-mqtt"},{level:2,title:"ESP Continuous restart or strange behaviour:",slug:"esp-continuous-restart-or-strange-behaviour"},{level:2,title:"ESP does not connect to broker with TLS enabled",slug:"esp-does-not-connect-to-broker-with-tls-enabled"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 1) Upload from the web",frontmatter:{pageClass:"table-generated-page"},regularPath:"/upload/web-install.html",relativePath:"upload/web-install.md",key:"v-2b7b8f3b",path:"/upload/web-install.html",headers:[{level:2,title:"Using OpenMQTTGateway ?",slug:"using-openmqttgateway"},{level:2,title:"Environments characteristics",slug:"environments-characteristics"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Actuators",frontmatter:{},regularPath:"/use/actuators.html",relativePath:"use/actuators.md",key:"v-0d819412",path:"/use/actuators.html",headers:[{level:2,title:"ON/OFF Functionality",slug:"on-off-functionality"},{level:3,title:"Standard ON/OFF control",slug:"standard-on-off-control"},{level:3,title:"Pulse control for short activations",slug:"pulse-control-for-short-activations"},{level:2,title:"FASTLED",slug:"fastled"},{level:3,title:"The FASTLED module support 2 different operation modes",slug:"the-fastled-module-support-2-different-operation-modes"},{level:3,title:"Hardware wiring",slug:"hardware-wiring"},{level:2,title:"PWM",slug:"pwm"},{level:3,title:"Configuration",slug:"configuration"},{level:3,title:"Usage",slug:"usage"},{level:2,title:"Somfy RTS",slug:"somfy-rts"},{level:3,title:"Setup",slug:"setup"},{level:3,title:"Commands",slug:"commands"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Bluetooth ESP32 gateway",frontmatter:{title:"Bluetooth ESP32 gateway",description:"Versatile Bluetooth gateway that scans and decodes data from various Bluetooth Low Energy (BLE) devices. It integrates seamlessly with MQTT brokers and controllers like Home Assistant and OpenHAB. Monitor temperature, humidity, pressure, and more for smarter control."},regularPath:"/use/ble.html",relativePath:"use/ble.md",key:"v-bbb970d2",path:"/use/ble.html",headers:[{level:2,title:"Products powered by OpenMQTTGateway",slug:"products-powered-by-openmqttgateway"},{level:3,title:"Theengs Bridge, BLE gateway with external antenna",slug:"theengs-bridge-ble-gateway-with-external-antenna"},{level:3,title:"Theengs Plug, BLE gateway and Smart Plug",slug:"theengs-plug-ble-gateway-and-smart-plug"},{level:2,title:"Disable or enable the BLE gateway (default: true, available with HA discovery)",slug:"disable-or-enable-the-ble-gateway-default-true-available-with-ha-discovery"},{level:2,title:"Receiving signals from compatible BLE sensors to publish it to an MQTT broker.",slug:"receiving-signals-from-compatible-ble-sensors-to-publish-it-to-an-mqtt-broker"},{level:2,title:"Receiving signals from BLE devices for Device Tracker detection",slug:"receiving-signals-from-ble-devices-for-device-tracker-detection"},{level:2,title:"Receiving signals from BLE devices for Presence detection",slug:"receiving-signals-from-ble-devices-for-presence-detection"},{level:2,title:"Receiving signals from BLE devices with accelerometers for movement detection",slug:"receiving-signals-from-ble-devices-with-accelerometers-for-movement-detection"},{level:2,title:"Setting a white or black list",slug:"setting-a-white-or-black-list"},{level:2,title:"Setting the time between BLE scans and force a scan (available with HA discovery)",slug:"setting-the-time-between-ble-scans-and-force-a-scan-available-with-ha-discovery"},{level:2,title:"Setting the time between connection attempts (default: 60min, available with HA discovery)",slug:"setting-the-time-between-connection-attempts-default-60min-available-with-ha-discovery"},{level:2,title:"Setting if the gateway publishes all the BLE devices scanned or only the detected sensors (default: false, available with HA discovery)",slug:"setting-if-the-gateway-publishes-all-the-ble-devices-scanned-or-only-the-detected-sensors-default-false-available-with-ha-discovery"},{level:2,title:"Setting if the gateway publishes known devices which randomly change their MAC address (default: false)",slug:"setting-if-the-gateway-publishes-known-devices-which-randomly-change-their-mac-address-default-false"},{level:2,title:"Setting if the gateway use adaptive scanning (default: true, available with HA discovery)",slug:"setting-if-the-gateway-use-adaptive-scanning-default-true-available-with-ha-discovery"},{level:2,title:"Setting the time between active scanning (available with HA discovery)",slug:"setting-the-time-between-active-scanning-available-with-ha-discovery"},{level:2,title:"Setting the duration of a scan (available with HA discovery)",slug:"setting-the-duration-of-a-scan-available-with-ha-discovery"},{level:2,title:"Setting if the gateway connects to BLE devices eligibles (default: true, available with HA discovery)",slug:"setting-if-the-gateway-connects-to-ble-devices-eligibles-default-true-available-with-ha-discovery"},{level:2,title:"Setting if the gateway publish into Home Assistant Home presence topic (default: false, available with HA discovery)",slug:"setting-if-the-gateway-publish-into-home-assistant-home-presence-topic-default-false-available-with-ha-discovery"},{level:2,title:"Setting if the gateway uses iBeacon UUID as topic, instead of (random) MAC address (default: false)",slug:"setting-if-the-gateway-uses-ibeacon-uuid-as-topic-instead-of-random-mac-address-default-false"},{level:2,title:"Setting the minimum RSSI accepted to publish device data (default:-100)",slug:"setting-the-minimum-rssi-accepted-to-publish-device-data-default-100"},{level:2,title:"Store BLE configuration into the gateway",slug:"store-ble-configuration-into-the-gateway"},{level:2,title:"Controlling devices",slug:"controlling-devices"},{level:2,title:"Read/write BLE characteristics over MQTT",slug:"read-write-ble-characteristics-over-mqtt"},{level:3,title:"Example write command",slug:"example-write-command"},{level:3,title:"Example read command",slug:"example-read-command"},{level:2,title:"SwitchBot Bot control (available with HA discovery)",slug:"switchbot-bot-control-available-with-ha-discovery"},{level:3,title:"Set the SwitchBot Bot state to ON:",slug:"set-the-switchbot-bot-state-to-on"},{level:3,title:"Set the SwitchBot Bot state to OFF:",slug:"set-the-switchbot-bot-state-to-off"},{level:3,title:"Set the SwitchBot Bot to PRESS:",slug:"set-the-switchbot-bot-to-press"},{level:3,title:"Set the SwitchBot Bot to go UP:",slug:"set-the-switchbot-bot-to-go-up"},{level:3,title:"Set the SwitchBot Bot to go DOWN:",slug:"set-the-switchbot-bot-to-go-down"},{level:2,title:"SwitchBot Blind Tilt control (available with HA discovery)",slug:"switchbot-blind-tilt-control-available-with-ha-discovery"},{level:3,title:"Set the SwitchBot Blind Tilt state to OPEN:",slug:"set-the-switchbot-blind-tilt-state-to-open"},{level:3,title:"Set the SwitchBot Blind Tilt state to CLOSE_DOWN:",slug:"set-the-switchbot-blind-tilt-state-to-close-down"},{level:3,title:"Set the SwitchBot Blind Tilt state to CLOSE_UP:",slug:"set-the-switchbot-blind-tilt-state-to-close-up"},{level:3,title:"Set the SwitchBot Blind Tilt state to a percentage (0-100):",slug:"set-the-switchbot-blind-tilt-state-to-a-percentage-0-100"},{level:3,title:"Set the SwitchBot Blind Tilt to Stop:",slug:"set-the-switchbot-blind-tilt-to-stop"},{level:3,title:"Response (assuming success):",slug:"response-assuming-success"},{level:2,title:"SwitchBot Curtain (2/3) control (available with HA discovery)",slug:"switchbot-curtain-2-3-control-available-with-ha-discovery"},{level:3,title:"Set the SwitchBot Curtain state to OPEN:",slug:"set-the-switchbot-curtain-state-to-open"},{level:3,title:"Set the SwitchBot Curtain state to CLOSE:",slug:"set-the-switchbot-curtain-state-to-close"},{level:3,title:"Set the SwitchBot Curtain to a percentage (0-100):",slug:"set-the-switchbot-curtain-to-a-percentage-0-100"},{level:3,title:"Set the SwitchBot Curtain to Stop:",slug:"set-the-switchbot-curtain-to-stop"},{level:3,title:"Response (assuming success):",slug:"response-assuming-success-2"},{level:2,title:"ADVANCED: Setting up an external decoder",slug:"advanced-setting-up-an-external-decoder"},{level:2,title:"ADVANCED: Filtering out connectable devices (default: false)",slug:"advanced-filtering-out-connectable-devices-default-false"},{level:2,title:"ADVANCED: Advertisement and advanced data (default: false, available with HA discovery)",slug:"advanced-advertisement-and-advanced-data-default-false-available-with-ha-discovery"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Boards",frontmatter:{},regularPath:"/use/boards.html",relativePath:"use/boards.md",key:"v-3043a2b9",path:"/use/boards.html",headers:[{level:2,title:"ESP",slug:"esp"},{level:3,title:"Erasing the flash",slug:"erasing-the-flash"},{level:3,title:"Wifi interference on sensors when using an ESP",slug:"wifi-interference-on-sensors-when-using-an-esp"},{level:3,title:"Low power mode for ESP32",slug:"low-power-mode-for-esp32"},{level:2,title:"M5StickC, M5StickC Plus or M5Stack",slug:"m5stickc-m5stickc-plus-or-m5stack"},{level:3,title:"Behaviour",slug:"behaviour"},{level:3,title:"Setting the log output",slug:"setting-the-log-output"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Displays",frontmatter:{},regularPath:"/use/displays.html",relativePath:"use/displays.md",key:"v-288d7b9e",path:"/use/displays.html",headers:[{level:2,title:"SSD1306 Display (Heltec SX127X, LILYGO® LoRa32 boards, generic SSD1306 displays)",slug:"ssd1306-display-heltec-sx127x-lilygo®-lora32-boards-generic-ssd1306-displays"},{level:3,title:"Display ON/OFF",slug:"display-on-off"},{level:3,title:"Brightness",slug:"brightness"},{level:3,title:"Metric or Imperial property units",slug:"metric-or-imperial-property-units"},{level:3,title:"Rotating the display by 180 degrees",slug:"rotating-the-display-by-180-degrees"},{level:3,title:"Display idle Logo",slug:"display-idle-logo"},{level:3,title:"Setting the log output",slug:"setting-the-log-output"},{level:3,title:"Displaying Module json messages (default)",slug:"displaying-module-json-messages-default"},{level:3,title:"Store the current display configuration in the gateway",slug:"store-the-current-display-configuration-in-the-gateway"},{level:3,title:"Connecting a generic SSD1306 display to ESP32",slug:"connecting-a-generic-ssd1306-display-to-esp32"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"GSM 2G gateway",frontmatter:{},regularPath:"/use/gsm.html",relativePath:"use/gsm.md",key:"v-131b9357",path:"/use/gsm.html",headers:[{level:2,title:"Receiving SMS from 2G",slug:"receiving-sms-from-2g"},{level:2,title:"Send data by MQTT to send an SMS message with A6/7",slug:"send-data-by-mqtt-to-send-an-sms-message-with-a6-7"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"System commands (ESP only)",frontmatter:{},regularPath:"/use/gateway.html",relativePath:"use/gateway.md",key:"v-20c05837",path:"/use/gateway.html",headers:[{level:2,title:"Restart the ESP",slug:"restart-the-esp"},{level:2,title:"Erase the ESP settings",slug:"erase-the-esp-settings"},{level:2,title:"Retrieve current status of the ESP",slug:"retrieve-current-status-of-the-esp"},{level:2,title:"Auto discovery",slug:"auto-discovery"},{level:3,title:"Deactivate",slug:"deactivate"},{level:3,title:"Activate",slug:"activate"},{level:2,title:"Activate Offline mode",slug:"activate-offline-mode"},{level:2,title:"Change the WiFi credentials",slug:"change-the-wifi-credentials"},{level:2,title:"Change the gateway password",slug:"change-the-gateway-password"},{level:2,title:"Change the MQTT broker credentials",slug:"change-the-mqtt-broker-credentials"},{level:2,title:"Change the MQTT main topic, discovery prefix, and or gateway name",slug:"change-the-mqtt-main-topic-discovery-prefix-and-or-gateway-name"},{level:2,title:"Switching brokers and using signed and client certificates",slug:"switching-brokers-and-using-signed-and-client-certificates"},{level:2,title:"Saving/Loading connection parameters/certificates at runtime",slug:"saving-loading-connection-parameters-certificates-at-runtime"},{level:3,title:"Storing and Loading Certificates",slug:"storing-and-loading-certificates"},{level:3,title:"Use Case: Changing a Group of Certificates",slug:"use-case-changing-a-group-of-certificates"},{level:2,title:"MQTT",slug:"mqtt"},{level:2,title:"Serial",slug:"serial"},{level:2,title:"Change the LED indicator brightness",slug:"change-the-led-indicator-brightness"},{level:2,title:"Understanding LED Indicators in OpenMQTTGateway",slug:"understanding-led-indicators-in-openmqttgateway"},{level:2,title:"LED Color Guide",slug:"led-color-guide"},{level:2,title:"Understanding Gateway States",slug:"understanding-gateway-states"},{level:3,title:"Power On",slug:"power-on"},{level:3,title:"Processing",slug:"processing"},{level:3,title:"Waiting for Onboarding",slug:"waiting-for-onboarding"},{level:3,title:"Onboarding in Progress",slug:"onboarding-in-progress"},{level:3,title:"Network Connected",slug:"network-connected"},{level:3,title:"Network Disconnected",slug:"network-disconnected"},{level:3,title:"MQTT Broker Connected",slug:"mqtt-broker-connected"},{level:3,title:"MQTT Broker Disconnected",slug:"mqtt-broker-disconnected"},{level:3,title:"Offline",slug:"offline"},{level:3,title:"Local OTA Update",slug:"local-ota-update"},{level:3,title:"Remote OTA Update",slug:"remote-ota-update"},{level:3,title:"Error",slug:"error"},{level:3,title:"Actuator On/Off",slug:"actuator-on-off"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Infrared gateway",frontmatter:{title:"Infrared gateway",description:"Unlock the potential of Infrared technology with our universal gateway. Decode signals from various devices, and integrate seamlessly with MQTT systems abd controllers like Home Assistant and OpenHAB."},regularPath:"/use/ir.html",relativePath:"use/ir.md",key:"v-a9ffe0fe",path:"/use/ir.html",headers:[{level:2,title:"Receiving data from IR signal",slug:"receiving-data-from-ir-signal"},{level:2,title:"Send data by MQTT to convert it on IR signal",slug:"send-data-by-mqtt-to-convert-it-on-ir-signal"},{level:2,title:"Send data by MQTT from Global Caché database to convert it on IR signal",slug:"send-data-by-mqtt-from-global-cache-database-to-convert-it-on-ir-signal"},{level:2,title:"Send data by MQTT with advanced IR parameters",slug:"send-data-by-mqtt-with-advanced-ir-parameters"},{level:2,title:"Send raw IR data by MQTT",slug:"send-raw-ir-data-by-mqtt"},{level:2,title:"Repeat the IR signal OpenMQTTGateway receive",slug:"repeat-the-ir-signal-openmqttgateway-receive"},{level:2,title:"Raw IR signal forwarding",slug:"raw-ir-signal-forwarding"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"LoRa gateway",frontmatter:{title:"LoRa gateway",description:"Explore the LoRa MQTT gateway, designed for integration with devices utilizing LoRa technology, including the MakerFab soil and moisture sensor, devices from PricelessTookit. Unlock long range communication with the power of LoRa.."},regularPath:"/use/lora.html",relativePath:"use/lora.md",key:"v-749f316f",path:"/use/lora.html",headers:[{level:2,title:"What is a LoRa gateway",slug:"what-is-a-lora-gateway"},{level:2,title:"Configuring the LoRa gateway",slug:"configuring-the-lora-gateway"},{level:2,title:"Receiving data from LoRa signal",slug:"receiving-data-from-lora-signal"},{level:2,title:"Send data by MQTT to convert it on LoRa signal",slug:"send-data-by-mqtt-to-convert-it-on-lora-signal"},{level:2,title:"Send data by MQTT with advanced LoRa parameters",slug:"send-data-by-mqtt-with-advanced-lora-parameters"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RF gateways (RTL_433/RCSwitch/RF/RF2)",frontmatter:{title:"RF gateways (RTL_433/RCSwitch/RF/RF2)",description:"Unlock the potential of RF 433 MHz technology with our universal gateway. Decode signals from various devices, and integrate seamlessly with MQTT systems and controllers like Home Assistant and OpenHAB."},regularPath:"/use/rf.html",relativePath:"use/rf.md",key:"v-947f362a",path:"/use/rf.html",headers:[{level:2,title:"What is an RF gateway",slug:"what-is-an-rf-gateway"},{level:2,title:"Common parameters accross modules",slug:"common-parameters-accross-modules"},{level:3,title:"Change default frequency (SX127X and CC1101)",slug:"change-default-frequency-sx127x-and-cc1101"},{level:3,title:"Changing Active Receiver Modules",slug:"changing-active-receiver-modules"},{level:2,title:"RTL_433 device decoders",slug:"rtl-433-device-decoders"},{level:3,title:"Supported hardware combinations",slug:"supported-hardware-combinations"},{level:3,title:"Supported Decoders",slug:"supported-decoders"},{level:3,title:"Change Signal RSSI Threshold Delta",slug:"change-signal-rssi-threshold-delta"},{level:3,title:"Retrieve current status of receiver",slug:"retrieve-current-status-of-receiver"},{level:2,title:"RCSwitch based gateway",slug:"rcswitch-based-gateway"},{level:3,title:"Handling RF signal over MQTT",slug:"handling-rf-signal-over-mqtt"},{level:3,title:"Send data by MQTT with advanced RF parameters",slug:"send-data-by-mqtt-with-advanced-rf-parameters"},{level:2,title:"Pilight gateway",slug:"pilight-gateway"},{level:3,title:"Receiving data from RF signal",slug:"receiving-data-from-rf-signal-2"},{level:3,title:"Limit Protocols",slug:"limit-protocols"},{level:3,title:"Send data by MQTT to transmit a RF signal",slug:"send-data-by-mqtt-to-transmit-a-rf-signal"},{level:2,title:"RF with SONOFF RF BRIDGE",slug:"rf-with-sonoff-rf-bridge"},{level:3,title:"Receiving data from RF signal",slug:"receiving-data-from-rf-signal-3"},{level:3,title:"Send data by MQTT to convert it on RF signal",slug:"send-data-by-mqtt-to-convert-it-on-rf-signal"},{level:3,title:"Send data by MQTT with advanced RF parameters",slug:"send-data-by-mqtt-with-advanced-rf-parameters-2"},{level:2,title:"RF2 gateway KAKU",slug:"rf2-gateway-kaku"},{level:3,title:"Receiving data from KAKU signal",slug:"receiving-data-from-kaku-signal"},{level:3,title:"Send data by MQTT to convert it on KAKU signal",slug:"send-data-by-mqtt-to-convert-it-on-kaku-signal"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RFM69 gateway",frontmatter:{},regularPath:"/use/rfm69.html",relativePath:"use/rfm69.md",key:"v-21b208b7",path:"/use/rfm69.html",headers:[{level:3,title:"Receiving data from RFM signal",slug:"receiving-data-from-rfm-signal"},{level:3,title:"Send data by MQTT to convert it on RFM69 signal",slug:"send-data-by-mqtt-to-convert-it-on-rfm69-signal"},{level:3,title:"Send data by MQTT with advanced RFM69 parameters",slug:"send-data-by-mqtt-with-advanced-rfm69-parameters"},{level:3,title:"RFM69 acknowledgment",slug:"rfm69-acknowledgment"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Sensors",frontmatter:{},regularPath:"/use/sensors.html",relativePath:"use/sensors.md",key:"v-2494b4d7",path:"/use/sensors.html",headers:[{level:3,title:"ADC",slug:"adc"},{level:3,title:"DHT",slug:"dht"},{level:3,title:"HTU21",slug:"htu21"},{level:3,title:"AHTx0 (AHT10 and AHT20)",slug:"ahtx0-aht10-and-aht20"},{level:3,title:"DS18x20",slug:"ds18x20"},{level:3,title:"HCSR501",slug:"hcsr501"},{level:3,title:"RN8209",slug:"rn8209"},{level:3,title:"Touch",slug:"touch"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"WebUI",frontmatter:{},regularPath:"/use/webui.html",relativePath:"use/webui.md",key:"v-2566e137",path:"/use/webui.html",headers:[{level:2,title:"WiFi",slug:"wifi"},{level:2,title:"MQTT",slug:"mqtt"},{level:2,title:"WebUI",slug:"webui-2"},{level:2,title:"Bluetooth Low Energy - BLE",slug:"bluetooth-low-energy-ble"},{level:2,title:"Logging",slug:"logging"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RS232/Serial gateway",frontmatter:{},regularPath:"/use/serial.html",relativePath:"use/serial.md",key:"v-93d2a72a",path:"/use/serial.html",headers:[{level:2,title:"Sending an SERIAL message",slug:"sending-an-serial-message"},{level:2,title:"Receiving an SERIAL message",slug:"receiving-an-serial-message"},{level:3,title:"Single MQTT message mode (default)",slug:"single-mqtt-message-mode-default"},{level:3,title:"JSON mode",slug:"json-mode"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3}],themeConfig:{repo:"1technophile/OpenMQTTGateway",docsDir:"docs",smoothScroll:!0,search:!1,docsBranch:"development",lastUpdated:"Last Updated",editLinks:!0,nav:[{text:"Home",link:"https://www.theengs.io",target:"_self",rel:""},{text:"Use cases",items:[{text:"Smart Home",link:"https://www.theengs.io/usecases/smarthome.html",target:"_self",rel:""},{text:"IoT",link:"https://www.theengs.io/usecases/iot.html",target:"_self",rel:""},{text:"Research",link:"https://www.theengs.io/usecases/research.html",target:"_self",rel:""}]},{text:"Solutions",items:[{text:"Hardware",items:[{text:"Theengs Plug",link:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_self",rel:""},{text:"Theengs Bridge",link:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_self",rel:""}]},{text:"Software",items:[{text:"Mobile App",link:"https://app.theengs.io",target:"_self",rel:""},{text:"OpenMQTTGateway",link:"https://docs.openmqttgateway.com",target:"_self",rel:""},{text:"Gateway",link:"https://gateway.theengs.io",target:"_self",rel:""}]},{text:"Core",items:[{text:"Decoder",link:"https://decoder.theengs.io",target:"_self",rel:""},{text:"Web Parser",link:"https://parser.theengs.io",target:"_self",rel:""}]}]},{text:"Compatible devices",link:"https://decoder.theengs.io/devices/devices.html",target:"_self",rel:""},{text:"Community",link:"https://community.openmqttgateway.com",target:"_self",rel:""},{text:"Shop",link:"https://shop.theengs.io/",target:"_self",rel:""},{text:"Sponsor 🤍",link:"https://github.com/sponsors/theengs",target:"_self",rel:""}],sidebar:[["/","0 - What is it for 🏠"],{title:"1 - Prerequisites🧭",sidebarDepth:1,children:["prerequisites/devices","prerequisites/board","prerequisites/parts","prerequisites/broker","prerequisites/controller"]},{title:"2 - Set it up 🔨",sidebarDepth:1,children:["setitup/rf","setitup/ble","setitup/ir","setitup/lora","setitup/gsm","setitup/serial","setitup/sensors","setitup/actuators"]},{title:"3 - Upload ➡️",sidebarDepth:1,children:["upload/web-install","upload/binaries","upload/builds","upload/gitpod","upload/portal","upload/advanced-configuration","upload/troubleshoot"]},{title:"4 - Use ✈️",sidebarDepth:1,children:["use/rf","use/ble","use/ir","use/lora","use/gsm","use/serial","use/rfm69","use/sensors","use/actuators","use/boards","use/displays","use/gateway","use/webui"]},{title:"5 - Integrate 🎉",sidebarDepth:1,children:["integrate/openhab2","integrate/openhab3","integrate/home_assistant","integrate/node_red","integrate/aws_iot","integrate/jeedom"]},{title:"6 - Participate 💻",sidebarDepth:1,children:["participate/support","participate/development","participate/adding-protocols","participate/community",["https://github.com/1technophile/OpenMQTTGateway/blob/development/LICENSE.txt","License"]]}]}};n(235);Qn.component("web-uploader",()=>n.e(47).then(n.bind(null,423))),Qn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,424))),Qn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,419))),Qn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,420)));n(236),n(237);function Rs(t){const e=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-e.left,y:n.top-e.top}}var Us=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({Vue:t,router:e})=>{e.options.scrollBehavior=(e,n,r)=>{if(r)return window.scrollTo({top:r.y,behavior:"smooth"});if(e.hash){if(t.$vuepress.$get("disableScrollBehavior"))return!1;const n=document.querySelector(e.hash);return!!n&&window.scrollTo({top:Rs(n).y,behavior:"smooth"})}return window.scrollTo({top:0,behavior:"smooth"})}}],Is=[];class Bs extends class{constructor(){this.store=new Qn({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){Qn.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}{}Object.assign(Bs.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:cs,getVueComponent:us});var Ds={install(t){const e=new Bs;t.$vuepress=e,t.prototype.$vuepress=e}};function Fs(t,e){const n=e.toLowerCase();return t.options.routes.some(t=>t.path.toLowerCase()===n)}var qs={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return ps("pageKey",e),Qn.component(e)||Qn.component(e,ss(e)),Qn.component(e)?t(e):t("")}},Ns={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:["content__"+e.slotKey]},n()[e.slotKey])},Hs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},zs=(n(238),n(239),Object($s.a)(Hs,(function(){var t=this._self._c;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Vs={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};Qn.config.productionTip=!1,Qn.use(Va),Qn.use(Ds),Qn.mixin(function(t,e,n=Qn){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:t}=this.$page.frontmatter;return"string"==typeof t&&t}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!Qn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(t.hash)}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(Fs(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Fs(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Fs(t,o)?r(o):Fs(t,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Us.filter(t=>"function"==typeof t).map(e=>e({Vue:Qn,options:r,router:n,siteData:Ls,isServer:t})))}catch(t){console.error(t)}return{app:new Qn(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},Is.map(e=>t(e)))])})),router:n}}(!1).then(({app:t,router:e})=>{e.onReady(()=>{t.$mount("#app")})})}]); \ No newline at end of file +var r=Object.freeze({}),o=Array.isArray;function i(t){return null==t}function a(t){return null!=t}function s(t){return!0===t}function l(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return"function"==typeof t}function u(t){return null!==t&&"object"==typeof t}var f=Object.prototype.toString;function p(t){return"[object Object]"===f.call(t)}function d(t){return"[object RegExp]"===f.call(t)}function h(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return a(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function m(t){return null==t?"":Array.isArray(t)||p(t)&&t.toString===f?JSON.stringify(t,g,2):String(t)}function g(t,e){return e&&e.__v_isRef?e.value:e}function y(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function S(t,e){return x.call(t,e)}function k(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var O=/-(\w)/g,P=k((function(t){return t.replace(O,(function(t,e){return e?e.toUpperCase():""}))})),T=k((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),C=/\B([A-Z])/g,E=k((function(t){return t.replace(C,"-$1").toLowerCase()}));var j=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function $(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function A(t,e){for(var n in e)t[n]=e[n];return t}function M(t){for(var e={},n=0;n0,Z=K&&K.indexOf("edge/")>0;K&&K.indexOf("android");var tt=K&&/iphone|ipad|ipod|ios/.test(K);K&&/chrome\/\d+/.test(K),K&&/phantomjs/.test(K);var et,nt=K&&K.match(/firefox\/(\d+)/),rt={}.watch,ot=!1;if(X)try{var it={};Object.defineProperty(it,"passive",{get:function(){ot=!0}}),window.addEventListener("test-passive",null,it)}catch(t){}var at=function(){return void 0===et&&(et=!X&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),et},st=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function lt(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,ut="undefined"!=typeof Symbol&<(Symbol)&&"undefined"!=typeof Reflect&<(Reflect.ownKeys);ct="undefined"!=typeof Set&<(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=null;function pt(t){void 0===t&&(t=null),t||ft&&ft._scope.off(),ft=t,t&&t._scope.on()}var dt=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),ht=function(t){void 0===t&&(t="");var e=new dt;return e.text=t,e.isComment=!0,e};function vt(t){return new dt(void 0,void 0,void 0,String(t))}function mt(t){var e=new dt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}"function"==typeof SuppressedError&&SuppressedError;var gt=0,yt=[],bt=function(){function t(){this._pending=!1,this.id=gt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,yt.push(this))},t.prototype.depend=function(e){t.target&&t.target.addDep(this)},t.prototype.notify=function(t){var e=this.subs.filter((function(t){return t}));for(var n=0,r=e.length;n0&&(Kt((c=t(c,"".concat(n||"","_").concat(r)))[0])&&Kt(f)&&(p[u]=vt(f.text+c[0].text),c.shift()),p.push.apply(p,c)):l(c)?Kt(f)?p[u]=vt(f.text+c):""!==c&&p.push(vt(c)):Kt(c)&&Kt(f)?p[u]=vt(f.text+c.text):(s(e._isVList)&&a(c.tag)&&i(c.key)&&a(n)&&(c.key="__vlist".concat(n,"_").concat(r,"__")),p.push(c)));return p}(t):void 0}function Kt(t){return a(t)&&a(t.text)&&!1===t.isComment}function Yt(t,e){var n,r,i,s,l=null;if(o(t)||"string"==typeof t)for(l=new Array(t.length),n=0,r=t.length;n0,s=e?!!e.$stable:!a,l=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&o&&o!==r&&l===o.$key&&!a&&!o.$hasNormal)return o;for(var c in i={},e)e[c]&&"$"!==c[0]&&(i[c]=me(t,n,c,e[c]))}else i={};for(var u in n)u in i||(i[u]=ge(n,u));return e&&Object.isExtensible(e)&&(e._normalized=i),W(i,"$stable",s),W(i,"$key",l),W(i,"$hasNormal",a),i}function me(t,e,n,r){var i=function(){var e=ft;pt(t);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Xt(n))&&n[0];return pt(e),n&&(!i||1===n.length&&i.isComment&&!he(i))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:i,enumerable:!0,configurable:!0}),i}function ge(t,e){return function(){return t[e]}}function ye(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};W(e,"_v_attr_proxy",!0),be(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){t._listenersProxy||be(t._listenersProxy={},t.$listeners,r,t,"$listeners");return t._listenersProxy},get slots(){return function(t){t._slotsProxy||_e(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(t)},emit:j(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return Ft(t,e,n)}))}}}function be(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,we(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function we(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function _e(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}var xe=null;function Se(t,e){return(t.__esModule||ut&&"Module"===t[Symbol.toStringTag])&&(t=t.default),u(t)?e.extend(t):t}function ke(t){if(o(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(cn=function(){return un.now()})}var fn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function pn(){var t,e;for(ln=cn(),an=!0,en.sort(fn),sn=0;snsn&&en[n].id>t.id;)n--;en.splice(n+1,0,t)}else en.push(t);on||(on=!0,De(pn))}}function hn(t,e){if(t){for(var n=Object.create(null),r=ut?Reflect.ownKeys(t):Object.keys(t),o=0;o-1)if(i&&!S(o,"default"))a=!1;else if(""===a||a===E(t)){var l=Un(String,o.type);(l<0||s-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Yn(t,e){var n=t.cache,r=t.keys,o=t._vnode,i=t.$vnode;for(var a in n){var s=n[a];if(s){var l=s.name;l&&!e(l)&&Jn(n,a,r,o)}}i.componentOptions.children=void 0}function Jn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,_(n,e)}Qn.prototype._init=function(t){var e=this;e._uid=Vn++,e._isVue=!0,e.__v_skip=!0,e._scope=new Nt(!0),e._scope.parent=void 0,e._scope._vm=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=jn(Wn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=pe(e._renderChildren,o),t.$scopedSlots=n?ve(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,o){return Oe(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Oe(t,e,n,r,o,!0)};var i=n&&n.data;At(t,"$attrs",i&&i.attrs||r,null,!0),At(t,"$listeners",e._parentListeners||r,null,!0)}(e),tn(e,"beforeCreate",void 0,!1),function(t){var e=hn(t.$options.inject,t);e&&(Ct(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),Ct(!0))}(e),Dn(e),function(t){var e=t.$options.provide;if(e){var n=c(e)?e.call(t):e;if(!u(n))return;for(var r=Ht(t),o=ut?Reflect.ownKeys(n):Object.keys(n),i=0;i1?$(n):n;for(var r=$(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;iparseInt(this.max)&&Jn(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Jn(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Yn(t,(function(t){return Kn(e,t)}))})),this.$watch("exclude",(function(e){Yn(t,(function(t){return!Kn(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=ke(t),n=e&&e.componentOptions;if(n){var r=Xn(n),o=this.include,i=this.exclude;if(o&&(!r||!Kn(o,r))||i&&r&&Kn(i,r))return e;var a=this.cache,s=this.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[l]?(e.componentInstance=a[l].componentInstance,_(s,l),s.push(l)):(this.vnodeToCache=e,this.keyToCache=l),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return H}};Object.defineProperty(t,"config",e),t.util={warn:Sn,extend:A,mergeOptions:jn,defineReactive:At},t.set=Mt,t.delete=Lt,t.nextTick=De,t.observable=function(t){return $t(t),t},t.options=Object.create(null),q.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,A(t.options.components,tr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=$(arguments,1);return n.unshift(this),c(t.install)?t.install.apply(t,n):c(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=jn(this.options,t),this}}(t),Gn(t),function(t){q.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&c(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Qn),Object.defineProperty(Qn.prototype,"$isServer",{get:at}),Object.defineProperty(Qn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Qn,"FunctionalRenderContext",{value:vn}),Qn.version="2.7.16";var er=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),or=b("events,caret,typing,plaintext-only"),ir=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},lr=function(t){return sr(t)?t.slice(6,t.length):""},cr=function(t){return null==t||!1===t};function ur(t){for(var e=t.data,n=t,r=t;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=fr(r.data,e));for(;a(n=n.parent);)n&&n.data&&(e=fr(e,n.data));return function(t,e){if(a(t)||a(e))return pr(t,dr(e));return""}(e.staticClass,e.class)}function fr(t,e){return{staticClass:pr(t.staticClass,e.staticClass),class:a(t.class)?[t.class,e.class]:e.class}}function pr(t,e){return t?e?t+" "+e:t:e||""}function dr(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?Ir(t,e,n):ir(e)?cr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):rr(e)?t.setAttribute(e,function(t,e){return cr(e)||"false"===e?"false":"contenteditable"===t&&or(e)?e:"true"}(e,n)):sr(e)?cr(n)?t.removeAttributeNS(ar,lr(e)):t.setAttributeNS(ar,e,n):Ir(t,e,n)}function Ir(t,e,n){if(cr(n))t.removeAttribute(e);else{if(Y&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Br={create:Rr,update:Rr};function Dr(t,e){var n=e.elm,r=e.data,o=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=ur(e),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Fr,qr={create:Dr,update:Dr};function Nr(t,e,n){var r=Fr;return function o(){var i=e.apply(null,arguments);null!==i&&Vr(t,o,n,r)}}var Hr=$e&&!(nt&&Number(nt[1])<=53);function zr(t,e,n,r){if(Hr){var o=ln,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Fr.addEventListener(t,e,ot?{capture:n,passive:r}:n)}function Vr(t,e,n,r){(r||Fr).removeEventListener(t,e._wrapper||e,n)}function Wr(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Fr=e.elm||t.elm,function(t){if(a(t.__r)){var e=Y?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}a(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),Wt(n,r,zr,Vr,Nr,e.context),Fr=void 0}}var Qr,Gr={create:Wr,update:Wr,destroy:function(t){return Wr(t,kr)}};function Xr(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,o=e.elm,l=t.data.domProps||{},c=e.data.domProps||{};for(n in(a(c.__ob__)||s(c._v_attr_proxy))&&(c=e.data.domProps=A({},c)),l)n in c||(o[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===l[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var u=i(r)?"":String(r);Kr(o,u)&&(o.value=u)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Qr=Qr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Qr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==l[n])try{o[n]=r}catch(t){}}}}function Kr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(a(r)){if(r.number)return y(n)!==y(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Yr={create:Xr,update:Xr},Jr=k((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Zr(t){var e=to(t.style);return t.staticStyle?A(t.staticStyle,e):e}function to(t){return Array.isArray(t)?M(t):"string"==typeof t?Jr(t):t}var eo,no=/^--/,ro=/\s*!important$/,oo=function(t,e,n){if(no.test(e))t.style.setProperty(e,n);else if(ro.test(n))t.style.setProperty(E(e),n.replace(ro,""),"important");else{var r=ao(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(co).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function fo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(co).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function po(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&A(e,ho(t.name||"v")),A(e,t),e}return"string"==typeof t?ho(t):void 0}}var ho=k((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),vo=X&&!J,mo="transition",go="transitionend",yo="animation",bo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",go="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(yo="WebkitAnimation",bo="webkitAnimationEnd"));var wo=X?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function _o(t){wo((function(){wo(t)}))}function xo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),uo(t,e))}function So(t,e){t._transitionClasses&&_(t._transitionClasses,e),fo(t,e)}function ko(t,e,n){var r=Po(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?go:bo,l=0,c=function(){t.removeEventListener(s,u),n()},u=function(e){e.target===t&&++l>=a&&c()};setTimeout((function(){l0&&(n="transition",u=a,f=i.length):"animation"===e?c>0&&(n="animation",u=c,f=l.length):f=(n=(u=Math.max(a,c))>0?a>c?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:u,propCount:f,hasTransform:"transition"===n&&Oo.test(r[mo+"Property"])}}function To(t,e){for(;t.length1}function Mo(t,e){!0!==e.data.show&&Eo(e)}var Lo=function(t){var e,n,r={},c=t.modules,u=t.nodeOps;for(e=0;eh?w(t,i(n[g+1])?null:n[g+1].elm,n,d,g,r):d>g&&x(e,f,h)}(f,v,g,n,c):a(g)?(a(t.text)&&u.setTextContent(f,""),w(f,null,g,0,g.length-1,n)):a(v)?x(v,0,v.length-1):a(t.text)&&u.setTextContent(f,""):t.text!==e.text&&u.setTextContent(f,e.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(t,e)}}}function P(t,e,n){if(s(n)&&a(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(I(Do(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Bo(t,e){return e.every((function(e){return!I(e,t)}))}function Do(t){return"_value"in t?t._value:t.value}function Fo(t){t.target.composing=!0}function qo(t){t.target.composing&&(t.target.composing=!1,No(t.target,"input"))}function No(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ho(t){return!t.componentInstance||t.data&&t.data.transition?t:Ho(t.componentInstance._vnode)}var zo={model:Ro,show:{bind:function(t,e,n){var r=e.value,o=(n=Ho(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Eo(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Ho(n)).data&&n.data.transition?(n.data.show=!0,r?Eo(n,(function(){t.style.display=t.__vOriginalDisplay})):jo(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},Vo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Wo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Wo(ke(e.children)):t}function Qo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[P(r)]=o[r];return e}function Go(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Xo=function(t){return t.tag||he(t)},Ko=function(t){return"show"===t.name},Yo={name:"transition",props:Vo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Xo)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Wo(o);if(!i)return o;if(this._leaving)return Go(t,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:l(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Qo(this),c=this._vnode,u=Wo(c);if(i.data.directives&&i.data.directives.some(Ko)&&(i.data.show=!0),u&&u.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,u)&&!he(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var f=u.data.transition=A({},s);if("out-in"===r)return this._leaving=!0,Qt(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Go(t,o);if("in-out"===r){if(he(i))return c;var p,d=function(){p()};Qt(s,"afterEnter",d),Qt(s,"enterCancelled",d),Qt(f,"delayLeave",(function(t){p=t}))}}return o}}},Jo=A({tag:String,moveClass:String},Vo);function Zo(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ti(t){t.data.newPos=t.elm.getBoundingClientRect()}function ei(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Jo.mode;var ni={Transition:Yo,TransitionGroup:{props:Jo,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Ye(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Qo(this),s=0;s-1?yr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:yr[t]=/HTMLUnknownElement/.test(e.toString())},A(Qn.options.directives,zo),A(Qn.options.components,ni),Qn.prototype.__patch__=X?Lo:L,Qn.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=ht),tn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new Ve(t,r,L,{before:function(){t._isMounted&&!t._isDestroyed&&tn(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),c=e&&e.path||"/",u=l.path?Si(l.path,c,n||o.append):c,f=function(t,e,n){void 0===e&&(e={});var r,o=n||ui;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(ci):ci(a)}return r}(l.query,o.query,r&&r.options.parseQuery),p=o.hash||l.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:u,query:f,hash:p}}var zi,Vi=function(){},Wi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,f=null==c?"router-link-active":c,p=null==u?"router-link-exact-active":u,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?di(null,Hi(a.redirectedFrom),null,n):a;l[h]=yi(r,v,this.exactPath),l[d]=this.exact||this.exactPath?l[h]:function(t,e){return 0===t.path.replace(pi,"/").indexOf(e.path.replace(pi,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=l[h]?this.ariaCurrentValue:null,g=function(t){Qi(t)&&(e.replace?n.replace(i,Vi):n.push(i,Vi))},y={click:Qi};Array.isArray(this.event)?this.event.forEach((function(t){y[t]=g})):y[this.event]=g;var b={class:l},w=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:g,isActive:l[d],isExactActive:l[h]});if(w){if(1===w.length)return w[0];if(w.length>1||!w.length)return 0===w.length?t():t("span",{},w)}if("a"===this.tag)b.on=y,b.attrs={href:s,"aria-current":m};else{var _=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=Ni(u.path,s.params),l(u,s,a)}if(s.path){s.params={};for(var d=0;d-1}function ka(t,e){return Sa(t)&&t._isRouter&&(null==e||t.type===e)}function Oa(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Pa(t){return function(e,n,r){var o=!1,i=0,a=null;Ta(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var l,c=ja((function(e){var o;((o=e).__esModule||Ea&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:zi.extend(e),n.components[s]=e,--i<=0&&r()})),u=ja((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Sa(t)?t:new Error(e),r(a))}));try{l=t(c,u)}catch(t){u(t)}if(l)if("function"==typeof l.then)l.then(c,u);else{var f=l.component;f&&"function"==typeof f.then&&f.then(c,u)}}})),o||r()}}function Ta(t,e){return Ca(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Ca(t){return Array.prototype.concat.apply([],t)}var Ea="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function ja(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var $a=function(t,e){this.router=t,this.base=function(t){if(!t)if(Gi){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=vi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Aa(t,e,n,r){var o=Ta(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=zi.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return Ca(r?o.reverse():o)}function Ma(t,e){if(e)return function(){return t.apply(e,arguments)}}$a.prototype.listen=function(t){this.cb=t},$a.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},$a.prototype.onError=function(t){this.errorCbs.push(t)},$a.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(ka(t,ya.redirected)&&i===vi||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},$a.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,s=function(t){!ka(t)&&Sa(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},l=t.matched.length-1,c=o.matched.length-1;if(yi(t,o)&&l===c&&t.matched[l]===o.matched[c])return this.ensureURL(),t.hash&&aa(this.router,o,t,!1),s(((a=_a(i=o,t,ya.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=va&&n;r&&this.listeners.push(ia());var o=function(){var n=t.current,o=Ra(t.base);t.current===vi&&o===t._startLocation||t.transitionTo(o,(function(t){r&&aa(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ma(ki(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){ga(ki(r.base+t.fullPath)),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Ra(this.base)!==this.current.fullPath){var e=ki(this.base+this.current.fullPath);t?ma(e):ga(e)}},e.prototype.getCurrentLocation=function(){return Ra(this.base)},e}($a);function Ra(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(ki(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ua=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Ra(t);if(!/^\/#/.test(e))return window.location.replace(ki(t+"/#"+e)),!0}(this.base)||Ia()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=va&&e;n&&this.listeners.push(ia());var r=function(){var e=t.current;Ia()&&t.transitionTo(Ba(),(function(r){n&&aa(t.router,r,e,!0),va||qa(r.fullPath)}))},o=va?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Fa(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){qa(t.fullPath),aa(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ba()!==e&&(t?Fa(e):qa(e))},e.prototype.getCurrentLocation=function(){return Ba()},e}($a);function Ia(){var t=Ba();return"/"===t.charAt(0)||(qa("/"+t),!1)}function Ba(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Da(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Fa(t){va?ma(Da(t)):window.location.hash=t}function qa(t){va?ga(Da(t)):window.location.replace(Da(t))}var Na=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){ka(t,ya.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}($a),Ha=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Yi(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!va&&!1!==t.fallback,this.fallback&&(e="hash"),Gi||(e="abstract"),this.mode=e,e){case"history":this.history=new La(this,t.base);break;case"hash":this.history=new Ua(this,t.base,this.fallback);break;case"abstract":this.history=new Na(this,t.base);break;default:0}},za={currentRoute:{configurable:!0}};Ha.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},za.currentRoute.get=function(){return this.history&&this.history.current},Ha.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof La||n instanceof Ua){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;va&&o&&"fullPath"in t&&aa(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Ha.prototype.beforeEach=function(t){return Wa(this.beforeHooks,t)},Ha.prototype.beforeResolve=function(t){return Wa(this.resolveHooks,t)},Ha.prototype.afterEach=function(t){return Wa(this.afterHooks,t)},Ha.prototype.onReady=function(t,e){this.history.onReady(t,e)},Ha.prototype.onError=function(t){this.history.onError(t)},Ha.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Ha.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Ha.prototype.go=function(t){this.history.go(t)},Ha.prototype.back=function(){this.go(-1)},Ha.prototype.forward=function(){this.go(1)},Ha.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Ha.prototype.resolve=function(t,e,n){var r=Hi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ki(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ha.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ha.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Ha.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ha.prototype,za);var Va=Ha;function Wa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Ha.install=function t(e){if(!t.installed||zi!==e){t.installed=!0,zi=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",_i),e.component("RouterLink",Wi);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ha.version="3.6.5",Ha.isNavigationFailure=ka,Ha.NavigationFailureType=ya,Ha.START_LOCATION=vi,Gi&&window.Vue&&window.Vue.use(Ha);n(97);n(90),n(127);var Qa={"components/AlgoliaSearchBox":()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,418)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,256)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(31)]).then(n.bind(null,244)),"components/Home":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,285)),"components/NavLink":()=>n.e(41).then(n.bind(null,243)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,268)),"components/Navbar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,415)),"components/Page":()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,286)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,270)),"components/PageNav":()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,271)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,287)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(32)]).then(n.bind(null,288)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,269)),"components/SidebarLink":()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,257)),"components/SidebarLinks":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,255)),"global-components/Badge":()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,424)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,419)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,420)),"layouts/404":()=>n.e(7).then(n.bind(null,421)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,422)),NotFound:()=>n.e(7).then(n.bind(null,421)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,422))},Ga={"v-96f26938":()=>n.e(48).then(n.bind(null,425)),"v-347fe277":()=>n.e(12).then(n.bind(null,426)),"v-06f4d0aa":()=>n.e(16).then(n.bind(null,427)),"v-b936cd92":()=>n.e(10).then(n.bind(null,428)),"v-73cb197f":()=>n.e(17).then(n.bind(null,429)),"v-095f6301":()=>n.e(42).then(n.bind(null,430)),"v-08357a02":()=>n.e(13).then(n.bind(null,431)),"v-2db1db37":()=>n.e(50).then(n.bind(null,432)),"v-e115e73a":()=>n.e(49).then(n.bind(null,433)),"v-117d8812":()=>n.e(51).then(n.bind(null,434)),"v-412f01af":()=>n.e(26).then(n.bind(null,435)),"v-f3fbff12":()=>n.e(52).then(n.bind(null,436)),"v-01bee537":()=>n.e(53).then(n.bind(null,437)),"v-5e0eec87":()=>n.e(43).then(n.bind(null,438)),"v-204c7852":()=>n.e(24).then(n.bind(null,439)),"v-56e06d4d":()=>n.e(54).then(n.bind(null,440)),"v-29f81312":()=>n.e(55).then(n.bind(null,441)),"v-cf2ed192":()=>n.e(33).then(n.bind(null,442)),"v-0c47cd52":()=>n.e(56).then(n.bind(null,443)),"v-b5aec012":()=>n.e(44).then(n.bind(null,444)),"v-eab731fa":()=>n.e(34).then(n.bind(null,445)),"v-2fe62c26":()=>n.e(35).then(n.bind(null,446)),"v-0d1e8e9e":()=>n.e(57).then(n.bind(null,447)),"v-aa1cc612":()=>n.e(58).then(n.bind(null,448)),"v-255607ed":()=>n.e(36).then(n.bind(null,449)),"v-6e14dcd7":()=>n.e(27).then(n.bind(null,450)),"v-303bd052":()=>n.e(59).then(n.bind(null,451)),"v-2c32e617":()=>n.e(38).then(n.bind(null,452)),"v-7df515d2":()=>n.e(37).then(n.bind(null,453)),"v-27c660f7":()=>n.e(28).then(n.bind(null,454)),"v-246d3f77":()=>n.e(60).then(n.bind(null,455)),"v-2b7b8f3b":()=>n.e(61).then(n.bind(null,456)),"v-0d819412":()=>n.e(62).then(n.bind(null,457)),"v-bbb970d2":()=>n.e(18).then(n.bind(null,458)),"v-3043a2b9":()=>n.e(39).then(n.bind(null,459)),"v-288d7b9e":()=>n.e(63).then(n.bind(null,460)),"v-20c05837":()=>n.e(45).then(n.bind(null,461)),"v-131b9357":()=>n.e(40).then(n.bind(null,462)),"v-a9ffe0fe":()=>n.e(46).then(n.bind(null,463)),"v-749f316f":()=>n.e(29).then(n.bind(null,464)),"v-947f362a":()=>n.e(30).then(n.bind(null,465)),"v-21b208b7":()=>n.e(64).then(n.bind(null,466)),"v-2494b4d7":()=>n.e(65).then(n.bind(null,467)),"v-93d2a72a":()=>n.e(66).then(n.bind(null,468)),"v-2566e137":()=>n.e(67).then(n.bind(null,469))};function Xa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Ka=/-(\w)/g,Ya=Xa(t=>t.replace(Ka,(t,e)=>e?e.toUpperCase():"")),Ja=/\B([A-Z])/g,Za=Xa(t=>t.replace(Ja,"-$1").toLowerCase()),ts=Xa(t=>t.charAt(0).toUpperCase()+t.slice(1));function es(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(ts(Ya(e))):t(ts(e))||t(Za(e))}const ns=Object.assign({},Qa,Ga),rs=t=>ns[t],os=t=>Ga[t],is=t=>Qa[t],as=t=>Qn.component(t);function ss(t){return es(os,t)}function ls(t){return es(is,t)}function cs(t){return es(rs,t)}function us(t){return es(as,t)}function fs(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!us(t)&&cs(t)){const e=await cs(t)();Qn.component(t,e.default)}}))}function ps(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var ds=n(86),hs=n.n(ds),vs=n(87),ms=n.n(vs),gs={created(){if(this.siteMeta=this.$site.headTags.filter(([t])=>"meta"===t).map(([t,e])=>e),this.$ssrContext){const e=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(t=e)?t.map(t=>{let e="{e+=` ${n}="${ms()(t[n])}"`}),e+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var t},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.getMergedMetaTags();this.currentMetaTags=ws(t,this.currentMetaTags)},getMergedMetaTags(){const t=this.$page.frontmatter.meta||[];return hs()([{name:"description",content:this.$description}],t,this.siteMeta,_s)},updateCanonicalLink(){ys(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){ws(null,this.currentMetaTags),ys()}};function ys(){const t=document.querySelector("link[rel='canonical']");t&&t.remove()}function bs(t=""){return t?``:""}function ws(t,e){if(e&&[...e].filter(t=>t.parentNode===document.head).forEach(t=>document.head.removeChild(t)),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}function _s(t){for(const e of["name","property","itemprop"])if(t.hasOwnProperty(e))return t[e]+e;return JSON.stringify(t)}var xs=n(88),Ss={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(xs)()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},ks=n(22),Os=n.n(ks),Ps={mounted(){Os.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||Qn.component(t.name)||Os.a.start(),n()}),this.$router.afterEach(()=>{Os.a.done(),this.isSidebarOpen=!1})}},Ts=n(89),Cs=n.n(Ts),Es=[gs,Ss,Ps,{mounted(){Cs.a.polyfill()}}],js={name:"GlobalLayout",computed:{layout(){const t=this.getLayout();return ps("layout",t),Qn.component(t)}},methods:{getLayout(){if(this.$page.path){const t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},$s=n(14),As=Object($s.a)(js,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(As,"mixins",Es);const Ms=[{name:"v-96f26938",path:"/",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-96f26938").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-347fe277",path:"/integrate/aws_iot.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-347fe277").then(n)}},{name:"v-06f4d0aa",path:"/integrate/home_assistant.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-06f4d0aa").then(n)}},{name:"v-b936cd92",path:"/integrate/jeedom.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b936cd92").then(n)}},{name:"v-73cb197f",path:"/integrate/node_red.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-73cb197f").then(n)}},{name:"v-095f6301",path:"/integrate/openhab2.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-095f6301").then(n)}},{name:"v-08357a02",path:"/integrate/openhab3.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-08357a02").then(n)}},{name:"v-2db1db37",path:"/participate/community.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2db1db37").then(n)}},{name:"v-e115e73a",path:"/participate/adding-protocols.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-e115e73a").then(n)}},{name:"v-117d8812",path:"/participate/development.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-117d8812").then(n)}},{name:"v-412f01af",path:"/prerequisites/M5.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-412f01af").then(n)}},{name:"v-f3fbff12",path:"/participate/support.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-f3fbff12").then(n)}},{name:"v-01bee537",path:"/prerequisites/board.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-01bee537").then(n)}},{name:"v-5e0eec87",path:"/prerequisites/controller.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-5e0eec87").then(n)}},{name:"v-204c7852",path:"/prerequisites/devices.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-204c7852").then(n)}},{name:"v-56e06d4d",path:"/prerequisites/broker.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-56e06d4d").then(n)}},{name:"v-29f81312",path:"/prerequisites/parts.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-29f81312").then(n)}},{name:"v-cf2ed192",path:"/setitup/ble.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-cf2ed192").then(n)}},{name:"v-0c47cd52",path:"/setitup/actuators.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-0c47cd52").then(n)}},{name:"v-b5aec012",path:"/setitup/gsm.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b5aec012").then(n)}},{name:"v-eab731fa",path:"/setitup/ir.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-eab731fa").then(n)}},{name:"v-2fe62c26",path:"/setitup/rf.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2fe62c26").then(n)}},{name:"v-0d1e8e9e",path:"/setitup/lora.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-0d1e8e9e").then(n)}},{name:"v-aa1cc612",path:"/setitup/sensors.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-aa1cc612").then(n)}},{name:"v-255607ed",path:"/setitup/serial.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-255607ed").then(n)}},{name:"v-6e14dcd7",path:"/upload/binaries.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-6e14dcd7").then(n)}},{name:"v-303bd052",path:"/upload/builds.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-303bd052").then(n)}},{name:"v-2c32e617",path:"/upload/gitpod.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2c32e617").then(n)}},{name:"v-7df515d2",path:"/upload/advanced-configuration.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-7df515d2").then(n)}},{name:"v-27c660f7",path:"/upload/portal.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-27c660f7").then(n)}},{name:"v-246d3f77",path:"/upload/troubleshoot.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-246d3f77").then(n)}},{name:"v-2b7b8f3b",path:"/upload/web-install.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2b7b8f3b").then(n)}},{name:"v-0d819412",path:"/use/actuators.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-0d819412").then(n)}},{name:"v-bbb970d2",path:"/use/ble.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-bbb970d2").then(n)}},{name:"v-3043a2b9",path:"/use/boards.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-3043a2b9").then(n)}},{name:"v-288d7b9e",path:"/use/displays.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-288d7b9e").then(n)}},{name:"v-20c05837",path:"/use/gateway.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-20c05837").then(n)}},{name:"v-131b9357",path:"/use/gsm.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-131b9357").then(n)}},{name:"v-a9ffe0fe",path:"/use/ir.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-a9ffe0fe").then(n)}},{name:"v-749f316f",path:"/use/lora.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-749f316f").then(n)}},{name:"v-947f362a",path:"/use/rf.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-947f362a").then(n)}},{name:"v-21b208b7",path:"/use/rfm69.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-21b208b7").then(n)}},{name:"v-2494b4d7",path:"/use/sensors.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2494b4d7").then(n)}},{name:"v-93d2a72a",path:"/use/serial.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-93d2a72a").then(n)}},{name:"v-2566e137",path:"/use/webui.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2566e137").then(n)}},{path:"*",component:As}],Ls={title:"Theengs OpenMQTTGateway DEVELOPMENT SHA:e91086 TEST ONLY",description:"One gateway, many technologies: MQTT gateway for ESP8266 or ESP32 with bidirectional 433mhz/315mhz/868mhz, Infrared communications, BLE, LoRa, beacons detection, mi flora / mi jia / LYWSD02/ Mi Scale compatibility, SMS & LORA.",base:"/dev/",headTags:[["meta",{name:"viewport",content:"width=device-width, initial-scale=1"}],["link",{rel:"apple-touch-icon",sizes:"180x180",href:".apple-touch-icon.png"}],["link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/dev/favicon-32x32.png"}],["link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/dev/favicon-16x16.png"}],["link",{rel:"manifest",href:"/dev/manifest.json"}],["meta",{name:"theme-color",content:"#3eaf7c"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["meta",{name:"apple-mobile-web-app-status-bar-style",content:"black"}],["link",{rel:"mask-icon",href:"/dev/icons/safari-pinned-tab.svg",color:"#3eaf7c"}],["meta",{name:"msapplication-TileImage",content:"/favicon-144x144.png"}],["meta",{name:"msapplication-TileColor",content:"#000000"}],["script",{type:"module",src:"https://unpkg.com/esp-web-tools@9.4.3/dist/web/install-button.js?module"}]],pages:[{frontmatter:{},regularPath:"/",relativePath:"README.md",key:"v-96f26938",path:"/",headers:[{level:2,title:"Using OpenMQTTGateway ?",slug:"using-openmqttgateway"},{level:2,title:"Products powered by OpenMQTTGateway",slug:"products-powered-by-openmqttgateway"},{level:3,title:"Theengs Bridge, BLE gateway with external antenna",slug:"theengs-bridge-ble-gateway-with-external-antenna"},{level:3,title:"Theengs Plug, BLE gateway and Smart Plug",slug:"theengs-plug-ble-gateway-and-smart-plug"},{level:2,title:"Media",slug:"media"},{level:3,title:"Theengs Plug",slug:"theengs-plug"},{level:3,title:"433Mhz and BLE",slug:"_433mhz-and-ble"},{level:3,title:"BLE",slug:"ble"},{level:3,title:"433Mhz",slug:"_433mhz"},{level:3,title:"LORA",slug:"lora"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate AWS IOT",frontmatter:{},regularPath:"/integrate/aws_iot.html",relativePath:"integrate/aws_iot.md",key:"v-347fe277",path:"/integrate/aws_iot.html",headers:[{level:2,title:"Create a thing",slug:"create-a-thing"},{level:2,title:"Create a policy",slug:"create-a-policy"},{level:2,title:"Create a certificate",slug:"create-a-certificate"},{level:2,title:"Attach Policy with certificate",slug:"attach-policy-with-certificate"},{level:2,title:"Activate certificate and attach it to Thing",slug:"activate-certificate-and-attach-it-to-thing"},{level:2,title:"Find AWS EndPoint",slug:"find-aws-endpoint"},{level:2,title:"Gather the information for OpenMQTTGateway configuration",slug:"gather-the-information-for-openmqttgateway-configuration"},{level:2,title:"Modify OpenMQTTGateway configuration",slug:"modify-openmqttgateway-configuration"},{level:2,title:"Build and upload",slug:"build-and-upload"},{level:2,title:"Connect to a WiFi Access point see portal",slug:"connect-to-a-wifi-access-point-see-portal"},{level:2,title:"Verify that you receive data in AWS",slug:"verify-that-you-receive-data-in-aws"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate Home Assistant",frontmatter:{},regularPath:"/integrate/home_assistant.html",relativePath:"integrate/home_assistant.md",key:"v-06f4d0aa",path:"/integrate/home_assistant.html",headers:[{level:2,title:"Automatic integration with Auto discovery",slug:"automatic-integration-with-auto-discovery"},{level:3,title:"RTL_433 auto discovery specificity",slug:"rtl-433-auto-discovery-specificity"},{level:3,title:"RF (RCSwitch based gateway) Auto discovery specificity",slug:"rf-rcswitch-based-gateway-auto-discovery-specificity"},{level:2,title:"Manual integration",slug:"manual-integration"},{level:3,title:"Pir Sensor",slug:"pir-sensor"},{level:3,title:"Door sensor",slug:"door-sensor"},{level:3,title:"Motion sensor",slug:"motion-sensor"},{level:3,title:"Switches",slug:"switches"},{level:3,title:"RF gateway mode - Pilight, RF, kaku",slug:"rf-gateway-mode-pilight-rf-kaku"},{level:3,title:"Mijia Thermometer BLE",slug:"mijia-thermometer-ble"},{level:3,title:"Xiaomi Mi Scale V2 BLE (XMTZC05HM)",slug:"xiaomi-mi-scale-v2-ble-xmtzc05hm"},{level:3,title:"MQTT Room Presence",slug:"mqtt-room-presence"},{level:3,title:"Temperature sensor",slug:"temperature-sensor"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate Jeedom",frontmatter:{},regularPath:"/integrate/jeedom.html",relativePath:"integrate/jeedom.md",key:"v-b936cd92",path:"/integrate/jeedom.html",headers:[{level:2,title:"Installation of jMQTT",slug:"installation-of-jmqtt"},{level:2,title:"Configuration the Broker in jMQTT",slug:"configuration-the-broker-in-jmqtt"},{level:2,title:"Creation of the OMG device",slug:"creation-of-the-omg-device"},{level:3,title:"Creation of the Last Will and Testament command",slug:"creation-of-the-last-will-and-testament-command"},{level:3,title:"Creation of an action command to restart the OMG device",slug:"creation-of-an-action-command-to-restart-the-omg-device"},{level:2,title:'Creation of the equipment for the "Xiaomi Mi Jia" sensor',slug:"creation-of-the-equipment-for-the-xiaomi-mi-jia-sensor"},{level:3,title:"Creation of an unknown/unidentified BT device",slug:"creation-of-an-unknown-unidentified-bt-device"},{level:3,title:"Creation of a known/identified BT device",slug:"creation-of-a-known-identified-bt-device"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate Node-Red",frontmatter:{},regularPath:"/integrate/node_red.html",relativePath:"integrate/node_red.md",key:"v-73cb197f",path:"/integrate/node_red.html",headers:[{level:2,title:"Integrate BLE sensors, devices and display a dashboard",slug:"integrate-ble-sensors-devices-and-display-a-dashboard"},{level:3,title:"Broker connection",slug:"broker-connection"},{level:3,title:"Json message processing",slug:"json-message-processing"},{level:3,title:"Dashboard",slug:"dashboard"},{level:2,title:"Integrate RF",slug:"integrate-rf"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate OPENHAB2",frontmatter:{},regularPath:"/integrate/openhab2.html",relativePath:"integrate/openhab2.md",key:"v-095f6301",path:"/integrate/openhab2.html",headers:[{level:2,title:"Auto discovery through home assistant convention",slug:"auto-discovery-through-home-assistant-convention"},{level:2,title:"MQTT 2 manual setup >=Openhab2.4",slug:"mqtt-2-manual-setup-openhab2-4"},{level:2,title:"For a mi flora or mi jia temperature :",slug:"for-a-mi-flora-or-mi-jia-temperature"},{level:2,title:'For a switch channel, add a channel by choosing the type "On/Off switch"',slug:"for-a-switch-channel-add-a-channel-by-choosing-the-type-on-off-switch"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Integrate OPENHAB 3/4",frontmatter:{},regularPath:"/integrate/openhab3.html",relativePath:"integrate/openhab3.md",key:"v-08357a02",path:"/integrate/openhab3.html",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"IP address (if your broker is installed on the same server as OpenHAB)",slug:"ip-address-if-your-broker-is-installed-on-the-same-server-as-openhab"},{level:2,title:"Install the MQTT binding",slug:"install-the-mqtt-binding"},{level:2,title:"Install Jinja and JSONPath Transformations",slug:"install-jinja-and-jsonpath-transformations"},{level:2,title:"Upload OpenMQTTGateway to an ESP32",slug:"upload-openmqttgateway-to-an-esp32"},{level:2,title:"Configure OpenMQTTGateway from the web portal",slug:"configure-openmqttgateway-from-the-web-portal"},{level:2,title:"Adding the things",slug:"adding-the-things"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Community participation",frontmatter:{},regularPath:"/participate/community.html",relativePath:"participate/community.md",key:"v-2db1db37",path:"/participate/community.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Adding protocols",frontmatter:{},regularPath:"/participate/adding-protocols.html",relativePath:"participate/adding-protocols.md",key:"v-e115e73a",path:"/participate/adding-protocols.html",headers:[{level:2,title:"RF or IR",slug:"rf-or-ir"},{level:2,title:"BLE",slug:"ble"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Development contributions",frontmatter:{},regularPath:"/participate/development.html",relativePath:"participate/development.md",key:"v-117d8812",path:"/participate/development.html",headers:[{level:2,title:"Nightly builds",slug:"nightly-builds"},{level:2,title:"Developer Certificate Of Origin",slug:"developer-certificate-of-origin"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"M5 Boards",frontmatter:{},regularPath:"/prerequisites/M5.html",relativePath:"prerequisites/M5.md",key:"v-412f01af",path:"/prerequisites/M5.html",headers:[{level:2,title:"M5StickC and M5Stack",slug:"m5stickc-and-m5stack"},{level:3,title:"3 low power modes",slug:"_3-low-power-modes"},{level:3,title:"Start screen",slug:"start-screen"},{level:3,title:"Sleep screen",slug:"sleep-screen"},{level:3,title:"Log display in case of warning",slug:"log-display-in-case-of-warning"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Supporting the project",frontmatter:{},regularPath:"/participate/support.html",relativePath:"participate/support.md",key:"v-f3fbff12",path:"/participate/support.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Boards",frontmatter:{},regularPath:"/prerequisites/board.html",relativePath:"prerequisites/board.md",key:"v-01bee537",path:"/prerequisites/board.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Controller",frontmatter:{},regularPath:"/prerequisites/controller.html",relativePath:"prerequisites/controller.md",key:"v-5e0eec87",path:"/prerequisites/controller.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Devices",frontmatter:{},regularPath:"/prerequisites/devices.html",relativePath:"prerequisites/devices.md",key:"v-204c7852",path:"/prerequisites/devices.html",headers:[{level:2,title:"For radio frequency devices",slug:"for-radio-frequency-devices"},{level:2,title:"For BLE devices",slug:"for-ble-devices"},{level:2,title:"For infrared IR devices",slug:"for-infrared-ir-devices"},{level:2,title:"LORA",slug:"lora"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Broker",frontmatter:{},regularPath:"/prerequisites/broker.html",relativePath:"prerequisites/broker.md",key:"v-56e06d4d",path:"/prerequisites/broker.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Parts",frontmatter:{},regularPath:"/prerequisites/parts.html",relativePath:"prerequisites/parts.md",key:"v-29f81312",path:"/prerequisites/parts.html",headers:[{level:2,title:"Main parts",slug:"main-parts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"BLE gateway",frontmatter:{},regularPath:"/setitup/ble.html",relativePath:"setitup/ble.md",key:"v-cf2ed192",path:"/setitup/ble.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Actuators",frontmatter:{},regularPath:"/setitup/actuators.html",relativePath:"setitup/actuators.md",key:"v-0c47cd52",path:"/setitup/actuators.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"Somfy RTS",slug:"somfy-rts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"GSM 2G gateway",frontmatter:{},regularPath:"/setitup/gsm.html",relativePath:"setitup/gsm.md",key:"v-b5aec012",path:"/setitup/gsm.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Hardware setup",slug:"hardware-setup"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"IR gateway",frontmatter:{},regularPath:"/setitup/ir.html",relativePath:"setitup/ir.md",key:"v-eab731fa",path:"/setitup/ir.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"ESP8266 Hardware setup",slug:"esp8266-hardware-setup"},{level:2,title:"ESP32 Hardware setup",slug:"esp32-hardware-setup"},{level:2,title:"Credits",slug:"credits"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RF gateway (433mhz/315mhz)",frontmatter:{},regularPath:"/setitup/rf.html",relativePath:"setitup/rf.md",key:"v-2fe62c26",path:"/setitup/rf.html",headers:[{level:2,title:"Protocols, modules and library",slug:"protocols-modules-and-library"},{level:2,title:"Assembly/soldering required parts",slug:"assembly-soldering-required-parts"},{level:3,title:"SRX STX Pinout",slug:"srx-stx-pinout"},{level:3,title:"CC1101 Pinout",slug:"cc1101-pinout"},{level:2,title:"ESP32 Hardware setup",slug:"esp32-hardware-setup"},{level:2,title:"ESP8266 Hardware setup",slug:"esp8266-hardware-setup"},{level:2,title:"SONOFF RF Bridge Hardware setup",slug:"sonoff-rf-bridge-hardware-setup"},{level:2,title:"SONOFF RFR3 Hardware setup",slug:"sonoff-rfr3-hardware-setup"},{level:2,title:"WIFI RF GATEWAY Hardware setup",slug:"wifi-rf-gateway-hardware-setup"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"LoRa gateway",frontmatter:{},regularPath:"/setitup/lora.html",relativePath:"setitup/lora.md",key:"v-0d1e8e9e",path:"/setitup/lora.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Sensors",frontmatter:{},regularPath:"/setitup/sensors.html",relativePath:"setitup/sensors.md",key:"v-aa1cc612",path:"/setitup/sensors.html",headers:[{level:2,title:"Compatible sensors",slug:"compatible-sensors"},{level:2,title:"Pinout",slug:"pinout"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Serial/RS232 gateway",frontmatter:{},regularPath:"/setitup/serial.html",relativePath:"setitup/serial.md",key:"v-255607ed",path:"/setitup/serial.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"ESP8266 Hardware setup",slug:"esp8266-hardware-setup"},{level:2,title:"ESP32 Hardware setup",slug:"esp32-hardware-setup"},{level:2,title:"Credits",slug:"credits"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 2) Upload ready-to-go binaries",frontmatter:{},regularPath:"/upload/binaries.html",relativePath:"upload/binaries.md",key:"v-6e14dcd7",path:"/upload/binaries.html",headers:[{level:2,title:"ESP32",slug:"esp32"},{level:3,title:"Linux - esptool.py",slug:"linux-esptool-py"},{level:3,title:"Mac - esptool.py",slug:"mac-esptool-py"},{level:2,title:"ESP8266",slug:"esp8266"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 3) Upload your configurations",frontmatter:{},regularPath:"/upload/builds.html",relativePath:"upload/builds.md",key:"v-303bd052",path:"/upload/builds.html",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Configure & Upload with PlatformIO",slug:"configure-upload-with-platformio"},{level:3,title:"(Option A) Creating a portable config file",slug:"option-a-creating-a-portable-config-file"},{level:3,title:"(Option B) Editing files directly",slug:"option-b-editing-files-directly"},{level:2,title:"API",slug:"api"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 4) Build from the web",frontmatter:{},regularPath:"/upload/gitpod.html",relativePath:"upload/gitpod.md",key:"v-2c32e617",path:"/upload/gitpod.html",lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Advanced configuration of the gateway",frontmatter:{},regularPath:"/upload/advanced-configuration.html",relativePath:"upload/advanced-configuration.md",key:"v-7df515d2",path:"/upload/advanced-configuration.html",headers:[{level:2,title:"Secure connection to the broker",slug:"secure-connection-to-the-broker"},{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Configure secure connection in the gateway",slug:"configure-secure-connection-in-the-gateway"},{level:2,title:'Add the received "value" at the end of the topic',slug:"add-the-received-value-at-the-end-of-the-topic"},{level:2,title:"Auto discovery",slug:"auto-discovery"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Wifi and MQTT configuration",frontmatter:{},regularPath:"/upload/portal.html",relativePath:"upload/portal.md",key:"v-27c660f7",path:"/upload/portal.html",headers:[{level:2,title:"Configuration portal",slug:"configuration-portal"},{level:2,title:"Build time configuration",slug:"build-time-configuration"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Troubleshooting",frontmatter:{},regularPath:"/upload/troubleshoot.html",relativePath:"upload/troubleshoot.md",key:"v-246d3f77",path:"/upload/troubleshoot.html",headers:[{level:2,title:"Compilation/build error",slug:"compilation-build-error"},{level:2,title:"ESP32 compilation errors related to WiFi",slug:"esp32-compilation-errors-related-to-wifi"},{level:2,title:"Not able to send or receive RF or IR",slug:"not-able-to-send-or-receive-rf-or-ir"},{level:2,title:"Repetitive MQTT disconnections or/and commands sent to the gateway not taken into account",slug:"repetitive-mqtt-disconnections-or-and-commands-sent-to-the-gateway-not-taken-into-account"},{level:2,title:"OMG ignores messages sent to it via MQTT",slug:"omg-ignores-messages-sent-to-it-via-mqtt"},{level:2,title:"ESP Continuous restart or strange behaviour:",slug:"esp-continuous-restart-or-strange-behaviour"},{level:2,title:"ESP does not connect to broker with TLS enabled",slug:"esp-does-not-connect-to-broker-with-tls-enabled"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"(Option 1) Upload from the web",frontmatter:{pageClass:"table-generated-page"},regularPath:"/upload/web-install.html",relativePath:"upload/web-install.md",key:"v-2b7b8f3b",path:"/upload/web-install.html",headers:[{level:2,title:"Using OpenMQTTGateway ?",slug:"using-openmqttgateway"},{level:2,title:"Environments characteristics",slug:"environments-characteristics"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Actuators",frontmatter:{},regularPath:"/use/actuators.html",relativePath:"use/actuators.md",key:"v-0d819412",path:"/use/actuators.html",headers:[{level:2,title:"ON/OFF Functionality",slug:"on-off-functionality"},{level:3,title:"Standard ON/OFF control",slug:"standard-on-off-control"},{level:3,title:"Pulse control for short activations",slug:"pulse-control-for-short-activations"},{level:2,title:"FASTLED",slug:"fastled"},{level:3,title:"The FASTLED module support 2 different operation modes",slug:"the-fastled-module-support-2-different-operation-modes"},{level:3,title:"Hardware wiring",slug:"hardware-wiring"},{level:2,title:"PWM",slug:"pwm"},{level:3,title:"Configuration",slug:"configuration"},{level:3,title:"Usage",slug:"usage"},{level:2,title:"Somfy RTS",slug:"somfy-rts"},{level:3,title:"Setup",slug:"setup"},{level:3,title:"Commands",slug:"commands"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Bluetooth ESP32 gateway",frontmatter:{title:"Bluetooth ESP32 gateway",description:"Versatile Bluetooth gateway that scans and decodes data from various Bluetooth Low Energy (BLE) devices. It integrates seamlessly with MQTT brokers and controllers like Home Assistant and OpenHAB. Monitor temperature, humidity, pressure, and more for smarter control."},regularPath:"/use/ble.html",relativePath:"use/ble.md",key:"v-bbb970d2",path:"/use/ble.html",headers:[{level:2,title:"Products powered by OpenMQTTGateway",slug:"products-powered-by-openmqttgateway"},{level:3,title:"Theengs Bridge, BLE gateway with external antenna",slug:"theengs-bridge-ble-gateway-with-external-antenna"},{level:3,title:"Theengs Plug, BLE gateway and Smart Plug",slug:"theengs-plug-ble-gateway-and-smart-plug"},{level:2,title:"Disable or enable the BLE gateway (default: true, available with HA discovery)",slug:"disable-or-enable-the-ble-gateway-default-true-available-with-ha-discovery"},{level:2,title:"Receiving signals from compatible BLE sensors to publish it to an MQTT broker.",slug:"receiving-signals-from-compatible-ble-sensors-to-publish-it-to-an-mqtt-broker"},{level:2,title:"Receiving signals from BLE devices for Device Tracker detection",slug:"receiving-signals-from-ble-devices-for-device-tracker-detection"},{level:2,title:"Receiving signals from BLE devices for Presence detection",slug:"receiving-signals-from-ble-devices-for-presence-detection"},{level:2,title:"Receiving signals from BLE devices with accelerometers for movement detection",slug:"receiving-signals-from-ble-devices-with-accelerometers-for-movement-detection"},{level:2,title:"Setting a white or black list",slug:"setting-a-white-or-black-list"},{level:2,title:"Setting the time between BLE scans and force a scan (available with HA discovery)",slug:"setting-the-time-between-ble-scans-and-force-a-scan-available-with-ha-discovery"},{level:2,title:"Setting the time between connection attempts (default: 60min, available with HA discovery)",slug:"setting-the-time-between-connection-attempts-default-60min-available-with-ha-discovery"},{level:2,title:"Setting if the gateway publishes all the BLE devices scanned or only the detected sensors (default: false, available with HA discovery)",slug:"setting-if-the-gateway-publishes-all-the-ble-devices-scanned-or-only-the-detected-sensors-default-false-available-with-ha-discovery"},{level:2,title:"Setting if the gateway publishes known devices which randomly change their MAC address (default: false)",slug:"setting-if-the-gateway-publishes-known-devices-which-randomly-change-their-mac-address-default-false"},{level:2,title:"Setting if the gateway use adaptive scanning (default: true, available with HA discovery)",slug:"setting-if-the-gateway-use-adaptive-scanning-default-true-available-with-ha-discovery"},{level:2,title:"Setting the time between active scanning (available with HA discovery)",slug:"setting-the-time-between-active-scanning-available-with-ha-discovery"},{level:2,title:"Setting the duration of a scan (available with HA discovery)",slug:"setting-the-duration-of-a-scan-available-with-ha-discovery"},{level:2,title:"Setting if the gateway connects to BLE devices eligibles (default: true, available with HA discovery)",slug:"setting-if-the-gateway-connects-to-ble-devices-eligibles-default-true-available-with-ha-discovery"},{level:2,title:"Setting if the gateway publish into Home Assistant Home presence topic (default: false, available with HA discovery)",slug:"setting-if-the-gateway-publish-into-home-assistant-home-presence-topic-default-false-available-with-ha-discovery"},{level:2,title:"Setting if the gateway uses iBeacon UUID as topic, instead of (random) MAC address (default: false)",slug:"setting-if-the-gateway-uses-ibeacon-uuid-as-topic-instead-of-random-mac-address-default-false"},{level:2,title:"Setting the minimum RSSI accepted to publish device data (default:-100)",slug:"setting-the-minimum-rssi-accepted-to-publish-device-data-default-100"},{level:2,title:"Store BLE configuration into the gateway",slug:"store-ble-configuration-into-the-gateway"},{level:2,title:"Controlling devices",slug:"controlling-devices"},{level:2,title:"Read/write BLE characteristics over MQTT",slug:"read-write-ble-characteristics-over-mqtt"},{level:3,title:"Example write command",slug:"example-write-command"},{level:3,title:"Example read command",slug:"example-read-command"},{level:2,title:"SwitchBot Bot control (available with HA discovery)",slug:"switchbot-bot-control-available-with-ha-discovery"},{level:3,title:"Set the SwitchBot Bot state to ON:",slug:"set-the-switchbot-bot-state-to-on"},{level:3,title:"Set the SwitchBot Bot state to OFF:",slug:"set-the-switchbot-bot-state-to-off"},{level:3,title:"Set the SwitchBot Bot to PRESS:",slug:"set-the-switchbot-bot-to-press"},{level:3,title:"Set the SwitchBot Bot to go UP:",slug:"set-the-switchbot-bot-to-go-up"},{level:3,title:"Set the SwitchBot Bot to go DOWN:",slug:"set-the-switchbot-bot-to-go-down"},{level:2,title:"SwitchBot Blind Tilt control (available with HA discovery)",slug:"switchbot-blind-tilt-control-available-with-ha-discovery"},{level:3,title:"Set the SwitchBot Blind Tilt state to OPEN:",slug:"set-the-switchbot-blind-tilt-state-to-open"},{level:3,title:"Set the SwitchBot Blind Tilt state to CLOSE_DOWN:",slug:"set-the-switchbot-blind-tilt-state-to-close-down"},{level:3,title:"Set the SwitchBot Blind Tilt state to CLOSE_UP:",slug:"set-the-switchbot-blind-tilt-state-to-close-up"},{level:3,title:"Set the SwitchBot Blind Tilt state to a percentage (0-100):",slug:"set-the-switchbot-blind-tilt-state-to-a-percentage-0-100"},{level:3,title:"Set the SwitchBot Blind Tilt to Stop:",slug:"set-the-switchbot-blind-tilt-to-stop"},{level:3,title:"Response (assuming success):",slug:"response-assuming-success"},{level:2,title:"SwitchBot Curtain (2/3) control (available with HA discovery)",slug:"switchbot-curtain-2-3-control-available-with-ha-discovery"},{level:3,title:"Set the SwitchBot Curtain state to OPEN:",slug:"set-the-switchbot-curtain-state-to-open"},{level:3,title:"Set the SwitchBot Curtain state to CLOSE:",slug:"set-the-switchbot-curtain-state-to-close"},{level:3,title:"Set the SwitchBot Curtain to a percentage (0-100):",slug:"set-the-switchbot-curtain-to-a-percentage-0-100"},{level:3,title:"Set the SwitchBot Curtain to Stop:",slug:"set-the-switchbot-curtain-to-stop"},{level:3,title:"Response (assuming success):",slug:"response-assuming-success-2"},{level:2,title:"ADVANCED: Setting up an external decoder",slug:"advanced-setting-up-an-external-decoder"},{level:2,title:"ADVANCED: Filtering out connectable devices (default: false)",slug:"advanced-filtering-out-connectable-devices-default-false"},{level:2,title:"ADVANCED: Advertisement and advanced data (default: false, available with HA discovery)",slug:"advanced-advertisement-and-advanced-data-default-false-available-with-ha-discovery"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Boards",frontmatter:{},regularPath:"/use/boards.html",relativePath:"use/boards.md",key:"v-3043a2b9",path:"/use/boards.html",headers:[{level:2,title:"ESP",slug:"esp"},{level:3,title:"Erasing the flash",slug:"erasing-the-flash"},{level:3,title:"Wifi interference on sensors when using an ESP",slug:"wifi-interference-on-sensors-when-using-an-esp"},{level:3,title:"Low power mode for ESP32",slug:"low-power-mode-for-esp32"},{level:2,title:"M5StickC, M5StickC Plus or M5Stack",slug:"m5stickc-m5stickc-plus-or-m5stack"},{level:3,title:"Behaviour",slug:"behaviour"},{level:3,title:"Setting the log output",slug:"setting-the-log-output"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Displays",frontmatter:{},regularPath:"/use/displays.html",relativePath:"use/displays.md",key:"v-288d7b9e",path:"/use/displays.html",headers:[{level:2,title:"SSD1306 Display (Heltec SX127X, LILYGO® LoRa32 boards, generic SSD1306 displays)",slug:"ssd1306-display-heltec-sx127x-lilygo®-lora32-boards-generic-ssd1306-displays"},{level:3,title:"Display ON/OFF",slug:"display-on-off"},{level:3,title:"Brightness",slug:"brightness"},{level:3,title:"Metric or Imperial property units",slug:"metric-or-imperial-property-units"},{level:3,title:"Rotating the display by 180 degrees",slug:"rotating-the-display-by-180-degrees"},{level:3,title:"Display idle Logo",slug:"display-idle-logo"},{level:3,title:"Setting the log output",slug:"setting-the-log-output"},{level:3,title:"Displaying Module json messages (default)",slug:"displaying-module-json-messages-default"},{level:3,title:"Store the current display configuration in the gateway",slug:"store-the-current-display-configuration-in-the-gateway"},{level:3,title:"Connecting a generic SSD1306 display to ESP32",slug:"connecting-a-generic-ssd1306-display-to-esp32"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"System commands (ESP only)",frontmatter:{},regularPath:"/use/gateway.html",relativePath:"use/gateway.md",key:"v-20c05837",path:"/use/gateway.html",headers:[{level:2,title:"Restart the ESP",slug:"restart-the-esp"},{level:2,title:"Erase the ESP settings",slug:"erase-the-esp-settings"},{level:2,title:"Retrieve current status of the ESP",slug:"retrieve-current-status-of-the-esp"},{level:2,title:"Auto discovery",slug:"auto-discovery"},{level:3,title:"Deactivate",slug:"deactivate"},{level:3,title:"Activate",slug:"activate"},{level:2,title:"Activate Offline mode",slug:"activate-offline-mode"},{level:2,title:"Change the WiFi credentials",slug:"change-the-wifi-credentials"},{level:2,title:"Change the gateway password",slug:"change-the-gateway-password"},{level:2,title:"Change the MQTT broker credentials",slug:"change-the-mqtt-broker-credentials"},{level:2,title:"Change the MQTT main topic, discovery prefix, and or gateway name",slug:"change-the-mqtt-main-topic-discovery-prefix-and-or-gateway-name"},{level:2,title:"Switching brokers and using signed and client certificates",slug:"switching-brokers-and-using-signed-and-client-certificates"},{level:2,title:"Saving/Loading connection parameters/certificates at runtime",slug:"saving-loading-connection-parameters-certificates-at-runtime"},{level:3,title:"Storing and Loading Certificates",slug:"storing-and-loading-certificates"},{level:3,title:"Use Case: Changing a Group of Certificates",slug:"use-case-changing-a-group-of-certificates"},{level:2,title:"MQTT",slug:"mqtt"},{level:2,title:"Serial",slug:"serial"},{level:2,title:"Change the LED indicator brightness",slug:"change-the-led-indicator-brightness"},{level:2,title:"Understanding LED Indicators in OpenMQTTGateway",slug:"understanding-led-indicators-in-openmqttgateway"},{level:2,title:"LED Color Guide",slug:"led-color-guide"},{level:2,title:"Understanding Gateway States",slug:"understanding-gateway-states"},{level:3,title:"Power On",slug:"power-on"},{level:3,title:"Processing",slug:"processing"},{level:3,title:"Waiting for Onboarding",slug:"waiting-for-onboarding"},{level:3,title:"Onboarding in Progress",slug:"onboarding-in-progress"},{level:3,title:"Network Connected",slug:"network-connected"},{level:3,title:"Network Disconnected",slug:"network-disconnected"},{level:3,title:"MQTT Broker Connected",slug:"mqtt-broker-connected"},{level:3,title:"MQTT Broker Disconnected",slug:"mqtt-broker-disconnected"},{level:3,title:"Offline",slug:"offline"},{level:3,title:"Local OTA Update",slug:"local-ota-update"},{level:3,title:"Remote OTA Update",slug:"remote-ota-update"},{level:3,title:"Error",slug:"error"},{level:3,title:"Actuator On/Off",slug:"actuator-on-off"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"GSM 2G gateway",frontmatter:{},regularPath:"/use/gsm.html",relativePath:"use/gsm.md",key:"v-131b9357",path:"/use/gsm.html",headers:[{level:2,title:"Receiving SMS from 2G",slug:"receiving-sms-from-2g"},{level:2,title:"Send data by MQTT to send an SMS message with A6/7",slug:"send-data-by-mqtt-to-send-an-sms-message-with-a6-7"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Infrared gateway",frontmatter:{title:"Infrared gateway",description:"Unlock the potential of Infrared technology with our universal gateway. Decode signals from various devices, and integrate seamlessly with MQTT systems abd controllers like Home Assistant and OpenHAB."},regularPath:"/use/ir.html",relativePath:"use/ir.md",key:"v-a9ffe0fe",path:"/use/ir.html",headers:[{level:2,title:"Receiving data from IR signal",slug:"receiving-data-from-ir-signal"},{level:2,title:"Send data by MQTT to convert it on IR signal",slug:"send-data-by-mqtt-to-convert-it-on-ir-signal"},{level:2,title:"Send data by MQTT from Global Caché database to convert it on IR signal",slug:"send-data-by-mqtt-from-global-cache-database-to-convert-it-on-ir-signal"},{level:2,title:"Send data by MQTT with advanced IR parameters",slug:"send-data-by-mqtt-with-advanced-ir-parameters"},{level:2,title:"Send raw IR data by MQTT",slug:"send-raw-ir-data-by-mqtt"},{level:2,title:"Repeat the IR signal OpenMQTTGateway receive",slug:"repeat-the-ir-signal-openmqttgateway-receive"},{level:2,title:"Raw IR signal forwarding",slug:"raw-ir-signal-forwarding"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"LoRa gateway",frontmatter:{title:"LoRa gateway",description:"Explore the LoRa MQTT gateway, designed for integration with devices utilizing LoRa technology, including the MakerFab soil and moisture sensor, devices from PricelessTookit. Unlock long range communication with the power of LoRa.."},regularPath:"/use/lora.html",relativePath:"use/lora.md",key:"v-749f316f",path:"/use/lora.html",headers:[{level:2,title:"What is a LoRa gateway",slug:"what-is-a-lora-gateway"},{level:2,title:"Configuring the LoRa gateway",slug:"configuring-the-lora-gateway"},{level:2,title:"Receiving data from LoRa signal",slug:"receiving-data-from-lora-signal"},{level:2,title:"Send data by MQTT to convert it on LoRa signal",slug:"send-data-by-mqtt-to-convert-it-on-lora-signal"},{level:2,title:"Send data by MQTT with advanced LoRa parameters",slug:"send-data-by-mqtt-with-advanced-lora-parameters"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RF gateways (RTL_433/RCSwitch/RF/RF2)",frontmatter:{title:"RF gateways (RTL_433/RCSwitch/RF/RF2)",description:"Unlock the potential of RF 433 MHz technology with our universal gateway. Decode signals from various devices, and integrate seamlessly with MQTT systems and controllers like Home Assistant and OpenHAB."},regularPath:"/use/rf.html",relativePath:"use/rf.md",key:"v-947f362a",path:"/use/rf.html",headers:[{level:2,title:"What is an RF gateway",slug:"what-is-an-rf-gateway"},{level:2,title:"Common parameters accross modules",slug:"common-parameters-accross-modules"},{level:3,title:"Change default frequency (SX127X and CC1101)",slug:"change-default-frequency-sx127x-and-cc1101"},{level:3,title:"Changing Active Receiver Modules",slug:"changing-active-receiver-modules"},{level:2,title:"RTL_433 device decoders",slug:"rtl-433-device-decoders"},{level:3,title:"Supported hardware combinations",slug:"supported-hardware-combinations"},{level:3,title:"Supported Decoders",slug:"supported-decoders"},{level:3,title:"Change Signal RSSI Threshold Delta",slug:"change-signal-rssi-threshold-delta"},{level:3,title:"Retrieve current status of receiver",slug:"retrieve-current-status-of-receiver"},{level:2,title:"RCSwitch based gateway",slug:"rcswitch-based-gateway"},{level:3,title:"Handling RF signal over MQTT",slug:"handling-rf-signal-over-mqtt"},{level:3,title:"Send data by MQTT with advanced RF parameters",slug:"send-data-by-mqtt-with-advanced-rf-parameters"},{level:2,title:"Pilight gateway",slug:"pilight-gateway"},{level:3,title:"Receiving data from RF signal",slug:"receiving-data-from-rf-signal-2"},{level:3,title:"Limit Protocols",slug:"limit-protocols"},{level:3,title:"Send data by MQTT to transmit a RF signal",slug:"send-data-by-mqtt-to-transmit-a-rf-signal"},{level:2,title:"RF with SONOFF RF BRIDGE",slug:"rf-with-sonoff-rf-bridge"},{level:3,title:"Receiving data from RF signal",slug:"receiving-data-from-rf-signal-3"},{level:3,title:"Send data by MQTT to convert it on RF signal",slug:"send-data-by-mqtt-to-convert-it-on-rf-signal"},{level:3,title:"Send data by MQTT with advanced RF parameters",slug:"send-data-by-mqtt-with-advanced-rf-parameters-2"},{level:2,title:"RF2 gateway KAKU",slug:"rf2-gateway-kaku"},{level:3,title:"Receiving data from KAKU signal",slug:"receiving-data-from-kaku-signal"},{level:3,title:"Send data by MQTT to convert it on KAKU signal",slug:"send-data-by-mqtt-to-convert-it-on-kaku-signal"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RFM69 gateway",frontmatter:{},regularPath:"/use/rfm69.html",relativePath:"use/rfm69.md",key:"v-21b208b7",path:"/use/rfm69.html",headers:[{level:3,title:"Receiving data from RFM signal",slug:"receiving-data-from-rfm-signal"},{level:3,title:"Send data by MQTT to convert it on RFM69 signal",slug:"send-data-by-mqtt-to-convert-it-on-rfm69-signal"},{level:3,title:"Send data by MQTT with advanced RFM69 parameters",slug:"send-data-by-mqtt-with-advanced-rfm69-parameters"},{level:3,title:"RFM69 acknowledgment",slug:"rfm69-acknowledgment"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"Sensors",frontmatter:{},regularPath:"/use/sensors.html",relativePath:"use/sensors.md",key:"v-2494b4d7",path:"/use/sensors.html",headers:[{level:3,title:"ADC",slug:"adc"},{level:3,title:"DHT",slug:"dht"},{level:3,title:"HTU21",slug:"htu21"},{level:3,title:"AHTx0 (AHT10 and AHT20)",slug:"ahtx0-aht10-and-aht20"},{level:3,title:"DS18x20",slug:"ds18x20"},{level:3,title:"HCSR501",slug:"hcsr501"},{level:3,title:"RN8209",slug:"rn8209"},{level:3,title:"Touch",slug:"touch"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"RS232/Serial gateway",frontmatter:{},regularPath:"/use/serial.html",relativePath:"use/serial.md",key:"v-93d2a72a",path:"/use/serial.html",headers:[{level:2,title:"Sending an SERIAL message",slug:"sending-an-serial-message"},{level:2,title:"Receiving an SERIAL message",slug:"receiving-an-serial-message"},{level:3,title:"Single MQTT message mode (default)",slug:"single-mqtt-message-mode-default"},{level:3,title:"JSON mode",slug:"json-mode"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3},{title:"WebUI",frontmatter:{},regularPath:"/use/webui.html",relativePath:"use/webui.md",key:"v-2566e137",path:"/use/webui.html",headers:[{level:2,title:"WiFi",slug:"wifi"},{level:2,title:"MQTT",slug:"mqtt"},{level:2,title:"WebUI",slug:"webui-2"},{level:2,title:"Bluetooth Low Energy - BLE",slug:"bluetooth-low-energy-ble"},{level:2,title:"Logging",slug:"logging"}],lastUpdated:"12/7/2025, 10:45:07 PM",lastUpdatedTimestamp:1765147507e3}],themeConfig:{repo:"1technophile/OpenMQTTGateway",docsDir:"docs",smoothScroll:!0,search:!1,docsBranch:"development",lastUpdated:"Last Updated",editLinks:!0,nav:[{text:"Home",link:"https://www.theengs.io",target:"_self",rel:""},{text:"Use cases",items:[{text:"Smart Home",link:"https://www.theengs.io/usecases/smarthome.html",target:"_self",rel:""},{text:"IoT",link:"https://www.theengs.io/usecases/iot.html",target:"_self",rel:""},{text:"Research",link:"https://www.theengs.io/usecases/research.html",target:"_self",rel:""}]},{text:"Solutions",items:[{text:"Hardware",items:[{text:"Theengs Plug",link:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_self",rel:""},{text:"Theengs Bridge",link:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_self",rel:""}]},{text:"Software",items:[{text:"Mobile App",link:"https://app.theengs.io",target:"_self",rel:""},{text:"OpenMQTTGateway",link:"https://docs.openmqttgateway.com",target:"_self",rel:""},{text:"Gateway",link:"https://gateway.theengs.io",target:"_self",rel:""}]},{text:"Core",items:[{text:"Decoder",link:"https://decoder.theengs.io",target:"_self",rel:""},{text:"Web Parser",link:"https://parser.theengs.io",target:"_self",rel:""}]}]},{text:"Compatible devices",link:"https://decoder.theengs.io/devices/devices.html",target:"_self",rel:""},{text:"Community",link:"https://community.openmqttgateway.com",target:"_self",rel:""},{text:"Shop",link:"https://shop.theengs.io/",target:"_self",rel:""},{text:"Sponsor 🤍",link:"https://github.com/sponsors/theengs",target:"_self",rel:""}],sidebar:[["/","0 - What is it for 🏠"],{title:"1 - Prerequisites🧭",sidebarDepth:1,children:["prerequisites/devices","prerequisites/board","prerequisites/parts","prerequisites/broker","prerequisites/controller"]},{title:"2 - Set it up 🔨",sidebarDepth:1,children:["setitup/rf","setitup/ble","setitup/ir","setitup/lora","setitup/gsm","setitup/serial","setitup/sensors","setitup/actuators"]},{title:"3 - Upload ➡️",sidebarDepth:1,children:["upload/web-install","upload/binaries","upload/builds","upload/gitpod","upload/portal","upload/advanced-configuration","upload/troubleshoot"]},{title:"4 - Use ✈️",sidebarDepth:1,children:["use/rf","use/ble","use/ir","use/lora","use/gsm","use/serial","use/rfm69","use/sensors","use/actuators","use/boards","use/displays","use/gateway","use/webui"]},{title:"5 - Integrate 🎉",sidebarDepth:1,children:["integrate/openhab2","integrate/openhab3","integrate/home_assistant","integrate/node_red","integrate/aws_iot","integrate/jeedom"]},{title:"6 - Participate 💻",sidebarDepth:1,children:["participate/support","participate/development","participate/adding-protocols","participate/community",["https://github.com/1technophile/OpenMQTTGateway/blob/development/LICENSE.txt","License"]]}]}};n(235);Qn.component("web-uploader",()=>n.e(47).then(n.bind(null,423))),Qn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,424))),Qn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,419))),Qn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,420)));n(236),n(237);function Rs(t){const e=document.documentElement.getBoundingClientRect(),n=t.getBoundingClientRect();return{x:n.left-e.left,y:n.top-e.top}}var Us=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({Vue:t,router:e})=>{e.options.scrollBehavior=(e,n,r)=>{if(r)return window.scrollTo({top:r.y,behavior:"smooth"});if(e.hash){if(t.$vuepress.$get("disableScrollBehavior"))return!1;const n=document.querySelector(e.hash);return!!n&&window.scrollTo({top:Rs(n).y,behavior:"smooth"})}return window.scrollTo({top:0,behavior:"smooth"})}}],Is=[];class Bs extends class{constructor(){this.store=new Qn({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){Qn.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}{}Object.assign(Bs.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:cs,getVueComponent:us});var Ds={install(t){const e=new Bs;t.$vuepress=e,t.prototype.$vuepress=e}};function Fs(t,e){const n=e.toLowerCase();return t.options.routes.some(t=>t.path.toLowerCase()===n)}var qs={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return ps("pageKey",e),Qn.component(e)||Qn.component(e,ss(e)),Qn.component(e)?t(e):t("")}},Ns={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:["content__"+e.slotKey]},n()[e.slotKey])},Hs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},zs=(n(238),n(239),Object($s.a)(Hs,(function(){var t=this._self._c;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Vs={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};Qn.config.productionTip=!1,Qn.use(Va),Qn.use(Ds),Qn.mixin(function(t,e,n=Qn){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:t}=this.$page.frontmatter;return"string"==typeof t&&t}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!Qn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(t.hash)}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(Fs(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Fs(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Fs(t,o)?r(o):Fs(t,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Us.filter(t=>"function"==typeof t).map(e=>e({Vue:Qn,options:r,router:n,siteData:Ls,isServer:t})))}catch(t){console.error(t)}return{app:new Qn(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},Is.map(e=>t(e)))])})),router:n}}(!1).then(({app:t,router:e})=>{e.onReady(()=>{t.$mount("#app")})})}]); \ No newline at end of file diff --git a/dev/firmware_build/airm2m_core_esp32c3-firmware.bin b/dev/firmware_build/airm2m_core_esp32c3-firmware.bin index 69e0ce9d..2df8b400 100644 Binary files a/dev/firmware_build/airm2m_core_esp32c3-firmware.bin and b/dev/firmware_build/airm2m_core_esp32c3-firmware.bin differ diff --git a/dev/firmware_build/esp32-lolin32lite-ble-firmware.bin b/dev/firmware_build/esp32-lolin32lite-ble-firmware.bin index bfc17d8b..f45e4202 100644 Binary files a/dev/firmware_build/esp32-lolin32lite-ble-firmware.bin and b/dev/firmware_build/esp32-lolin32lite-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32-m5atom-lite-firmware.bin b/dev/firmware_build/esp32-m5atom-lite-firmware.bin index 7a1c6607..8985a182 100644 Binary files a/dev/firmware_build/esp32-m5atom-lite-firmware.bin and b/dev/firmware_build/esp32-m5atom-lite-firmware.bin differ diff --git a/dev/firmware_build/esp32-m5atom-matrix-firmware.bin b/dev/firmware_build/esp32-m5atom-matrix-firmware.bin index f11f1f60..1e5f3b81 100644 Binary files a/dev/firmware_build/esp32-m5atom-matrix-firmware.bin and b/dev/firmware_build/esp32-m5atom-matrix-firmware.bin differ diff --git a/dev/firmware_build/esp32-m5stack-ble-firmware.bin b/dev/firmware_build/esp32-m5stack-ble-firmware.bin index 069c9030..45c2fcdb 100644 Binary files a/dev/firmware_build/esp32-m5stack-ble-firmware.bin and b/dev/firmware_build/esp32-m5stack-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32-m5stick-ble-firmware.bin b/dev/firmware_build/esp32-m5stick-ble-firmware.bin index 662fc031..cce1e7a9 100644 Binary files a/dev/firmware_build/esp32-m5stick-ble-firmware.bin and b/dev/firmware_build/esp32-m5stick-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32-m5stick-c-ble-firmware.bin b/dev/firmware_build/esp32-m5stick-c-ble-firmware.bin index 5567e33d..588e8d94 100644 Binary files a/dev/firmware_build/esp32-m5stick-c-ble-firmware.bin and b/dev/firmware_build/esp32-m5stick-c-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32-m5stick-cp-ble-firmware.bin b/dev/firmware_build/esp32-m5stick-cp-ble-firmware.bin index 83450a1b..5c5b1853 100644 Binary files a/dev/firmware_build/esp32-m5stick-cp-ble-firmware.bin and b/dev/firmware_build/esp32-m5stick-cp-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32-m5tough-ble-firmware.bin b/dev/firmware_build/esp32-m5tough-ble-firmware.bin index c933c690..f88a3617 100644 Binary files a/dev/firmware_build/esp32-m5tough-ble-firmware.bin and b/dev/firmware_build/esp32-m5tough-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32-olimex-gtw-ble-eth-firmware.bin b/dev/firmware_build/esp32-olimex-gtw-ble-eth-firmware.bin index 9cd5a0ba..cdcf3b35 100644 Binary files a/dev/firmware_build/esp32-olimex-gtw-ble-eth-firmware.bin and b/dev/firmware_build/esp32-olimex-gtw-ble-eth-firmware.bin differ diff --git a/dev/firmware_build/esp32-olimex-gtw-ble-poe-firmware.bin b/dev/firmware_build/esp32-olimex-gtw-ble-poe-firmware.bin index c8a53fa0..7e703d47 100644 Binary files a/dev/firmware_build/esp32-olimex-gtw-ble-poe-firmware.bin and b/dev/firmware_build/esp32-olimex-gtw-ble-poe-firmware.bin differ diff --git a/dev/firmware_build/esp32-olimex-gtw-ble-poe-iso-firmware.bin b/dev/firmware_build/esp32-olimex-gtw-ble-poe-iso-firmware.bin index 6195f555..ccb23370 100644 Binary files a/dev/firmware_build/esp32-olimex-gtw-ble-poe-iso-firmware.bin and b/dev/firmware_build/esp32-olimex-gtw-ble-poe-iso-firmware.bin differ diff --git a/dev/firmware_build/esp32-olimex-gtw-ble-wifi-firmware.bin b/dev/firmware_build/esp32-olimex-gtw-ble-wifi-firmware.bin index f492a890..5900c956 100644 Binary files a/dev/firmware_build/esp32-olimex-gtw-ble-wifi-firmware.bin and b/dev/firmware_build/esp32-olimex-gtw-ble-wifi-firmware.bin differ diff --git a/dev/firmware_build/esp32-wt32-eth01-ble-eth-firmware.bin b/dev/firmware_build/esp32-wt32-eth01-ble-eth-firmware.bin index bb61c3d7..e4e6e0ec 100644 Binary files a/dev/firmware_build/esp32-wt32-eth01-ble-eth-firmware.bin and b/dev/firmware_build/esp32-wt32-eth01-ble-eth-firmware.bin differ diff --git a/dev/firmware_build/esp32c3-dev-c2-ble-firmware.bin b/dev/firmware_build/esp32c3-dev-c2-ble-firmware.bin index 2f0ded33..056e2e26 100644 Binary files a/dev/firmware_build/esp32c3-dev-c2-ble-firmware.bin and b/dev/firmware_build/esp32c3-dev-c2-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32c3-dev-c2-ble-no-serial-firmware.bin b/dev/firmware_build/esp32c3-dev-c2-ble-no-serial-firmware.bin index 8b3a700a..e3102b9f 100644 Binary files a/dev/firmware_build/esp32c3-dev-c2-ble-no-serial-firmware.bin and b/dev/firmware_build/esp32c3-dev-c2-ble-no-serial-firmware.bin differ diff --git a/dev/firmware_build/esp32c3-dev-m1-ble-firmware.bin b/dev/firmware_build/esp32c3-dev-m1-ble-firmware.bin index 97f2526a..2ca5ac36 100644 Binary files a/dev/firmware_build/esp32c3-dev-m1-ble-firmware.bin and b/dev/firmware_build/esp32c3-dev-m1-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32c3-m5stamp-firmware.bin b/dev/firmware_build/esp32c3-m5stamp-firmware.bin index a3eff5f0..25745316 100644 Binary files a/dev/firmware_build/esp32c3-m5stamp-firmware.bin and b/dev/firmware_build/esp32c3-m5stamp-firmware.bin differ diff --git a/dev/firmware_build/esp32c3_lolin_mini-firmware.bin b/dev/firmware_build/esp32c3_lolin_mini-firmware.bin index fefd813e..739cd87f 100644 Binary files a/dev/firmware_build/esp32c3_lolin_mini-firmware.bin and b/dev/firmware_build/esp32c3_lolin_mini-firmware.bin differ diff --git a/dev/firmware_build/esp32c3_lolin_mini_with_serial-firmware.bin b/dev/firmware_build/esp32c3_lolin_mini_with_serial-firmware.bin index a779c0aa..d826df4d 100644 Binary files a/dev/firmware_build/esp32c3_lolin_mini_with_serial-firmware.bin and b/dev/firmware_build/esp32c3_lolin_mini_with_serial-firmware.bin differ diff --git a/dev/firmware_build/esp32c3u-m5stamp-firmware.bin b/dev/firmware_build/esp32c3u-m5stamp-firmware.bin index 818744af..bac9688e 100644 Binary files a/dev/firmware_build/esp32c3u-m5stamp-firmware.bin and b/dev/firmware_build/esp32c3u-m5stamp-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-ble-aws-firmware.bin b/dev/firmware_build/esp32dev-ble-aws-firmware.bin index 4bd53d1d..c8e01dcf 100644 Binary files a/dev/firmware_build/esp32dev-ble-aws-firmware.bin and b/dev/firmware_build/esp32dev-ble-aws-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-ble-broker-firmware.bin b/dev/firmware_build/esp32dev-ble-broker-firmware.bin index 8068db5e..6ecf7ad0 100644 Binary files a/dev/firmware_build/esp32dev-ble-broker-firmware.bin and b/dev/firmware_build/esp32dev-ble-broker-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-ble-datatest-firmware.bin b/dev/firmware_build/esp32dev-ble-datatest-firmware.bin index 860c781b..68f89cb2 100644 Binary files a/dev/firmware_build/esp32dev-ble-datatest-firmware.bin and b/dev/firmware_build/esp32dev-ble-datatest-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-ble-firmware.bin b/dev/firmware_build/esp32dev-ble-firmware.bin index 6f9e9b2b..d78e7b5c 100644 Binary files a/dev/firmware_build/esp32dev-ble-firmware.bin and b/dev/firmware_build/esp32dev-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-ble-idf-bootloader.bin b/dev/firmware_build/esp32dev-ble-idf-bootloader.bin index 88c536cb..fcef1054 100644 Binary files a/dev/firmware_build/esp32dev-ble-idf-bootloader.bin and b/dev/firmware_build/esp32dev-ble-idf-bootloader.bin differ diff --git a/dev/firmware_build/esp32dev-ble-idf-firmware.bin b/dev/firmware_build/esp32dev-ble-idf-firmware.bin index 6ceeb6c6..abd8352c 100644 Binary files a/dev/firmware_build/esp32dev-ble-idf-firmware.bin and b/dev/firmware_build/esp32dev-ble-idf-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-ble-mqtt-undecoded-firmware.bin b/dev/firmware_build/esp32dev-ble-mqtt-undecoded-firmware.bin index 143b0b38..6986718b 100644 Binary files a/dev/firmware_build/esp32dev-ble-mqtt-undecoded-firmware.bin and b/dev/firmware_build/esp32dev-ble-mqtt-undecoded-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-gf-sun-inverter-firmware.bin b/dev/firmware_build/esp32dev-gf-sun-inverter-firmware.bin index 836d5264..dd110cd2 100644 Binary files a/dev/firmware_build/esp32dev-gf-sun-inverter-firmware.bin and b/dev/firmware_build/esp32dev-gf-sun-inverter-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-ir-firmware.bin b/dev/firmware_build/esp32dev-ir-firmware.bin index ec4a2e6f..699fcf29 100644 Binary files a/dev/firmware_build/esp32dev-ir-firmware.bin and b/dev/firmware_build/esp32dev-ir-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-multi_receiver-firmware.bin b/dev/firmware_build/esp32dev-multi_receiver-firmware.bin index 02bc7a06..d3c3e319 100644 Binary files a/dev/firmware_build/esp32dev-multi_receiver-firmware.bin and b/dev/firmware_build/esp32dev-multi_receiver-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-multi_receiver-pilight-firmware.bin b/dev/firmware_build/esp32dev-multi_receiver-pilight-firmware.bin index 69d73882..afe41015 100644 Binary files a/dev/firmware_build/esp32dev-multi_receiver-pilight-firmware.bin and b/dev/firmware_build/esp32dev-multi_receiver-pilight-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-pilight-cc1101-firmware.bin b/dev/firmware_build/esp32dev-pilight-cc1101-firmware.bin index ace06034..42f47b2c 100644 Binary files a/dev/firmware_build/esp32dev-pilight-cc1101-firmware.bin and b/dev/firmware_build/esp32dev-pilight-cc1101-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-pilight-firmware.bin b/dev/firmware_build/esp32dev-pilight-firmware.bin index ff77d27d..42aba076 100644 Binary files a/dev/firmware_build/esp32dev-pilight-firmware.bin and b/dev/firmware_build/esp32dev-pilight-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-pilight-somfy-cc1101-firmware.bin b/dev/firmware_build/esp32dev-pilight-somfy-cc1101-firmware.bin index 9995a368..b2ed5ce1 100644 Binary files a/dev/firmware_build/esp32dev-pilight-somfy-cc1101-firmware.bin and b/dev/firmware_build/esp32dev-pilight-somfy-cc1101-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-rf-firmware.bin b/dev/firmware_build/esp32dev-rf-firmware.bin index 954531a4..ffd42477 100644 Binary files a/dev/firmware_build/esp32dev-rf-firmware.bin and b/dev/firmware_build/esp32dev-rf-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-rtl_433-firmware.bin b/dev/firmware_build/esp32dev-rtl_433-firmware.bin index 011f94b0..9a493297 100644 Binary files a/dev/firmware_build/esp32dev-rtl_433-firmware.bin and b/dev/firmware_build/esp32dev-rtl_433-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-rtl_433-fsk-firmware.bin b/dev/firmware_build/esp32dev-rtl_433-fsk-firmware.bin index 6d2a8b8c..bab3f7f5 100644 Binary files a/dev/firmware_build/esp32dev-rtl_433-fsk-firmware.bin and b/dev/firmware_build/esp32dev-rtl_433-fsk-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-somfy-cc1101-firmware.bin b/dev/firmware_build/esp32dev-somfy-cc1101-firmware.bin index 906b8974..2d2dea9b 100644 Binary files a/dev/firmware_build/esp32dev-somfy-cc1101-firmware.bin and b/dev/firmware_build/esp32dev-somfy-cc1101-firmware.bin differ diff --git a/dev/firmware_build/esp32dev-weatherstation-firmware.bin b/dev/firmware_build/esp32dev-weatherstation-firmware.bin index 4718006b..f8319819 100644 Binary files a/dev/firmware_build/esp32dev-weatherstation-firmware.bin and b/dev/firmware_build/esp32dev-weatherstation-firmware.bin differ diff --git a/dev/firmware_build/esp32doitv1-aithinker-r01-sx1278-firmware.bin b/dev/firmware_build/esp32doitv1-aithinker-r01-sx1278-firmware.bin index 726a78ca..39f6b78f 100644 Binary files a/dev/firmware_build/esp32doitv1-aithinker-r01-sx1278-firmware.bin and b/dev/firmware_build/esp32doitv1-aithinker-r01-sx1278-firmware.bin differ diff --git a/dev/firmware_build/esp32feather-ble-firmware.bin b/dev/firmware_build/esp32feather-ble-firmware.bin index f0955650..2037c000 100644 Binary files a/dev/firmware_build/esp32feather-ble-firmware.bin and b/dev/firmware_build/esp32feather-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32s3-atomS3U-firmware.bin b/dev/firmware_build/esp32s3-atomS3U-firmware.bin index e31581e2..08436704 100644 Binary files a/dev/firmware_build/esp32s3-atomS3U-firmware.bin and b/dev/firmware_build/esp32s3-atomS3U-firmware.bin differ diff --git a/dev/firmware_build/esp32s3-dev-c1-ble-firmware.bin b/dev/firmware_build/esp32s3-dev-c1-ble-firmware.bin index 55eeb543..95eabadb 100644 Binary files a/dev/firmware_build/esp32s3-dev-c1-ble-firmware.bin and b/dev/firmware_build/esp32s3-dev-c1-ble-firmware.bin differ diff --git a/dev/firmware_build/esp32s3-m5stack-stamps3-firmware.bin b/dev/firmware_build/esp32s3-m5stack-stamps3-firmware.bin index 2ad49411..87502db2 100644 Binary files a/dev/firmware_build/esp32s3-m5stack-stamps3-firmware.bin and b/dev/firmware_build/esp32s3-m5stack-stamps3-firmware.bin differ diff --git a/dev/firmware_build/heltec-ble-firmware.bin b/dev/firmware_build/heltec-ble-firmware.bin index 22a454a4..2bc87878 100644 Binary files a/dev/firmware_build/heltec-ble-firmware.bin and b/dev/firmware_build/heltec-ble-firmware.bin differ diff --git a/dev/firmware_build/heltec-rtl_433-firmware.bin b/dev/firmware_build/heltec-rtl_433-firmware.bin index 912df94a..23e96da4 100644 Binary files a/dev/firmware_build/heltec-rtl_433-firmware.bin and b/dev/firmware_build/heltec-rtl_433-firmware.bin differ diff --git a/dev/firmware_build/heltec-rtl_433-fsk-firmware.bin b/dev/firmware_build/heltec-rtl_433-fsk-firmware.bin index b186fb1d..c8f230f6 100644 Binary files a/dev/firmware_build/heltec-rtl_433-fsk-firmware.bin and b/dev/firmware_build/heltec-rtl_433-fsk-firmware.bin differ diff --git a/dev/firmware_build/heltec-wifi-lora-32-firmware.bin b/dev/firmware_build/heltec-wifi-lora-32-firmware.bin index 0a02c6d1..bdb24ead 100644 Binary files a/dev/firmware_build/heltec-wifi-lora-32-firmware.bin and b/dev/firmware_build/heltec-wifi-lora-32-firmware.bin differ diff --git a/dev/firmware_build/lilygo-ble-firmware.bin b/dev/firmware_build/lilygo-ble-firmware.bin index dd9e6b2c..36abb655 100644 Binary files a/dev/firmware_build/lilygo-ble-firmware.bin and b/dev/firmware_build/lilygo-ble-firmware.bin differ diff --git a/dev/firmware_build/lilygo-rtl_433-firmware.bin b/dev/firmware_build/lilygo-rtl_433-firmware.bin index 3d167472..45a72bb1 100644 Binary files a/dev/firmware_build/lilygo-rtl_433-firmware.bin and b/dev/firmware_build/lilygo-rtl_433-firmware.bin differ diff --git a/dev/firmware_build/lilygo-rtl_433-fsk-firmware.bin b/dev/firmware_build/lilygo-rtl_433-fsk-firmware.bin index 84a9a61d..1b39f28b 100644 Binary files a/dev/firmware_build/lilygo-rtl_433-fsk-firmware.bin and b/dev/firmware_build/lilygo-rtl_433-fsk-firmware.bin differ diff --git a/dev/firmware_build/lilygo-t3-s3-rtl_433-firmware.bin b/dev/firmware_build/lilygo-t3-s3-rtl_433-firmware.bin index 385e45d9..99f201e0 100644 Binary files a/dev/firmware_build/lilygo-t3-s3-rtl_433-firmware.bin and b/dev/firmware_build/lilygo-t3-s3-rtl_433-firmware.bin differ diff --git a/dev/firmware_build/lilygo-t3-s3-rtl_433-fsk-firmware.bin b/dev/firmware_build/lilygo-t3-s3-rtl_433-fsk-firmware.bin index dabcd2cf..6e426cb6 100644 Binary files a/dev/firmware_build/lilygo-t3-s3-rtl_433-fsk-firmware.bin and b/dev/firmware_build/lilygo-t3-s3-rtl_433-fsk-firmware.bin differ diff --git a/dev/firmware_build/shelly-plus1-firmware.bin b/dev/firmware_build/shelly-plus1-firmware.bin index 01114100..00263ba3 100644 Binary files a/dev/firmware_build/shelly-plus1-firmware.bin and b/dev/firmware_build/shelly-plus1-firmware.bin differ diff --git a/dev/firmware_build/theengs-bridge-firmware.bin b/dev/firmware_build/theengs-bridge-firmware.bin index 3d6950c9..2a3933d0 100644 Binary files a/dev/firmware_build/theengs-bridge-firmware.bin and b/dev/firmware_build/theengs-bridge-firmware.bin differ diff --git a/dev/firmware_build/theengs-bridge-v11-firmware.bin b/dev/firmware_build/theengs-bridge-v11-firmware.bin index a656a5fa..b6db4989 100644 Binary files a/dev/firmware_build/theengs-bridge-v11-firmware.bin and b/dev/firmware_build/theengs-bridge-v11-firmware.bin differ diff --git a/dev/firmware_build/theengs-plug-firmware.bin b/dev/firmware_build/theengs-plug-firmware.bin index dec6f30e..7c1b5188 100644 Binary files a/dev/firmware_build/theengs-plug-firmware.bin and b/dev/firmware_build/theengs-plug-firmware.bin differ diff --git a/dev/firmware_build/thingpulse-espgateway-firmware.bin b/dev/firmware_build/thingpulse-espgateway-firmware.bin index af9d2b57..d1ef8944 100644 Binary files a/dev/firmware_build/thingpulse-espgateway-firmware.bin and b/dev/firmware_build/thingpulse-espgateway-firmware.bin differ diff --git a/dev/firmware_build/tinypico-ble-firmware.bin b/dev/firmware_build/tinypico-ble-firmware.bin index 71a03bbe..76fa70df 100644 Binary files a/dev/firmware_build/tinypico-ble-firmware.bin and b/dev/firmware_build/tinypico-ble-firmware.bin differ diff --git a/dev/firmware_build/ttgo-lora32-v1-firmware.bin b/dev/firmware_build/ttgo-lora32-v1-firmware.bin index 4ad34a17..a410c174 100644 Binary files a/dev/firmware_build/ttgo-lora32-v1-firmware.bin and b/dev/firmware_build/ttgo-lora32-v1-firmware.bin differ diff --git a/dev/firmware_build/ttgo-lora32-v21-firmware.bin b/dev/firmware_build/ttgo-lora32-v21-firmware.bin index a7fd456c..535aa034 100644 Binary files a/dev/firmware_build/ttgo-lora32-v21-firmware.bin and b/dev/firmware_build/ttgo-lora32-v21-firmware.bin differ diff --git a/dev/firmware_build/ttgo-t-beam-firmware.bin b/dev/firmware_build/ttgo-t-beam-firmware.bin index d712c7ce..843bd368 100644 Binary files a/dev/firmware_build/ttgo-t-beam-firmware.bin and b/dev/firmware_build/ttgo-t-beam-firmware.bin differ diff --git a/dev/index.html b/dev/index.html index 9cc46648..5be023f3 100644 --- a/dev/index.html +++ b/dev/index.html @@ -19,7 +19,7 @@ - + @@ -106,6 +106,6 @@ BLE to MQTT gateway can also run on Raspberry Pi, Windows or Unix computers than →

- + diff --git a/dev/integrate/aws_iot.html b/dev/integrate/aws_iot.html index 7632be7a..1f7d6157 100644 --- a/dev/integrate/aws_iot.html +++ b/dev/integrate/aws_iot.html @@ -19,7 +19,7 @@ - + @@ -126,6 +126,6 @@ →

- + diff --git a/dev/integrate/home_assistant.html b/dev/integrate/home_assistant.html index 2e7bffaa..8e470619 100644 --- a/dev/integrate/home_assistant.html +++ b/dev/integrate/home_assistant.html @@ -19,7 +19,7 @@ - + @@ -312,6 +312,6 @@ mqtt: !include homed-mqtt.yaml →

- + diff --git a/dev/integrate/jeedom.html b/dev/integrate/jeedom.html index 0c81929e..16d0bf2d 100644 --- a/dev/integrate/jeedom.html +++ b/dev/integrate/jeedom.html @@ -19,7 +19,7 @@ - + @@ -112,6 +112,6 @@ Creation of "uptime", "freemem", "frestack" and &q →

- + diff --git a/dev/integrate/node_red.html b/dev/integrate/node_red.html index e46474e9..68e9ea89 100644 --- a/dev/integrate/node_red.html +++ b/dev/integrate/node_red.html @@ -19,7 +19,7 @@ - + @@ -334,6 +334,6 @@ →

- + diff --git a/dev/integrate/openhab2.html b/dev/integrate/openhab2.html index c78cb89f..66d9a592 100644 --- a/dev/integrate/openhab2.html +++ b/dev/integrate/openhab2.html @@ -19,7 +19,7 @@ - + @@ -143,6 +143,6 @@ end →

- + diff --git a/dev/integrate/openhab3.html b/dev/integrate/openhab3.html index cc720059..850925e5 100644 --- a/dev/integrate/openhab3.html +++ b/dev/integrate/openhab3.html @@ -19,7 +19,7 @@ - + @@ -109,6 +109,6 @@ After this tutorial, you should see your Bluetooth Low Energy devices in OpenHAB →

- + diff --git a/dev/participate/adding-protocols.html b/dev/participate/adding-protocols.html index 07a5ddb3..cf91c9dc 100644 --- a/dev/participate/adding-protocols.html +++ b/dev/participate/adding-protocols.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/dev/participate/community.html b/dev/participate/community.html index 7adb095f..c23c6e6f 100644 --- a/dev/participate/community.html +++ b/dev/participate/community.html @@ -19,7 +19,7 @@ - + @@ -109,6 +109,6 @@ (opens new window)

- + diff --git a/dev/participate/development.html b/dev/participate/development.html index b1ed98fc..d4c14bf3 100644 --- a/dev/participate/development.html +++ b/dev/participate/development.html @@ -19,7 +19,7 @@ - + @@ -133,6 +133,6 @@ They are generated from the development branch nightly or from a particular pull →

- + diff --git a/dev/participate/support.html b/dev/participate/support.html index f54c8e8d..8a3cb45d 100644 --- a/dev/participate/support.html +++ b/dev/participate/support.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/dev/prerequisites/M5.html b/dev/prerequisites/M5.html index 86649b52..906dd8e0 100644 --- a/dev/prerequisites/M5.html +++ b/dev/prerequisites/M5.html @@ -19,7 +19,7 @@ - + @@ -102,6 +102,6 @@ (opens new window)

# M5 Boards

M5 boards, manufactured by M5Stack (opens new window) are inexpensive, well featured boards based on ESP32.

# M5StickC and M5Stack

M5StickC and M5Stack are supported by OpenMQTTGateway and provide the following features:

# 3 low power modes

# Always ON display

The display is always ON but decrease its brightness when not processing.

# ON display when processing

The display is OFF when not processing and the ESP32 is put in low power mode.

# Always OFF display

The display is always OFF, if the board has a led, the led is used when processing.

To change the low power mode you can do it by MQTT or by pushing the middle button (btn B) of the M5Stack and the top button (btn B) of the M5Stick C

# Start screen

MStack core logo

# Sleep screen

The screen brightness is put to a minimum so as to reduce power consumption. M5Stack core brightness

# Log display in case of warning

If the gateway detects a warning or an error the sleep go out the sleep screen and show the message with a red (error) or orange (warning) background. M5 Stack core warning

The M5Stick support low power mode 2 but its display is not supported for the moment.

- + diff --git a/dev/prerequisites/board.html b/dev/prerequisites/board.html index 4337a2a3..8f3514af 100644 --- a/dev/prerequisites/board.html +++ b/dev/prerequisites/board.html @@ -19,7 +19,7 @@ - + @@ -111,6 +111,6 @@ To have a good overview of the compatibilities per board you can refer to the co →

- + diff --git a/dev/prerequisites/broker.html b/dev/prerequisites/broker.html index dfd1ae0a..e57a700a 100644 --- a/dev/prerequisites/broker.html +++ b/dev/prerequisites/broker.html @@ -19,7 +19,7 @@ - + @@ -110,6 +110,6 @@ Here is also some - + diff --git a/dev/prerequisites/controller.html b/dev/prerequisites/controller.html index e44242f0..3c6c15d5 100644 --- a/dev/prerequisites/controller.html +++ b/dev/prerequisites/controller.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@

- + diff --git a/dev/prerequisites/devices.html b/dev/prerequisites/devices.html index 3f1452ce..686089f1 100644 --- a/dev/prerequisites/devices.html +++ b/dev/prerequisites/devices.html @@ -19,7 +19,7 @@ - + @@ -110,6 +110,6 @@ Added to that it retrieves the measures from the devices mentioned and linked to →

- + diff --git a/dev/prerequisites/parts.html b/dev/prerequisites/parts.html index 014ab97b..d64ef3e3 100644 --- a/dev/prerequisites/parts.html +++ b/dev/prerequisites/parts.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/dev/setitup/actuators.html b/dev/setitup/actuators.html index f001853c..7de527e3 100644 --- a/dev/setitup/actuators.html +++ b/dev/setitup/actuators.html @@ -19,7 +19,7 @@ - + @@ -112,6 +112,6 @@ The wiring of the hardware is described in the RF gateway.

< →

- + diff --git a/dev/setitup/ble.html b/dev/setitup/ble.html index fed8048d..74830044 100644 --- a/dev/setitup/ble.html +++ b/dev/setitup/ble.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/dev/setitup/gsm.html b/dev/setitup/gsm.html index 6a1897ae..a2ca9eb8 100644 --- a/dev/setitup/gsm.html +++ b/dev/setitup/gsm.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/dev/setitup/ir.html b/dev/setitup/ir.html index 2abc285f..c86148f5 100644 --- a/dev/setitup/ir.html +++ b/dev/setitup/ir.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/dev/setitup/lora.html b/dev/setitup/lora.html index f4e900c3..ff09922b 100644 --- a/dev/setitup/lora.html +++ b/dev/setitup/lora.html @@ -19,7 +19,7 @@ - + @@ -109,6 +109,6 @@ Ideally a TTGO board with LoRa module included see - + diff --git a/dev/setitup/rf.html b/dev/setitup/rf.html index 116cdd1e..2792a083 100644 --- a/dev/setitup/rf.html +++ b/dev/setitup/rf.html @@ -19,7 +19,7 @@ - + @@ -110,6 +110,6 @@ The RF processing can be achieved after the modification by either RF, RF2 or Pi

- + diff --git a/dev/setitup/sensors.html b/dev/setitup/sensors.html index f60a4344..0ad87a23 100644 --- a/dev/setitup/sensors.html +++ b/dev/setitup/sensors.html @@ -19,7 +19,7 @@ - + @@ -109,6 +109,6 @@ Ground pins of the board and the Module to the ground of the supply source.

< →

- + diff --git a/dev/setitup/serial.html b/dev/setitup/serial.html index 371e9b77..f1572ac0 100644 --- a/dev/setitup/serial.html +++ b/dev/setitup/serial.html @@ -19,7 +19,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/dev/sitemap.xml b/dev/sitemap.xml index 7e202d5a..50f9816a 100644 --- a/dev/sitemap.xml +++ b/dev/sitemap.xml @@ -1 +1 @@ -https://decoder.theengs.io/devices/devices.htmlhttps://community.openmqttgateway.com/https://shop.theengs.io/https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumptionhttps://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antennahttps://app.theengs.io/https://gateway.theengs.io/https://decoder.theengs.io/https://parser.theengs.io/https://www.theengs.io/https://docs.openmqttgateway.com/dev/2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/jeedom.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/aws_iot.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/home_assistant.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/openhab3.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/node_red.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/adding-protocols.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/community.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/development.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/support.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/M5.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/openhab2.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/board.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/broker.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/controller.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/parts.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/actuators.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/ble.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/devices.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/ir.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/gsm.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/lora.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/rf.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/sensors.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/serial.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/advanced-configuration.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/gitpod.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/builds.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/binaries.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/portal.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/troubleshoot.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/web-install.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/actuators.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/ble.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/boards.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/displays.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/gsm.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/gateway.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/ir.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/lora.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/rf.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/rfm69.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/sensors.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/webui.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/serial.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/404.htmldailyhttps://decoder.theengs.io/devices/devices.htmlhttps://community.openmqttgateway.com/https://shop.theengs.io/https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumptionhttps://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antennahttps://app.theengs.io/https://gateway.theengs.io/https://decoder.theengs.io/https://parser.theengs.io/https://www.theengs.io/ \ No newline at end of file +https://decoder.theengs.io/devices/devices.htmlhttps://community.openmqttgateway.com/https://shop.theengs.io/https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumptionhttps://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antennahttps://app.theengs.io/https://gateway.theengs.io/https://decoder.theengs.io/https://parser.theengs.io/https://www.theengs.io/https://docs.openmqttgateway.com/dev/2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/aws_iot.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/home_assistant.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/jeedom.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/node_red.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/openhab2.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/integrate/openhab3.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/community.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/adding-protocols.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/development.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/M5.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/participate/support.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/board.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/controller.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/devices.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/broker.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/prerequisites/parts.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/ble.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/actuators.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/gsm.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/ir.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/rf.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/lora.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/sensors.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/setitup/serial.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/binaries.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/builds.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/gitpod.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/advanced-configuration.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/portal.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/troubleshoot.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/upload/web-install.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/actuators.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/ble.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/boards.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/displays.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/gateway.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/gsm.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/ir.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/lora.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/rf.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/rfm69.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/sensors.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/serial.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/use/webui.html2025-12-07T22:45:07.000Zdailyhttps://docs.openmqttgateway.com/dev/404.htmldailyhttps://decoder.theengs.io/devices/devices.htmlhttps://community.openmqttgateway.com/https://shop.theengs.io/https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumptionhttps://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antennahttps://app.theengs.io/https://gateway.theengs.io/https://decoder.theengs.io/https://parser.theengs.io/https://www.theengs.io/ \ No newline at end of file diff --git a/dev/upload/advanced-configuration.html b/dev/upload/advanced-configuration.html index 90bc52b9..8899818d 100644 --- a/dev/upload/advanced-configuration.html +++ b/dev/upload/advanced-configuration.html @@ -19,7 +19,7 @@ - + @@ -130,6 +130,6 @@ So as to activate this function you need to set valueAsATopic to tr →

- + diff --git a/dev/upload/binaries.html b/dev/upload/binaries.html index e7e8f459..0c8c96fb 100644 --- a/dev/upload/binaries.html +++ b/dev/upload/binaries.html @@ -19,7 +19,7 @@ - + @@ -151,6 +151,6 @@ The upload details appears.

With an ESP if you did not set your net →

- + diff --git a/dev/upload/builds.html b/dev/upload/builds.html index e8b4d6a8..d5718672 100644 --- a/dev/upload/builds.html +++ b/dev/upload/builds.html @@ -19,7 +19,7 @@ - + @@ -237,6 +237,6 @@ Added to that auto discovery box should be selected into your Home Assistant MQT →

- + diff --git a/dev/upload/gitpod.html b/dev/upload/gitpod.html index 6cf08c07..05e99b79 100644 --- a/dev/upload/gitpod.html +++ b/dev/upload/gitpod.html @@ -19,7 +19,7 @@ - + @@ -111,6 +111,6 @@ →

- + diff --git a/dev/upload/portal.html b/dev/upload/portal.html index 61984700..1ac2b4c5 100644 --- a/dev/upload/portal.html +++ b/dev/upload/portal.html @@ -19,7 +19,7 @@ - + @@ -132,6 +132,6 @@ If the board is connected by ethernet, the Wifi and password can be empty. If yo →

- + diff --git a/dev/upload/troubleshoot.html b/dev/upload/troubleshoot.html index fad93ffd..6b99a6d7 100644 --- a/dev/upload/troubleshoot.html +++ b/dev/upload/troubleshoot.html @@ -19,7 +19,7 @@ - + @@ -124,6 +124,6 @@ If you set the ntp server for the gateway and keep getting the errors you should →

- + diff --git a/dev/upload/web-install.html b/dev/upload/web-install.html index d3200b78..6f1e62b1 100644 --- a/dev/upload/web-install.html +++ b/dev/upload/web-install.html @@ -19,7 +19,7 @@ - + @@ -294,6 +294,6 @@ The correct driver to then select in the popup of this web install is →

- + diff --git a/dev/use/actuators.html b/dev/use/actuators.html index f67fa47b..989b6d19 100644 --- a/dev/use/actuators.html +++ b/dev/use/actuators.html @@ -19,7 +19,7 @@ - + @@ -145,6 +145,6 @@ The json message must contain two properties: