diff --git a/dev/404.html b/dev/404.html index 07d4eff404..dbd6e50519 100644 --- a/dev/404.html +++ b/dev/404.html @@ -3,7 +3,7 @@ - OpenMQTTGateway DEVELOPMENT SHA:33d7e6 TEST ONLY + OpenMQTTGateway DEVELOPMENT SHA:052967 TEST ONLY @@ -19,13 +19,13 @@ - +

404

There's nothing here.
Take me home.
- + diff --git a/dev/assets/js/12.0fb987b1.js b/dev/assets/js/12.f7ab2c52.js similarity index 81% rename from dev/assets/js/12.0fb987b1.js rename to dev/assets/js/12.f7ab2c52.js index 9faa44a282..24a422c0dc 100644 --- a/dev/assets/js/12.0fb987b1.js +++ b/dev/assets/js/12.f7ab2c52.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{301:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing.b1483dba.png"},302:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing2.47abb421.png"},303:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing3.027e5201.png"},304:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing4.2c183d74.png"},305:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Policy.01c59b58.png"},306:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Policy2.2e6c3e27.png"},307:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Policy3.23515811.png"},308:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Certificate.8c12825c.png"},309:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Certificate2.ed79e9b6.png"},310:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Certificate3.3eba41ed.png"},311:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Policy.9d6aad48.png"},312:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Policy2.ab41e47b.png"},313:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Thing.5e692f8e.png"},314:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Thing2.06771663.png"},315:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Find_Endpoint.a38acfc5.png"},316:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_result_MQTT.b8e18113.png"},424:function(t,a,e){"use strict";e.r(a);var s=e(14),n=Object(s.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:e(301),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(302),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(303),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(304),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:e(305),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(306),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(307),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:e(308),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:e(309),alt:"AWS tutorial step"}})]),t._v(" "),a("ul",[a("li",[t._v("Download certificates and key")])]),t._v(" "),a("p",[a("img",{attrs:{src:e(310),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:e(311),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:e(312),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:e(313),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:e(314),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:e(315),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 Arduino IDE, you can update the following field into User_config.h with the information gathered:")]),t._v(" "),a("ul",[a("li",[t._v("Gateway_Name")]),t._v(" "),a("li",[a("code",[t._v('MQTT_SERVER "xxxxxx.iot-eu-amazonaws.com"')])]),t._v(" "),a("li",[a("code",[t._v('MQTT_PORT "8883"')])]),t._v(" "),a("li",[a("code",[t._v("AWS_IOT true")])]),t._v(" "),a("li",[t._v("ss_server_cert with the root certificate")]),t._v(" "),a("li",[t._v("ss_client_cert with the client certificate")]),t._v(" "),a("li",[t._v("ss_client_key with the Client key")]),t._v(" "),a("li",[a("code",[t._v("MQTT_SECURE_SELF_SIGNED 1")])]),t._v(" "),a("li",[a("code",[t._v("MQTT_SECURE_DEFAULT true")])])]),t._v(" "),a("p",[t._v("With PlatformIO you can directly leverage the environment "),a("code",[t._v("esp32dev-ble-aws")])]),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:e(316),alt:"AWS tutorial step"}})])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{305:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing.b1483dba.png"},306:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing2.47abb421.png"},307:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing3.027e5201.png"},308:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Thing4.2c183d74.png"},309:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Policy.01c59b58.png"},310:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Policy2.2e6c3e27.png"},311:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Policy3.23515811.png"},312:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Certificate.8c12825c.png"},313:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Certificate2.ed79e9b6.png"},314:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Create_Certificate3.3eba41ed.png"},315:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Policy.9d6aad48.png"},316:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Policy2.ab41e47b.png"},317:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Thing.5e692f8e.png"},318:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Attach_Thing2.06771663.png"},319:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_Find_Endpoint.a38acfc5.png"},320:function(t,a,e){t.exports=e.p+"assets/img/Integrate_AWS_IOT_result_MQTT.b8e18113.png"},426:function(t,a,e){"use strict";e.r(a);var s=e(14),n=Object(s.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:e(305),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(306),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(307),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(308),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:e(309),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(310),alt:"AWS tutorial step"}})]),t._v(" "),a("p",[a("img",{attrs:{src:e(311),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:e(312),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:e(313),alt:"AWS tutorial step"}})]),t._v(" "),a("ul",[a("li",[t._v("Download certificates and key")])]),t._v(" "),a("p",[a("img",{attrs:{src:e(314),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:e(315),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:e(316),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:e(317),alt:"AWS tutorial step"}}),t._v(" "),a("img",{attrs:{src:e(318),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:e(319),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 Arduino IDE, you can update the following field into User_config.h with the information gathered:")]),t._v(" "),a("ul",[a("li",[t._v("Gateway_Name")]),t._v(" "),a("li",[a("code",[t._v('MQTT_SERVER "xxxxxx.iot-eu-amazonaws.com"')])]),t._v(" "),a("li",[a("code",[t._v('MQTT_PORT "8883"')])]),t._v(" "),a("li",[a("code",[t._v("AWS_IOT true")])]),t._v(" "),a("li",[t._v("ss_server_cert with the root certificate")]),t._v(" "),a("li",[t._v("ss_client_cert with the client certificate")]),t._v(" "),a("li",[t._v("ss_client_key with the Client key")]),t._v(" "),a("li",[a("code",[t._v("MQTT_SECURE_SELF_SIGNED 1")])]),t._v(" "),a("li",[a("code",[t._v("MQTT_SECURE_DEFAULT true")])])]),t._v(" "),a("p",[t._v("With PlatformIO you can directly leverage the environment "),a("code",[t._v("esp32dev-ble-aws")])]),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:e(320),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.dcbdb5ac.js b/dev/assets/js/13.13600626.js similarity index 99% rename from dev/assets/js/13.dcbdb5ac.js rename to dev/assets/js/13.13600626.js index 22ad237f0d..4d85d2b027 100644 --- a/dev/assets/js/13.dcbdb5ac.js +++ b/dev/assets/js/13.13600626.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{357:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-ip.64868e1f.png"},358:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding.8789907b.png"},359:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding2.27222f76.png"},360:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding3.9ea3c10c.png"},361:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding4.0f0bb3a2.png"},362:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding5.21edc73e.png"},363:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding6.0f2993f1.png"},364:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-jinja.1c611c34.png"},365:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things.abb5bd4b.png"},366:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things2.2e6e9d16.png"},367:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things3.c8683e56.png"},368:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things4.b8d0101e.png"},369:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things5.c84ba146.png"},370:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt.79c99c28.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(357),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(358),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(359),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(360),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(361),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(362),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(363),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(364),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("p",[t._v("To make the auto discovery compatible with OpenHAB you have to send the following command with a retain flag.")]),t._v(" "),e("p",[e("code",[t._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"ohdisc":true}\'')])]),t._v(" "),e("p",[t._v('You can also activate OpenHAB auto discovery by adding the gateway as a Thing, Model, and switching the button to ON. The name of the channel to add is "SYS: OpenHAB discovery".\nOnce activated restart OpenMQTTGateway.')]),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(365),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(366),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(367),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(368),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(369),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(370),alt:"OpenHAB integration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{357:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-ip.64868e1f.png"},358:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding.8789907b.png"},359:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding2.27222f76.png"},360:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding3.9ea3c10c.png"},361:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding4.0f0bb3a2.png"},362:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding5.21edc73e.png"},363:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-binding6.0f2993f1.png"},364:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-jinja.1c611c34.png"},365:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things.abb5bd4b.png"},366:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things2.2e6e9d16.png"},367:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things3.c8683e56.png"},368:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things4.b8d0101e.png"},369:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt-things5.c84ba146.png"},370:function(t,e,n){t.exports=n.p+"assets/img/OpenMQTTGateway-OpenHAB-Theengs-mqtt.79c99c28.png"},432: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(357),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(358),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(359),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(360),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(361),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(362),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(363),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(364),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("p",[t._v("To make the auto discovery compatible with OpenHAB you have to send the following command with a retain flag.")]),t._v(" "),e("p",[e("code",[t._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/config" -m \'{"ohdisc":true}\'')])]),t._v(" "),e("p",[t._v('You can also activate OpenHAB auto discovery by adding the gateway as a Thing, Model, and switching the button to ON. The name of the channel to add is "SYS: OpenHAB discovery".\nOnce activated restart OpenMQTTGateway.')]),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(365),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(366),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(367),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(368),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(369),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(370),alt:"OpenHAB integration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/16.27833199.js b/dev/assets/js/16.e3b16eff.js similarity index 98% rename from dev/assets/js/16.27833199.js rename to dev/assets/js/16.e3b16eff.js index 2dcb120dde..38e61fa3b0 100644 --- a/dev/assets/js/16.27833199.js +++ b/dev/assets/js/16.e3b16eff.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{346:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration.b72f91ee.png"},347:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug.800b0d32.png"},348:function(s,t){s.exports="data:image/png;base64,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"},349:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug3.6d8b4ff8.png"},350:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-process.f39abb66.png"},351:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-gauge.083998e2.png"},352:function(s,t){s.exports="data:image/png;base64,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"},353:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-chart.3d64e14e.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-flow-BLE-temperature.aa7f950d.png"},428: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(346),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(347),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(348),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(349),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(350),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(351),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(352),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(353),alt:"NodeRed integration"}})]),s._v(" "),t("p",[t("img",{attrs:{src:a(354),alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("Or a function with a notification:")]),s._v(" "),t("p",[t("img",{attrs:{src:a(355),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([[16],{347:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration.b72f91ee.png"},348:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug.800b0d32.png"},349:function(s,t){s.exports="data:image/png;base64,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"},350:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-debug3.6d8b4ff8.png"},351:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-integration-process.f39abb66.png"},352:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-gauge.083998e2.png"},353:function(s,t){s.exports="data:image/png;base64,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"},354:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-chart.3d64e14e.png"},355:function(s,t){s.exports="data:image/png;base64,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"},356:function(s,t,a){s.exports=a.p+"assets/img/OpenMQTTgateway_NODERED-flow-BLE-temperature.aa7f950d.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(347),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(348),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(349),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(350),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(351),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(352),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(353),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(354),alt:"NodeRed integration"}})]),s._v(" "),t("p",[t("img",{attrs:{src:a(355),alt:"NodeRed integration"}})]),s._v(" "),t("p",[s._v("Or a function with a notification:")]),s._v(" "),t("p",[t("img",{attrs:{src:a(356),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/21.22b1d0c9.js b/dev/assets/js/21.21343372.js similarity index 99% rename from dev/assets/js/21.22b1d0c9.js rename to dev/assets/js/21.21343372.js index 59ad559457..f0d61fda3f 100644 --- a/dev/assets/js/21.22b1d0c9.js +++ b/dev/assets/js/21.21343372.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{278:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.3ca02117.png"},279:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.e0225c4f.png"},318:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant-Discovery-Integration.f26d4860.png"},319:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_Gateway_Home_Assistant.3678ed94.gif"},320:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_BLE_Sensor_Home_Assistant.e80531f8.gif"},426:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.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:"auto-discovery"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery"}},[t._v("#")]),t._v(" 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 except for UNO. With Arduino IDE please read the "),s("a",{attrs:{href:"../upload/advanced-configuration#auto-discovery"}},[t._v("advanced configuration section")]),t._v(" of the documentation. 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(318),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(278),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(319),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(320),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(279),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("h2",{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("h2",{attrs:{id:"mqtt-device-trigger-and-rf"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-device-trigger-and-rf"}},[t._v("#")]),t._v(" MQTT Device Trigger and RF")]),t._v(" "),s("p",[t._v("With OpenMQTTGateway "),s("RouterLink",{attrs:{to:"/setitup/rf.html"}},[t._v("configured to receive RF signals")]),t._v(" the messages are transmitted as indicated by "),s("RouterLink",{attrs:{to:"/use/rf.html#rcswitch-based-gateway"}},[t._v("RCSwitch based gateway")]),t._v(", so it is possible to receive a pulse every time the sensor discover a signal.")],1),t._v(" "),s("p",[t._v("With autodiscovery enabled, HomeAssistant will discover a "),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(" identified by the value field given in the mqtt argument.")]),t._v(" "),s("h2",{attrs:{id:"manual-integration-examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#manual-integration-examples"}},[t._v("#")]),t._v(" Manual integration examples")]),t._v(" "),s("p",[t._v("From @123, @finity, @denniz03, @jrockstad, @anarchking, @dkluivingh")]),t._v(" "),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:"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("The publication into presence topic needs to be activated "),s("RouterLink",{attrs:{to:"/use/ble.html"}},[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=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{278:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.3ca02117.png"},279:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.e0225c4f.png"},302:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant-Discovery-Integration.f26d4860.png"},303:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_Gateway_Home_Assistant.3678ed94.gif"},304:function(t,s,a){t.exports=a.p+"assets/img/OpenMQTTGateway_auto_discovery_BLE_Sensor_Home_Assistant.e80531f8.gif"},425:function(t,s,a){"use strict";a.r(s);var n=a(14),e=Object(n.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:"auto-discovery"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#auto-discovery"}},[t._v("#")]),t._v(" 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 except for UNO. With Arduino IDE please read the "),s("a",{attrs:{href:"../upload/advanced-configuration#auto-discovery"}},[t._v("advanced configuration section")]),t._v(" of the documentation. 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(302),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(278),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(303),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(304),alt:"Home Assistant Auto Discovery"}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(279),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("h2",{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("h2",{attrs:{id:"mqtt-device-trigger-and-rf"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mqtt-device-trigger-and-rf"}},[t._v("#")]),t._v(" MQTT Device Trigger and RF")]),t._v(" "),s("p",[t._v("With OpenMQTTGateway "),s("RouterLink",{attrs:{to:"/setitup/rf.html"}},[t._v("configured to receive RF signals")]),t._v(" the messages are transmitted as indicated by "),s("RouterLink",{attrs:{to:"/use/rf.html#rcswitch-based-gateway"}},[t._v("RCSwitch based gateway")]),t._v(", so it is possible to receive a pulse every time the sensor discover a signal.")],1),t._v(" "),s("p",[t._v("With autodiscovery enabled, HomeAssistant will discover a "),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(" identified by the value field given in the mqtt argument.")]),t._v(" "),s("h2",{attrs:{id:"manual-integration-examples"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#manual-integration-examples"}},[t._v("#")]),t._v(" Manual integration examples")]),t._v(" "),s("p",[t._v("From @123, @finity, @denniz03, @jrockstad, @anarchking, @dkluivingh")]),t._v(" "),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:"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("The publication into presence topic needs to be activated "),s("RouterLink",{attrs:{to:"/use/ble.html"}},[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=e.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/24.33690faa.js b/dev/assets/js/24.c6354b71.js similarity index 97% rename from dev/assets/js/24.33690faa.js rename to dev/assets/js/24.c6354b71.js index bdadf211e8..7cec9c9c02 100644 --- a/dev/assets/js/24.33690faa.js +++ b/dev/assets/js/24.c6354b71.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{372:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_rf1.97b46f9c.png"},373:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_rf2.26da8a3a.png"},374:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_rf3.85e5cb30.png"},375:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_ble.eccdbc5d.png"},438:function(t,e,a){"use strict";a.r(e);var r=a(14),i=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#devices"}},[t._v("#")]),t._v(" Devices")]),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/devices/",target:"_blank",rel:"noopener noreferrer"}},[t._v("supported devices"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Added to that is an overview of devices supported by OpenMQTTGateway:")]),t._v(" "),e("h2",{attrs:{id:"for-radio-frequency-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#for-radio-frequency-devices"}},[t._v("#")]),t._v(" For radio frequency devices")]),t._v(" "),e("p",[t._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 "),e("a",{attrs:{href:"https://wiki.pilight.org/devices",target:"_blank",rel:"noopener noreferrer"}},[t._v("huge list"),e("OutboundLink")],1),t._v(".\nNote that for the moment RF, RF2 and Pilight can not be activated on the same boards together.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(372),alt:"boards",title:":size=250%"}}),t._v(" "),e("img",{attrs:{src:a(373),alt:"boards",title:":size=250%"}}),t._v(" "),e("img",{attrs:{src:a(374),alt:"boards",title:":size=250%"}})]),t._v(" "),e("h2",{attrs:{id:"for-ble-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#for-ble-devices"}},[t._v("#")]),t._v(" For BLE devices")]),t._v(" "),e("p",[t._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 below. By default the data are read from the advertisements (no impact on device battery life). When a (c) is present after the model name, this means that the gateway connects to it so as to retrieve data or control the device. For some devices we may connect only to retrieve one or several parameters (the rest being advertised), in this case the (c) is placed with the parameter.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Devices")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Model")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Measurements")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("Amazfit")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Smart Watch, Band")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("steps, activity heart rate (when activated in the Zepp Life settings)")])]),t._v(" "),e("tr",[e("td",[t._v("April Brother")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("ABTemp")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("uuid, mfid, major, txpower @ 1 m, temperature, battery")])]),t._v(" "),e("tr",[e("td",[t._v("April Brother")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("N03")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, luminance, battery")])]),t._v(" "),e("tr",[e("td",[t._v("April Brother")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("N07")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("ATorch Battery Capacity Monitor (c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("DT24")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("voltage, amp, watt")])]),t._v(" "),e("tr",[e("td",[t._v("BLE watches with fixed MAC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("rssi for presence detection")])]),t._v(" "),e("tr",[e("td",[t._v("BLE beacons keychains")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("rssi for presence detection")])]),t._v(" "),e("tr",[e("td",[t._v("BlueCharm")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BC08")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, voltage, temperature")])]),t._v(" "),e("tr",[e("td",[t._v("BlueCharm")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BC04P")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, voltage, temperature")])]),t._v(" "),e("tr",[e("td",[t._v("BlueCharm")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BC021")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, voltage, temperature")])]),t._v(" "),e("tr",[e("td",[t._v("BlueMaestro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TempoDisc 1 in 1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, battery")])]),t._v(" "),e("tr",[e("td",[t._v("BlueMaestro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TempoDisc 3 in 1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, dew point, battery")])]),t._v(" "),e("tr",[e("td",[t._v("BlueMaestro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TempoDisc 4 in 1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, pressure, battery")])]),t._v(" "),e("tr",[e("td",[t._v("BM2 Battery Monitor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BM2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("battery, volt(c)")])]),t._v(" "),e("tr",[e("td",[t._v("BM6 Battery Monitor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BM6")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("battery")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGG1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage (depending on which CGG1 firmware is installed)")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass alarm clock")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGD1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass alarm clock")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGC1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass with atmospheric pressure")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGP1W")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, air pressure")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass Clock")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD02")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5055")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2, temperature3, temperature4, temperature5, temperature6, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5074")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5075")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5072")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5100")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5101")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5102")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5104")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5106")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("PM2.5, temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5174")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5177")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5179")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("HONEYWELL")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("JQJCY01YM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("formaldehyde, temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Hydractiva Digital")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Amphiro, Oras")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("sessions, time, litres, temperature, energy")])]),t._v(" "),e("tr",[e("td",[t._v("iBeacon")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("protocol")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("uuid, mfid, major, minor, txpower @ 1 m, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("Jaalee")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("JHT F525")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBS-TH1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBS-TH12S")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBS-TH2, P01B")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBT-2X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBT-4X(S, C)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2, temperature3, temperature4")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBT-6XS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2, temperature3, temperature4, temperature5, temperature6")])]),t._v(" "),e("tr",[e("td",[t._v("iNode")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Energy Meter")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Current average and aggregate kW(h), m³, battery")])]),t._v(" "),e("tr",[e("td",[t._v("KKM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("K6P")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("KKM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("K9")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage, acceleration x, y, z-axis (optional - without recognised as K6P)")])]),t._v(" "),e("tr",[e("td",[t._v("Oral B")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Toothbrush")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("state, mode, sector, pressure, time")])]),t._v(" "),e("tr",[e("td",[t._v("Oria, Brifit, SigmaWit, SensorPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TH Sensor T201")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Oria, Brifit, SigmaWit, SensorPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TH Sensor T301")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Mokosmart")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("M1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Mokosmart")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("Mopeka")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Pro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, level, sync status, voltage, battery, reading quality, acceleration x, y-axis")])]),t._v(" "),e("tr",[e("td",[t._v("Lippert")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BottleCheck")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, level, sync status, voltage, battery, reading quality, acceleration x, y-axis")])]),t._v(" "),e("tr",[e("td",[t._v("Otio, BeeWi")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Door & Window Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("contact, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Polar")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H10 Chest strap")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("activity heart rate")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGDK2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGH1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("open")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGPR1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("presence, luminance, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGDN1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, PM2.5, PM10, carbon dioxide")])]),t._v(" "),e("tr",[e("td",[t._v("RDL52832")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("mfid, uuid, minor, major, txpower @ 1 m, temperature, humidity, acceleration x, y, z-axis")])]),t._v(" "),e("tr",[e("td",[t._v("RBaron")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("b-parasite")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("moisture, temperature, humidity, luminance (v1.1.0+), voltage")])]),t._v(" "),e("tr",[e("td",[t._v("RuuviTag Raw V1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RuuviTag")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, pressure, acceleration x, y, z-axis, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("RuuviTag Raw V2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RuuviTag")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, pressure, acceleration x, y, z-axis, voltage, TX power, movement, counter, sequence number")])]),t._v(" "),e("tr",[e("td",[t._v("SmartDry")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Laundry Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, shake, voltage, wake")])]),t._v(" "),e("tr",[e("td",[t._v("Sensirion")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MyCO₂, CO₂ Gadget")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, carbon dioxide")])]),t._v(" "),e("tr",[e("td",[t._v("Sensirion")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("SHT4X TH sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ShellyBlu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Button1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("button press type, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("ShellyBlu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Door, Window")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("contact, rotation, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("ShellyBlu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Motion")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("motion, illuminance, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Bot (c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("mode, state, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Motion Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("movement, light level, sensing distance, led, scope tested, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Contact Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("contact, movement, scope tested, light level, in count, out count, push count, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Curtain")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("motion state, position, light level, battery, calibration state")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Meter (Plus)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Outdoor Meter")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Thermobeacon")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("WS02")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage, timestamp, maximum temperature, maximum temperature timestamp, minimum temperature, minimum temperature timestamp")])]),t._v(" "),e("tr",[e("td",[t._v("Thermobeacon")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("WS08")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage, timestamp, maximum temperature, maximum temperature timestamp, minimum temperature, minimum temperature timestamp")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP357")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP357s")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP358")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP359")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP393")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("TPMS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TPMS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, pressure, battery, alarm, count")])]),t._v(" "),e("tr",[e("td",[t._v("Vegtrug")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, moisture, luminance, fertility")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Flora")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("HHCCJCY01HHCC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, moisture, luminance, fertility, battery(c) firmware >3.1.8")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Ropot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("HHCCPOT002")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, moisture, fertility")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSDCGO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD02")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia 2(c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD03MMC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia 2 custom firmware (2)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD03MMC ATC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia 2 custom firmware (3)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD03MMC PVVX (encrypted or not)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Lamp")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MUE4094RT")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("presence")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Smart Scale")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("XMTZC01HM, XMTZC04HM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("weighing mode, unit, weight")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Body Composition Scale")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("XMTZC02HM, XMTZC05HM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("weighing mode, unit, weight, impedance")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Temp, Humidity v1(c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MHO-C401")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Temp, Humidity v2(c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("XMWSDJ04MMC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Mi band")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("steps, activity heart rate (when activated in the Zepp Life settings)")])])])]),t._v(" "),e("p",[t._v("Exhaustive list "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices/ble-devices/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1)]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("ul",[e("li",[t._v("(2) See https://github.com/atc1441/ATC_MiThermometer")]),t._v(" "),e("li",[t._v("(3) See https://github.com/pvvx/ATC_MiThermometer")])])]),t._v(" "),e("p",[e("img",{attrs:{src:a(375),alt:"devices",title:":size=250%"}})]),t._v(" "),e("h2",{attrs:{id:"for-infrared-ir-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#for-infrared-ir-devices"}},[t._v("#")]),t._v(" For infrared IR devices")]),t._v(" "),e("p",[t._v("The list of supported devices for ESP is "),e("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(", and "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/6f73160d1421bebf2c1bbc9b8017978ff5b16520/main/config_IR.h#L123",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(" for Arduino boards, as there is also the possibility of using raw and global cache (ESP) sending possibilities of this gateway is huge!")]),t._v(" "),e("h2",{attrs:{id:"lora"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lora"}},[t._v("#")]),t._v(" LORA")]),t._v(" "),e("p",[t._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);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{374:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_rf1.97b46f9c.png"},375:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_rf2.26da8a3a.png"},376:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_rf3.85e5cb30.png"},377:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTGateway_devices_ble.eccdbc5d.png"},440:function(t,e,a){"use strict";a.r(e);var r=a(14),i=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#devices"}},[t._v("#")]),t._v(" Devices")]),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/devices/",target:"_blank",rel:"noopener noreferrer"}},[t._v("supported devices"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("p",[t._v("Added to that is an overview of devices supported by OpenMQTTGateway:")]),t._v(" "),e("h2",{attrs:{id:"for-radio-frequency-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#for-radio-frequency-devices"}},[t._v("#")]),t._v(" For radio frequency devices")]),t._v(" "),e("p",[t._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 "),e("a",{attrs:{href:"https://wiki.pilight.org/devices",target:"_blank",rel:"noopener noreferrer"}},[t._v("huge list"),e("OutboundLink")],1),t._v(".\nNote that for the moment RF, RF2 and Pilight can not be activated on the same boards together.")]),t._v(" "),e("p",[e("img",{attrs:{src:a(374),alt:"boards",title:":size=250%"}}),t._v(" "),e("img",{attrs:{src:a(375),alt:"boards",title:":size=250%"}}),t._v(" "),e("img",{attrs:{src:a(376),alt:"boards",title:":size=250%"}})]),t._v(" "),e("h2",{attrs:{id:"for-ble-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#for-ble-devices"}},[t._v("#")]),t._v(" For BLE devices")]),t._v(" "),e("p",[t._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 below. By default the data are read from the advertisements (no impact on device battery life). When a (c) is present after the model name, this means that the gateway connects to it so as to retrieve data or control the device. For some devices we may connect only to retrieve one or several parameters (the rest being advertised), in this case the (c) is placed with the parameter.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Devices")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Model")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Measurements")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("Amazfit")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Smart Watch, Band")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("steps, activity heart rate (when activated in the Zepp Life settings)")])]),t._v(" "),e("tr",[e("td",[t._v("April Brother")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("ABTemp")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("uuid, mfid, major, txpower @ 1 m, temperature, battery")])]),t._v(" "),e("tr",[e("td",[t._v("April Brother")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("N03")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, luminance, battery")])]),t._v(" "),e("tr",[e("td",[t._v("April Brother")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("N07")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("ATorch Battery Capacity Monitor (c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("DT24")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("voltage, amp, watt")])]),t._v(" "),e("tr",[e("td",[t._v("BLE watches with fixed MAC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("rssi for presence detection")])]),t._v(" "),e("tr",[e("td",[t._v("BLE beacons keychains")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("rssi for presence detection")])]),t._v(" "),e("tr",[e("td",[t._v("BlueCharm")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BC08")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, voltage, temperature")])]),t._v(" "),e("tr",[e("td",[t._v("BlueCharm")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BC04P")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, voltage, temperature")])]),t._v(" "),e("tr",[e("td",[t._v("BlueCharm")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BC021")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, voltage, temperature")])]),t._v(" "),e("tr",[e("td",[t._v("BlueMaestro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TempoDisc 1 in 1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, battery")])]),t._v(" "),e("tr",[e("td",[t._v("BlueMaestro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TempoDisc 3 in 1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, dew point, battery")])]),t._v(" "),e("tr",[e("td",[t._v("BlueMaestro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TempoDisc 4 in 1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, pressure, battery")])]),t._v(" "),e("tr",[e("td",[t._v("BM2 Battery Monitor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BM2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("battery, volt(c)")])]),t._v(" "),e("tr",[e("td",[t._v("BM6 Battery Monitor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BM6")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("battery")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGG1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage (depending on which CGG1 firmware is installed)")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass alarm clock")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGD1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass alarm clock")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGC1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass with atmospheric pressure")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGP1W")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, air pressure")])]),t._v(" "),e("tr",[e("td",[t._v("ClearGrass Clock")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD02")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5055")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2, temperature3, temperature4, temperature5, temperature6, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5074")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5075")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5072")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5100")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5101")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5102")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5104")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5106")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("PM2.5, temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5174")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5177")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("GOVEE")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H5179")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("HONEYWELL")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("JQJCY01YM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("formaldehyde, temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Hydractiva Digital")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Amphiro, Oras")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("sessions, time, litres, temperature, energy")])]),t._v(" "),e("tr",[e("td",[t._v("iBeacon")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("protocol")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("uuid, mfid, major, minor, txpower @ 1 m, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("Jaalee")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("JHT F525")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBS-TH1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBS-TH12S")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBS-TH2, P01B")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, battery")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBT-2X")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBT-4X(S, C)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2, temperature3, temperature4")])]),t._v(" "),e("tr",[e("td",[t._v("INKBIRD")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("IBT-6XS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature1, temperature2, temperature3, temperature4, temperature5, temperature6")])]),t._v(" "),e("tr",[e("td",[t._v("iNode")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Energy Meter")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Current average and aggregate kW(h), m³, battery")])]),t._v(" "),e("tr",[e("td",[t._v("KKM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("K6P")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("KKM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("K9")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage, acceleration x, y, z-axis (optional - without recognised as K6P)")])]),t._v(" "),e("tr",[e("td",[t._v("Oral B")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Toothbrush")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("state, mode, sector, pressure, time")])]),t._v(" "),e("tr",[e("td",[t._v("Oria, Brifit, SigmaWit, SensorPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TH Sensor T201")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Oria, Brifit, SigmaWit, SensorPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TH Sensor T301")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Mokosmart")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("M1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("acceleration x, y, z-axis, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Mokosmart")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H4")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("Mopeka")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Pro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, level, sync status, voltage, battery, reading quality, acceleration x, y-axis")])]),t._v(" "),e("tr",[e("td",[t._v("Lippert")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("BottleCheck")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, level, sync status, voltage, battery, reading quality, acceleration x, y-axis")])]),t._v(" "),e("tr",[e("td",[t._v("Otio, BeeWi")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Door & Window Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("contact, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Polar")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("H10 Chest strap")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("activity heart rate")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGDK2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGH1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("open")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGPR1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("presence, luminance, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Qingping")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("CGDN1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, PM2.5, PM10, carbon dioxide")])]),t._v(" "),e("tr",[e("td",[t._v("RDL52832")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("mfid, uuid, minor, major, txpower @ 1 m, temperature, humidity, acceleration x, y, z-axis")])]),t._v(" "),e("tr",[e("td",[t._v("RBaron")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("b-parasite")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("moisture, temperature, humidity, luminance (v1.1.0+), voltage")])]),t._v(" "),e("tr",[e("td",[t._v("RuuviTag Raw V1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RuuviTag")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, pressure, acceleration x, y, z-axis, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("RuuviTag Raw V2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("RuuviTag")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, pressure, acceleration x, y, z-axis, voltage, TX power, movement, counter, sequence number")])]),t._v(" "),e("tr",[e("td",[t._v("SmartDry")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Laundry Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, shake, voltage, wake")])]),t._v(" "),e("tr",[e("td",[t._v("Sensirion")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MyCO₂, CO₂ Gadget")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, carbon dioxide")])]),t._v(" "),e("tr",[e("td",[t._v("Sensirion")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("SHT4X TH sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ShellyBlu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Button1")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("button press type, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("ShellyBlu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Door, Window")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("contact, rotation, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("ShellyBlu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Motion")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("motion, illuminance, battery, packet ID")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Bot (c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("mode, state, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Motion Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("movement, light level, sensing distance, led, scope tested, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Contact Sensor")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("contact, movement, scope tested, light level, in count, out count, push count, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Curtain")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("motion state, position, light level, battery, calibration state")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Meter (Plus)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Switchbot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Outdoor Meter")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("Thermobeacon")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("WS02")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage, timestamp, maximum temperature, maximum temperature timestamp, minimum temperature, minimum temperature timestamp")])]),t._v(" "),e("tr",[e("td",[t._v("Thermobeacon")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("WS08")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, voltage, timestamp, maximum temperature, maximum temperature timestamp, minimum temperature, minimum temperature timestamp")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP357")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP357s")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP358")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP359")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("ThermoPro")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TP393")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity")])]),t._v(" "),e("tr",[e("td",[t._v("TPMS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("TPMS")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, pressure, battery, alarm, count")])]),t._v(" "),e("tr",[e("td",[t._v("Vegtrug")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}}),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, moisture, luminance, fertility")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Flora")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("HHCCJCY01HHCC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, moisture, luminance, fertility, battery(c) firmware >3.1.8")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Ropot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("HHCCPOT002")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, moisture, fertility")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSDCGO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD02")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia 2(c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD03MMC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia 2 custom firmware (2)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD03MMC ATC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Jia 2 custom firmware (3)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("LYWSD03MMC PVVX (encrypted or not)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Lamp")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MUE4094RT")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("presence")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Smart Scale")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("XMTZC01HM, XMTZC04HM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("weighing mode, unit, weight")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Body Composition Scale")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("XMTZC02HM, XMTZC05HM")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("weighing mode, unit, weight, impedance")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Temp, Humidity v1(c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("MHO-C401")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI Mi Temp, Humidity v2(c)")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("XMWSDJ04MMC")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("temperature, humidity, battery, voltage")])]),t._v(" "),e("tr",[e("td",[t._v("XIAOMI")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("Mi band")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("steps, activity heart rate (when activated in the Zepp Life settings)")])])])]),t._v(" "),e("p",[t._v("Exhaustive list "),e("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices/ble-devices/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1)]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("ul",[e("li",[t._v("(2) See https://github.com/atc1441/ATC_MiThermometer")]),t._v(" "),e("li",[t._v("(3) See https://github.com/pvvx/ATC_MiThermometer")])])]),t._v(" "),e("p",[e("img",{attrs:{src:a(377),alt:"devices",title:":size=250%"}})]),t._v(" "),e("h2",{attrs:{id:"for-infrared-ir-devices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#for-infrared-ir-devices"}},[t._v("#")]),t._v(" For infrared IR devices")]),t._v(" "),e("p",[t._v("The list of supported devices for ESP is "),e("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(", and "),e("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/6f73160d1421bebf2c1bbc9b8017978ff5b16520/main/config_IR.h#L123",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v(" for Arduino boards, as there is also the possibility of using raw and global cache (ESP) sending possibilities of this gateway is huge!")]),t._v(" "),e("h2",{attrs:{id:"lora"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lora"}},[t._v("#")]),t._v(" LORA")]),t._v(" "),e("p",[t._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);e.default=i.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/26.1fde5a86.js b/dev/assets/js/26.92e7910f.js similarity index 98% rename from dev/assets/js/26.1fde5a86.js rename to dev/assets/js/26.92e7910f.js index ea89f71717..a16c5f432c 100644 --- a/dev/assets/js/26.1fde5a86.js +++ b/dev/assets/js/26.92e7910f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{267:function(e,t,a){e.exports=a.p+"assets/img/Theengs-Plug-OpenMQTTGateway.ba02745f.png"},277:function(e,t,a){e.exports=a.p+"assets/img/Theengs-Bridge-ble-gateway.f8771854.png"},317:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway.31d6919f.png"},425:function(e,t,a){"use strict";a.r(t);var r=a(14),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("OpenMQTTGateway aims to unify various technologies and protocols into a single firmware. This reduces the need for multiple physical bridges and streamlines diverse technologies under the widely-used "),t("a",{attrs:{href:"http://mqtt.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT"),t("OutboundLink")],1),e._v(" protocol.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(317),alt:"Overview"}})]),e._v(" "),t("h1",{attrs:{id:"what-is-an-mqtt-gateway-or-bridge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-an-mqtt-gateway-or-bridge"}},[e._v("#")]),e._v(" What is an MQTT gateway or bridge ?")]),e._v(" "),t("p",[e._v("MQTT, short for Message Queuing Telemetry Transport, is a lightweight messaging protocol ideal for IoT devices.")]),e._v(" "),t("p",[e._v("An MQTT gateway or bridge plays a pivotal role in the MQTT ecosystem:")]),e._v(" "),t("ul",[t("li",[e._v("Protocol Translation: It converts non-MQTT protocols (like LoRa or Bluetooth) into MQTT, enabling broader network communication.")]),e._v(" "),t("li",[e._v("Data Aggregation: Combines data from multiple devices into single messages, optimizing network use.")]),e._v(" "),t("li",[e._v("Security: Incorporates features like SSL/TLS encryption to safeguard data during transmission.")]),e._v(" "),t("li",[e._v("Device Management: Handles tasks like firmware updates and remote configuration changes.")])]),e._v(" "),t("p",[e._v("In essence, an MQTT gateway ensures smooth communication between devices and MQTT brokers, enhancing the efficiency and security of IoT systems.")]),e._v(" "),t("h1",{attrs:{id:"what-openmqttgateway-can-do"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-openmqttgateway-can-do"}},[e._v("#")]),e._v(" What OpenMQTTGateway can do ?")]),e._v(" "),t("p",[e._v("OpenMQTTGateway integrates with established technologies, such as 433mhz/315mhz protocols and infrared (IR), allowing you to upgrade and repurpose older devices. Additionally, OMG is compatible with modern technologies like Bluetooth Low Energy (BLE) and LoRa.")]),e._v(" "),t("p",[e._v("To have an overview of the supported PIR, door, water, temperature, smoke sensors, sirens, rings, beacons, switches & weather stations you can take a look to the\n"),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible devices list"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("You can run OpenMQTTGateway on a wide variety of "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/boards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("boards"),t("OutboundLink")],1),e._v(", ESP32, ESP8266, Arduino MEGA, UNO (with limitation).\nBLE to MQTT gateway can also run on Raspberry Pi, Windows or Unix computers thanks to "),t("a",{attrs:{href:"https://theengs.github.io/gateway/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs Gateway"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Using MQTT, you can seamlessly integrate with home automation platforms such as OpenHAB, Home Assistant, and others, or with IoT software like Node-Red.")]),e._v(" "),t("h1",{attrs:{id:"use-cases"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-cases"}},[e._v("#")]),e._v(" Use cases")]),e._v(" "),t("p",[e._v("Leveraging OpenMQTTGateway with a controller allows you to:")]),e._v(" "),t("ul",[t("li",[e._v("Monitor a garden with a Mi Flora BLE sensor and control an irrigation valve depending on the soil moisture,")]),e._v(" "),t("li",[e._v("Trigger a fan depending on the temperature and humidity thanks to a Mi Jia/LYWSD03MMC BLE sensor,")]),e._v(" "),t("li",[e._v("Follow your meat temperature when cooking with an Inkbird IBBQ")]),e._v(" "),t("li",[e._v("Alert yourself by a controller notification if the temperature of a fridge or freezer is too high,")]),e._v(" "),t("li",[e._v("Detect a beacon/smartwatch so as to trigger a special scenario when you come home,")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.youtube.com/watch?v=noUROhtf0E0&t=18s",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lose weight with the help of a complete log system"),t("OutboundLink")],1),e._v(", video from "),t("a",{attrs:{href:"https://www.youtube.com/channel/UCu7_D0o48KbfhpEohoP7YSQ",target:"_blank",rel:"noopener noreferrer"}},[e._v("@Andreas Spiess"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Detect opened door or windows through 433mhz or BLE and alert yourself when leaving")]),e._v(" "),t("li",[e._v("Detect water leakage or smoke remotely")]),e._v(" "),t("li",[e._v("Actionate a siren if something is going wrong")]),e._v(" "),t("li",[e._v("Detect if your far mailbox has been opened by the postman with LoRa")]),e._v(" "),t("li",[e._v("Make smart your old TV or AC system through infrared control")]),e._v(" "),t("li",[e._v("Monitor vehicle tire pressure")])]),e._v(" "),t("p",[e._v("The limit is your imagination 😀")]),e._v(" "),t("h1",{attrs:{id:"functions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[e._v("#")]),e._v(" Functions")]),e._v(" "),t("p",[e._v("Under the hood, OpenMQTTGateway offers features such as:")]),e._v(" "),t("ul",[t("li",[e._v("Deduplication")]),e._v(" "),t("li",[e._v("Simple and lite API")]),e._v(" "),t("li",[e._v("Strong integrations with libraries used")]),e._v(" "),t("li",[e._v("Signal forward/repeat")]),e._v(" "),t("li",[e._v("Wifi web portal onboarding")]),e._v(" "),t("li",[e._v("Web portal configuration")]),e._v(" "),t("li",[e._v("Whitelist & Blacklist management")]),e._v(" "),t("li",[e._v("Secure connections")]),e._v(" "),t("li",[e._v("Over the air updates")]),e._v(" "),t("li",[e._v("Local or cloud, your choice")])]),e._v(" "),t("h2",{attrs:{id:"using-openmqttgateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-openmqttgateway"}},[e._v("#")]),e._v(" Using OpenMQTTGateway ?")]),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"}})]),e._v(" "),t("h2",{attrs:{id:"products-powered-by-openmqttgateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#products-powered-by-openmqttgateway"}},[e._v("#")]),e._v(" Products powered by OpenMQTTGateway")]),e._v(" "),t("h3",{attrs:{id:"theengs-bridge-ble-gateway-with-external-antenna"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#theengs-bridge-ble-gateway-with-external-antenna"}},[e._v("#")]),e._v(" Theengs Bridge, BLE gateway with external antenna")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" is a powerfull BLE to MQTT gateway for over "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("90 sensors"),t("OutboundLink")],1),e._v(". Equipped with an Ethernet port, and external antenna, ensuring an enhanced range for your BLE sensors. It supports also WiFi connectivity.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:a(277),alt:"Theengs bridge view"}}),t("OutboundLink")],1)]),e._v(" "),t("h3",{attrs:{id:"theengs-plug-ble-gateway-and-smart-plug"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#theengs-plug-ble-gateway-and-smart-plug"}},[e._v("#")]),e._v(" Theengs Plug, BLE gateway and Smart Plug")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1),e._v(" brings the following features:")]),e._v(" "),t("ul",[t("li",[e._v("BLE to MQTT gateway, tens of "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices/ble-devices/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bluetooth devices"),t("OutboundLink")],1),e._v(" supported thanks to Theengs Decoder library. The plug uses an ESP32 acting as a BLE to Wifi gateway to scan, decode and forward the data of the nearby sensors,")]),e._v(" "),t("li",[e._v("Smart plug that can be controlled remotely,")]),e._v(" "),t("li",[e._v("Energy consumption monitoring,")]),e._v(" "),t("li",[e._v("Presence detection (beta).")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:a(267),alt:"Theengs plug view"}}),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Support the project by purchasing the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" or the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"media"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#media"}},[e._v("#")]),e._v(" Media")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://hackaday.com/2023/01/13/arduino-library-brings-rtl_433-to-the-esp32",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hackaday - ARDUINO LIBRARY BRINGS RTL_433 TO THE ESP32"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.cnx-software.com/2023/01/14/esp32-board-with-lora-433-mhz-sensors/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CNX Software - 433 MHz is not dead! Using an ESP32 board with LoRa module to talk to 433 MHz sensors"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.rtl-sdr.com/rtl_433-ported-to-esp32-microcontrollers-with-cc1101-or-sx127x-transceiver-chips/",target:"_blank",rel:"noopener noreferrer"}},[e._v("RTL_433 PORTED TO ESP32 MICROCONTROLLERS WITH CC1101 OR SX127X TRANSCEIVER CHIPS"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://lwn.net/Articles/921497/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using low-cost wireless sensors in the unlicensed bands"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.electronics-lab.com/smart-plug-esp32-openmqttgateway-serving-as-an-ble-mqtt-gateway-and-a-power-meter/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SMART PLUG ESP32 OPENMQTTGATEWAY SERVING AS AN BLE MQTT GATEWAY AND A POWER METER"),t("OutboundLink")],1)])]),e._v(" "),t("h3",{attrs:{id:"_433mhz-and-ble"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_433mhz-and-ble"}},[e._v("#")]),e._v(" 433Mhz and BLE")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://youtube.com/embed/_gdXR1uklaY",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("h3",{attrs:{id:"ble"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ble"}},[e._v("#")]),e._v(" BLE")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/noUROhtf0E0",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("h3",{attrs:{id:"_433mhz"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_433mhz"}},[e._v("#")]),e._v(" 433Mhz")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://youtube.com/embed/H-JXWbWjJYE",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("h3",{attrs:{id:"lora"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lora"}},[e._v("#")]),e._v(" LORA")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/6DftaHxDawM",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("The material and information contained in this documentation is for general information purposes only. You should not rely upon the material or information on this documentation as a basis for making any business, legal or any other decisions. There is no warranty given on this documentation content. If you decide to follow the information and materials given it is at your own risk. I will not be liable for any false, inaccurate, inappropriate or incomplete information presented on this website.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{267:function(e,t,a){e.exports=a.p+"assets/img/Theengs-Plug-OpenMQTTGateway.ba02745f.png"},277:function(e,t,a){e.exports=a.p+"assets/img/Theengs-Bridge-ble-gateway.f8771854.png"},301:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway.31d6919f.png"},424:function(e,t,a){"use strict";a.r(t);var r=a(14),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("OpenMQTTGateway aims to unify various technologies and protocols into a single firmware. This reduces the need for multiple physical bridges and streamlines diverse technologies under the widely-used "),t("a",{attrs:{href:"http://mqtt.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT"),t("OutboundLink")],1),e._v(" protocol.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(301),alt:"Overview"}})]),e._v(" "),t("h1",{attrs:{id:"what-is-an-mqtt-gateway-or-bridge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-an-mqtt-gateway-or-bridge"}},[e._v("#")]),e._v(" What is an MQTT gateway or bridge ?")]),e._v(" "),t("p",[e._v("MQTT, short for Message Queuing Telemetry Transport, is a lightweight messaging protocol ideal for IoT devices.")]),e._v(" "),t("p",[e._v("An MQTT gateway or bridge plays a pivotal role in the MQTT ecosystem:")]),e._v(" "),t("ul",[t("li",[e._v("Protocol Translation: It converts non-MQTT protocols (like LoRa or Bluetooth) into MQTT, enabling broader network communication.")]),e._v(" "),t("li",[e._v("Data Aggregation: Combines data from multiple devices into single messages, optimizing network use.")]),e._v(" "),t("li",[e._v("Security: Incorporates features like SSL/TLS encryption to safeguard data during transmission.")]),e._v(" "),t("li",[e._v("Device Management: Handles tasks like firmware updates and remote configuration changes.")])]),e._v(" "),t("p",[e._v("In essence, an MQTT gateway ensures smooth communication between devices and MQTT brokers, enhancing the efficiency and security of IoT systems.")]),e._v(" "),t("h1",{attrs:{id:"what-openmqttgateway-can-do"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-openmqttgateway-can-do"}},[e._v("#")]),e._v(" What OpenMQTTGateway can do ?")]),e._v(" "),t("p",[e._v("OpenMQTTGateway integrates with established technologies, such as 433mhz/315mhz protocols and infrared (IR), allowing you to upgrade and repurpose older devices. Additionally, OMG is compatible with modern technologies like Bluetooth Low Energy (BLE) and LoRa.")]),e._v(" "),t("p",[e._v("To have an overview of the supported PIR, door, water, temperature, smoke sensors, sirens, rings, beacons, switches & weather stations you can take a look to the\n"),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible devices list"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("You can run OpenMQTTGateway on a wide variety of "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/boards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("boards"),t("OutboundLink")],1),e._v(", ESP32, ESP8266, Arduino MEGA, UNO (with limitation).\nBLE to MQTT gateway can also run on Raspberry Pi, Windows or Unix computers thanks to "),t("a",{attrs:{href:"https://theengs.github.io/gateway/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs Gateway"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Using MQTT, you can seamlessly integrate with home automation platforms such as OpenHAB, Home Assistant, and others, or with IoT software like Node-Red.")]),e._v(" "),t("h1",{attrs:{id:"use-cases"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#use-cases"}},[e._v("#")]),e._v(" Use cases")]),e._v(" "),t("p",[e._v("Leveraging OpenMQTTGateway with a controller allows you to:")]),e._v(" "),t("ul",[t("li",[e._v("Monitor a garden with a Mi Flora BLE sensor and control an irrigation valve depending on the soil moisture,")]),e._v(" "),t("li",[e._v("Trigger a fan depending on the temperature and humidity thanks to a Mi Jia/LYWSD03MMC BLE sensor,")]),e._v(" "),t("li",[e._v("Follow your meat temperature when cooking with an Inkbird IBBQ")]),e._v(" "),t("li",[e._v("Alert yourself by a controller notification if the temperature of a fridge or freezer is too high,")]),e._v(" "),t("li",[e._v("Detect a beacon/smartwatch so as to trigger a special scenario when you come home,")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.youtube.com/watch?v=noUROhtf0E0&t=18s",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lose weight with the help of a complete log system"),t("OutboundLink")],1),e._v(", video from "),t("a",{attrs:{href:"https://www.youtube.com/channel/UCu7_D0o48KbfhpEohoP7YSQ",target:"_blank",rel:"noopener noreferrer"}},[e._v("@Andreas Spiess"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Detect opened door or windows through 433mhz or BLE and alert yourself when leaving")]),e._v(" "),t("li",[e._v("Detect water leakage or smoke remotely")]),e._v(" "),t("li",[e._v("Actionate a siren if something is going wrong")]),e._v(" "),t("li",[e._v("Detect if your far mailbox has been opened by the postman with LoRa")]),e._v(" "),t("li",[e._v("Make smart your old TV or AC system through infrared control")]),e._v(" "),t("li",[e._v("Monitor vehicle tire pressure")])]),e._v(" "),t("p",[e._v("The limit is your imagination 😀")]),e._v(" "),t("h1",{attrs:{id:"functions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[e._v("#")]),e._v(" Functions")]),e._v(" "),t("p",[e._v("Under the hood, OpenMQTTGateway offers features such as:")]),e._v(" "),t("ul",[t("li",[e._v("Deduplication")]),e._v(" "),t("li",[e._v("Simple and lite API")]),e._v(" "),t("li",[e._v("Strong integrations with libraries used")]),e._v(" "),t("li",[e._v("Signal forward/repeat")]),e._v(" "),t("li",[e._v("Wifi web portal onboarding")]),e._v(" "),t("li",[e._v("Web portal configuration")]),e._v(" "),t("li",[e._v("Whitelist & Blacklist management")]),e._v(" "),t("li",[e._v("Secure connections")]),e._v(" "),t("li",[e._v("Over the air updates")]),e._v(" "),t("li",[e._v("Local or cloud, your choice")])]),e._v(" "),t("h2",{attrs:{id:"using-openmqttgateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-openmqttgateway"}},[e._v("#")]),e._v(" Using OpenMQTTGateway ?")]),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"}})]),e._v(" "),t("h2",{attrs:{id:"products-powered-by-openmqttgateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#products-powered-by-openmqttgateway"}},[e._v("#")]),e._v(" Products powered by OpenMQTTGateway")]),e._v(" "),t("h3",{attrs:{id:"theengs-bridge-ble-gateway-with-external-antenna"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#theengs-bridge-ble-gateway-with-external-antenna"}},[e._v("#")]),e._v(" Theengs Bridge, BLE gateway with external antenna")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" is a powerfull BLE to MQTT gateway for over "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("90 sensors"),t("OutboundLink")],1),e._v(". Equipped with an Ethernet port, and external antenna, ensuring an enhanced range for your BLE sensors. It supports also WiFi connectivity.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:a(277),alt:"Theengs bridge view"}}),t("OutboundLink")],1)]),e._v(" "),t("h3",{attrs:{id:"theengs-plug-ble-gateway-and-smart-plug"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#theengs-plug-ble-gateway-and-smart-plug"}},[e._v("#")]),e._v(" Theengs Plug, BLE gateway and Smart Plug")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1),e._v(" brings the following features:")]),e._v(" "),t("ul",[t("li",[e._v("BLE to MQTT gateway, tens of "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/devices/ble-devices/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bluetooth devices"),t("OutboundLink")],1),e._v(" supported thanks to Theengs Decoder library. The plug uses an ESP32 acting as a BLE to Wifi gateway to scan, decode and forward the data of the nearby sensors,")]),e._v(" "),t("li",[e._v("Smart plug that can be controlled remotely,")]),e._v(" "),t("li",[e._v("Energy consumption monitoring,")]),e._v(" "),t("li",[e._v("Presence detection (beta).")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:a(267),alt:"Theengs plug view"}}),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Support the project by purchasing the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" or the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"media"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#media"}},[e._v("#")]),e._v(" Media")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://hackaday.com/2023/01/13/arduino-library-brings-rtl_433-to-the-esp32",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hackaday - ARDUINO LIBRARY BRINGS RTL_433 TO THE ESP32"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.cnx-software.com/2023/01/14/esp32-board-with-lora-433-mhz-sensors/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CNX Software - 433 MHz is not dead! Using an ESP32 board with LoRa module to talk to 433 MHz sensors"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.rtl-sdr.com/rtl_433-ported-to-esp32-microcontrollers-with-cc1101-or-sx127x-transceiver-chips/",target:"_blank",rel:"noopener noreferrer"}},[e._v("RTL_433 PORTED TO ESP32 MICROCONTROLLERS WITH CC1101 OR SX127X TRANSCEIVER CHIPS"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://lwn.net/Articles/921497/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Using low-cost wireless sensors in the unlicensed bands"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.electronics-lab.com/smart-plug-esp32-openmqttgateway-serving-as-an-ble-mqtt-gateway-and-a-power-meter/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SMART PLUG ESP32 OPENMQTTGATEWAY SERVING AS AN BLE MQTT GATEWAY AND A POWER METER"),t("OutboundLink")],1)])]),e._v(" "),t("h3",{attrs:{id:"_433mhz-and-ble"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_433mhz-and-ble"}},[e._v("#")]),e._v(" 433Mhz and BLE")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://youtube.com/embed/_gdXR1uklaY",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("h3",{attrs:{id:"ble"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ble"}},[e._v("#")]),e._v(" BLE")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/noUROhtf0E0",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("h3",{attrs:{id:"_433mhz"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_433mhz"}},[e._v("#")]),e._v(" 433Mhz")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://youtube.com/embed/H-JXWbWjJYE",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("h3",{attrs:{id:"lora"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lora"}},[e._v("#")]),e._v(" LORA")]),e._v(" "),t("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/6DftaHxDawM",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}}),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("The material and information contained in this documentation is for general information purposes only. You should not rely upon the material or information on this documentation as a basis for making any business, legal or any other decisions. There is no warranty given on this documentation content. If you decide to follow the information and materials given it is at your own risk. I will not be liable for any false, inaccurate, inappropriate or incomplete information presented on this website.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/27.5de6269c.js b/dev/assets/js/27.b79194b0.js similarity index 91% rename from dev/assets/js/27.5de6269c.js rename to dev/assets/js/27.b79194b0.js index 0b06f195d4..d0c72462c3 100644 --- a/dev/assets/js/27.5de6269c.js +++ b/dev/assets/js/27.b79194b0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{268:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.b2457906.png"},376:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Logo.9ad3287a.png"},377:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Warning.46adc383.png"},440: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(376),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(268),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(377),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([[27],{268:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.b2457906.png"},371:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Logo.9ad3287a.png"},372:function(a,s,e){a.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Warning.46adc383.png"},434: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(371),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(268),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(372),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/28.afffc935.js b/dev/assets/js/28.276e3657.js similarity index 90% rename from dev/assets/js/28.afffc935.js rename to dev/assets/js/28.276e3657.js index 8a1df6c491..adef68f972 100644 --- a/dev/assets/js/28.afffc935.js +++ b/dev/assets/js/28.276e3657.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{380:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_Arduino_Addon_IR.d037a5e7.png"},381:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_IR.0b60a2b2.png"},382:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_IR.0be79a89.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("Arduino UNO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D9")])]),t._v(" "),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:"arduino-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arduino-hardware-setup"}},[t._v("#")]),t._v(" Arduino Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(380),alt:"IR"}})]),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([[28],{379:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_Arduino_Addon_IR.d037a5e7.png"},380:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_IR.0b60a2b2.png"},381:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_IR.0be79a89.png"},443: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("Arduino UNO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D9")])]),t._v(" "),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:"arduino-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arduino-hardware-setup"}},[t._v("#")]),t._v(" Arduino Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(379),alt:"IR"}})]),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(380),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(381),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/29.69003f25.js b/dev/assets/js/29.10f77064.js similarity index 96% rename from dev/assets/js/29.69003f25.js rename to dev/assets/js/29.10f77064.js index 649775264a..5af2fbc63d 100644 --- a/dev/assets/js/29.69003f25.js +++ b/dev/assets/js/29.10f77064.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{383:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_RF.e2747c60.png"},384:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_RF.fc195165.png"},385:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_Arduino_Addon_RF.4de128c9.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("Arduino UNO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D3")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D4")])]),t._v(" "),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(383),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(384),alt:"Addon_RF"}})]),t._v(" "),e("h2",{attrs:{id:"arduino-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arduino-hardware-setup"}},[t._v("#")]),t._v(" Arduino Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(385),alt:"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([[29],{386:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP32_Addon_RF.e2747c60.png"},387:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_RF.fc195165.png"},388:function(t,e,r){t.exports=r.p+"assets/img/OpenMQTTgateway_Arduino_Addon_RF.4de128c9.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("Arduino UNO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D3")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D4")])]),t._v(" "),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(386),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(387),alt:"Addon_RF"}})]),t._v(" "),e("h2",{attrs:{id:"arduino-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arduino-hardware-setup"}},[t._v("#")]),t._v(" Arduino Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:r(388),alt:"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/30.a0947290.js b/dev/assets/js/30.0c7eecae.js similarity index 87% rename from dev/assets/js/30.a0947290.js rename to dev/assets/js/30.0c7eecae.js index dd5268d80b..be875f8d4f 100644 --- a/dev/assets/js/30.a0947290.js +++ b/dev/assets/js/30.0c7eecae.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{386:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_Arduino_Addon_RS232.042dfac7.png"},387:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_RS232.701c7ce6.png"},388:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP32_Addon_RS232.78e494f3.png"},447: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:"rs232-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rs232-gateway"}},[t._v("#")]),t._v(" RS232 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("TTL to RS232 module")]),t._v(" "),e("td",[t._v("Transceiving")]),t._v(" "),e("td",[t._v("-")])])])]),t._v(" "),e("p",[t._v("Any module using a MAX232 chip will work. Don't pay extra to get all the signals, we're only using RX and TX.")]),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("Arduino UNO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D9")])]),t._v(" "),e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D4")])]),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 VCC on the module to 5V of your board, and the ground on the module to the ground of your board. your Transmit pin goes to TX and your Receive pin goes to RX. This may seem backwards, but the module is labeled as where it will be connected on the RS232 side of the module.")]),t._v(" "),e("h2",{attrs:{id:"arduino-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arduino-hardware-setup"}},[t._v("#")]),t._v(" Arduino Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:a(386),alt:"RS232"}})]),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:a(387),alt:"RS232"}})]),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:a(388),alt:"RS232"}})]),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("RS232 gateway Developed by DieKatzchen")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{383:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_Arduino_Addon_RS232.042dfac7.png"},384:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_RS232.701c7ce6.png"},385:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP32_Addon_RS232.78e494f3.png"},446: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:"rs232-gateway"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#rs232-gateway"}},[t._v("#")]),t._v(" RS232 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("TTL to RS232 module")]),t._v(" "),e("td",[t._v("Transceiving")]),t._v(" "),e("td",[t._v("-")])])])]),t._v(" "),e("p",[t._v("Any module using a MAX232 chip will work. Don't pay extra to get all the signals, we're only using RX and TX.")]),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("Arduino UNO")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D9")])]),t._v(" "),e("tr",[e("td",[t._v("ESP8266")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D2")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("D4")])]),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 VCC on the module to 5V of your board, and the ground on the module to the ground of your board. your Transmit pin goes to TX and your Receive pin goes to RX. This may seem backwards, but the module is labeled as where it will be connected on the RS232 side of the module.")]),t._v(" "),e("h2",{attrs:{id:"arduino-hardware-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#arduino-hardware-setup"}},[t._v("#")]),t._v(" Arduino Hardware setup")]),t._v(" "),e("p",[e("img",{attrs:{src:a(383),alt:"RS232"}})]),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:a(384),alt:"RS232"}})]),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:a(385),alt:"RS232"}})]),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("RS232 gateway Developed by DieKatzchen")])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/33.6c364dda.js b/dev/assets/js/33.10e9bdda.js similarity index 97% rename from dev/assets/js/33.6c364dda.js rename to dev/assets/js/33.10e9bdda.js index b7bdbb92a6..9417b1514f 100644 --- a/dev/assets/js/33.6c364dda.js +++ b/dev/assets/js/33.10e9bdda.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{408:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTGateway_LORA_Configuration.b5f0bb4b.png"},409:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_ESP32_LORA_MSG.e5943094.png"},410:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTGateway_TTGO32_LORA_Receive.ce846ec8.jpg"},463: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:"lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lora-gateway"}},[t._v("#")]),t._v(" LoRa gateway")]),t._v(" "),a("h2",{attrs:{id:"what-is-a-lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-lora-gateway"}},[t._v("#")]),t._v(" What is a LoRa gateway")]),t._v(" "),a("p",[t._v("A LoRa (Long Range) gateway is a device that facilitates communication between LoRa nodes and networks, enabling the transmission and reception of data over long distances using the LoRa modulation technique. It's designed to work with devices that utilize LoRa technology, such as the MakerFab soil and moisture sensor, devices from PricelessTookit and DIY sensors.")]),t._v(" "),a("p",[t._v("The primary distinction between a LoRa gateway and a LoRaWAN gateway lies in the protocol and network architecture:")]),t._v(" "),a("p",[t._v("LoRa gateway: Focuses solely on the physical layer, utilizing the LoRa modulation for communication. It's responsible for receiving and transmitting raw LoRa signals without concerning itself with network protocols or data handling at higher layers. Being focused solely on the physical layer, a LoRa gateway offers greater flexibility for customization and experimentation. The OpenMQTTGateway LoRa gateway receives raw LoRa signals, processes them, and publishes the data to an MQTT topic. Conversely, it can subscribe to MQTT topics and send commands to LoRa devices. This gateway is particularly useful for DIY projects, home automation enthusiasts, and scenarios where direct integration of LoRa devices with MQTT is desired.")]),t._v(" "),a("p",[t._v("LoRaWAN gateway: Operates at a higher layer and is part of the LoRaWAN network architecture. LoRaWAN is a protocol specification built on top of the LoRa technology, providing features like adaptive data rate, encryption, and multi-channel/multi-modulation. A LoRaWAN gateway handles the data from multiple LoRa nodes, forwards it to a centralized network server, which then manages the data and communicates back to the nodes.")]),t._v(" "),a("p",[t._v("In essence, while both gateways utilize LoRa technology for communication, a LoRaWAN gateway is more sophisticated, offering advanced features and integration with the LoRaWAN network infrastructure. The LoRa gateway, with its simpler architecture, is ideal for small networks of nodes, offering easier setup and configuration, making it an interesting choice for users keen on experimenting with LoRa technology.")]),t._v(" "),a("h2",{attrs:{id:"configuring-the-lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuring-the-lora-gateway"}},[t._v("#")]),t._v(" Configuring the LoRa gateway")]),t._v(" "),a("p",[t._v('The LoRa gateway can be configured by MQTT commands or by using the WebUI, here are the parameters available, they can be combined with the key "save" or "erase":')]),t._v(" "),a("ul",[a("li",[t._v("txpower: 0 to 14")]),t._v(" "),a("li",[t._v("spreadingfactor: 7 to 12")]),t._v(" "),a("li",[t._v("frequency: 433000000, 868000000, 915000000")]),t._v(" "),a("li",[t._v("signalbandwidth: 7800, 10400, 15500, 20800, 31250, 41700, 62500, 125000, and 250000")]),t._v(" "),a("li",[t._v("codingrate: 5 to 8")]),t._v(" "),a("li",[t._v("preamblelength: 6 to 65535")]),t._v(" "),a("li",[t._v("syncword: byte")]),t._v(" "),a("li",[t._v("enablecrc: boolean")]),t._v(" "),a("li",[t._v("invertiq: boolean")]),t._v(" "),a("li",[t._v("onlyknown: boolean")])]),t._v(" "),a("p",[t._v("With the WebUI:\n"),a("img",{attrs:{src:e(408),alt:"LoRa configuration page"}})]),t._v(" "),a("p",[t._v("With MQTT commands:\n"),a("code",[t._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoLORA/config -m \'{"frequency":"433000000","save":true}\'')])]),t._v(" "),a("h2",{attrs:{id:"receiving-data-from-lora-signal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-lora-signal"}},[t._v("#")]),t._v(" Receiving data from LoRa signal")]),t._v(" "),a("p",[t._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),t._v(" "),a("p",[a("code",[t._v("sudo mosquitto_sub -t +/# -v")])]),t._v(" "),a("p",[t._v("Generate your LoRa signals by using another LoRa module, you can flash the sender program from "),a("RouterLink",{attrs:{to:"/examples/LoraTemperature/"}},[t._v("this example")]),t._v(" to an ESP32 LoRa board, this sample node will generate a LoRa signal containing the ESP32 internal temperature.")],1),t._v(" "),a("p",[t._v("Once one board flashed with OMG and the other with the sender program you should receive regular packets into "),a("code",[t._v("home/OpenMQTTGateway_ESP32_LORA_TEST/LORAtoMQTT/AABBCCDDEEFF")]),t._v(" like below:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AA:BB:CC:DD:EE:FF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-16")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9.25")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-3598")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tempc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"55.3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AA:BB:CC:DD:EE:FF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-26")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-3598")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tempc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"55.4"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AA:BB:CC:DD:EE:FF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-16")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9.5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-3581")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tempc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"57"')]),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("p",[a("img",{attrs:{src:e(409),alt:"LoRa board receiving data"}})]),t._v(" "),a("p",[t._v("Messages that contain non-printable characters will be converted to hexadecimal and look like this:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-121")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-11.75")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-29116")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hex"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"C0FFEE"')]),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("p",[t._v('They can be filtered by setting the "onlyknown" command to '),a("code",[t._v("true")]),t._v(" or by an activation into the WebUI or Home Assistant.")]),t._v(" "),a("p",[t._v("And from a supported device (in this case, a WiPhone), looks like this:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-50")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9.25")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("20728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"from"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"123ABC"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"to"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"000000"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"message"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hi from WiPhone"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"WiPhone"')]),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("h2",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-lora-signal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-lora-signal"}},[t._v("#")]),t._v(" Send data by MQTT to convert it on LoRa signal")]),t._v(" "),a("p",[a("code",[t._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoLORA -m \'{"message":"hello OMG1"}\'')])]),t._v(" "),a("p",[t._v('This command will send by LoRa the message "hello OMG1" and use the default parameters defined in '),a("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/4b8d28179b63ae3f3d454da57ec8c109c159c386/config_LORA.h#L32",target:"_blank",rel:"noopener noreferrer"}},[t._v("config_LORA.h"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("img",{attrs:{src:e(410),alt:"TTGO Lora receiving packets"}})]),t._v(" "),a("p",[t._v("If you want to test that your sending works you can use another TTGO LoRa module, you can flash the receiver program from "),a("a",{attrs:{href:"https://github.com/LilyGO/TTGO-LORA32-V2.0",target:"_blank",rel:"noopener noreferrer"}},[t._v("this repository"),a("OutboundLink")],1),t._v(" and the SSD1306 library "),a("a",{attrs:{href:"https://github.com/ThingPulse/esp8266-oled-ssd1306",target:"_blank",rel:"noopener noreferrer"}},[t._v("there"),a("OutboundLink")],1)]),t._v(" "),a("h2",{attrs:{id:"send-data-by-mqtt-with-advanced-lora-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-lora-parameters"}},[t._v("#")]),t._v(" Send data by MQTT with advanced LoRa parameters")]),t._v(" "),a("ul",[a("li",[t._v("Plain text message: "),a("code",[t._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoLORA -m \'{"message":"test8","txpower":17}\'')]),a("br"),t._v('\nwill make LoRa use the a txpower of 17 when sending the message "test8"')]),t._v(" "),a("li",[t._v("Binary message: "),a("code",[t._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoLORA" -m \'{"hex":"01C0FFEE"}\'')]),a("br"),t._v("\nwill send binary 0x01C0FFEE")]),t._v(" "),a("li",[t._v("WiPhone message: "),a("code",[t._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoLORA" -m \'{"message":"test","type":"WiPhone","to":"123ABC","from":"FFFFFF"}\'')]),a("br"),t._v('\nwill send "test" to a WiPhone with chip ID 123ABC')])]),t._v(" "),a("p",[t._v("More info on where the LoRa library is born "),a("a",{attrs:{href:"https://github.com/sandeepmistry/arduino-LoRa/blob/master/API.md#radio-parameters",target:"_blank",rel:"noopener noreferrer"}},[t._v("@sandeepmistry"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Tutorial on how to leverage LoRa for a mailbox sensor from "),a("a",{attrs:{href:"https://www.youtube.com/channel/UCz75N6inuLHXnRC5tqagNLw",target:"_blank",rel:"noopener noreferrer"}},[t._v("PricelessToolkit"),a("OutboundLink")],1),t._v(":\n"),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/6DftaHxDawM",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}})])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{411:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTGateway_LORA_Configuration.b5f0bb4b.png"},412:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_ESP32_LORA_MSG.e5943094.png"},413:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTGateway_TTGO32_LORA_Receive.ce846ec8.jpg"},464: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:"lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lora-gateway"}},[t._v("#")]),t._v(" LoRa gateway")]),t._v(" "),a("h2",{attrs:{id:"what-is-a-lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-is-a-lora-gateway"}},[t._v("#")]),t._v(" What is a LoRa gateway")]),t._v(" "),a("p",[t._v("A LoRa (Long Range) gateway is a device that facilitates communication between LoRa nodes and networks, enabling the transmission and reception of data over long distances using the LoRa modulation technique. It's designed to work with devices that utilize LoRa technology, such as the MakerFab soil and moisture sensor, devices from PricelessTookit and DIY sensors.")]),t._v(" "),a("p",[t._v("The primary distinction between a LoRa gateway and a LoRaWAN gateway lies in the protocol and network architecture:")]),t._v(" "),a("p",[t._v("LoRa gateway: Focuses solely on the physical layer, utilizing the LoRa modulation for communication. It's responsible for receiving and transmitting raw LoRa signals without concerning itself with network protocols or data handling at higher layers. Being focused solely on the physical layer, a LoRa gateway offers greater flexibility for customization and experimentation. The OpenMQTTGateway LoRa gateway receives raw LoRa signals, processes them, and publishes the data to an MQTT topic. Conversely, it can subscribe to MQTT topics and send commands to LoRa devices. This gateway is particularly useful for DIY projects, home automation enthusiasts, and scenarios where direct integration of LoRa devices with MQTT is desired.")]),t._v(" "),a("p",[t._v("LoRaWAN gateway: Operates at a higher layer and is part of the LoRaWAN network architecture. LoRaWAN is a protocol specification built on top of the LoRa technology, providing features like adaptive data rate, encryption, and multi-channel/multi-modulation. A LoRaWAN gateway handles the data from multiple LoRa nodes, forwards it to a centralized network server, which then manages the data and communicates back to the nodes.")]),t._v(" "),a("p",[t._v("In essence, while both gateways utilize LoRa technology for communication, a LoRaWAN gateway is more sophisticated, offering advanced features and integration with the LoRaWAN network infrastructure. The LoRa gateway, with its simpler architecture, is ideal for small networks of nodes, offering easier setup and configuration, making it an interesting choice for users keen on experimenting with LoRa technology.")]),t._v(" "),a("h2",{attrs:{id:"configuring-the-lora-gateway"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuring-the-lora-gateway"}},[t._v("#")]),t._v(" Configuring the LoRa gateway")]),t._v(" "),a("p",[t._v('The LoRa gateway can be configured by MQTT commands or by using the WebUI, here are the parameters available, they can be combined with the key "save" or "erase":')]),t._v(" "),a("ul",[a("li",[t._v("txpower: 0 to 14")]),t._v(" "),a("li",[t._v("spreadingfactor: 7 to 12")]),t._v(" "),a("li",[t._v("frequency: 433000000, 868000000, 915000000")]),t._v(" "),a("li",[t._v("signalbandwidth: 7800, 10400, 15500, 20800, 31250, 41700, 62500, 125000, and 250000")]),t._v(" "),a("li",[t._v("codingrate: 5 to 8")]),t._v(" "),a("li",[t._v("preamblelength: 6 to 65535")]),t._v(" "),a("li",[t._v("syncword: byte")]),t._v(" "),a("li",[t._v("enablecrc: boolean")]),t._v(" "),a("li",[t._v("invertiq: boolean")]),t._v(" "),a("li",[t._v("onlyknown: boolean")])]),t._v(" "),a("p",[t._v("With the WebUI:\n"),a("img",{attrs:{src:e(411),alt:"LoRa configuration page"}})]),t._v(" "),a("p",[t._v("With MQTT commands:\n"),a("code",[t._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoLORA/config -m \'{"frequency":"433000000","save":true}\'')])]),t._v(" "),a("h2",{attrs:{id:"receiving-data-from-lora-signal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-lora-signal"}},[t._v("#")]),t._v(" Receiving data from LoRa signal")]),t._v(" "),a("p",[t._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),t._v(" "),a("p",[a("code",[t._v("sudo mosquitto_sub -t +/# -v")])]),t._v(" "),a("p",[t._v("Generate your LoRa signals by using another LoRa module, you can flash the sender program from "),a("RouterLink",{attrs:{to:"/examples/LoraTemperature/"}},[t._v("this example")]),t._v(" to an ESP32 LoRa board, this sample node will generate a LoRa signal containing the ESP32 internal temperature.")],1),t._v(" "),a("p",[t._v("Once one board flashed with OMG and the other with the sender program you should receive regular packets into "),a("code",[t._v("home/OpenMQTTGateway_ESP32_LORA_TEST/LORAtoMQTT/AABBCCDDEEFF")]),t._v(" like below:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AA:BB:CC:DD:EE:FF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-16")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9.25")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-3598")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tempc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"55.3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AA:BB:CC:DD:EE:FF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-26")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-3598")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tempc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"55.4"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AA:BB:CC:DD:EE:FF"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-16")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9.5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-3581")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"tempc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"57"')]),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("p",[a("img",{attrs:{src:e(412),alt:"LoRa board receiving data"}})]),t._v(" "),a("p",[t._v("Messages that contain non-printable characters will be converted to hexadecimal and look like this:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-121")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-11.75")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-29116")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"hex"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"C0FFEE"')]),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("p",[t._v('They can be filtered by setting the "onlyknown" command to '),a("code",[t._v("true")]),t._v(" or by an activation into the WebUI or Home Assistant.")]),t._v(" "),a("p",[t._v("And from a supported device (in this case, a WiPhone), looks like this:")]),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("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"rssi"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("-50")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"snr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("9.25")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"pferror"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("20728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"packetSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"from"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"123ABC"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"to"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"000000"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"message"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Hi from WiPhone"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"WiPhone"')]),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("h2",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-lora-signal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-lora-signal"}},[t._v("#")]),t._v(" Send data by MQTT to convert it on LoRa signal")]),t._v(" "),a("p",[a("code",[t._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoLORA -m \'{"message":"hello OMG1"}\'')])]),t._v(" "),a("p",[t._v('This command will send by LoRa the message "hello OMG1" and use the default parameters defined in '),a("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/4b8d28179b63ae3f3d454da57ec8c109c159c386/config_LORA.h#L32",target:"_blank",rel:"noopener noreferrer"}},[t._v("config_LORA.h"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("img",{attrs:{src:e(413),alt:"TTGO Lora receiving packets"}})]),t._v(" "),a("p",[t._v("If you want to test that your sending works you can use another TTGO LoRa module, you can flash the receiver program from "),a("a",{attrs:{href:"https://github.com/LilyGO/TTGO-LORA32-V2.0",target:"_blank",rel:"noopener noreferrer"}},[t._v("this repository"),a("OutboundLink")],1),t._v(" and the SSD1306 library "),a("a",{attrs:{href:"https://github.com/ThingPulse/esp8266-oled-ssd1306",target:"_blank",rel:"noopener noreferrer"}},[t._v("there"),a("OutboundLink")],1)]),t._v(" "),a("h2",{attrs:{id:"send-data-by-mqtt-with-advanced-lora-parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-lora-parameters"}},[t._v("#")]),t._v(" Send data by MQTT with advanced LoRa parameters")]),t._v(" "),a("ul",[a("li",[t._v("Plain text message: "),a("code",[t._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoLORA -m \'{"message":"test8","txpower":17}\'')]),a("br"),t._v('\nwill make LoRa use the a txpower of 17 when sending the message "test8"')]),t._v(" "),a("li",[t._v("Binary message: "),a("code",[t._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoLORA" -m \'{"hex":"01C0FFEE"}\'')]),a("br"),t._v("\nwill send binary 0x01C0FFEE")]),t._v(" "),a("li",[t._v("WiPhone message: "),a("code",[t._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoLORA" -m \'{"message":"test","type":"WiPhone","to":"123ABC","from":"FFFFFF"}\'')]),a("br"),t._v('\nwill send "test" to a WiPhone with chip ID 123ABC')])]),t._v(" "),a("p",[t._v("More info on where the LoRa library is born "),a("a",{attrs:{href:"https://github.com/sandeepmistry/arduino-LoRa/blob/master/API.md#radio-parameters",target:"_blank",rel:"noopener noreferrer"}},[t._v("@sandeepmistry"),a("OutboundLink")],1)]),t._v(" "),a("p",[t._v("Tutorial on how to leverage LoRa for a mailbox sensor from "),a("a",{attrs:{href:"https://www.youtube.com/channel/UCz75N6inuLHXnRC5tqagNLw",target:"_blank",rel:"noopener noreferrer"}},[t._v("PricelessToolkit"),a("OutboundLink")],1),t._v(":\n"),a("iframe",{attrs:{width:"560",height:"315",src:"https://www.youtube.com/embed/6DftaHxDawM",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}})])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/34.29c7b6c5.js b/dev/assets/js/34.71dbbff7.js similarity index 98% rename from dev/assets/js/34.29c7b6c5.js rename to dev/assets/js/34.71dbbff7.js index bd3dc67c0a..7779074859 100644 --- a/dev/assets/js/34.29c7b6c5.js +++ b/dev/assets/js/34.71dbbff7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{411:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial1.b8169d69.jpg"},412:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial2.9629e5a0.jpg"},413:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_Pilight_Digoo-DG-R8S.8a0f9d60.png"},464:function(e,t,a){"use strict";a.r(t);var s=a(14),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"rf-gateways-433mhz-315mhz-868mhz-915mhz"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf-gateways-433mhz-315mhz-868mhz-915mhz"}},[e._v("#")]),e._v(" RF gateways (433mhz/315mhz/868mhz/915mhz)")]),e._v(" "),t("h2",{attrs:{id:"what-is-an-rf-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-an-rf-gateway"}},[e._v("#")]),e._v(" What is an RF gateway")]),e._v(" "),t("p",[e._v("An RF (Radio Frequency) gateway is a device that facilitates communication between RF devices and other communication protocols, such as MQTT in this context. Operating at specific frequencies like 433MHz, 315MHz, 868MHz, and 915MHz, these gateways can receive signals from various RF devices, decode them, and then forward the decoded data to systems like Home Assistant, OpenHAB, or any other MQTT-based system.")]),e._v(" "),t("p",[e._v("The primary advantage of using an RF gateway is its ability to bridge the gap between the world of RF devices, which might include sensors, remote controls, and other RF-based gadgets, and modern smart home systems or applications. This enables users to integrate a wide range of devices into their smart home setup, even if those devices were not originally designed for such integration.")]),e._v(" "),t("p",[e._v("In the context of the 433MHz MQTT gateway, the device not only decodes RF signals but also allows for seamless integration with MQTT systems. This means that signals from RF devices can be easily published to MQTT topics, and likewise, MQTT messages can be translated into RF signals for transmission. This two-way communication capability makes the gateway a powerful tool for expanding the capabilities of both RF devices and MQTT systems.")]),e._v(" "),t("p",[e._v("OpenMQTTGateway leverages several libraries for RF communication:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Library")]),e._v(" "),t("th",[e._v("Description")]),e._v(" "),t("th",[e._v("Device Support")]),e._v(" "),t("th",[e._v("Resource Requirements")]),e._v(" "),t("th",[e._v("Flexibility")]),e._v(" "),t("th",[e._v("Integration Capabilities")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("RTL_433")]),e._v(" "),t("td",[e._v("Maintained and performant library supporting receiving 433Mhz but also other frequencies (does not support sending)")]),e._v(" "),t("td",[e._v("Wide range of devices")]),e._v(" "),t("td",[e._v("Moderate")]),e._v(" "),t("td",[e._v("Decodes various protocols")]),e._v(" "),t("td",[e._v("Can be integrated with systems supporting Home Assistant Auto Discovery")])]),e._v(" "),t("tr",[t("td",[e._v("RCSwitch")]),e._v(" "),t("td",[e._v("Arduino library for 433MHz module communication.")]),e._v(" "),t("td",[e._v("Basic devices")]),e._v(" "),t("td",[e._v("Lightweight")]),e._v(" "),t("td",[e._v("Basic encoding and decoding")]),e._v(" "),t("td",[e._v("Basic integration")])]),e._v(" "),t("tr",[t("td",[e._v("Pilight")]),e._v(" "),t("td",[e._v("Open-source solution for device control and data retrieval.")]),e._v(" "),t("td",[e._v("Broad range of devices and protocols")]),e._v(" "),t("td",[e._v("Moderate")]),e._v(" "),t("td",[e._v("Offers raw and protocol-specific data handling")]),e._v(" "),t("td",[e._v("Structured data")])]),e._v(" "),t("tr",[t("td",[e._v("RF2")]),e._v(" "),t("td",[e._v("Library focused on KaKu devices and protocol.")]),e._v(" "),t("td",[e._v("Specific devices and protocols")]),e._v(" "),t("td",[e._v("Lightweight")]),e._v(" "),t("td",[e._v("Decoding and encoding capabilities")]),e._v(" "),t("td",[e._v("Basic integration")])])])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("INFO")]),e._v(" "),t("p",[e._v("RTL_433 library can only receive data, RCSwitch, PiLight, RF2 can receive and transmit.")])]),e._v(" "),t("h2",{attrs:{id:"common-parameters-accross-modules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#common-parameters-accross-modules"}},[e._v("#")]),e._v(" Common parameters accross modules")]),e._v(" "),t("h3",{attrs:{id:"change-default-frequency-sx127x-and-cc1101"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-default-frequency-sx127x-and-cc1101"}},[e._v("#")]),e._v(" Change default frequency (SX127X and CC1101)")]),e._v(" "),t("p",[e._v("The frequency can be can changed by sending an MQTT message or through the WebUI. Parameter is "),t("code",[e._v("frequency")]),e._v(" and valid values are 300-348 Mhz, 387-464Mhz and 779-928Mhz. Actual frequency support will depend on your board")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"frequency":315.026}')])]),e._v(" "),t("p",[e._v("Note that with CC1101 this frequency will be used as the default sending frequency.")]),e._v(" "),t("h3",{attrs:{id:"changing-active-receiver-modules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-active-receiver-modules"}},[e._v("#")]),e._v(" Changing Active Receiver Modules")]),e._v(" "),t("p",[e._v("Switching of the active transceiver (RTL_433 receiver only) module is available between the RF, RF2, and (RTL_433 or Pilight) gateway modules, allowing for changing of signal decoders without redeploying the OpenMQTTGateway package. Sending a JSON message to the command topic will change the active transceiver module.")]),e._v(" "),t("p",[e._v("To enable the RF gateway module send a json message to the RF gateway module command subject with the key being 'active', and any value. The value at this time is ignored.")]),e._v(" "),t("p",[e._v("1 - PiLight\n2 - RF\n3 - RTL_433\n4 - RF2")]),e._v(" "),t("p",[e._v("Example to receive from the RF gateway:\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoRF/config" -m \'{"active":2}\'')])]),e._v(" "),t("p",[e._v("The active receiver can also be changed with the WebUI.")]),e._v(" "),t("p",[e._v("The OpenMQTTGateway RFtoMQTT status message contains a key "),t("code",[e._v("active")]),e._v(" which is the current active receiver module.")]),e._v(" "),t("h2",{attrs:{id:"rtl-433-device-decoders"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rtl-433-device-decoders"}},[e._v("#")]),e._v(" RTL_433 device decoders")]),e._v(" "),t("p",[e._v("This feature is only available on a ESP32 based device with a supported transceiver connected due to the resource requirements of the rtl_433 device decoders. At the present time only Pulse Position Modulation (OOK_PPM), Pulse Width Modulation (OOK_PWM) and Pulse Manchester Zero Bit (OOK_PULSE_MANCHESTER_ZEROBIT) based decoders are available.")]),e._v(" "),t("h3",{attrs:{id:"supported-hardware-combinations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-hardware-combinations"}},[e._v("#")]),e._v(" Supported hardware combinations")]),e._v(" "),t("ul",[t("li",[e._v("ESP32 based device with a CC1101 transceiver")]),e._v(" "),t("li",[e._v("Heltec WiFi LoRa 32 (V2.1) and LilyGo LoRa 32 V2.1")]),e._v(" "),t("li",[e._v("ESP32 DOIT DevKit V1 and Ai-Thinker R01 (SX1278)")]),e._v(" "),t("li",[e._v("ESP32 + SX1278/SX1276")])]),e._v(" "),t("h3",{attrs:{id:"supported-decoders"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-decoders"}},[e._v("#")]),e._v(" Supported Decoders")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Registering protocol [2] "Acurite 609TXC Temperature and Humidity Sensor"\nRegistering protocol [3] "Acurite 592TXR Temp/Humidity, 5n1 Weather Station, 6045 Lightning, 3N1, Atlas"\nRegistering protocol [4] "Acurite 986 Refrigerator / Freezer Thermometer"\nRegistering protocol [5] "Acurite 606TX Temperature Sensor"\nRegistering protocol [6] "Acurite 00275rm,00276rm Temp/Humidity with optional probe"\nRegistering protocol [7] "Acurite 590TX Temperature with optional Humidity"\nRegistering protocol [8] "Acurite Grill/Meat Thermometer 01185M"\nRegistering protocol [9] "Akhan 100F14 remote keyless entry"\nRegistering protocol [10] "AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon)"\nRegistering protocol [11] "Ambient Weather TX-8300 Temperature/Humidity Sensor"\nRegistering protocol [13] "Auriol AFT 77 B2 temperature sensor"\nRegistering protocol [14] "Auriol AFW2A1 temperature/humidity sensor"\nRegistering protocol [15] "Auriol AHFL temperature/humidity sensor"\nRegistering protocol [16] "Auriol HG02832, HG05124A-DCF, Rubicson 48957 temperature/humidity sensor"\nRegistering protocol [18] "Blyss DC5-UK-WH"\nRegistering protocol [20] "Bresser Thermo-/Hygro-Sensor 3CH"\nRegistering protocol [22] "Burnhard BBQ thermometer"\nRegistering protocol [23] "Calibeur RF-104 Sensor"\nRegistering protocol [24] "Cardin S466-TX2"\nRegistering protocol [25] "Chuango Security Technology"\nRegistering protocol [26] "Companion WTR001 Temperature Sensor"\nRegistering protocol [29] "Ecowitt Wireless Outdoor Thermometer WH53/WH0280/WH0281A"\nRegistering protocol [30] "Eurochron EFTH-800 temperature and humidity sensor"\nRegistering protocol [34] "Esperanza EWS"\nRegistering protocol [36] "Fine Offset Electronics, WH2, WH5, Telldus Temperature/Humidity/Rain Sensor"\nRegistering protocol [37] "Fine Offset Electronics, WH0530 Temperature/Rain Sensor"\nRegistering protocol [38] "Fine Offset WH1050 Weather Station"\nRegistering protocol [39] "Fine Offset Electronics WH1080/WH3080 Weather Station"\nRegistering protocol [41] "FT-004-B Temperature Sensor"\nRegistering protocol [42] "Generic wireless motion sensor"\nRegistering protocol [43] "Generic Remote SC226x EV1527"\nRegistering protocol [44] "Generic temperature sensor 1"\nRegistering protocol [45] "Govee Water Leak Dectector H5054, Door Contact Sensor B5023"\nRegistering protocol [46] "Globaltronics QUIGG GT-TMBBQ-05"\nRegistering protocol [47] "Globaltronics GT-WT-02 Sensor"\nRegistering protocol [48] "Globaltronics GT-WT-03 Sensor"\nRegistering protocol [49] "Microchip HCS200 KeeLoq Hopping Encoder based remotes"\nRegistering protocol [50] "Honeywell ActivLink, Wireless Doorbell"\nRegistering protocol [51] "HT680 Remote control"\nRegistering protocol [52] "inFactory, nor-tec, FreeTec NC-3982-913 temperature humidity sensor"\nRegistering protocol [54] "Interlogix GE UTC Security Devices"\nRegistering protocol [56] "Kedsum Temperature & Humidity Sensor, Pearl NC-7415"\nRegistering protocol [57] "Kerui PIR / Contact Sensor"\nRegistering protocol [58] "LaCrosse TX Temperature / Humidity Sensor"\nRegistering protocol [59] "LaCrosse TX141-Bv2, TX141TH-Bv2, TX141-Bv3, TX141W, TX145wsdth, (TFA, ORIA) sensor"\nRegistering protocol [60] "LaCrosse/ELV/Conrad WS7000/WS2500 weather sensors"\nRegistering protocol [61] "LaCrosse WS-2310 / WS-3600 Weather Station"\nRegistering protocol [63] "Markisol, E-Motion, BOFU, Rollerhouse, BF-30x, BF-415 curtain remote"\nRegistering protocol [64] "Maverick et73"\nRegistering protocol [66] "Missil ML0757 weather station"\nRegistering protocol [68] "Nexus, FreeTec NC-7345, NX-3980, Solight TE82S, TFA 30.3209 temperature/humidity sensor"\nRegistering protocol [70] "Opus/Imagintronix XT300 Soil Moisture"\nRegistering protocol [71] "Oregon Scientific Weather Sensor"\nRegistering protocol [72] "Oregon Scientific SL109H Remote Thermal Hygro Sensor"\nRegistering protocol [74] "Philips outdoor temperature sensor (type AJ3650)"\nRegistering protocol [75] "Philips outdoor temperature sensor (type AJ7010)"\nRegistering protocol [76] "Prologue, FreeTec NC-7104, NC-7159-675 temperature sensor"\nRegistering protocol [77] "Quhwa"\nRegistering protocol [79] "Rubicson Temperature Sensor"\nRegistering protocol [80] "Rubicson 48659 Thermometer"\nRegistering protocol [81] "Conrad S3318P, FreeTec NC-5849-913 temperature humidity sensor"\nRegistering protocol [82] "Silvercrest Remote Control"\nRegistering protocol [83] "Skylink HA-434TL motion sensor"\nRegistering protocol [84] "Wireless Smoke and Heat Detector GS 558"\nRegistering protocol [85] "Solight TE44/TE66, EMOS E0107T, NX-6876-917"\nRegistering protocol [86] "Springfield Temperature and Soil Moisture"\nRegistering protocol [87] "TFA Dostmann 30.3221.02 T/H Outdoor Sensor"\nRegistering protocol [88] "TFA Drop Rain Gauge 30.3233.01"\nRegistering protocol [89] "TFA pool temperature sensor"\nRegistering protocol [90] "TFA-Twin-Plus-30.3049, Conrad KW9010, Ea2 BL999"\nRegistering protocol [91] "Thermopro TP11 Thermometer"\nRegistering protocol [92] "Thermopro TP08/TP12/TP20 thermometer"\nRegistering protocol [94] "TS-FT002 Wireless Ultrasonic Tank Liquid Level Meter With Temperature Sensor"\nRegistering protocol [95] "Visonic powercode"\nRegistering protocol [96] "Waveman Switch Transmitter"\nRegistering protocol [97] "WG-PB12V1 Temperature Sensor"\nRegistering protocol [98] "WS2032 weather station"\nRegistering protocol [99] "Hyundai WS SENZOR Remote Temperature Sensor"\nRegistering protocol [100] "WT0124 Pool Thermometer"\nRegistering protocol [101] "X10 RF"\nRegistering protocol [102] "X10 Security"\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("span",{staticClass:"line-number"},[e._v("24")]),t("br"),t("span",{staticClass:"line-number"},[e._v("25")]),t("br"),t("span",{staticClass:"line-number"},[e._v("26")]),t("br"),t("span",{staticClass:"line-number"},[e._v("27")]),t("br"),t("span",{staticClass:"line-number"},[e._v("28")]),t("br"),t("span",{staticClass:"line-number"},[e._v("29")]),t("br"),t("span",{staticClass:"line-number"},[e._v("30")]),t("br"),t("span",{staticClass:"line-number"},[e._v("31")]),t("br"),t("span",{staticClass:"line-number"},[e._v("32")]),t("br"),t("span",{staticClass:"line-number"},[e._v("33")]),t("br"),t("span",{staticClass:"line-number"},[e._v("34")]),t("br"),t("span",{staticClass:"line-number"},[e._v("35")]),t("br"),t("span",{staticClass:"line-number"},[e._v("36")]),t("br"),t("span",{staticClass:"line-number"},[e._v("37")]),t("br"),t("span",{staticClass:"line-number"},[e._v("38")]),t("br"),t("span",{staticClass:"line-number"},[e._v("39")]),t("br"),t("span",{staticClass:"line-number"},[e._v("40")]),t("br"),t("span",{staticClass:"line-number"},[e._v("41")]),t("br"),t("span",{staticClass:"line-number"},[e._v("42")]),t("br"),t("span",{staticClass:"line-number"},[e._v("43")]),t("br"),t("span",{staticClass:"line-number"},[e._v("44")]),t("br"),t("span",{staticClass:"line-number"},[e._v("45")]),t("br"),t("span",{staticClass:"line-number"},[e._v("46")]),t("br"),t("span",{staticClass:"line-number"},[e._v("47")]),t("br"),t("span",{staticClass:"line-number"},[e._v("48")]),t("br"),t("span",{staticClass:"line-number"},[e._v("49")]),t("br"),t("span",{staticClass:"line-number"},[e._v("50")]),t("br"),t("span",{staticClass:"line-number"},[e._v("51")]),t("br"),t("span",{staticClass:"line-number"},[e._v("52")]),t("br"),t("span",{staticClass:"line-number"},[e._v("53")]),t("br"),t("span",{staticClass:"line-number"},[e._v("54")]),t("br"),t("span",{staticClass:"line-number"},[e._v("55")]),t("br"),t("span",{staticClass:"line-number"},[e._v("56")]),t("br"),t("span",{staticClass:"line-number"},[e._v("57")]),t("br"),t("span",{staticClass:"line-number"},[e._v("58")]),t("br"),t("span",{staticClass:"line-number"},[e._v("59")]),t("br"),t("span",{staticClass:"line-number"},[e._v("60")]),t("br"),t("span",{staticClass:"line-number"},[e._v("61")]),t("br"),t("span",{staticClass:"line-number"},[e._v("62")]),t("br"),t("span",{staticClass:"line-number"},[e._v("63")]),t("br"),t("span",{staticClass:"line-number"},[e._v("64")]),t("br"),t("span",{staticClass:"line-number"},[e._v("65")]),t("br"),t("span",{staticClass:"line-number"},[e._v("66")]),t("br"),t("span",{staticClass:"line-number"},[e._v("67")]),t("br"),t("span",{staticClass:"line-number"},[e._v("68")]),t("br"),t("span",{staticClass:"line-number"},[e._v("69")]),t("br"),t("span",{staticClass:"line-number"},[e._v("70")]),t("br"),t("span",{staticClass:"line-number"},[e._v("71")]),t("br"),t("span",{staticClass:"line-number"},[e._v("72")]),t("br"),t("span",{staticClass:"line-number"},[e._v("73")]),t("br"),t("span",{staticClass:"line-number"},[e._v("74")]),t("br"),t("span",{staticClass:"line-number"},[e._v("75")]),t("br"),t("span",{staticClass:"line-number"},[e._v("76")]),t("br"),t("span",{staticClass:"line-number"},[e._v("77")]),t("br"),t("span",{staticClass:"line-number"},[e._v("78")]),t("br"),t("span",{staticClass:"line-number"},[e._v("79")]),t("br"),t("span",{staticClass:"line-number"},[e._v("80")]),t("br"),t("span",{staticClass:"line-number"},[e._v("81")]),t("br")])]),t("h3",{attrs:{id:"change-signal-rssi-threshold-delta"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-signal-rssi-threshold-delta"}},[e._v("#")]),e._v(" Change Signal RSSI Threshold Delta")]),e._v(" "),t("p",[e._v("Delta applied to RSSI floor noise level to determine start and end of signal, defaults to 9db.")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"rssiThreshold": 9}')])]),e._v(" "),t("h3",{attrs:{id:"retrieve-current-status-of-receiver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#retrieve-current-status-of-receiver"}},[e._v("#")]),e._v(" Retrieve current status of receiver")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"status":1}')])]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"model":"status",\n"protocol":"debug",\n"debug":0, - rtl_433 verbose setting\n"duration":11799327, - duration of current signal\n"Gap length":-943575, - duration of gap between current signal\n"rssi":-38, - most recent received signal strength\n"train":1, - signal processing train #\n"messageCount":3, - total number of signals received\n"totalSignals":9, - RegOokFix signal quality count ( of 10 )\n"ignoredSignals":0, - RegOokFix signal quality ignored signals\n"unparsedSignals":3, - RegOokFix signal quality unparseable signals\n"_enabledReceiver":1, - which receiver is enabled\n"receiveMode":0, - is the receiver currently receiving a signal\n"currentRssi":-89, - current rssi level\n"rssiThreshold":-82, - minimum rssi level to start signal processing\n"pulses":0, - how many pulses have been received in the current signal\n"StackHighWaterMark":5528, - ESP32 Stack\n"freeMem":112880} - ESP32 memory available\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("h2",{attrs:{id:"rcswitch-based-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rcswitch-based-gateway"}},[e._v("#")]),e._v(" RCSwitch based gateway")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rf-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rf-signal"}},[e._v("#")]),e._v(" Receiving data from RF signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and you should see :")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/433toMQTT {"value":1315156,"protocol":1,"length":24,"delay":317}')])]),e._v(" "),t("h3",{attrs:{id:"disabling-transmit-function-to-safe-a-pin"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disabling-transmit-function-to-safe-a-pin"}},[e._v("#")]),e._v(" Disabling Transmit function to safe a PIN")]),e._v(" "),t("p",[e._v("To disable transmit functions to allow the use of another pin, add the following to the config_rf.h file :")]),e._v(" "),t("p",[t("code",[e._v("#define RF_DISABLE_TRANSMIT")])]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-rf-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-rf-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on RF signal")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTto433" -m \'{"value":1315156}\'')])]),e._v(" "),t("p",[e._v("This command will send by RF the code 1315156 and use the default parameters (protocol 1, delay 350)")]),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(411),alt:"Serial data"}})]),e._v(" "),t("p",[e._v('We see that the Arduino receive the value 1315156 on the MQTT subject "MQTTto433" and send the data by RF')]),e._v(" "),t("p",[e._v("Arduino IDE serial data received when receiving data by 433Mhz")]),e._v(" "),t("p",[t("img",{attrs:{src:a(412),alt:"Serial data 2"}})]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-with-advanced-rf-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-rf-parameters"}},[e._v("#")]),e._v(" Send data by MQTT with advanced RF parameters")]),e._v(" "),t("p",[e._v("RF sending support three advanced parameters: bits length, RF protocol and RF pulselength")]),e._v(" "),t("p",[e._v('-if you want to use a bits number different than 24 put inside your topic "length":24 for example')]),e._v(" "),t("p",[e._v('-if you want to use a different RCswitch protocol put inside your payload the protocol number 2, "protocol":2.')]),e._v(" "),t("p",[e._v('-if you want to use a pulselength 315 put inside your topic "delay":315')]),e._v(" "),t("p",[e._v("Example:\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTto433" -m \'{"value":1315156,"protocol":2,"length":24,"delay":315}\'')]),e._v("\nwill make RCSwitch use the protocol 2 with a pulselength of 315ms and a bits number of 24 with a power of 5")]),e._v(" "),t("h3",{attrs:{id:"repeat-the-rf-signal-openmqttgateway-receive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repeat-the-rf-signal-openmqttgateway-receive"}},[e._v("#")]),e._v(" Repeat the RF signal OpenMQTTGateway receive")]),e._v(" "),t("p",[e._v("So as to repeat the RF signal received by the gateway once set the following parameter to true in config_RF.h")]),e._v(" "),t("p",[t("code",[e._v("#define repeatRFwMQTT true")])]),e._v(" "),t("h3",{attrs:{id:"repeat-the-rf-signal-several-times"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repeat-the-rf-signal-several-times"}},[e._v("#")]),e._v(" Repeat the RF signal several times")]),e._v(" "),t("p",[e._v('You can add a "repeat" key/value to the MQTTto433 JSON message to override the default number of repeats.')]),e._v(" "),t("p",[e._v("Example:\n"),t("code",[e._v('home/OpenMQTTGateway/commands/MQTTto433 {"value":1315156,"protocol":1,"length":24,"delay":317, "repeat":10}')])]),e._v(" "),t("h3",{attrs:{id:"set-transmit-and-receive-frequency-and-transmit-power-of-cc1101-transceiver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#set-transmit-and-receive-frequency-and-transmit-power-of-cc1101-transceiver"}},[e._v("#")]),e._v(" Set Transmit and Receive Frequency and Transmit Power of CC1101 Transceiver")]),e._v(" "),t("p",[e._v("Default transmit frequency of the CC1101 module is 433.92 Mhz, and this can be can changed by including the frequency in the transmit message. Parameter is "),t("code",[e._v("mhz")]),e._v(" and valid values are 300-348 Mhz, 387-464Mhz and 779-928Mhz. Actual frequency support will depend on your CC1101 board.")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTto433 {"value":1150,"protocol":6,"length":12,"delay":450,"repeat":8,"frequency":303.732}')])]),e._v(" "),t("p",[e._v("Default receive frequency of the CC1101 module is 433.92 Mhz, and this can be can changed by sending a message with the frequency. Parameter is "),t("code",[e._v("frequency")]),e._v(" and valid values are 300-348 Mhz, 387-464Mhz and 779-928Mhz. Actual frequency support will depend on your CC1101 board")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"frequency":433.92}')])]),e._v(" "),t("p",[e._v("Messages received will include the frequency, and when transmitting on a different frequency the module return to the receive frequency afterwards. ie transmit messages on 303.732 Mhz then receive messages on 433.92 Mhz")]),e._v(" "),t("p",[t("code",[e._v('{"value":4534142,"protocol":6,"length":26,"delay":356,"frequency":315.026}')])]),e._v(" "),t("p",[e._v("You can adjust the tx-power in db for a transmission. Parameter is "),t("code",[e._v("cc1101_pa")]),e._v(" and valid values in decibel are (-30 -20 -15 -10 -6 0 5 7 10 11 12) Default is max!\nThat can be done to reduce range and therefore disturbances with other nearby devices.\nIf you want to send a transmission with a power of 5 db than use the message")]),e._v(" "),t("p",[t("code",[e._v('{"value":1315156,"protocol":2,"length":24,"delay":315, "cc1101_pa":5}')])]),e._v(" "),t("h2",{attrs:{id:"pilight-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pilight-gateway"}},[e._v("#")]),e._v(" Pilight gateway")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rf-signal-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rf-signal-2"}},[e._v("#")]),e._v(" Receiving data from RF signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and you will see :")]),e._v(" "),t("p",[t("img",{attrs:{src:a(413),alt:"Digoo DG R8S data"}})]),e._v(" "),t("h4",{attrs:{id:"enabling-raw-packet-return-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabling-raw-packet-return-support"}},[e._v("#")]),e._v(" Enabling RAW packet return support")]),e._v(" "),t("p",[e._v("First, you need to compile a binary with "),t("code",[e._v("Pilight_rawEnabled true")]),e._v(" uncommented in config_RF.h.")]),e._v(" "),t("p",[e._v("Once the device is online, you can turn on the RAW packet return support with the following MQTT command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"rawEnabled":true}\'')])]),e._v(" "),t("p",[e._v("The returned JSON looks like this:\n"),t("code",[e._v('Client (null) received PUBLISH (d0, q0, r0, m0, \'home/OpenMQTTGateway/PilighttoMQTT\', ... (176 bytes)) {"format":"RAW","rawlen":106,"pulsesString":"c:0102010102020202020101010101010102020201020102020202020201010101010101010101010102010102010201020201010203;p:521,944,1924,3845@"}')])]),e._v(" "),t("p",[e._v("The pulseString format is Pilight's native. For those who are not familiar with it:\nc:* are the indexes for the p:* array, which are the different pulse length. (e.g. pulse[0] = 521ms, pulse[1]=944ms..., so c[0], which is a '0' = 521ms pulse, c[1], which is a '1' =944ms pulse etc)")]),e._v(" "),t("p",[e._v("After gathering all the packets you need, simply turn off the RAW packet support via MQTT:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"rawEnabled":false}\'')])]),e._v(" "),t("h3",{attrs:{id:"limit-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-protocols"}},[e._v("#")]),e._v(" Limit Protocols")]),e._v(" "),t("p",[e._v("It is possible to limit the protocols that Pilight will respond to, this can help reduce noise from unwanted devices and in some cases disable conflicting protocols.")]),e._v(" "),t("h4",{attrs:{id:"available-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#available-protocols"}},[e._v("#")]),e._v(" Available protocols")]),e._v(" "),t("p",[e._v("To list the available protocols on the Serial -")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"available":true}\'')])]),e._v(" "),t("h4",{attrs:{id:"limit-protocols-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-protocols-2"}},[e._v("#")]),e._v(" Limit protocols")]),e._v(" "),t("p",[e._v("To limit the protocols, send a JSON array of protocols as below -")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols -m \'{"limit": ["array", "of", "protocols"]}\'')])]),e._v(" "),t("p",[e._v("eg: "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"limit":["tfa", "ev1527"}\'')])]),e._v(" "),t("h4",{attrs:{id:"reset-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reset-protocols"}},[e._v("#")]),e._v(" Reset protocols")]),e._v(" "),t("p",[e._v("To reset and listen to all protocols -\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols -m \'{"reset": true}\'')])]),e._v(" "),t("h4",{attrs:{id:"enabled-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabled-protocols"}},[e._v("#")]),e._v(" Enabled protocols")]),e._v(" "),t("p",[e._v("To list the enabled protocols on the Serial -")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"enabled":true}\'')])]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-transmit-a-rf-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-transmit-a-rf-signal"}},[e._v("#")]),e._v(" Send data by MQTT to transmit a RF signal")]),e._v(" "),t("h4",{attrs:{id:"using-a-known-protocol"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-a-known-protocol"}},[e._v("#")]),e._v(" Using a known protocol")]),e._v(" "),t("p",[t("strong",[e._v("ON")]),e._v(" "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"message":"{\\"systemcode\\":12,\\"unitcode\\":22,\\"on\\":1}","protocol":"elro_400_switch"}\'')])]),e._v(" "),t("p",[t("strong",[e._v("OFF")]),e._v(" "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"message":"{\\"systemcode\\":12,\\"unitcode\\":22,\\"off\\":1}","protocol":"elro_400_switch"}\'')])]),e._v(" "),t("p",[e._v("These commands will transmit by RF the signals to actuate an elro_400 switch.")]),e._v(" "),t("p",[e._v("With a different frequency (CC1101 only):\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"message":"{\\"systemcode\\":12,\\"unitcode\\":22,\\"off\\":1}","protocol":"elro_400_switch","frequency":315.026}\'')])]),e._v(" "),t("h4",{attrs:{id:"using-a-raw-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-a-raw-signal"}},[e._v("#")]),e._v(" Using a raw signal")]),e._v(" "),t("p",[e._v('You can transmit raw signal data by using the "raw" protocol. This uses the Pilight pulse train string format. One such example string, representing a transmission for Nexus protocol weather stations, looks like this: '),t("code",[e._v("c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000;r:12@")]),e._v(". This string represents pulses and gaps directly.")]),e._v(" "),t("p",[e._v("Each number in the list after "),t("code",[e._v("p:")]),e._v(" that ends with "),t("code",[e._v(";")]),e._v(" stands for "),t("strong",[e._v("p")]),e._v("ulse and gap lengths in microseconds (µs). In this example, we have a list containing lengths of 500µs, 1000µs, 2000µs, and 4000µs.")]),e._v(" "),t("p",[e._v("Each number after "),t("code",[e._v("c:")]),e._v(" and ended by "),t("code",[e._v(";")]),e._v(" represents a "),t("strong",[e._v("c")]),e._v("ode that references the "),t("code",[e._v("p:")]),e._v(" list by index. In this example, the first 4 numbers after "),t("code",[e._v("c:")]),e._v(" are 0, 3, 0, and 2, which reference "),t("code",[e._v("p:")]),e._v("[0] = 500, "),t("code",[e._v("p:")]),e._v("[3] = 4000, "),t("code",[e._v("p:")]),e._v("[0] = 500, and "),t("code",[e._v("p:")]),e._v("[2] = 2000, respectively. In the language of digital radio transceiving, the most basic unit is usually a pulse and gap pair; in other words, 0s and 1s are represented by a pulse followed by a gap (lack of pulse) and the time lengths of these pulses and gaps. Different protocols have different pulse lengths and gap lengths representing 0, and a different one representing 1. Because of this pulse-gap nature, the codes in "),t("code",[e._v("c:")]),e._v(" must be taken as pairs; the first number in a pair represents the length of the pulse, and the second number the subsequent gap. In this example, the first pair, 03, represents a pulse of 500µs followed by a gap of 4000µs. The next pair, 02, represents a pulse of 500µs followed by a gap of 2000µs.")]),e._v(" "),t("p",[e._v("The number after "),t("code",[e._v("r:")]),e._v(" represents how many times the message in the string is to be "),t("strong",[e._v("r")]),e._v("epeated. The "),t("code",[e._v("r:")]),e._v(" block is optional. The default number of repeats if "),t("code",[e._v("r:")]),e._v(" is not specified is 10. Greater than about 100 repeats will cause a crash due to memory usage. If this example were written without specifying repeats, it would look like this: "),t("code",[e._v('{"raw":"c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000@"}')])]),e._v(" "),t("p",[e._v("The entire string must end in a "),t("code",[e._v("@")]),e._v(". Each block must end in a "),t("code",[e._v(";")]),e._v(", but if it is the last block in the string, the "),t("code",[e._v("@")]),e._v(" replaces the "),t("code",[e._v(";")]),e._v(". Since the "),t("code",[e._v("r:")]),e._v(" block is optional, this last block could be either "),t("code",[e._v("p:")]),e._v(" or "),t("code",[e._v("r:")]),e._v(".")]),e._v(" "),t("p",[e._v("The JSON for the MQTT message to "),t("code",[e._v("home/OpenMQTTGateway/commands/MQTTtoPilight")]),e._v(' should specify the pulse train string as the value for the "raw" key: '),t("code",[e._v('{"raw":"c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000;r:12@"}')]),e._v(".")]),e._v(" "),t("p",[e._v("e.g. "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"raw":"c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000;r:12@"}\'')])]),e._v(" "),t("h2",{attrs:{id:"rf-with-sonoff-rf-bridge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf-with-sonoff-rf-bridge"}},[e._v("#")]),e._v(" RF with SONOFF RF BRIDGE")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rf-signal-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rf-signal-3"}},[e._v("#")]),e._v(" Receiving data from RF signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and 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 {"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("The first parameter is the raw value extracted from the RF module of the Sonoff bridge. The data are in hexadecimal and correspond to the details below:\nhttps://www.itead.cc/wiki/images/5/5e/RF_Universal_Transeceive_Module_Serial_Protocol_v1.0.pdf\nOpenMQTTGateway process the raw value to extract the other decimal values that can be reused to reproduce a signal (raw value can also be reused).")]),e._v(" "),t("p",[e._v("NOTE: currently the device doesn't receive correct values from Switches remote control")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-rf-signal-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-rf-signal-2"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on RF signal")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSRFB" -m \'{"value":1315156}\'')])]),e._v(" "),t("p",[e._v("This command will send by RF the code 1315156 and use the default parameters:\nRepeat = 1\nLow time= 320\nHigh time= 900\nSYNC = 9500")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-with-advanced-rf-parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-rf-parameters-2"}},[e._v("#")]),e._v(" Send data by MQTT with advanced RF parameters")]),e._v(" "),t("p",[e._v('RF bridge sending support four advanced parameters; Repeat, Low time, High time & Sync\nif you want to repeat your signal sending put into your json payload "repeat":2, 2 means 2 repetitions of signal')]),e._v(" "),t("p",[e._v('if you want to use a low time of 315 put inside your json payload "Tlow":315')]),e._v(" "),t("p",[e._v('if you want to use a high time of 845 put inside your json payload "Thigh":845')]),e._v(" "),t("p",[e._v('if you want to use a sync time of 9123 put inside your json payload "Tsyn":9123')]),e._v(" "),t("p",[e._v("Example:\n"),t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSRFB/Tlow_315/Thigh_845/Tsyn_9123 -m \'{"value":"33151562","delay":"9123","val_Thigh":"845","val_Tlow":"315"}\'')]),e._v("\nwill make RF Bridge send a signal with the use of listed parameters 315, 845, 9123...")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSRFB/Raw -m \'{"raw":"267A013603B6140551"}\'')]),e._v("\nwill make RF Bridge send a signal with the use of advanced parameters defined in the raw string")]),e._v(" "),t("h2",{attrs:{id:"rf2-gateway-kaku"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf2-gateway-kaku"}},[e._v("#")]),e._v(" RF2 gateway KAKU")]),e._v(" "),t("p",[e._v("RF2 gateway enables to send command to RF devices with the KAKU protocol. DIO chacon devices are an example.\nIt uses the same pinout as the RF gateway and both gateways can be used on the same setup.")]),e._v(" "),t("p",[e._v("Receiving RF codes with the KAKU protocol is not compatible with ZgatewayRF , so as to get the code of your remotes you should comment ZgatewayRF in User_config.h.\nTransmitting can be done with both ZgatewayRF and ZgatewayRF2")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-kaku-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-kaku-signal"}},[e._v("#")]),e._v(" Receiving data from KAKU signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and you will see :")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/RF2toMQTT {"unit":0,"groupBit":0,"period":273,"address":8233228,"switchType":0}')])]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-kaku-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-kaku-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on KAKU signal")]),e._v(" "),t("p",[e._v("Once you get the infos publish the parameters with MQTT like that for off:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRF2 -m "{"unit":0,"groupBit":0,"period":273,"address":8233228,"switchType":0}"')])]),e._v(" "),t("p",[e._v("for on:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRF2 -m "{"unit":0,"groupBit":0,"period":273,"address":8233228,"switchType":1}"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{405:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial1.b8169d69.jpg"},406:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial2.9629e5a0.jpg"},407:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_Pilight_Digoo-DG-R8S.8a0f9d60.png"},461:function(e,t,a){"use strict";a.r(t);var s=a(14),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"rf-gateways-433mhz-315mhz-868mhz-915mhz"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf-gateways-433mhz-315mhz-868mhz-915mhz"}},[e._v("#")]),e._v(" RF gateways (433mhz/315mhz/868mhz/915mhz)")]),e._v(" "),t("h2",{attrs:{id:"what-is-an-rf-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-an-rf-gateway"}},[e._v("#")]),e._v(" What is an RF gateway")]),e._v(" "),t("p",[e._v("An RF (Radio Frequency) gateway is a device that facilitates communication between RF devices and other communication protocols, such as MQTT in this context. Operating at specific frequencies like 433MHz, 315MHz, 868MHz, and 915MHz, these gateways can receive signals from various RF devices, decode them, and then forward the decoded data to systems like Home Assistant, OpenHAB, or any other MQTT-based system.")]),e._v(" "),t("p",[e._v("The primary advantage of using an RF gateway is its ability to bridge the gap between the world of RF devices, which might include sensors, remote controls, and other RF-based gadgets, and modern smart home systems or applications. This enables users to integrate a wide range of devices into their smart home setup, even if those devices were not originally designed for such integration.")]),e._v(" "),t("p",[e._v("In the context of the 433MHz MQTT gateway, the device not only decodes RF signals but also allows for seamless integration with MQTT systems. This means that signals from RF devices can be easily published to MQTT topics, and likewise, MQTT messages can be translated into RF signals for transmission. This two-way communication capability makes the gateway a powerful tool for expanding the capabilities of both RF devices and MQTT systems.")]),e._v(" "),t("p",[e._v("OpenMQTTGateway leverages several libraries for RF communication:")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Library")]),e._v(" "),t("th",[e._v("Description")]),e._v(" "),t("th",[e._v("Device Support")]),e._v(" "),t("th",[e._v("Resource Requirements")]),e._v(" "),t("th",[e._v("Flexibility")]),e._v(" "),t("th",[e._v("Integration Capabilities")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("RTL_433")]),e._v(" "),t("td",[e._v("Maintained and performant library supporting receiving 433Mhz but also other frequencies (does not support sending)")]),e._v(" "),t("td",[e._v("Wide range of devices")]),e._v(" "),t("td",[e._v("Moderate")]),e._v(" "),t("td",[e._v("Decodes various protocols")]),e._v(" "),t("td",[e._v("Can be integrated with systems supporting Home Assistant Auto Discovery")])]),e._v(" "),t("tr",[t("td",[e._v("RCSwitch")]),e._v(" "),t("td",[e._v("Arduino library for 433MHz module communication.")]),e._v(" "),t("td",[e._v("Basic devices")]),e._v(" "),t("td",[e._v("Lightweight")]),e._v(" "),t("td",[e._v("Basic encoding and decoding")]),e._v(" "),t("td",[e._v("Basic integration")])]),e._v(" "),t("tr",[t("td",[e._v("Pilight")]),e._v(" "),t("td",[e._v("Open-source solution for device control and data retrieval.")]),e._v(" "),t("td",[e._v("Broad range of devices and protocols")]),e._v(" "),t("td",[e._v("Moderate")]),e._v(" "),t("td",[e._v("Offers raw and protocol-specific data handling")]),e._v(" "),t("td",[e._v("Structured data")])]),e._v(" "),t("tr",[t("td",[e._v("RF2")]),e._v(" "),t("td",[e._v("Library focused on KaKu devices and protocol.")]),e._v(" "),t("td",[e._v("Specific devices and protocols")]),e._v(" "),t("td",[e._v("Lightweight")]),e._v(" "),t("td",[e._v("Decoding and encoding capabilities")]),e._v(" "),t("td",[e._v("Basic integration")])])])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("INFO")]),e._v(" "),t("p",[e._v("RTL_433 library can only receive data, RCSwitch, PiLight, RF2 can receive and transmit.")])]),e._v(" "),t("h2",{attrs:{id:"common-parameters-accross-modules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#common-parameters-accross-modules"}},[e._v("#")]),e._v(" Common parameters accross modules")]),e._v(" "),t("h3",{attrs:{id:"change-default-frequency-sx127x-and-cc1101"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-default-frequency-sx127x-and-cc1101"}},[e._v("#")]),e._v(" Change default frequency (SX127X and CC1101)")]),e._v(" "),t("p",[e._v("The frequency can be can changed by sending an MQTT message or through the WebUI. Parameter is "),t("code",[e._v("frequency")]),e._v(" and valid values are 300-348 Mhz, 387-464Mhz and 779-928Mhz. Actual frequency support will depend on your board")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"frequency":315.026}')])]),e._v(" "),t("p",[e._v("Note that with CC1101 this frequency will be used as the default sending frequency.")]),e._v(" "),t("h3",{attrs:{id:"changing-active-receiver-modules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-active-receiver-modules"}},[e._v("#")]),e._v(" Changing Active Receiver Modules")]),e._v(" "),t("p",[e._v("Switching of the active transceiver (RTL_433 receiver only) module is available between the RF, RF2, and (RTL_433 or Pilight) gateway modules, allowing for changing of signal decoders without redeploying the OpenMQTTGateway package. Sending a JSON message to the command topic will change the active transceiver module.")]),e._v(" "),t("p",[e._v("To enable the RF gateway module send a json message to the RF gateway module command subject with the key being 'active', and any value. The value at this time is ignored.")]),e._v(" "),t("p",[e._v("1 - PiLight\n2 - RF\n3 - RTL_433\n4 - RF2")]),e._v(" "),t("p",[e._v("Example to receive from the RF gateway:\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoRF/config" -m \'{"active":2}\'')])]),e._v(" "),t("p",[e._v("The active receiver can also be changed with the WebUI.")]),e._v(" "),t("p",[e._v("The OpenMQTTGateway RFtoMQTT status message contains a key "),t("code",[e._v("active")]),e._v(" which is the current active receiver module.")]),e._v(" "),t("h2",{attrs:{id:"rtl-433-device-decoders"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rtl-433-device-decoders"}},[e._v("#")]),e._v(" RTL_433 device decoders")]),e._v(" "),t("p",[e._v("This feature is only available on a ESP32 based device with a supported transceiver connected due to the resource requirements of the rtl_433 device decoders. At the present time only Pulse Position Modulation (OOK_PPM), Pulse Width Modulation (OOK_PWM) and Pulse Manchester Zero Bit (OOK_PULSE_MANCHESTER_ZEROBIT) based decoders are available.")]),e._v(" "),t("h3",{attrs:{id:"supported-hardware-combinations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-hardware-combinations"}},[e._v("#")]),e._v(" Supported hardware combinations")]),e._v(" "),t("ul",[t("li",[e._v("ESP32 based device with a CC1101 transceiver")]),e._v(" "),t("li",[e._v("Heltec WiFi LoRa 32 (V2.1) and LilyGo LoRa 32 V2.1")]),e._v(" "),t("li",[e._v("ESP32 DOIT DevKit V1 and Ai-Thinker R01 (SX1278)")]),e._v(" "),t("li",[e._v("ESP32 + SX1278/SX1276")])]),e._v(" "),t("h3",{attrs:{id:"supported-decoders"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-decoders"}},[e._v("#")]),e._v(" Supported Decoders")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('Registering protocol [2] "Acurite 609TXC Temperature and Humidity Sensor"\nRegistering protocol [3] "Acurite 592TXR Temp/Humidity, 5n1 Weather Station, 6045 Lightning, 3N1, Atlas"\nRegistering protocol [4] "Acurite 986 Refrigerator / Freezer Thermometer"\nRegistering protocol [5] "Acurite 606TX Temperature Sensor"\nRegistering protocol [6] "Acurite 00275rm,00276rm Temp/Humidity with optional probe"\nRegistering protocol [7] "Acurite 590TX Temperature with optional Humidity"\nRegistering protocol [8] "Acurite Grill/Meat Thermometer 01185M"\nRegistering protocol [9] "Akhan 100F14 remote keyless entry"\nRegistering protocol [10] "AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon)"\nRegistering protocol [11] "Ambient Weather TX-8300 Temperature/Humidity Sensor"\nRegistering protocol [13] "Auriol AFT 77 B2 temperature sensor"\nRegistering protocol [14] "Auriol AFW2A1 temperature/humidity sensor"\nRegistering protocol [15] "Auriol AHFL temperature/humidity sensor"\nRegistering protocol [16] "Auriol HG02832, HG05124A-DCF, Rubicson 48957 temperature/humidity sensor"\nRegistering protocol [18] "Blyss DC5-UK-WH"\nRegistering protocol [20] "Bresser Thermo-/Hygro-Sensor 3CH"\nRegistering protocol [22] "Burnhard BBQ thermometer"\nRegistering protocol [23] "Calibeur RF-104 Sensor"\nRegistering protocol [24] "Cardin S466-TX2"\nRegistering protocol [25] "Chuango Security Technology"\nRegistering protocol [26] "Companion WTR001 Temperature Sensor"\nRegistering protocol [29] "Ecowitt Wireless Outdoor Thermometer WH53/WH0280/WH0281A"\nRegistering protocol [30] "Eurochron EFTH-800 temperature and humidity sensor"\nRegistering protocol [34] "Esperanza EWS"\nRegistering protocol [36] "Fine Offset Electronics, WH2, WH5, Telldus Temperature/Humidity/Rain Sensor"\nRegistering protocol [37] "Fine Offset Electronics, WH0530 Temperature/Rain Sensor"\nRegistering protocol [38] "Fine Offset WH1050 Weather Station"\nRegistering protocol [39] "Fine Offset Electronics WH1080/WH3080 Weather Station"\nRegistering protocol [41] "FT-004-B Temperature Sensor"\nRegistering protocol [42] "Generic wireless motion sensor"\nRegistering protocol [43] "Generic Remote SC226x EV1527"\nRegistering protocol [44] "Generic temperature sensor 1"\nRegistering protocol [45] "Govee Water Leak Dectector H5054, Door Contact Sensor B5023"\nRegistering protocol [46] "Globaltronics QUIGG GT-TMBBQ-05"\nRegistering protocol [47] "Globaltronics GT-WT-02 Sensor"\nRegistering protocol [48] "Globaltronics GT-WT-03 Sensor"\nRegistering protocol [49] "Microchip HCS200 KeeLoq Hopping Encoder based remotes"\nRegistering protocol [50] "Honeywell ActivLink, Wireless Doorbell"\nRegistering protocol [51] "HT680 Remote control"\nRegistering protocol [52] "inFactory, nor-tec, FreeTec NC-3982-913 temperature humidity sensor"\nRegistering protocol [54] "Interlogix GE UTC Security Devices"\nRegistering protocol [56] "Kedsum Temperature & Humidity Sensor, Pearl NC-7415"\nRegistering protocol [57] "Kerui PIR / Contact Sensor"\nRegistering protocol [58] "LaCrosse TX Temperature / Humidity Sensor"\nRegistering protocol [59] "LaCrosse TX141-Bv2, TX141TH-Bv2, TX141-Bv3, TX141W, TX145wsdth, (TFA, ORIA) sensor"\nRegistering protocol [60] "LaCrosse/ELV/Conrad WS7000/WS2500 weather sensors"\nRegistering protocol [61] "LaCrosse WS-2310 / WS-3600 Weather Station"\nRegistering protocol [63] "Markisol, E-Motion, BOFU, Rollerhouse, BF-30x, BF-415 curtain remote"\nRegistering protocol [64] "Maverick et73"\nRegistering protocol [66] "Missil ML0757 weather station"\nRegistering protocol [68] "Nexus, FreeTec NC-7345, NX-3980, Solight TE82S, TFA 30.3209 temperature/humidity sensor"\nRegistering protocol [70] "Opus/Imagintronix XT300 Soil Moisture"\nRegistering protocol [71] "Oregon Scientific Weather Sensor"\nRegistering protocol [72] "Oregon Scientific SL109H Remote Thermal Hygro Sensor"\nRegistering protocol [74] "Philips outdoor temperature sensor (type AJ3650)"\nRegistering protocol [75] "Philips outdoor temperature sensor (type AJ7010)"\nRegistering protocol [76] "Prologue, FreeTec NC-7104, NC-7159-675 temperature sensor"\nRegistering protocol [77] "Quhwa"\nRegistering protocol [79] "Rubicson Temperature Sensor"\nRegistering protocol [80] "Rubicson 48659 Thermometer"\nRegistering protocol [81] "Conrad S3318P, FreeTec NC-5849-913 temperature humidity sensor"\nRegistering protocol [82] "Silvercrest Remote Control"\nRegistering protocol [83] "Skylink HA-434TL motion sensor"\nRegistering protocol [84] "Wireless Smoke and Heat Detector GS 558"\nRegistering protocol [85] "Solight TE44/TE66, EMOS E0107T, NX-6876-917"\nRegistering protocol [86] "Springfield Temperature and Soil Moisture"\nRegistering protocol [87] "TFA Dostmann 30.3221.02 T/H Outdoor Sensor"\nRegistering protocol [88] "TFA Drop Rain Gauge 30.3233.01"\nRegistering protocol [89] "TFA pool temperature sensor"\nRegistering protocol [90] "TFA-Twin-Plus-30.3049, Conrad KW9010, Ea2 BL999"\nRegistering protocol [91] "Thermopro TP11 Thermometer"\nRegistering protocol [92] "Thermopro TP08/TP12/TP20 thermometer"\nRegistering protocol [94] "TS-FT002 Wireless Ultrasonic Tank Liquid Level Meter With Temperature Sensor"\nRegistering protocol [95] "Visonic powercode"\nRegistering protocol [96] "Waveman Switch Transmitter"\nRegistering protocol [97] "WG-PB12V1 Temperature Sensor"\nRegistering protocol [98] "WS2032 weather station"\nRegistering protocol [99] "Hyundai WS SENZOR Remote Temperature Sensor"\nRegistering protocol [100] "WT0124 Pool Thermometer"\nRegistering protocol [101] "X10 RF"\nRegistering protocol [102] "X10 Security"\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("span",{staticClass:"line-number"},[e._v("24")]),t("br"),t("span",{staticClass:"line-number"},[e._v("25")]),t("br"),t("span",{staticClass:"line-number"},[e._v("26")]),t("br"),t("span",{staticClass:"line-number"},[e._v("27")]),t("br"),t("span",{staticClass:"line-number"},[e._v("28")]),t("br"),t("span",{staticClass:"line-number"},[e._v("29")]),t("br"),t("span",{staticClass:"line-number"},[e._v("30")]),t("br"),t("span",{staticClass:"line-number"},[e._v("31")]),t("br"),t("span",{staticClass:"line-number"},[e._v("32")]),t("br"),t("span",{staticClass:"line-number"},[e._v("33")]),t("br"),t("span",{staticClass:"line-number"},[e._v("34")]),t("br"),t("span",{staticClass:"line-number"},[e._v("35")]),t("br"),t("span",{staticClass:"line-number"},[e._v("36")]),t("br"),t("span",{staticClass:"line-number"},[e._v("37")]),t("br"),t("span",{staticClass:"line-number"},[e._v("38")]),t("br"),t("span",{staticClass:"line-number"},[e._v("39")]),t("br"),t("span",{staticClass:"line-number"},[e._v("40")]),t("br"),t("span",{staticClass:"line-number"},[e._v("41")]),t("br"),t("span",{staticClass:"line-number"},[e._v("42")]),t("br"),t("span",{staticClass:"line-number"},[e._v("43")]),t("br"),t("span",{staticClass:"line-number"},[e._v("44")]),t("br"),t("span",{staticClass:"line-number"},[e._v("45")]),t("br"),t("span",{staticClass:"line-number"},[e._v("46")]),t("br"),t("span",{staticClass:"line-number"},[e._v("47")]),t("br"),t("span",{staticClass:"line-number"},[e._v("48")]),t("br"),t("span",{staticClass:"line-number"},[e._v("49")]),t("br"),t("span",{staticClass:"line-number"},[e._v("50")]),t("br"),t("span",{staticClass:"line-number"},[e._v("51")]),t("br"),t("span",{staticClass:"line-number"},[e._v("52")]),t("br"),t("span",{staticClass:"line-number"},[e._v("53")]),t("br"),t("span",{staticClass:"line-number"},[e._v("54")]),t("br"),t("span",{staticClass:"line-number"},[e._v("55")]),t("br"),t("span",{staticClass:"line-number"},[e._v("56")]),t("br"),t("span",{staticClass:"line-number"},[e._v("57")]),t("br"),t("span",{staticClass:"line-number"},[e._v("58")]),t("br"),t("span",{staticClass:"line-number"},[e._v("59")]),t("br"),t("span",{staticClass:"line-number"},[e._v("60")]),t("br"),t("span",{staticClass:"line-number"},[e._v("61")]),t("br"),t("span",{staticClass:"line-number"},[e._v("62")]),t("br"),t("span",{staticClass:"line-number"},[e._v("63")]),t("br"),t("span",{staticClass:"line-number"},[e._v("64")]),t("br"),t("span",{staticClass:"line-number"},[e._v("65")]),t("br"),t("span",{staticClass:"line-number"},[e._v("66")]),t("br"),t("span",{staticClass:"line-number"},[e._v("67")]),t("br"),t("span",{staticClass:"line-number"},[e._v("68")]),t("br"),t("span",{staticClass:"line-number"},[e._v("69")]),t("br"),t("span",{staticClass:"line-number"},[e._v("70")]),t("br"),t("span",{staticClass:"line-number"},[e._v("71")]),t("br"),t("span",{staticClass:"line-number"},[e._v("72")]),t("br"),t("span",{staticClass:"line-number"},[e._v("73")]),t("br"),t("span",{staticClass:"line-number"},[e._v("74")]),t("br"),t("span",{staticClass:"line-number"},[e._v("75")]),t("br"),t("span",{staticClass:"line-number"},[e._v("76")]),t("br"),t("span",{staticClass:"line-number"},[e._v("77")]),t("br"),t("span",{staticClass:"line-number"},[e._v("78")]),t("br"),t("span",{staticClass:"line-number"},[e._v("79")]),t("br"),t("span",{staticClass:"line-number"},[e._v("80")]),t("br"),t("span",{staticClass:"line-number"},[e._v("81")]),t("br")])]),t("h3",{attrs:{id:"change-signal-rssi-threshold-delta"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#change-signal-rssi-threshold-delta"}},[e._v("#")]),e._v(" Change Signal RSSI Threshold Delta")]),e._v(" "),t("p",[e._v("Delta applied to RSSI floor noise level to determine start and end of signal, defaults to 9db.")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"rssiThreshold": 9}')])]),e._v(" "),t("h3",{attrs:{id:"retrieve-current-status-of-receiver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#retrieve-current-status-of-receiver"}},[e._v("#")]),e._v(" Retrieve current status of receiver")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"status":1}')])]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('{"model":"status",\n"protocol":"debug",\n"debug":0, - rtl_433 verbose setting\n"duration":11799327, - duration of current signal\n"Gap length":-943575, - duration of gap between current signal\n"rssi":-38, - most recent received signal strength\n"train":1, - signal processing train #\n"messageCount":3, - total number of signals received\n"totalSignals":9, - RegOokFix signal quality count ( of 10 )\n"ignoredSignals":0, - RegOokFix signal quality ignored signals\n"unparsedSignals":3, - RegOokFix signal quality unparseable signals\n"_enabledReceiver":1, - which receiver is enabled\n"receiveMode":0, - is the receiver currently receiving a signal\n"currentRssi":-89, - current rssi level\n"rssiThreshold":-82, - minimum rssi level to start signal processing\n"pulses":0, - how many pulses have been received in the current signal\n"StackHighWaterMark":5528, - ESP32 Stack\n"freeMem":112880} - ESP32 memory available\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("h2",{attrs:{id:"rcswitch-based-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rcswitch-based-gateway"}},[e._v("#")]),e._v(" RCSwitch based gateway")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rf-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rf-signal"}},[e._v("#")]),e._v(" Receiving data from RF signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and you should see :")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/433toMQTT {"value":1315156,"protocol":1,"length":24,"delay":317}')])]),e._v(" "),t("h3",{attrs:{id:"disabling-transmit-function-to-safe-a-pin"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disabling-transmit-function-to-safe-a-pin"}},[e._v("#")]),e._v(" Disabling Transmit function to safe a PIN")]),e._v(" "),t("p",[e._v("To disable transmit functions to allow the use of another pin, add the following to the config_rf.h file :")]),e._v(" "),t("p",[t("code",[e._v("#define RF_DISABLE_TRANSMIT")])]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-rf-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-rf-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on RF signal")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTto433" -m \'{"value":1315156}\'')])]),e._v(" "),t("p",[e._v("This command will send by RF the code 1315156 and use the default parameters (protocol 1, delay 350)")]),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:"Serial data"}})]),e._v(" "),t("p",[e._v('We see that the Arduino receive the value 1315156 on the MQTT subject "MQTTto433" and send the data by RF')]),e._v(" "),t("p",[e._v("Arduino IDE serial data received when receiving data by 433Mhz")]),e._v(" "),t("p",[t("img",{attrs:{src:a(406),alt:"Serial data 2"}})]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-with-advanced-rf-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-rf-parameters"}},[e._v("#")]),e._v(" Send data by MQTT with advanced RF parameters")]),e._v(" "),t("p",[e._v("RF sending support three advanced parameters: bits length, RF protocol and RF pulselength")]),e._v(" "),t("p",[e._v('-if you want to use a bits number different than 24 put inside your topic "length":24 for example')]),e._v(" "),t("p",[e._v('-if you want to use a different RCswitch protocol put inside your payload the protocol number 2, "protocol":2.')]),e._v(" "),t("p",[e._v('-if you want to use a pulselength 315 put inside your topic "delay":315')]),e._v(" "),t("p",[e._v("Example:\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTto433" -m \'{"value":1315156,"protocol":2,"length":24,"delay":315}\'')]),e._v("\nwill make RCSwitch use the protocol 2 with a pulselength of 315ms and a bits number of 24 with a power of 5")]),e._v(" "),t("h3",{attrs:{id:"repeat-the-rf-signal-openmqttgateway-receive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repeat-the-rf-signal-openmqttgateway-receive"}},[e._v("#")]),e._v(" Repeat the RF signal OpenMQTTGateway receive")]),e._v(" "),t("p",[e._v("So as to repeat the RF signal received by the gateway once set the following parameter to true in config_RF.h")]),e._v(" "),t("p",[t("code",[e._v("#define repeatRFwMQTT true")])]),e._v(" "),t("h3",{attrs:{id:"repeat-the-rf-signal-several-times"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repeat-the-rf-signal-several-times"}},[e._v("#")]),e._v(" Repeat the RF signal several times")]),e._v(" "),t("p",[e._v('You can add a "repeat" key/value to the MQTTto433 JSON message to override the default number of repeats.')]),e._v(" "),t("p",[e._v("Example:\n"),t("code",[e._v('home/OpenMQTTGateway/commands/MQTTto433 {"value":1315156,"protocol":1,"length":24,"delay":317, "repeat":10}')])]),e._v(" "),t("h3",{attrs:{id:"set-transmit-and-receive-frequency-and-transmit-power-of-cc1101-transceiver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#set-transmit-and-receive-frequency-and-transmit-power-of-cc1101-transceiver"}},[e._v("#")]),e._v(" Set Transmit and Receive Frequency and Transmit Power of CC1101 Transceiver")]),e._v(" "),t("p",[e._v("Default transmit frequency of the CC1101 module is 433.92 Mhz, and this can be can changed by including the frequency in the transmit message. Parameter is "),t("code",[e._v("mhz")]),e._v(" and valid values are 300-348 Mhz, 387-464Mhz and 779-928Mhz. Actual frequency support will depend on your CC1101 board.")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTto433 {"value":1150,"protocol":6,"length":12,"delay":450,"repeat":8,"frequency":303.732}')])]),e._v(" "),t("p",[e._v("Default receive frequency of the CC1101 module is 433.92 Mhz, and this can be can changed by sending a message with the frequency. Parameter is "),t("code",[e._v("frequency")]),e._v(" and valid values are 300-348 Mhz, 387-464Mhz and 779-928Mhz. Actual frequency support will depend on your CC1101 board")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/commands/MQTTtoRF/config {"frequency":433.92}')])]),e._v(" "),t("p",[e._v("Messages received will include the frequency, and when transmitting on a different frequency the module return to the receive frequency afterwards. ie transmit messages on 303.732 Mhz then receive messages on 433.92 Mhz")]),e._v(" "),t("p",[t("code",[e._v('{"value":4534142,"protocol":6,"length":26,"delay":356,"frequency":315.026}')])]),e._v(" "),t("p",[e._v("You can adjust the tx-power in db for a transmission. Parameter is "),t("code",[e._v("cc1101_pa")]),e._v(" and valid values in decibel are (-30 -20 -15 -10 -6 0 5 7 10 11 12) Default is max!\nThat can be done to reduce range and therefore disturbances with other nearby devices.\nIf you want to send a transmission with a power of 5 db than use the message")]),e._v(" "),t("p",[t("code",[e._v('{"value":1315156,"protocol":2,"length":24,"delay":315, "cc1101_pa":5}')])]),e._v(" "),t("h2",{attrs:{id:"pilight-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pilight-gateway"}},[e._v("#")]),e._v(" Pilight gateway")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rf-signal-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rf-signal-2"}},[e._v("#")]),e._v(" Receiving data from RF signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and you will see :")]),e._v(" "),t("p",[t("img",{attrs:{src:a(407),alt:"Digoo DG R8S data"}})]),e._v(" "),t("h4",{attrs:{id:"enabling-raw-packet-return-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabling-raw-packet-return-support"}},[e._v("#")]),e._v(" Enabling RAW packet return support")]),e._v(" "),t("p",[e._v("First, you need to compile a binary with "),t("code",[e._v("Pilight_rawEnabled true")]),e._v(" uncommented in config_RF.h.")]),e._v(" "),t("p",[e._v("Once the device is online, you can turn on the RAW packet return support with the following MQTT command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"rawEnabled":true}\'')])]),e._v(" "),t("p",[e._v("The returned JSON looks like this:\n"),t("code",[e._v('Client (null) received PUBLISH (d0, q0, r0, m0, \'home/OpenMQTTGateway/PilighttoMQTT\', ... (176 bytes)) {"format":"RAW","rawlen":106,"pulsesString":"c:0102010102020202020101010101010102020201020102020202020201010101010101010101010102010102010201020201010203;p:521,944,1924,3845@"}')])]),e._v(" "),t("p",[e._v("The pulseString format is Pilight's native. For those who are not familiar with it:\nc:* are the indexes for the p:* array, which are the different pulse length. (e.g. pulse[0] = 521ms, pulse[1]=944ms..., so c[0], which is a '0' = 521ms pulse, c[1], which is a '1' =944ms pulse etc)")]),e._v(" "),t("p",[e._v("After gathering all the packets you need, simply turn off the RAW packet support via MQTT:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"rawEnabled":false}\'')])]),e._v(" "),t("h3",{attrs:{id:"limit-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-protocols"}},[e._v("#")]),e._v(" Limit Protocols")]),e._v(" "),t("p",[e._v("It is possible to limit the protocols that Pilight will respond to, this can help reduce noise from unwanted devices and in some cases disable conflicting protocols.")]),e._v(" "),t("h4",{attrs:{id:"available-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#available-protocols"}},[e._v("#")]),e._v(" Available protocols")]),e._v(" "),t("p",[e._v("To list the available protocols on the Serial -")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"available":true}\'')])]),e._v(" "),t("h4",{attrs:{id:"limit-protocols-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-protocols-2"}},[e._v("#")]),e._v(" Limit protocols")]),e._v(" "),t("p",[e._v("To limit the protocols, send a JSON array of protocols as below -")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols -m \'{"limit": ["array", "of", "protocols"]}\'')])]),e._v(" "),t("p",[e._v("eg: "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"limit":["tfa", "ev1527"}\'')])]),e._v(" "),t("h4",{attrs:{id:"reset-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reset-protocols"}},[e._v("#")]),e._v(" Reset protocols")]),e._v(" "),t("p",[e._v("To reset and listen to all protocols -\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols -m \'{"reset": true}\'')])]),e._v(" "),t("h4",{attrs:{id:"enabled-protocols"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabled-protocols"}},[e._v("#")]),e._v(" Enabled protocols")]),e._v(" "),t("p",[e._v("To list the enabled protocols on the Serial -")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight/protocols" -m \'{"enabled":true}\'')])]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-transmit-a-rf-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-transmit-a-rf-signal"}},[e._v("#")]),e._v(" Send data by MQTT to transmit a RF signal")]),e._v(" "),t("h4",{attrs:{id:"using-a-known-protocol"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-a-known-protocol"}},[e._v("#")]),e._v(" Using a known protocol")]),e._v(" "),t("p",[t("strong",[e._v("ON")]),e._v(" "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"message":"{\\"systemcode\\":12,\\"unitcode\\":22,\\"on\\":1}","protocol":"elro_400_switch"}\'')])]),e._v(" "),t("p",[t("strong",[e._v("OFF")]),e._v(" "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"message":"{\\"systemcode\\":12,\\"unitcode\\":22,\\"off\\":1}","protocol":"elro_400_switch"}\'')])]),e._v(" "),t("p",[e._v("These commands will transmit by RF the signals to actuate an elro_400 switch.")]),e._v(" "),t("p",[e._v("With a different frequency (CC1101 only):\n"),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"message":"{\\"systemcode\\":12,\\"unitcode\\":22,\\"off\\":1}","protocol":"elro_400_switch","frequency":315.026}\'')])]),e._v(" "),t("h4",{attrs:{id:"using-a-raw-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#using-a-raw-signal"}},[e._v("#")]),e._v(" Using a raw signal")]),e._v(" "),t("p",[e._v('You can transmit raw signal data by using the "raw" protocol. This uses the Pilight pulse train string format. One such example string, representing a transmission for Nexus protocol weather stations, looks like this: '),t("code",[e._v("c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000;r:12@")]),e._v(". This string represents pulses and gaps directly.")]),e._v(" "),t("p",[e._v("Each number in the list after "),t("code",[e._v("p:")]),e._v(" that ends with "),t("code",[e._v(";")]),e._v(" stands for "),t("strong",[e._v("p")]),e._v("ulse and gap lengths in microseconds (µs). In this example, we have a list containing lengths of 500µs, 1000µs, 2000µs, and 4000µs.")]),e._v(" "),t("p",[e._v("Each number after "),t("code",[e._v("c:")]),e._v(" and ended by "),t("code",[e._v(";")]),e._v(" represents a "),t("strong",[e._v("c")]),e._v("ode that references the "),t("code",[e._v("p:")]),e._v(" list by index. In this example, the first 4 numbers after "),t("code",[e._v("c:")]),e._v(" are 0, 3, 0, and 2, which reference "),t("code",[e._v("p:")]),e._v("[0] = 500, "),t("code",[e._v("p:")]),e._v("[3] = 4000, "),t("code",[e._v("p:")]),e._v("[0] = 500, and "),t("code",[e._v("p:")]),e._v("[2] = 2000, respectively. In the language of digital radio transceiving, the most basic unit is usually a pulse and gap pair; in other words, 0s and 1s are represented by a pulse followed by a gap (lack of pulse) and the time lengths of these pulses and gaps. Different protocols have different pulse lengths and gap lengths representing 0, and a different one representing 1. Because of this pulse-gap nature, the codes in "),t("code",[e._v("c:")]),e._v(" must be taken as pairs; the first number in a pair represents the length of the pulse, and the second number the subsequent gap. In this example, the first pair, 03, represents a pulse of 500µs followed by a gap of 4000µs. The next pair, 02, represents a pulse of 500µs followed by a gap of 2000µs.")]),e._v(" "),t("p",[e._v("The number after "),t("code",[e._v("r:")]),e._v(" represents how many times the message in the string is to be "),t("strong",[e._v("r")]),e._v("epeated. The "),t("code",[e._v("r:")]),e._v(" block is optional. The default number of repeats if "),t("code",[e._v("r:")]),e._v(" is not specified is 10. Greater than about 100 repeats will cause a crash due to memory usage. If this example were written without specifying repeats, it would look like this: "),t("code",[e._v('{"raw":"c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000@"}')])]),e._v(" "),t("p",[e._v("The entire string must end in a "),t("code",[e._v("@")]),e._v(". Each block must end in a "),t("code",[e._v(";")]),e._v(", but if it is the last block in the string, the "),t("code",[e._v("@")]),e._v(" replaces the "),t("code",[e._v(";")]),e._v(". Since the "),t("code",[e._v("r:")]),e._v(" block is optional, this last block could be either "),t("code",[e._v("p:")]),e._v(" or "),t("code",[e._v("r:")]),e._v(".")]),e._v(" "),t("p",[e._v("The JSON for the MQTT message to "),t("code",[e._v("home/OpenMQTTGateway/commands/MQTTtoPilight")]),e._v(' should specify the pulse train string as the value for the "raw" key: '),t("code",[e._v('{"raw":"c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000;r:12@"}')]),e._v(".")]),e._v(" "),t("p",[e._v("e.g. "),t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"raw":"c:03020202010102020102010101010101010202020201020102020202020101010201010202;p:500,1000,2000,4000;r:12@"}\'')])]),e._v(" "),t("h2",{attrs:{id:"rf-with-sonoff-rf-bridge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf-with-sonoff-rf-bridge"}},[e._v("#")]),e._v(" RF with SONOFF RF BRIDGE")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rf-signal-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rf-signal-3"}},[e._v("#")]),e._v(" Receiving data from RF signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and 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 {"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("The first parameter is the raw value extracted from the RF module of the Sonoff bridge. The data are in hexadecimal and correspond to the details below:\nhttps://www.itead.cc/wiki/images/5/5e/RF_Universal_Transeceive_Module_Serial_Protocol_v1.0.pdf\nOpenMQTTGateway process the raw value to extract the other decimal values that can be reused to reproduce a signal (raw value can also be reused).")]),e._v(" "),t("p",[e._v("NOTE: currently the device doesn't receive correct values from Switches remote control")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-rf-signal-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-rf-signal-2"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on RF signal")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSRFB" -m \'{"value":1315156}\'')])]),e._v(" "),t("p",[e._v("This command will send by RF the code 1315156 and use the default parameters:\nRepeat = 1\nLow time= 320\nHigh time= 900\nSYNC = 9500")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-with-advanced-rf-parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-rf-parameters-2"}},[e._v("#")]),e._v(" Send data by MQTT with advanced RF parameters")]),e._v(" "),t("p",[e._v('RF bridge sending support four advanced parameters; Repeat, Low time, High time & Sync\nif you want to repeat your signal sending put into your json payload "repeat":2, 2 means 2 repetitions of signal')]),e._v(" "),t("p",[e._v('if you want to use a low time of 315 put inside your json payload "Tlow":315')]),e._v(" "),t("p",[e._v('if you want to use a high time of 845 put inside your json payload "Thigh":845')]),e._v(" "),t("p",[e._v('if you want to use a sync time of 9123 put inside your json payload "Tsyn":9123')]),e._v(" "),t("p",[e._v("Example:\n"),t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSRFB/Tlow_315/Thigh_845/Tsyn_9123 -m \'{"value":"33151562","delay":"9123","val_Thigh":"845","val_Tlow":"315"}\'')]),e._v("\nwill make RF Bridge send a signal with the use of listed parameters 315, 845, 9123...")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSRFB/Raw -m \'{"raw":"267A013603B6140551"}\'')]),e._v("\nwill make RF Bridge send a signal with the use of advanced parameters defined in the raw string")]),e._v(" "),t("h2",{attrs:{id:"rf2-gateway-kaku"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rf2-gateway-kaku"}},[e._v("#")]),e._v(" RF2 gateway KAKU")]),e._v(" "),t("p",[e._v("RF2 gateway enables to send command to RF devices with the KAKU protocol. DIO chacon devices are an example.\nIt uses the same pinout as the RF gateway and both gateways can be used on the same setup.")]),e._v(" "),t("p",[e._v("Receiving RF codes with the KAKU protocol is not compatible with ZgatewayRF , so as to get the code of your remotes you should comment ZgatewayRF in User_config.h.\nTransmitting can be done with both ZgatewayRF and ZgatewayRF2")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-kaku-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-kaku-signal"}},[e._v("#")]),e._v(" Receiving data from KAKU signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals by pressing a remote button or other and you will see :")]),e._v(" "),t("p",[t("code",[e._v('home/OpenMQTTGateway/RF2toMQTT {"unit":0,"groupBit":0,"period":273,"address":8233228,"switchType":0}')])]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-kaku-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-kaku-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on KAKU signal")]),e._v(" "),t("p",[e._v("Once you get the infos publish the parameters with MQTT like that for off:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRF2 -m "{"unit":0,"groupBit":0,"period":273,"address":8233228,"switchType":0}"')])]),e._v(" "),t("p",[e._v("for on:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRF2 -m "{"unit":0,"groupBit":0,"period":273,"address":8233228,"switchType":1}"')])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/37.72a99988.js b/dev/assets/js/37.f1ce3b66.js similarity index 98% rename from dev/assets/js/37.72a99988.js rename to dev/assets/js/37.f1ce3b66.js index 44158d0e4e..eef1a35cee 100644 --- a/dev/assets/js/37.72a99988.js +++ b/dev/assets/js/37.f1ce3b66.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{267:function(e,t,n){e.exports=n.p+"assets/img/Theengs-Plug-OpenMQTTGateway.ba02745f.png"},277:function(e,t,n){e.exports=n.p+"assets/img/Theengs-Bridge-ble-gateway.f8771854.png"},435: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:"boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boards"}},[e._v("#")]),e._v(" Boards")]),e._v(" "),t("p",[e._v("OpenMQTTGateway is not closed to one board or type of board, by using the power of the Arduino framework and libraries that are cross compatibles it let you many choice of hardware, from an Arduino UNO to an ESP32.")]),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/boards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("supported boards"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Moreover the gateways capacities can be extended with sensors; DHT, HC SR501, ADC, I2C bus, INA226, MQ2, TEMT6000, TSL2561, BME280/BMP280, HTU21D, AHTx0, DS1820\nor actuators; LED, relays, PWM.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Running on a computer")]),e._v(" "),t("p",[e._v("If you want to use the BLE decoding capabilities of OpenMQTTGateway with a Raspberry Pi, Windows or Unix PC you can use "),t("a",{attrs:{href:"https://gateway.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs Gateway"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Running on a tablet or phone")]),e._v(" "),t("p",[e._v("If you want to use the BLE decoding capabilities of OpenMQTTGateway with a tablet or smartphone you can use "),t("a",{attrs:{href:"https://app.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs App"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" is a powerful BLE to MQTT gateway for over "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("90 sensors"),t("OutboundLink")],1),e._v(". Equipped with an Ethernet port, and external antenna, ensuring an enhanced range for your BLE sensors. It supports also WiFi connectivity.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:n(277),alt:"Theengs bridge view"}}),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1),e._v(" is available flashed with OpenMQTTGateway, and brings the functions below:")]),e._v(" "),t("ul",[t("li",[e._v("BLE to MQTT gateway, tens of Bluetooth devices supported thanks to Theengs Decoder library. The plug uses an ESP32 acting as a BLE to Wifi gateway to scan, decode and forward the data of the nearby sensors,")]),e._v(" "),t("li",[e._v("Smart plug that can be controlled remotely,")]),e._v(" "),t("li",[e._v("Energy consumption monitoring,")]),e._v(" "),t("li",[e._v("Presence detection (beta).")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:n(267),alt:"Theengs plug view"}}),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Support the project by purchasing the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" or the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1),e._v("\nThe plug is available in North America only, other regions are planned.")]),e._v(" "),t("p",[e._v("Choosing your board depends heavily on the technologies you want to use with it.\nTo have a good overview of the compatibilities per board you can refer to the compatible modules attributes of each "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/boards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("board"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The choice between these boards will depend on your knowledge and your requirements in terms of reliability, situation, modules wanted and devices you already have. The table below present those (auto-generated)")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{267:function(e,t,n){e.exports=n.p+"assets/img/Theengs-Plug-OpenMQTTGateway.ba02745f.png"},277:function(e,t,n){e.exports=n.p+"assets/img/Theengs-Bridge-ble-gateway.f8771854.png"},436: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:"boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boards"}},[e._v("#")]),e._v(" Boards")]),e._v(" "),t("p",[e._v("OpenMQTTGateway is not closed to one board or type of board, by using the power of the Arduino framework and libraries that are cross compatibles it let you many choice of hardware, from an Arduino UNO to an ESP32.")]),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/boards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("supported boards"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Moreover the gateways capacities can be extended with sensors; DHT, HC SR501, ADC, I2C bus, INA226, MQ2, TEMT6000, TSL2561, BME280/BMP280, HTU21D, AHTx0, DS1820\nor actuators; LED, relays, PWM.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Running on a computer")]),e._v(" "),t("p",[e._v("If you want to use the BLE decoding capabilities of OpenMQTTGateway with a Raspberry Pi, Windows or Unix PC you can use "),t("a",{attrs:{href:"https://gateway.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs Gateway"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Running on a tablet or phone")]),e._v(" "),t("p",[e._v("If you want to use the BLE decoding capabilities of OpenMQTTGateway with a tablet or smartphone you can use "),t("a",{attrs:{href:"https://app.theengs.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs App"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" is a powerful BLE to MQTT gateway for over "),t("a",{attrs:{href:"https://decoder.theengs.io/devices/devices.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("90 sensors"),t("OutboundLink")],1),e._v(". Equipped with an Ethernet port, and external antenna, ensuring an enhanced range for your BLE sensors. It supports also WiFi connectivity.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:n(277),alt:"Theengs bridge view"}}),t("OutboundLink")],1)]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1),e._v(" is available flashed with OpenMQTTGateway, and brings the functions below:")]),e._v(" "),t("ul",[t("li",[e._v("BLE to MQTT gateway, tens of Bluetooth devices supported thanks to Theengs Decoder library. The plug uses an ESP32 acting as a BLE to Wifi gateway to scan, decode and forward the data of the nearby sensors,")]),e._v(" "),t("li",[e._v("Smart plug that can be controlled remotely,")]),e._v(" "),t("li",[e._v("Energy consumption monitoring,")]),e._v(" "),t("li",[e._v("Presence detection (beta).")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:n(267),alt:"Theengs plug view"}}),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Support the project by purchasing the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-bridge-esp32-ble-mqtt-gateway-with-ethernet-and-external-antenna",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs bridge"),t("OutboundLink")],1),e._v(" or the "),t("a",{attrs:{href:"https://shop.theengs.io/products/theengs-plug-smart-plug-ble-gateway-and-energy-consumption",target:"_blank",rel:"noopener noreferrer"}},[e._v("Theengs plug"),t("OutboundLink")],1),e._v("\nThe plug is available in North America only, other regions are planned.")]),e._v(" "),t("p",[e._v("Choosing your board depends heavily on the technologies you want to use with it.\nTo have a good overview of the compatibilities per board you can refer to the compatible modules attributes of each "),t("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/boards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("board"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The choice between these boards will depend on your knowledge and your requirements in terms of reliability, situation, modules wanted and devices you already have. The table below present those (auto-generated)")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/38.73e38ac7.js b/dev/assets/js/38.823bef17.js similarity index 95% rename from dev/assets/js/38.73e38ac7.js rename to dev/assets/js/38.823bef17.js index 991e9db243..18a77547f8 100644 --- a/dev/assets/js/38.73e38ac7.js +++ b/dev/assets/js/38.823bef17.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{268:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.b2457906.png"},378:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Atom_Board.766668e8.png"},441: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(378),alt:"M5 Atom"}}),t._v(" "),a("img",{attrs:{src:e(268),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([[38],{268:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.b2457906.png"},378:function(t,a,e){t.exports=e.p+"assets/img/OpenMQTTgateway_M5_Atom_Board.766668e8.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(378),alt:"M5 Atom"}}),t._v(" "),a("img",{attrs:{src:e(268),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/39.f3625e6c.js b/dev/assets/js/39.10b5a02c.js similarity index 99% rename from dev/assets/js/39.f3625e6c.js rename to dev/assets/js/39.10b5a02c.js index dde131a454..6f66e40f26 100644 --- a/dev/assets/js/39.f3625e6c.js +++ b/dev/assets/js/39.10b5a02c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{278:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.3ca02117.png"},279:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.e0225c4f.png"},451: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, for other boards TLS is not supported.")]),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.\nSet "),t("code",[e._v("MQTT_SERVER")]),e._v(" to the Common Name (CN) of the certificate of the broker.\nThis can be the hostname or the IP of the broker.")]),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.\nIn "),t("code",[e._v("User_config.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("You can know compile and upload to your board and the gateway should connect with TLS to your broker.")]),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 except for UNO. With Arduino IDE you have to uncomment "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/0180a0dbd55ed8e0799e30ee84f68070a6f478fa/User_config.h#L99",target:"_blank",rel:"noopener noreferrer"}},[e._v("ZmqttDiscovery"),t("OutboundLink")],1),e._v(" in User_config.h.")]),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(278),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(279),alt:"MQTT Device settings"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{278:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway-Configuration-Home-Assistant.3ca02117.png"},279:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_Home_Assistant_MQTT_discovery.e0225c4f.png"},448: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, for other boards TLS is not supported.")]),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.\nSet "),t("code",[e._v("MQTT_SERVER")]),e._v(" to the Common Name (CN) of the certificate of the broker.\nThis can be the hostname or the IP of the broker.")]),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.\nIn "),t("code",[e._v("User_config.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("You can know compile and upload to your board and the gateway should connect with TLS to your broker.")]),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 except for UNO. With Arduino IDE you have to uncomment "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/0180a0dbd55ed8e0799e30ee84f68070a6f478fa/User_config.h#L99",target:"_blank",rel:"noopener noreferrer"}},[e._v("ZmqttDiscovery"),t("OutboundLink")],1),e._v(" in User_config.h.")]),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(278),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(279),alt:"MQTT Device settings"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/41.4c31bbbf.js b/dev/assets/js/41.8e3e9ed9.js similarity index 99% rename from dev/assets/js/41.4c31bbbf.js rename to dev/assets/js/41.8e3e9ed9.js index f6abcc5a56..c609b73478 100644 --- a/dev/assets/js/41.4c31bbbf.js +++ b/dev/assets/js/41.8e3e9ed9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{268:function(e,t,o){e.exports=o.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.b2457906.png"},397:function(e,t,o){e.exports=o.p+"assets/img/OpenMQTTgateway_M5_StickC_Board_Display_Text.7c5c1d9b.png"},458:function(e,t,o){"use strict";o.r(t);var a=o(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:"boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boards"}},[e._v("#")]),e._v(" Boards")]),e._v(" "),t("h2",{attrs:{id:"esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#esp"}},[e._v("#")]),e._v(" ESP")]),e._v(" "),t("h3",{attrs:{id:"erasing-the-flash"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#erasing-the-flash"}},[e._v("#")]),e._v(" Erasing the flash")]),e._v(" "),t("p",[e._v("So as to erase the flash memory on ESP boards you may do a long press to TRIGGER_GPIO button or connect the pin TRIGGER_GPIO to the ground during several seconds.")]),e._v(" "),t("p",[e._v("On M5Stack boards you may do a long press to these buttons in low power mode 0 (see below how to go to low power mode 0):")]),e._v(" "),t("ul",[t("li",[e._v("Button B on M5StickC and M5StickC Plus (GPIO 37)")]),e._v(" "),t("li",[e._v("Button C on M5Stack (GPIO 37)")]),e._v(" "),t("li",[e._v("Button lateral on M5stick (GPIO 35)")])]),e._v(" "),t("p",[e._v("You can also do a long press when powering the board to reset it, this press must be done during the first 5 seconds after the start.")]),e._v(" "),t("h3",{attrs:{id:"wifi-interference-on-sensors-when-using-an-esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wifi-interference-on-sensors-when-using-an-esp"}},[e._v("#")]),e._v(" Wifi interference on sensors when using an ESP")]),e._v(" "),t("p",[e._v("Certain sensors like HC-SR501 is prone to generate false signals / triggers when used on a ESP with Wifi enabled. To reduce or eliminate the effect the board must be put into Wifi B/G with lower TX power.")]),e._v(" "),t("p",[e._v("This can be achieved with the following macro, "),t("code",[e._v("WifiGMode")]),e._v(" defined true and "),t("code",[e._v("WifiPower")]),e._v(" to e.g. WIFI_POWER_11dBm (ESP32) or 11 (ESP8266).")]),e._v(" "),t("p",[e._v("Since the WiFi protocol is persisted in the flash of the ESP you have to run at least once with "),t("code",[e._v("WiFiGMode")]),e._v(" defined "),t("strong",[e._v("false")]),e._v(" to get Band N back.")]),e._v(" "),t("h3",{attrs:{id:"low-power-mode-for-esp32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#low-power-mode-for-esp32"}},[e._v("#")]),e._v(" Low power mode for ESP32")]),e._v(" "),t("p",[e._v("OpenMQTTGateway support a low power mode for ESP32, this mode is available per default on boards with batteries. The other boards needs to have the macro "),t("code",[e._v("DEFAULT_LOW_POWER_MODE")]),e._v(" defined at 0, 1 or 2 to use it. More information about the modes is available into User_config.h.")]),e._v(" "),t("p",[e._v("When available this mode can be set by MQTT:")]),e._v(" "),t("ul",[t("li",[e._v("Normal mode (per default)")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":0}\'')])]),e._v(" "),t("ul",[t("li",[e._v("Low Power mode")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":2}\'')])]),e._v(" "),t("p",[e._v("The interval between the ESP32 wake up is defined at build time by the macro "),t("code",[e._v("TimeBtwRead")]),e._v(", a change of the "),t("code",[e._v("interval")]),e._v(" through MQTT will not impact the time between wake up.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("When coming back from mode 2 to mode 0 you may publish the command with a retain flag so as to enable the gateway to retrieve it when reconnecting.\nA low power mode switch is automatically created by discovery with Home Assistant, you may experience a delay between the command and the state update due to the fact that the update will be received and acknowledged when the device woke up.\nIn low power mode you should use ESPWifiManualSetup so as to rely on the credentials entered into User_config.h.\nSo as to do that uncomment the line below in User_config.h")]),e._v(" "),t("div",{staticClass:"language-c line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-c"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//# define ESPWifiManualSetup true")]),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("For platformio and example of environment is available into "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/prod_env.ini.example",target:"_blank",rel:"noopener noreferrer"}},[e._v("prod_env.ini.example"),t("OutboundLink")],1)])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("If you change the default low power mode in config_BT.h to 2 and your credential are not set or not correct, the ESP32 will not connect to the broker and the only way to change the low power mode will be a new erase/upload.")])]),e._v(" "),t("h2",{attrs:{id:"m5stickc-m5stickc-plus-or-m5stack"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#m5stickc-m5stickc-plus-or-m5stack"}},[e._v("#")]),e._v(" M5StickC, M5StickC Plus or M5Stack")]),e._v(" "),t("h3",{attrs:{id:"behaviour"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#behaviour"}},[e._v("#")]),e._v(" Behaviour")]),e._v(" "),t("p",[e._v("If the connection of the board to WiFi and MQTT is successful you will see the logo with text like below:")]),e._v(" "),t("p",[t("img",{attrs:{src:o(268),alt:"boards"}})]),e._v(" "),t("p",[e._v("The same behaviour apply to M5StickC and M5StickC Plus")]),e._v(" "),t("p",[t("img",{attrs:{src:o(397),alt:"boards"}})]),e._v(" "),t("h3",{attrs:{id:"setting-the-log-output"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-the-log-output"}},[e._v("#")]),e._v(" Setting the log output")]),e._v(" "),t("p",[e._v("Per default the log of the M5 boards is going to the LCD display with Errors and Warnings only, if you want to change the output at build time you can do it in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/main/config_M5.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_M5.h"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("You can also change it by MQTT. For example if you want to set to LCD")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoM5/config -m '{\"log-display\":true}'")])]),e._v(" "),t("p",[e._v("you can also revert it to the serial monitor:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoM5/config -m '{\"log-display\":false}'")])]),e._v(" "),t("h3",{attrs:{id:"low-power-mode-for-m5-boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#low-power-mode-for-m5-boards"}},[e._v("#")]),e._v(" Low power mode for M5 boards")]),e._v(" "),t("p",[e._v("OpenMQTTGateway support a low power mode for ESP32, this mode can be set by MQTT or a button on M5 boards:")]),e._v(" "),t("ul",[t("li",[e._v("Normal mode (per default), screen ON")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":0}\'')])]),e._v(" "),t("ul",[t("li",[e._v("Low Power mode, screen ON when processing only")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":1}\'')])]),e._v(" "),t("ul",[t("li",[e._v("Low Power mode, screen OFF, LED ON when processing on M5StickC or M5stickC Plus")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":2}\'')])]),e._v(" "),t("p",[e._v("The low power mode can be changed also with a push to button B when the board is processing (top button on M5stickC, M5stickC Plus and middle button of M5stack).\nIf you are already in low power mode 1 or 2 with M5Stack you can wake up the board by pressing the red button.")]),e._v(" "),t("h3",{attrs:{id:"low-power-mode-deepsleep-for-esp8266-esp32-boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#low-power-mode-deepsleep-for-esp8266-esp32-boards"}},[e._v("#")]),e._v(" Low power mode (deepSleep) for ESP8266 & ESP32 boards")]),e._v(" "),t("p",[e._v("In certain use cases where power is severely limited you can use the ESP8266 or ESP32 deep sleep capability.")]),e._v(" "),t("ul",[t("li",[e._v("e.g. measuring a pool temperature every 5 minutes using an ESP8266 and DS18B20 probe where the ESP8266 is powered by very limited battery backed solar power.")]),e._v(" "),t("li",[e._v("e.g. as a water/leak detector which wake-up based on sensor state an ESP32 and C-37 YL-83 HM-RD sensor where the ESP32 is powered by very limited battery power.")])]),e._v(" "),t("p",[e._v("During deep sleep everything is off and (almost) all execution state is lost.")]),e._v(" "),t("p",[e._v("Consumption is about 20 µA on an ESP8266.")]),e._v(" "),t("p",[e._v("Use this when you want the device to sleep for minutes, hours woken by external sensor state.")]),e._v(" "),t("p",[e._v("You only have to define the macro "),t("code",[e._v("DEEP_SLEEP_IN_US")]),e._v(" with the number of microseconds, this works for both ESP8266 and ESP32.")]),e._v(" "),t("p",[e._v("For an ESP8266 a hardware jumper is required connecting RST to a GPIO (not to CH_PD) defined by the macro "),t("code",[e._v("ESP8266_DEEP_SLEEP_WAKE_PIN")]),e._v(" and defaulted to D0.")]),e._v(" "),t("p",[e._v("On an ESP32 we can also use an external sensor state to wake-up the ESP and this is defined by macro "),t("code",[e._v("ESP32_EXT0_WAKE_PIN")]),e._v(" and which state it must toggle to by macro "),t("code",[e._v("ESP32_EXT0_WAKE_PIN_STATE")]),e._v(" defaulted to 1 (high).")]),e._v(" "),t("p",[e._v("And the sensor code must set variable "),t("code",[e._v("ready_to_sleep")]),e._v(" to true after publishing the measurement to MQTT and the main loop will then enter deep sleep.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{268:function(e,t,o){e.exports=o.p+"assets/img/OpenMQTTgateway_M5_Stack_Board_Display_Text.b2457906.png"},397:function(e,t,o){e.exports=o.p+"assets/img/OpenMQTTgateway_M5_StickC_Board_Display_Text.7c5c1d9b.png"},457:function(e,t,o){"use strict";o.r(t);var a=o(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:"boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boards"}},[e._v("#")]),e._v(" Boards")]),e._v(" "),t("h2",{attrs:{id:"esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#esp"}},[e._v("#")]),e._v(" ESP")]),e._v(" "),t("h3",{attrs:{id:"erasing-the-flash"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#erasing-the-flash"}},[e._v("#")]),e._v(" Erasing the flash")]),e._v(" "),t("p",[e._v("So as to erase the flash memory on ESP boards you may do a long press to TRIGGER_GPIO button or connect the pin TRIGGER_GPIO to the ground during several seconds.")]),e._v(" "),t("p",[e._v("On M5Stack boards you may do a long press to these buttons in low power mode 0 (see below how to go to low power mode 0):")]),e._v(" "),t("ul",[t("li",[e._v("Button B on M5StickC and M5StickC Plus (GPIO 37)")]),e._v(" "),t("li",[e._v("Button C on M5Stack (GPIO 37)")]),e._v(" "),t("li",[e._v("Button lateral on M5stick (GPIO 35)")])]),e._v(" "),t("p",[e._v("You can also do a long press when powering the board to reset it, this press must be done during the first 5 seconds after the start.")]),e._v(" "),t("h3",{attrs:{id:"wifi-interference-on-sensors-when-using-an-esp"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wifi-interference-on-sensors-when-using-an-esp"}},[e._v("#")]),e._v(" Wifi interference on sensors when using an ESP")]),e._v(" "),t("p",[e._v("Certain sensors like HC-SR501 is prone to generate false signals / triggers when used on a ESP with Wifi enabled. To reduce or eliminate the effect the board must be put into Wifi B/G with lower TX power.")]),e._v(" "),t("p",[e._v("This can be achieved with the following macro, "),t("code",[e._v("WifiGMode")]),e._v(" defined true and "),t("code",[e._v("WifiPower")]),e._v(" to e.g. WIFI_POWER_11dBm (ESP32) or 11 (ESP8266).")]),e._v(" "),t("p",[e._v("Since the WiFi protocol is persisted in the flash of the ESP you have to run at least once with "),t("code",[e._v("WiFiGMode")]),e._v(" defined "),t("strong",[e._v("false")]),e._v(" to get Band N back.")]),e._v(" "),t("h3",{attrs:{id:"low-power-mode-for-esp32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#low-power-mode-for-esp32"}},[e._v("#")]),e._v(" Low power mode for ESP32")]),e._v(" "),t("p",[e._v("OpenMQTTGateway support a low power mode for ESP32, this mode is available per default on boards with batteries. The other boards needs to have the macro "),t("code",[e._v("DEFAULT_LOW_POWER_MODE")]),e._v(" defined at 0, 1 or 2 to use it. More information about the modes is available into User_config.h.")]),e._v(" "),t("p",[e._v("When available this mode can be set by MQTT:")]),e._v(" "),t("ul",[t("li",[e._v("Normal mode (per default)")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":0}\'')])]),e._v(" "),t("ul",[t("li",[e._v("Low Power mode")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":2}\'')])]),e._v(" "),t("p",[e._v("The interval between the ESP32 wake up is defined at build time by the macro "),t("code",[e._v("TimeBtwRead")]),e._v(", a change of the "),t("code",[e._v("interval")]),e._v(" through MQTT will not impact the time between wake up.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("When coming back from mode 2 to mode 0 you may publish the command with a retain flag so as to enable the gateway to retrieve it when reconnecting.\nA low power mode switch is automatically created by discovery with Home Assistant, you may experience a delay between the command and the state update due to the fact that the update will be received and acknowledged when the device woke up.\nIn low power mode you should use ESPWifiManualSetup so as to rely on the credentials entered into User_config.h.\nSo as to do that uncomment the line below in User_config.h")]),e._v(" "),t("div",{staticClass:"language-c line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-c"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//# define ESPWifiManualSetup true")]),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("For platformio and example of environment is available into "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/prod_env.ini.example",target:"_blank",rel:"noopener noreferrer"}},[e._v("prod_env.ini.example"),t("OutboundLink")],1)])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("If you change the default low power mode in config_BT.h to 2 and your credential are not set or not correct, the ESP32 will not connect to the broker and the only way to change the low power mode will be a new erase/upload.")])]),e._v(" "),t("h2",{attrs:{id:"m5stickc-m5stickc-plus-or-m5stack"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#m5stickc-m5stickc-plus-or-m5stack"}},[e._v("#")]),e._v(" M5StickC, M5StickC Plus or M5Stack")]),e._v(" "),t("h3",{attrs:{id:"behaviour"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#behaviour"}},[e._v("#")]),e._v(" Behaviour")]),e._v(" "),t("p",[e._v("If the connection of the board to WiFi and MQTT is successful you will see the logo with text like below:")]),e._v(" "),t("p",[t("img",{attrs:{src:o(268),alt:"boards"}})]),e._v(" "),t("p",[e._v("The same behaviour apply to M5StickC and M5StickC Plus")]),e._v(" "),t("p",[t("img",{attrs:{src:o(397),alt:"boards"}})]),e._v(" "),t("h3",{attrs:{id:"setting-the-log-output"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-the-log-output"}},[e._v("#")]),e._v(" Setting the log output")]),e._v(" "),t("p",[e._v("Per default the log of the M5 boards is going to the LCD display with Errors and Warnings only, if you want to change the output at build time you can do it in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/main/config_M5.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_M5.h"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("You can also change it by MQTT. For example if you want to set to LCD")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoM5/config -m '{\"log-display\":true}'")])]),e._v(" "),t("p",[e._v("you can also revert it to the serial monitor:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoM5/config -m '{\"log-display\":false}'")])]),e._v(" "),t("h3",{attrs:{id:"low-power-mode-for-m5-boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#low-power-mode-for-m5-boards"}},[e._v("#")]),e._v(" Low power mode for M5 boards")]),e._v(" "),t("p",[e._v("OpenMQTTGateway support a low power mode for ESP32, this mode can be set by MQTT or a button on M5 boards:")]),e._v(" "),t("ul",[t("li",[e._v("Normal mode (per default), screen ON")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":0}\'')])]),e._v(" "),t("ul",[t("li",[e._v("Low Power mode, screen ON when processing only")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":1}\'')])]),e._v(" "),t("ul",[t("li",[e._v("Low Power mode, screen OFF, LED ON when processing on M5StickC or M5stickC Plus")])]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoBT/config" -m \'{"lowpowermode":2}\'')])]),e._v(" "),t("p",[e._v("The low power mode can be changed also with a push to button B when the board is processing (top button on M5stickC, M5stickC Plus and middle button of M5stack).\nIf you are already in low power mode 1 or 2 with M5Stack you can wake up the board by pressing the red button.")]),e._v(" "),t("h3",{attrs:{id:"low-power-mode-deepsleep-for-esp8266-esp32-boards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#low-power-mode-deepsleep-for-esp8266-esp32-boards"}},[e._v("#")]),e._v(" Low power mode (deepSleep) for ESP8266 & ESP32 boards")]),e._v(" "),t("p",[e._v("In certain use cases where power is severely limited you can use the ESP8266 or ESP32 deep sleep capability.")]),e._v(" "),t("ul",[t("li",[e._v("e.g. measuring a pool temperature every 5 minutes using an ESP8266 and DS18B20 probe where the ESP8266 is powered by very limited battery backed solar power.")]),e._v(" "),t("li",[e._v("e.g. as a water/leak detector which wake-up based on sensor state an ESP32 and C-37 YL-83 HM-RD sensor where the ESP32 is powered by very limited battery power.")])]),e._v(" "),t("p",[e._v("During deep sleep everything is off and (almost) all execution state is lost.")]),e._v(" "),t("p",[e._v("Consumption is about 20 µA on an ESP8266.")]),e._v(" "),t("p",[e._v("Use this when you want the device to sleep for minutes, hours woken by external sensor state.")]),e._v(" "),t("p",[e._v("You only have to define the macro "),t("code",[e._v("DEEP_SLEEP_IN_US")]),e._v(" with the number of microseconds, this works for both ESP8266 and ESP32.")]),e._v(" "),t("p",[e._v("For an ESP8266 a hardware jumper is required connecting RST to a GPIO (not to CH_PD) defined by the macro "),t("code",[e._v("ESP8266_DEEP_SLEEP_WAKE_PIN")]),e._v(" and defaulted to D0.")]),e._v(" "),t("p",[e._v("On an ESP32 we can also use an external sensor state to wake-up the ESP and this is defined by macro "),t("code",[e._v("ESP32_EXT0_WAKE_PIN")]),e._v(" and which state it must toggle to by macro "),t("code",[e._v("ESP32_EXT0_WAKE_PIN_STATE")]),e._v(" defaulted to 1 (high).")]),e._v(" "),t("p",[e._v("And the sensor code must set variable "),t("code",[e._v("ready_to_sleep")]),e._v(" to true after publishing the measurement to MQTT and the main loop will then enter deep sleep.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/42.46e1c1aa.js b/dev/assets/js/42.88cbaa2e.js similarity index 85% rename from dev/assets/js/42.46e1c1aa.js rename to dev/assets/js/42.88cbaa2e.js index 243ee029be..4bfed136b1 100644 --- a/dev/assets/js/42.46e1c1aa.js +++ b/dev/assets/js/42.88cbaa2e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{405:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_1.55e6a1b4.jpg"},406:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_2.262163e3.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([[42],{409:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_1.55e6a1b4.jpg"},410:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial_2G_2.262163e3.jpg"},463: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(409),alt:""}})]),e._v(" "),t("p",[e._v("Arduino IDE serial data received when receiving SMS")]),e._v(" "),t("p",[t("img",{attrs:{src:a(410),alt:""}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/44.cf851fa2.js b/dev/assets/js/44.1b46a667.js similarity index 98% rename from dev/assets/js/44.cf851fa2.js rename to dev/assets/js/44.1b46a667.js index 5cbff56379..8c86ab29d2 100644 --- a/dev/assets/js/44.cf851fa2.js +++ b/dev/assets/js/44.1b46a667.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{356:function(t,a,s){t.exports=s.p+"assets/img/OpenMQTTgateway_OpenHAB_Control.d6c2beb5.png"},429: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(356),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([[44],{346:function(t,a,s){t.exports=s.p+"assets/img/OpenMQTTgateway_OpenHAB_Control.d6c2beb5.png"},428: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(346),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/45.450cee08.js b/dev/assets/js/45.f147a5cc.js similarity index 89% rename from dev/assets/js/45.450cee08.js rename to dev/assets/js/45.f147a5cc.js index 58b4588d60..732c11581a 100644 --- a/dev/assets/js/45.450cee08.js +++ b/dev/assets/js/45.f147a5cc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{371:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_controllers.995b8d5a.png"},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:"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(371),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([[45],{373:function(e,t,r){e.exports=r.p+"assets/img/OpenMQTTGateway_controllers.995b8d5a.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(373),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/46.d78c4b1f.js b/dev/assets/js/46.106a9bfc.js similarity index 93% rename from dev/assets/js/46.d78c4b1f.js rename to dev/assets/js/46.106a9bfc.js index 80cbd636d1..dcec5ed0a0 100644 --- a/dev/assets/js/46.d78c4b1f.js +++ b/dev/assets/js/46.106a9bfc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{379:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_2G.8258b879.png"},442: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(379),alt:"Addon_2G"}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{382:function(t,e,a){t.exports=a.p+"assets/img/OpenMQTTgateway_ESP8266_Addon_2G.8258b879.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(382),alt:"Addon_2G"}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/48.69b97a6e.js b/dev/assets/js/48.c95fc6e7.js similarity index 99% rename from dev/assets/js/48.69b97a6e.js rename to dev/assets/js/48.c95fc6e7.js index 347e0f0b05..d4b4bf1322 100644 --- a/dev/assets/js/48.69b97a6e.js +++ b/dev/assets/js/48.c95fc6e7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{407:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial3.ee0b9e07.jpg"},462:function(e,t,a){"use strict";a.r(t);var s=a(14),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"ir-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ir-gateway"}},[e._v("#")]),e._v(" IR gateway")]),e._v(" "),t("p",[e._v("There is two methods for finding the IR codes you want to replicate:")]),e._v(" "),t("ol",[t("li",[e._v("Point the remote control to an IR receiver see "),t("a",{attrs:{href:"#receiving-data-from-ir-signal"}},[e._v("Receiving data from IR signal")]),e._v(" & "),t("a",{attrs:{href:"#send-data-by-mqtt-to-convert-it-on-ir-signal"}},[e._v("Send data by MQTT to convert it on IR signal")])]),e._v(" "),t("li",[e._v("Find the code corresponding to your devices with IR global cache database https://irdb.globalcache.com/ see "),t("a",{attrs:{href:"#send-data-by-mqtt-from-global-cach%C3%A9-database-to-convert-it-on-ir-signal"}},[e._v("Send data by MQTT from Global cache database to convert it on IR signal")])])]),e._v(" "),t("p",[e._v("Here is the "),t("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1rTDZIG8rm0dSf4vP7HdTdM4-aRY1nDWH4jK28_WRwHQ/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[e._v("List of protocols"),t("OutboundLink")],1),e._v(" supported by OMG, even if your device brand is not in the list you can still use raw IR data or GlobalCache database.")]),e._v(" "),t("h2",{attrs:{id:"receiving-data-from-ir-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-ir-signal"}},[e._v("#")]),e._v(" Receiving data from IR signal")]),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("\nAnd press your IR remote control in front of the receiver led you should see the following messages for example:")]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("home/OpenMQTTGateway/IRtoMQTT "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("875849879")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("7")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol_name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("SAMSUNG"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"bits"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("32")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"raw"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"4534,4432,612,518,614,516,616,1618,618,1616,618,512,618,1618,608,524,612,518,616,514,618,512,616,1618,616,1618,618,514,616,1618,616,514,616,514,618,512,616,1618,618,1618,618,514,610,1622,616,514,618,514,614,516,616,1618,618,512,618,512,618,1616,550,580,618,1616,612,1624,618,1616,618"')]),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("p",[e._v("With an hexadecimal value:")]),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("{")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("9938405643")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("55")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"bits"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("35")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"hex"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0x25060090B"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol_name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"TECO"')]),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("p",[e._v("To receive big dump of raw data you need first to modify the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/091b317660fd201a30e2cd0e15424a13c5a6bd71/config_IR.h#L41",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" and uncomment DumpMode true")]),e._v(" "),t("p",[e._v("Unknown protocols are filtered by default, if you want to see the unknown protocols set into "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/config_IR.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" "),t("code",[e._v("#define pubIRunknownPrtcl true")]),e._v(" instead of false")]),e._v(" "),t("p",[t("img",{attrs:{src:a(407),alt:"IR serial"}})]),e._v(" "),t("p",[e._v("You can take this code and try to reproduce it with the gateway either by using "),t("a",{attrs:{href:"#send-data-by-mqtt-to-convert-it-on-ir-signal"}},[e._v("decimal value")]),e._v(" or the "),t("a",{attrs:{href:"#send-raw-ir-data-by-mqtt"}},[e._v("raw value")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-ir-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-ir-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on IR signal")]),e._v(" "),t("p",[e._v("With the IR gateway you need to put on the topic the protocol_name you want to use to send the signal, the different protocols implemented are "),t("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266/blob/f9d7e5c622670132731e3f9c64d9132128eb320c/src/IRremoteESP8266.h#L299",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Exhaustive list "),t("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1_5fQjAixzRtepkykmL-3uN3G5bLfQ0zMajM9OBZ1bx0/edit#gid=1910001295",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("For example if I want to send a command to a Sony TV you can use the following command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m \'{"value":551489775,"protocol_name":"SONY"}\'')])]),e._v(" "),t("p",[e._v("The code after the -m represent the payload you want to send.")]),e._v(" "),t("p",[e._v("You could alternatively use an hex value (bits is the number of hexadecimal values):\n"),t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m \'{"hex":"0x250600090B","bits":5,"protocol_name":"TECO"}\'')])]),e._v(" "),t("p",[e._v("or")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m \'{"hex":"0xA6BCF20040600020000000000519","bits":14,"protocol_name":"HAIER_AC_YRW02"}\'')])]),e._v(" "),t("p",[e._v("If you don’t want to use special parameters for IR just use value key, the protocol per default is NEC")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m '{\"value\":551489775}'")])]),e._v(" "),t("p",[e._v("NOTE: on Arduino Uno most of the protocols are not enable per default due to memory constraints (it is not the case for MEGA), to enable them go to "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/main/User_config.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("User_config.h"),t("OutboundLink")],1),e._v(" and uncomment the #define corresponding the protocols you want:")]),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 comment"}},[e._v("//#define IR_COOLIX")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_Whynter")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_LG")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_Sony")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_DISH")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_RC5")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_Sharp")]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("IR_SAMSUNG")])]),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("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("h2",{attrs:{id:"send-data-by-mqtt-from-global-cache-database-to-convert-it-on-ir-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-from-global-cache-database-to-convert-it-on-ir-signal"}},[e._v("#")]),e._v(" Send data by MQTT from Global Caché database to convert it on IR signal")]),e._v(" "),t("p",[e._v("The website https://irdb.globalcache.com/ contains an important database of IR codes of various devices brand. By registering and asking the code you will receive a code as the example below:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("code1: sendir,1:1,1,38000,1,69,340,169,20,20,20,20,20,64,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,64,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,1544,340,85,20,3663\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("Extract this part of the code:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("38000,1,69,340,169,20,20,20,20,20,64,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,64,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,1544,340,85,20,3663\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("and publish it to MQTT with the subject containing IR_GC:")]),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/MQTTtoIR -m \'{"raw":"38000,1,1,171,171,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,64,21,64,21,64,21,21,21,64,21,64,21,64,21,64,21,1114","protocol_name":"GC"}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("You should be able to command your devices without having listened with the IR receiver or if your protocol is unknown by the IRremote library")]),e._v(" "),t("h2",{attrs:{id:"send-data-by-mqtt-with-advanced-ir-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-ir-parameters"}},[e._v("#")]),e._v(" Send data by MQTT with advanced IR parameters")]),e._v(" "),t("p",[e._v("IR sending support two advanced parameters; bits length and repeat number.")]),e._v(" "),t("p",[e._v("The example below will send the following advanced parameters bits: 14 and repeat:4 times for a Sony protocol:")]),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/MQTTtoIR -m \'{"value":551489775,"protocol_name":"NEC","repeat":4,"bits":14}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("h2",{attrs:{id:"send-raw-ir-data-by-mqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-raw-ir-data-by-mqtt"}},[e._v("#")]),e._v(" Send raw IR data by MQTT")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[t("p",[e._v("If you use an Arduino UNO enable "),t("code",[e._v("IR_Raw")]),e._v(" by uncommenting the line 129 in User_config.h\n"),t("code",[e._v("#define IR_Raw")]),e._v("\nIf you are using the uno you will have to comment other gateway like ZgatewayRF, ZgatewayBT and ZgatewayIR to keep enough memory")])]),e._v(" "),t("li",[t("p",[e._v("publish your code like below")])])]),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/MQTTtoIR -m \'{"raw":"8850,4450,600,550,550,550,600,1600,600,550,600,500,600,500,600,550,600,500,600,1650,600,1600,600,550,600,1600,600,1650,600,1600,600,1650,600,1600,600,550,600,500,600,550,550,1650,600,500,600,550,600,500,600,550,550,1650,600,1650,550,1650,600,550,550,1650,600,1650,550,1650,600,1650,600","protocol_name":"Raw"}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("With big raw array you may cross the limit of default payload size. In this case the gateway will not receive the message or will not send it to the broker.\nIn this case the best way is to use hex values instead, but if you can't you may change the parameters below:\nIn User_config.h replace:")]),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("#")]),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("JSON_MSG_BUFFER")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("512")])])]),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("mqtt_max_packet_size")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1024")])])]),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("p",[e._v("by")]),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("#")]),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("JSON_MSG_BUFFER")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1280")])])]),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("mqtt_max_packet_size")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1280")])])]),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("h2",{attrs:{id:"repeat-the-ir-signal-openmqttgateway-receive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repeat-the-ir-signal-openmqttgateway-receive"}},[e._v("#")]),e._v(" Repeat the IR signal OpenMQTTGateway receive")]),e._v(" "),t("p",[e._v("So as to repeat the IR signal received by the gateway once set the following parameter to true in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/091b317660fd201a30e2cd0e15424a13c5a6bd71/config_IR.h#L37",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" "),t("code",[e._v("#define repeatIRwMQTT true")])]),e._v(" "),t("h2",{attrs:{id:"raw-ir-signal-forwarding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#raw-ir-signal-forwarding"}},[e._v("#")]),e._v(" Raw IR signal forwarding")]),e._v(" "),t("p",[e._v("So as to repeat the raw IR signal received by the gateway, uncomment and set the following parameter to true in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/091b317660fd201a30e2cd0e15424a13c5a6bd71/config_IR.h#L39",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" "),t("code",[e._v("#define RawDirectForward true")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{408:function(e,t,a){e.exports=a.p+"assets/img/OpenMQTTGateway_serial3.ee0b9e07.jpg"},462:function(e,t,a){"use strict";a.r(t);var s=a(14),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"ir-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ir-gateway"}},[e._v("#")]),e._v(" IR gateway")]),e._v(" "),t("p",[e._v("There is two methods for finding the IR codes you want to replicate:")]),e._v(" "),t("ol",[t("li",[e._v("Point the remote control to an IR receiver see "),t("a",{attrs:{href:"#receiving-data-from-ir-signal"}},[e._v("Receiving data from IR signal")]),e._v(" & "),t("a",{attrs:{href:"#send-data-by-mqtt-to-convert-it-on-ir-signal"}},[e._v("Send data by MQTT to convert it on IR signal")])]),e._v(" "),t("li",[e._v("Find the code corresponding to your devices with IR global cache database https://irdb.globalcache.com/ see "),t("a",{attrs:{href:"#send-data-by-mqtt-from-global-cach%C3%A9-database-to-convert-it-on-ir-signal"}},[e._v("Send data by MQTT from Global cache database to convert it on IR signal")])])]),e._v(" "),t("p",[e._v("Here is the "),t("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1rTDZIG8rm0dSf4vP7HdTdM4-aRY1nDWH4jK28_WRwHQ/edit?usp=sharing",target:"_blank",rel:"noopener noreferrer"}},[e._v("List of protocols"),t("OutboundLink")],1),e._v(" supported by OMG, even if your device brand is not in the list you can still use raw IR data or GlobalCache database.")]),e._v(" "),t("h2",{attrs:{id:"receiving-data-from-ir-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-ir-signal"}},[e._v("#")]),e._v(" Receiving data from IR signal")]),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("\nAnd press your IR remote control in front of the receiver led you should see the following messages for example:")]),e._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("home/OpenMQTTGateway/IRtoMQTT "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("875849879")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("7")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol_name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("SAMSUNG"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"bits"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("32")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"raw"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"4534,4432,612,518,614,516,616,1618,618,1616,618,512,618,1618,608,524,612,518,616,514,618,512,616,1618,616,1618,618,514,616,1618,616,514,616,514,618,512,616,1618,618,1618,618,514,610,1622,616,514,618,514,614,516,616,1618,618,512,618,512,618,1616,550,580,618,1616,612,1624,618,1616,618"')]),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("p",[e._v("With an hexadecimal value:")]),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("{")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"value"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("9938405643")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("55")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"bits"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("35")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"hex"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0x25060090B"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"protocol_name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"TECO"')]),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("p",[e._v("To receive big dump of raw data you need first to modify the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/091b317660fd201a30e2cd0e15424a13c5a6bd71/config_IR.h#L41",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" and uncomment DumpMode true")]),e._v(" "),t("p",[e._v("Unknown protocols are filtered by default, if you want to see the unknown protocols set into "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/config_IR.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" "),t("code",[e._v("#define pubIRunknownPrtcl true")]),e._v(" instead of false")]),e._v(" "),t("p",[t("img",{attrs:{src:a(408),alt:"IR serial"}})]),e._v(" "),t("p",[e._v("You can take this code and try to reproduce it with the gateway either by using "),t("a",{attrs:{href:"#send-data-by-mqtt-to-convert-it-on-ir-signal"}},[e._v("decimal value")]),e._v(" or the "),t("a",{attrs:{href:"#send-raw-ir-data-by-mqtt"}},[e._v("raw value")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-ir-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-ir-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on IR signal")]),e._v(" "),t("p",[e._v("With the IR gateway you need to put on the topic the protocol_name you want to use to send the signal, the different protocols implemented are "),t("a",{attrs:{href:"https://github.com/crankyoldgit/IRremoteESP8266/blob/f9d7e5c622670132731e3f9c64d9132128eb320c/src/IRremoteESP8266.h#L299",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Exhaustive list "),t("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1_5fQjAixzRtepkykmL-3uN3G5bLfQ0zMajM9OBZ1bx0/edit#gid=1910001295",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("For example if I want to send a command to a Sony TV you can use the following command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m \'{"value":551489775,"protocol_name":"SONY"}\'')])]),e._v(" "),t("p",[e._v("The code after the -m represent the payload you want to send.")]),e._v(" "),t("p",[e._v("You could alternatively use an hex value (bits is the number of hexadecimal values):\n"),t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m \'{"hex":"0x250600090B","bits":5,"protocol_name":"TECO"}\'')])]),e._v(" "),t("p",[e._v("or")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m \'{"hex":"0xA6BCF20040600020000000000519","bits":14,"protocol_name":"HAIER_AC_YRW02"}\'')])]),e._v(" "),t("p",[e._v("If you don’t want to use special parameters for IR just use value key, the protocol per default is NEC")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoIR -m '{\"value\":551489775}'")])]),e._v(" "),t("p",[e._v("NOTE: on Arduino Uno most of the protocols are not enable per default due to memory constraints (it is not the case for MEGA), to enable them go to "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/master/main/User_config.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("User_config.h"),t("OutboundLink")],1),e._v(" and uncomment the #define corresponding the protocols you want:")]),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 comment"}},[e._v("//#define IR_COOLIX")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_Whynter")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_LG")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_Sony")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_DISH")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_RC5")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//#define IR_Sharp")]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("IR_SAMSUNG")])]),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("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("h2",{attrs:{id:"send-data-by-mqtt-from-global-cache-database-to-convert-it-on-ir-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-from-global-cache-database-to-convert-it-on-ir-signal"}},[e._v("#")]),e._v(" Send data by MQTT from Global Caché database to convert it on IR signal")]),e._v(" "),t("p",[e._v("The website https://irdb.globalcache.com/ contains an important database of IR codes of various devices brand. By registering and asking the code you will receive a code as the example below:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("code1: sendir,1:1,1,38000,1,69,340,169,20,20,20,20,20,64,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,64,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,1544,340,85,20,3663\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("Extract this part of the code:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("38000,1,69,340,169,20,20,20,20,20,64,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,64,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,64,20,64,20,64,20,64,20,64,20,64,20,1544,340,85,20,3663\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("and publish it to MQTT with the subject containing IR_GC:")]),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/MQTTtoIR -m \'{"raw":"38000,1,1,171,171,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,64,21,21,21,21,21,21,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,64,21,21,21,21,21,21,21,21,21,64,21,64,21,64,21,21,21,64,21,64,21,64,21,64,21,1114","protocol_name":"GC"}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("You should be able to command your devices without having listened with the IR receiver or if your protocol is unknown by the IRremote library")]),e._v(" "),t("h2",{attrs:{id:"send-data-by-mqtt-with-advanced-ir-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-ir-parameters"}},[e._v("#")]),e._v(" Send data by MQTT with advanced IR parameters")]),e._v(" "),t("p",[e._v("IR sending support two advanced parameters; bits length and repeat number.")]),e._v(" "),t("p",[e._v("The example below will send the following advanced parameters bits: 14 and repeat:4 times for a Sony protocol:")]),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/MQTTtoIR -m \'{"value":551489775,"protocol_name":"NEC","repeat":4,"bits":14}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("h2",{attrs:{id:"send-raw-ir-data-by-mqtt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-raw-ir-data-by-mqtt"}},[e._v("#")]),e._v(" Send raw IR data by MQTT")]),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[t("p",[e._v("If you use an Arduino UNO enable "),t("code",[e._v("IR_Raw")]),e._v(" by uncommenting the line 129 in User_config.h\n"),t("code",[e._v("#define IR_Raw")]),e._v("\nIf you are using the uno you will have to comment other gateway like ZgatewayRF, ZgatewayBT and ZgatewayIR to keep enough memory")])]),e._v(" "),t("li",[t("p",[e._v("publish your code like below")])])]),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/MQTTtoIR -m \'{"raw":"8850,4450,600,550,550,550,600,1600,600,550,600,500,600,500,600,550,600,500,600,1650,600,1600,600,550,600,1600,600,1650,600,1600,600,1650,600,1600,600,550,600,500,600,550,550,1650,600,500,600,550,600,500,600,550,550,1650,600,1650,550,1650,600,550,550,1650,600,1650,550,1650,600,1650,600","protocol_name":"Raw"}\'\n')])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("p",[e._v("With big raw array you may cross the limit of default payload size. In this case the gateway will not receive the message or will not send it to the broker.\nIn this case the best way is to use hex values instead, but if you can't you may change the parameters below:\nIn User_config.h replace:")]),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("#")]),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("JSON_MSG_BUFFER")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("512")])])]),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("mqtt_max_packet_size")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1024")])])]),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("p",[e._v("by")]),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("#")]),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("JSON_MSG_BUFFER")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1280")])])]),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("mqtt_max_packet_size")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1280")])])]),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("h2",{attrs:{id:"repeat-the-ir-signal-openmqttgateway-receive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#repeat-the-ir-signal-openmqttgateway-receive"}},[e._v("#")]),e._v(" Repeat the IR signal OpenMQTTGateway receive")]),e._v(" "),t("p",[e._v("So as to repeat the IR signal received by the gateway once set the following parameter to true in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/091b317660fd201a30e2cd0e15424a13c5a6bd71/config_IR.h#L37",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" "),t("code",[e._v("#define repeatIRwMQTT true")])]),e._v(" "),t("h2",{attrs:{id:"raw-ir-signal-forwarding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#raw-ir-signal-forwarding"}},[e._v("#")]),e._v(" Raw IR signal forwarding")]),e._v(" "),t("p",[e._v("So as to repeat the raw IR signal received by the gateway, uncomment and set the following parameter to true in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/091b317660fd201a30e2cd0e15424a13c5a6bd71/config_IR.h#L39",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_IR.h"),t("OutboundLink")],1),e._v(" "),t("code",[e._v("#define RawDirectForward true")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/49.0478dd72.js b/dev/assets/js/49.0478dd72.js new file mode 100644 index 0000000000..e1463394fe --- /dev/null +++ b/dev/assets/js/49.0478dd72.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{422:function(e,n,t){"use strict";t.r(n);var i={mounted(){const e=document.querySelector("esp-web-install-button");e.addEventListener("state-changed",e=>{console.log(e.detail)});const n=document.querySelector("select");e.manifest=n.value,n.addEventListener("change",()=>{e.manifest=n.value})}},s=t(14),a=Object(s.a)(i,(function(){var e=this._self._c;return e("div",{attrs:{align:"center"}},[this._m(0),e("br"),e("br"),this._v(" "),e("esp-web-install-button",{attrs:{"erase-first":""}})],1)}),[function(){var e=this,n=e._self._c;return n("select",[n("optgroup",{attrs:{label:"ESP32"}},[n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble-mqtt-undecoded.manifest.json"}},[e._v("\n esp32dev-ble-mqtt-undecoded\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32doitv1-aithinker-r01-sx1278.manifest.json"}},[e._v("\n esp32doitv1-aithinker-r01-sx1278\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-somfy-cc1101.manifest.json"}},[e._v("\n esp32dev-somfy-cc1101\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-wifi.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-wifi\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-pilight-somfy-cc1101.manifest.json"}},[e._v("\n esp32dev-pilight-somfy-cc1101\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stick-ble.manifest.json"}},[e._v("\n esp32-m5stick-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-multi_receiver.manifest.json"}},[e._v("\n esp32dev-multi_receiver\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble.manifest.json"}},[e._v("\n esp32dev-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32feather-ble.manifest.json"}},[e._v("\n esp32feather-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-multi_receiver-pilight.manifest.json"}},[e._v("\n esp32dev-multi_receiver-pilight\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/theengs-bridge.manifest.json"}},[e._v("\n theengs-bridge\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5atom-matrix.manifest.json"}},[e._v("\n esp32-m5atom-matrix\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stack-ble.manifest.json"}},[e._v("\n esp32-m5stack-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stick-c-ble.manifest.json"}},[e._v("\n esp32-m5stick-c-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5atom-lite.manifest.json"}},[e._v("\n esp32-m5atom-lite\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble-datatest.manifest.json"}},[e._v("\n esp32dev-ble-datatest\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-rf.manifest.json"}},[e._v("\n esp32dev-rf\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/shelly-plus1.manifest.json"}},[e._v("\n shelly-plus1\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-wt32-eth01-ble-eth.manifest.json"}},[e._v("\n esp32-wt32-eth01-ble-eth\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/lilygo-ble.manifest.json"}},[e._v("\n lilygo-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/thingpulse-espgateway.manifest.json"}},[e._v("\n thingpulse-espgateway\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5tough-ble.manifest.json"}},[e._v("\n esp32-m5tough-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/lilygo-rtl_433.manifest.json"}},[e._v("\n lilygo-rtl_433\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/ttgo-lora32-v21.manifest.json"}},[e._v("\n ttgo-lora32-v21\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/ttgo-t-beam.manifest.json"}},[e._v("\n ttgo-t-beam\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-eth.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-eth\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-wifi-lora-32.manifest.json"}},[e._v("\n heltec-wifi-lora-32\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-pilight-cc1101.manifest.json"}},[e._v("\n esp32dev-pilight-cc1101\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/ttgo-lora32-v1.manifest.json"}},[e._v("\n ttgo-lora32-v1\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-lolin32lite-ble.manifest.json"}},[e._v("\n esp32-lolin32lite-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/tinypico-ble.manifest.json"}},[e._v("\n tinypico-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stick-cp-ble.manifest.json"}},[e._v("\n esp32-m5stick-cp-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble-aws.manifest.json"}},[e._v("\n esp32dev-ble-aws\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-poe-iso.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-poe-iso\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-poe.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-poe\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-weatherstation.manifest.json"}},[e._v("\n esp32dev-weatherstation\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-rtl_433.manifest.json"}},[e._v("\n esp32dev-rtl_433\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-rtl_433.manifest.json"}},[e._v("\n heltec-rtl_433\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-pilight.manifest.json"}},[e._v("\n esp32dev-pilight\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/lilygo-rtl_433-fsk.manifest.json"}},[e._v("\n lilygo-rtl_433-fsk\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-gf-sun-inverter.manifest.json"}},[e._v("\n esp32dev-gf-sun-inverter\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-rtl_433-fsk.manifest.json"}},[e._v("\n heltec-rtl_433-fsk\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-ble.manifest.json"}},[e._v("\n heltec-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ir.manifest.json"}},[e._v("\n esp32dev-ir\n ")])]),e._v(" "),n("optgroup",{attrs:{label:"ESP32C3"}},[n("option",{attrs:{value:"/dev/firmware_build/esp32c3-dev-m1-ble.manifest.json"}},[e._v("\n esp32c3-dev-m1-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/airm2m_core_esp32c3.manifest.json"}},[e._v("\n airm2m_core_esp32c3\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3-dev-c2-ble.manifest.json"}},[e._v("\n esp32c3-dev-c2-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3-dev-c2-ble-no-serial.manifest.json"}},[e._v("\n esp32c3-dev-c2-ble-no-serial\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3_lolin_mini_with_serial.manifest.json"}},[e._v("\n esp32c3_lolin_mini_with_serial\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3_lolin_mini.manifest.json"}},[e._v("\n esp32c3_lolin_mini\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3-m5stamp.manifest.json"}},[e._v("\n esp32c3-m5stamp\n ")])]),e._v(" "),n("optgroup",{attrs:{label:"ESP32S3"}},[n("option",{attrs:{value:"/dev/firmware_build/esp32s3-atomS3U.manifest.json"}},[e._v("\n esp32s3-atomS3U\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32s3-dev-c1-ble.manifest.json"}},[e._v("\n esp32s3-dev-c1-ble\n ")])]),e._v(" "),n("optgroup",{attrs:{label:"ESP8266"}},[e._v("/dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/sonoff-basic-rfr3.manifest.json"}},[e._v("\n sonoff-basic-rfr3\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-2g.manifest.json"}},[e._v("\n nodemcuv2-2g\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/sonoff-basic.manifest.json"}},[e._v("\n sonoff-basic\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/rf-wifi-gateway.manifest.json"}},[e._v("\n rf-wifi-gateway\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-pilight.manifest.json"}},[e._v("\n nodemcuv2-pilight\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf-cc1101.manifest.json"}},[e._v("\n nodemcuv2-rf-cc1101\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-ir.manifest.json"}},[e._v("\n nodemcuv2-ir\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-weatherstation.manifest.json"}},[e._v("\n nodemcuv2-weatherstation\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf2-cc1101.manifest.json"}},[e._v("\n nodemcuv2-rf2-cc1101\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-somfy-cc1101.manifest.json"}},[e._v("\n nodemcuv2-somfy-cc1101\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf2.manifest.json"}},[e._v("\n nodemcuv2-rf2\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/rfbridge.manifest.json"}},[e._v("\n rfbridge\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rs232.manifest.json"}},[e._v("\n nodemcuv2-rs232\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf.manifest.json"}},[e._v("\n nodemcuv2-rf\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/rfbridge-direct.manifest.json"}},[e._v("\n rfbridge-direct\n ")])])])}],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/49.cdc35953.js b/dev/assets/js/49.cdc35953.js deleted file mode 100644 index eb51168784..0000000000 --- a/dev/assets/js/49.cdc35953.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{422:function(e,n,t){"use strict";t.r(n);var i={mounted(){const e=document.querySelector("esp-web-install-button");e.addEventListener("state-changed",e=>{console.log(e.detail)});const n=document.querySelector("select");e.manifest=n.value,n.addEventListener("change",()=>{e.manifest=n.value})}},s=t(14),a=Object(s.a)(i,(function(){var e=this._self._c;return e("div",{attrs:{align:"center"}},[this._m(0),e("br"),e("br"),this._v(" "),e("esp-web-install-button",{attrs:{"erase-first":""}})],1)}),[function(){var e=this,n=e._self._c;return n("select",[n("optgroup",{attrs:{label:"ESP32"}},[n("option",{attrs:{value:"/dev/firmware_build/esp32feather-ble.manifest.json"}},[e._v("\n esp32feather-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-rtl_433.manifest.json"}},[e._v("\n heltec-rtl_433\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble-datatest.manifest.json"}},[e._v("\n esp32dev-ble-datatest\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/ttgo-lora32-v21.manifest.json"}},[e._v("\n ttgo-lora32-v21\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stick-ble.manifest.json"}},[e._v("\n esp32-m5stick-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-pilight-somfy-cc1101.manifest.json"}},[e._v("\n esp32dev-pilight-somfy-cc1101\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble-aws.manifest.json"}},[e._v("\n esp32dev-ble-aws\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-ble.manifest.json"}},[e._v("\n heltec-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-somfy-cc1101.manifest.json"}},[e._v("\n esp32dev-somfy-cc1101\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/thingpulse-espgateway.manifest.json"}},[e._v("\n thingpulse-espgateway\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-pilight-cc1101.manifest.json"}},[e._v("\n esp32dev-pilight-cc1101\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/shelly-plus1.manifest.json"}},[e._v("\n shelly-plus1\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-poe.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-poe\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5atom-lite.manifest.json"}},[e._v("\n esp32-m5atom-lite\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble-mqtt-undecoded.manifest.json"}},[e._v("\n esp32dev-ble-mqtt-undecoded\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-rtl_433-fsk.manifest.json"}},[e._v("\n heltec-rtl_433-fsk\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5tough-ble.manifest.json"}},[e._v("\n esp32-m5tough-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stick-c-ble.manifest.json"}},[e._v("\n esp32-m5stick-c-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32doitv1-aithinker-r01-sx1278.manifest.json"}},[e._v("\n esp32doitv1-aithinker-r01-sx1278\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ble.manifest.json"}},[e._v("\n esp32dev-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-rf.manifest.json"}},[e._v("\n esp32dev-rf\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/heltec-wifi-lora-32.manifest.json"}},[e._v("\n heltec-wifi-lora-32\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-multi_receiver-pilight.manifest.json"}},[e._v("\n esp32dev-multi_receiver-pilight\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-pilight.manifest.json"}},[e._v("\n esp32dev-pilight\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-poe-iso.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-poe-iso\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/ttgo-lora32-v1.manifest.json"}},[e._v("\n ttgo-lora32-v1\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/theengs-bridge.manifest.json"}},[e._v("\n theengs-bridge\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-eth.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-eth\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-weatherstation.manifest.json"}},[e._v("\n esp32dev-weatherstation\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/lilygo-rtl_433.manifest.json"}},[e._v("\n lilygo-rtl_433\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-wt32-eth01-ble-eth.manifest.json"}},[e._v("\n esp32-wt32-eth01-ble-eth\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/ttgo-t-beam.manifest.json"}},[e._v("\n ttgo-t-beam\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stick-cp-ble.manifest.json"}},[e._v("\n esp32-m5stick-cp-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/lilygo-rtl_433-fsk.manifest.json"}},[e._v("\n lilygo-rtl_433-fsk\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/lilygo-ble.manifest.json"}},[e._v("\n lilygo-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-rtl_433.manifest.json"}},[e._v("\n esp32dev-rtl_433\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-gf-sun-inverter.manifest.json"}},[e._v("\n esp32dev-gf-sun-inverter\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5atom-matrix.manifest.json"}},[e._v("\n esp32-m5atom-matrix\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-lolin32lite-ble.manifest.json"}},[e._v("\n esp32-lolin32lite-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-ir.manifest.json"}},[e._v("\n esp32dev-ir\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-olimex-gtw-ble-wifi.manifest.json"}},[e._v("\n esp32-olimex-gtw-ble-wifi\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/tinypico-ble.manifest.json"}},[e._v("\n tinypico-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32-m5stack-ble.manifest.json"}},[e._v("\n esp32-m5stack-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32dev-multi_receiver.manifest.json"}},[e._v("\n esp32dev-multi_receiver\n ")])]),e._v(" "),n("optgroup",{attrs:{label:"ESP32C3"}},[n("option",{attrs:{value:"/dev/firmware_build/airm2m_core_esp32c3.manifest.json"}},[e._v("\n airm2m_core_esp32c3\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3-dev-c2-ble-no-serial.manifest.json"}},[e._v("\n esp32c3-dev-c2-ble-no-serial\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3_lolin_mini_with_serial.manifest.json"}},[e._v("\n esp32c3_lolin_mini_with_serial\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3-dev-m1-ble.manifest.json"}},[e._v("\n esp32c3-dev-m1-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3_lolin_mini.manifest.json"}},[e._v("\n esp32c3_lolin_mini\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3-dev-c2-ble.manifest.json"}},[e._v("\n esp32c3-dev-c2-ble\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32c3-m5stamp.manifest.json"}},[e._v("\n esp32c3-m5stamp\n ")])]),e._v(" "),n("optgroup",{attrs:{label:"ESP32S3"}},[n("option",{attrs:{value:"/dev/firmware_build/esp32s3-atomS3U.manifest.json"}},[e._v("\n esp32s3-atomS3U\n ")]),e._v(" "),n("option",{attrs:{value:"/dev/firmware_build/esp32s3-dev-c1-ble.manifest.json"}},[e._v("\n esp32s3-dev-c1-ble\n ")])]),e._v(" "),n("optgroup",{attrs:{label:"ESP8266"}},[e._v("/dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-2g.manifest.json"}},[e._v("\n nodemcuv2-2g\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf2.manifest.json"}},[e._v("\n nodemcuv2-rf2\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-weatherstation.manifest.json"}},[e._v("\n nodemcuv2-weatherstation\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf2-cc1101.manifest.json"}},[e._v("\n nodemcuv2-rf2-cc1101\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/rf-wifi-gateway.manifest.json"}},[e._v("\n rf-wifi-gateway\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-ir.manifest.json"}},[e._v("\n nodemcuv2-ir\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/sonoff-basic.manifest.json"}},[e._v("\n sonoff-basic\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf-cc1101.manifest.json"}},[e._v("\n nodemcuv2-rf-cc1101\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/rfbridge.manifest.json"}},[e._v("\n rfbridge\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-somfy-cc1101.manifest.json"}},[e._v("\n nodemcuv2-somfy-cc1101\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rf.manifest.json"}},[e._v("\n nodemcuv2-rf\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-rs232.manifest.json"}},[e._v("\n nodemcuv2-rs232\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/rfbridge-direct.manifest.json"}},[e._v("\n rfbridge-direct\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/sonoff-basic-rfr3.manifest.json"}},[e._v("\n sonoff-basic-rfr3\n ")]),e._v("\n /dev/firmware_build/\n "),n("option",{attrs:{value:"/dev/firmware_build/nodemcuv2-pilight.manifest.json"}},[e._v("\n nodemcuv2-pilight\n ")])])])}],!1,null,null,null);n.default=a.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/51.60fabb31.js b/dev/assets/js/51.b6223c60.js similarity index 93% rename from dev/assets/js/51.60fabb31.js rename to dev/assets/js/51.b6223c60.js index 4e6bfe1c23..d5daf7e085 100644 --- a/dev/assets/js/51.60fabb31.js +++ b/dev/assets/js/51.b6223c60.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{432:function(t,e,n){"use strict";n.r(e);var a=n(14),o=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"community-participation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-participation"}},[t._v("#")]),t._v(" Community participation")]),t._v(" "),e("p",[t._v("The first entry step for participating to OMG is sharing and discussing with the "),e("a",{attrs:{href:"https://community.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("community"),e("OutboundLink")],1),t._v(", by sharing your experiences and answering to other questions you are giving back what the others gave to you.")]),t._v(" "),e("p",[t._v("You can use the forum to ask questions, post answers, suggest features and discuss about home automation or Internet of things in a more general way.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{431:function(t,e,n){"use strict";n.r(e);var a=n(14),o=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"community-participation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-participation"}},[t._v("#")]),t._v(" Community participation")]),t._v(" "),e("p",[t._v("The first entry step for participating to OMG is sharing and discussing with the "),e("a",{attrs:{href:"https://community.openmqttgateway.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("community"),e("OutboundLink")],1),t._v(", by sharing your experiences and answering to other questions you are giving back what the others gave to you.")]),t._v(" "),e("p",[t._v("You can use the forum to ask questions, post answers, suggest features and discuss about home automation or Internet of things in a more general way.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/52.fd3b125b.js b/dev/assets/js/52.237ca227.js similarity index 99% rename from dev/assets/js/52.fd3b125b.js rename to dev/assets/js/52.237ca227.js index 5363438c65..55e15215ce 100644 --- a/dev/assets/js/52.fd3b125b.js +++ b/dev/assets/js/52.237ca227.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{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 Arduino Uno, 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([[52],{435: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 Arduino Uno, 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/53.b0c436b4.js b/dev/assets/js/53.63d85a83.js similarity index 97% rename from dev/assets/js/53.b0c436b4.js rename to dev/assets/js/53.63d85a83.js index 4596986461..a405900d7e 100644 --- a/dev/assets/js/53.b0c436b4.js +++ b/dev/assets/js/53.63d85a83.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{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([[53],{433: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/55.6e9ddc55.js b/dev/assets/js/55.11afba82.js similarity index 98% rename from dev/assets/js/55.6e9ddc55.js rename to dev/assets/js/55.11afba82.js index ce1f91f85a..e6a1e1adc7 100644 --- a/dev/assets/js/55.6e9ddc55.js +++ b/dev/assets/js/55.11afba82.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{443: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],{439: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.96e9b762.js b/dev/assets/js/56.1fe4be81.js similarity index 97% rename from dev/assets/js/56.96e9b762.js rename to dev/assets/js/56.1fe4be81.js index bfb6203df9..b684261206 100644 --- a/dev/assets/js/56.96e9b762.js +++ b/dev/assets/js/56.1fe4be81.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{439: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],{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 diff --git a/dev/assets/js/58.4d098c0a.js b/dev/assets/js/58.dc225563.js similarity index 99% rename from dev/assets/js/58.4d098c0a.js rename to dev/assets/js/58.dc225563.js index 6e25d7408c..07fa3be83d 100644 --- a/dev/assets/js/58.4d098c0a.js +++ b/dev/assets/js/58.dc225563.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{448:function(t,_,e){"use strict";e.r(_);var r=e(14),v=Object(r.a)({},(function(){var t=this,_=t._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"sensors"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#sensors"}},[t._v("#")]),t._v(" Sensors")]),t._v(" "),_("h2",{attrs:{id:"compatible-sensors"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#compatible-sensors"}},[t._v("#")]),t._v(" Compatible sensors")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Module")]),t._v(" "),_("th",[t._v("Purpose")]),t._v(" "),_("th",[t._v("Where to Buy")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("DHT11")]),t._v(" "),_("td",[t._v("Temperature, Humidity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("DHT22")]),t._v(" "),_("td",[t._v("Temperature, Humidity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("HCSR501")]),t._v(" "),_("td",[t._v("PIR")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("BH1750")]),t._v(" "),_("td",[t._v("Digital light")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("BME280")]),t._v(" "),_("td",[t._v("Temperature, Humidity, Pressure")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("BMP280")]),t._v(" "),_("td",[t._v("Temperature, Pressure")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("C-37, YL-83, HM-RD")]),t._v(" "),_("td",[t._v("Leak, Water")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("HTU21")]),t._v(" "),_("td",[t._v("Temperature, Humidity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("GPIO Input")]),t._v(" "),_("td",[t._v("Inputs")]),t._v(" "),_("td",[t._v("-")])]),t._v(" "),_("tr",[_("td",[t._v("GPIO KeyCode")]),t._v(" "),_("td",[t._v("Keycode")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("INA226")]),t._v(" "),_("td",[t._v("Current, Voltage")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("MQ2")]),t._v(" "),_("td",[t._v("Gas (flammable)")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("TEMT6000")]),t._v(" "),_("td",[t._v("Luminosity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("TSL2561")]),t._v(" "),_("td",[t._v("Luminosity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])])])]),t._v(" "),_("h2",{attrs:{id:"pinout"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#pinout"}},[t._v("#")]),t._v(" Pinout")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Module")]),t._v(" "),_("th",[t._v("Arduino Pin")]),t._v(" "),_("th",[t._v("ESP8266 Pin")]),t._v(" "),_("th",[t._v("ESP32 Pin")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("Analog reading")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")])]),t._v(" "),_("tr",[_("td",[t._v("BH1750 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("BH1750 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("BME280/BMP280 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("BME280/BMP280 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("C-37, YL-83, HM-RD")]),t._v(" "),_("td",[t._v("A0 + D14")]),t._v(" "),_("td",[t._v("A0 + D14")]),t._v(" "),_("td",[t._v("A7 + D14")])]),t._v(" "),_("tr",[_("td",[t._v("DHT11/22")]),t._v(" "),_("td",[_("a",{attrs:{href:"img/OpenMQTTgateway_Arduino_Addon_DHT.png",target:"_blank"}},[t._v("D8")])]),t._v(" "),_("td",[_("a",{attrs:{href:"img/OpenMQTTgateway_ESP8266_Addon_DHT.png",target:"_blank"}},[t._v("D1")])]),t._v(" "),_("td",[t._v("16")])]),t._v(" "),_("tr",[_("td",[t._v("HC-SR501/HC-SR505")]),t._v(" "),_("td",[t._v("7")]),t._v(" "),_("td",[t._v("D5")]),t._v(" "),_("td",[t._v("5")])]),t._v(" "),_("tr",[_("td",[t._v("HTU21 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("HTU21 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("INA226 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("INA226 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("MQ02")]),t._v(" "),_("td",[t._v("A0 + D4")]),t._v(" "),_("td",[t._v("A0 + D4")]),t._v(" "),_("td",[t._v("A0 + D4")])]),t._v(" "),_("tr",[_("td",[t._v("TEMT6000")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")])]),t._v(" "),_("tr",[_("td",[t._v("TSL2561 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("TSL2561 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])])])]),t._v(" "),_("p",[t._v("Vcc pin of the board and the Module to a 3.3V or 5V supply source depending on sensor voltage requirement.\nGround pins of the board and the Module to the ground of the supply source.")])])}),[],!1,null,null,null);_.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{450:function(t,_,e){"use strict";e.r(_);var r=e(14),v=Object(r.a)({},(function(){var t=this,_=t._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"sensors"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#sensors"}},[t._v("#")]),t._v(" Sensors")]),t._v(" "),_("h2",{attrs:{id:"compatible-sensors"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#compatible-sensors"}},[t._v("#")]),t._v(" Compatible sensors")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Module")]),t._v(" "),_("th",[t._v("Purpose")]),t._v(" "),_("th",[t._v("Where to Buy")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("DHT11")]),t._v(" "),_("td",[t._v("Temperature, Humidity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("DHT22")]),t._v(" "),_("td",[t._v("Temperature, Humidity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("HCSR501")]),t._v(" "),_("td",[t._v("PIR")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("BH1750")]),t._v(" "),_("td",[t._v("Digital light")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("BME280")]),t._v(" "),_("td",[t._v("Temperature, Humidity, Pressure")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("BMP280")]),t._v(" "),_("td",[t._v("Temperature, Pressure")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("C-37, YL-83, HM-RD")]),t._v(" "),_("td",[t._v("Leak, Water")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("HTU21")]),t._v(" "),_("td",[t._v("Temperature, Humidity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("GPIO Input")]),t._v(" "),_("td",[t._v("Inputs")]),t._v(" "),_("td",[t._v("-")])]),t._v(" "),_("tr",[_("td",[t._v("GPIO KeyCode")]),t._v(" "),_("td",[t._v("Keycode")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("INA226")]),t._v(" "),_("td",[t._v("Current, Voltage")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("MQ2")]),t._v(" "),_("td",[t._v("Gas (flammable)")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("TEMT6000")]),t._v(" "),_("td",[t._v("Luminosity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])]),t._v(" "),_("tr",[_("td",[t._v("TSL2561")]),t._v(" "),_("td",[t._v("Luminosity")]),t._v(" "),_("td",[_("a",{attrs:{href:"https://compatible.openmqttgateway.com/index.php/parts",target:"_blank",rel:"noopener noreferrer"}},[t._v("parts list"),_("OutboundLink")],1)])])])]),t._v(" "),_("h2",{attrs:{id:"pinout"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#pinout"}},[t._v("#")]),t._v(" Pinout")]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("Module")]),t._v(" "),_("th",[t._v("Arduino Pin")]),t._v(" "),_("th",[t._v("ESP8266 Pin")]),t._v(" "),_("th",[t._v("ESP32 Pin")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("Analog reading")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")])]),t._v(" "),_("tr",[_("td",[t._v("BH1750 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("BH1750 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("BME280/BMP280 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("BME280/BMP280 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("C-37, YL-83, HM-RD")]),t._v(" "),_("td",[t._v("A0 + D14")]),t._v(" "),_("td",[t._v("A0 + D14")]),t._v(" "),_("td",[t._v("A7 + D14")])]),t._v(" "),_("tr",[_("td",[t._v("DHT11/22")]),t._v(" "),_("td",[_("a",{attrs:{href:"img/OpenMQTTgateway_Arduino_Addon_DHT.png",target:"_blank"}},[t._v("D8")])]),t._v(" "),_("td",[_("a",{attrs:{href:"img/OpenMQTTgateway_ESP8266_Addon_DHT.png",target:"_blank"}},[t._v("D1")])]),t._v(" "),_("td",[t._v("16")])]),t._v(" "),_("tr",[_("td",[t._v("HC-SR501/HC-SR505")]),t._v(" "),_("td",[t._v("7")]),t._v(" "),_("td",[t._v("D5")]),t._v(" "),_("td",[t._v("5")])]),t._v(" "),_("tr",[_("td",[t._v("HTU21 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("HTU21 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("INA226 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("INA226 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])]),t._v(" "),_("tr",[_("td",[t._v("MQ02")]),t._v(" "),_("td",[t._v("A0 + D4")]),t._v(" "),_("td",[t._v("A0 + D4")]),t._v(" "),_("td",[t._v("A0 + D4")])]),t._v(" "),_("tr",[_("td",[t._v("TEMT6000")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")]),t._v(" "),_("td",[t._v("A0")])]),t._v(" "),_("tr",[_("td",[t._v("TSL2561 SDA")]),t._v(" "),_("td",[t._v("A4")]),t._v(" "),_("td",[t._v("D2")]),t._v(" "),_("td",[t._v("21")])]),t._v(" "),_("tr",[_("td",[t._v("TSL2561 SCL")]),t._v(" "),_("td",[t._v("A5")]),t._v(" "),_("td",[t._v("D1")]),t._v(" "),_("td",[t._v("22")])])])]),t._v(" "),_("p",[t._v("Vcc pin of the board and the Module to a 3.3V or 5V supply source depending on sensor voltage requirement.\nGround pins of the board and the Module to the ground of the supply source.")])])}),[],!1,null,null,null);_.default=v.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/59.e331d57c.js b/dev/assets/js/59.2280e7a7.js similarity index 99% rename from dev/assets/js/59.e331d57c.js rename to dev/assets/js/59.2280e7a7.js index d2dbbff20e..98d7b1c184 100644 --- a/dev/assets/js/59.e331d57c.js +++ b/dev/assets/js/59.2280e7a7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{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:"option-3-upload-your-configurations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#option-3-upload-your-configurations"}},[e._v("#")]),e._v(" (Option 3) Upload your configurations")]),e._v(" "),t("h2",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("This section is useful if you want to do advanced configuration of your project or if you choose an Arduino. Indeed the ESP hardware family can be loaded directly without any configuration from your desktop.")]),e._v(" "),t("p",[e._v("Advanced configuration means changing the default pins, the MQTT topics, and all the expert parameters that you can find in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/main/User_config.h",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("User_config.h")]),t("OutboundLink")],1),e._v(" and in all "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/tree/development/main",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("config_XX.h")]),t("OutboundLink")],1),e._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 "),t("RouterLink",{attrs:{to:"/upload/binaries.html"}},[e._v("Upload Binaries")]),e._v(" section instead.")],1),e._v(" "),t("p",[e._v("To make advanced configurations to OpenMQTTGateway, you have the choice between two development environments:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://platformio.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("PlatformIO"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.arduino.cc/en/Main/Software",target:"_blank",rel:"noopener noreferrer"}},[e._v("Arduino IDE"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("I recommend using PlatformIO; this way you will not have to search for all the necessary libraries and adequate forks/revisions. If you really want to use Arduino IDE, you need to download the libraries listed "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/d2dd6138558909b71cc44f69665340247bd5f356/platformio.ini#L55",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" at the version or revision specified.")]),e._v(" "),t("h2",{attrs:{id:"configure-upload-with-platformio"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-upload-with-platformio"}},[e._v("#")]),e._v(" Configure & Upload with PlatformIO")]),e._v(" "),t("ul",[t("li",[e._v("Download the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("CODE"),t("OutboundLink")],1),e._v(" from github.")]),e._v(" "),t("li",[e._v("Open the "),t("code",[e._v("OpenMQTTGateway")]),e._v(" folder")])]),e._v(" "),t("p",[e._v("You will find inside the folder a "),t("code",[e._v("platformio.ini")]),e._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.")]),e._v(" "),t("p",[e._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:')]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("framework")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("arduino")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${libraries.pubsubclient}\n ${libraries.arduinojson}\n ${libraries.arduinolog}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n -w ; supress all warnings\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("; '-DLOG_LEVEL=LOG_LEVEL_TRACE' ; Enable trace level logging")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("monitor_speed")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("115200")]),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("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("p",[e._v('Later "environments" get more specific, but inherit everything that was defined in this common environment:')]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("com-esp")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env.lib_deps} ; Inherit all the library dependencies from [env]\n ${libraries.wifimanager} ; Add another library dependency on top of them\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env.build_flags} ; Inherit all the build flags from [env]\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DsimpleReceiving")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("true' ; Add some of our own build flags")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZmqttDiscovery")]),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 "),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";'-DCORE_DEBUG_LEVEL=4'")]),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("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("p",[e._v('Here, build flags starting with "-D" let us set configuration values you would normally find in '),t("code",[e._v("User_config.h")]),e._v(" and "),t("code",[e._v("config_xx.h")]),e._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:")]),e._v(" "),t("div",{staticClass:"language-ini line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[e._v(" "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dwifi_password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),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("The different listed configurations in "),t("code",[e._v("platformio.ini")]),e._v(" represent some standard environments and boards. For example, the environment")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:nodemcuv2-pilight")]),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("p",[e._v("sets the default settings for ESP8266 (NodeMCU v2) devices using the Plight module.")]),e._v(" "),t("h3",{attrs:{id:"option-a-creating-a-portable-config-file"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#option-a-creating-a-portable-config-file"}},[e._v("#")]),e._v(" "),t("em",[e._v("(Option A)")]),e._v(" Creating a portable config file")]),e._v(" "),t("p",[e._v("You could make your configuration changes directly by editing the values in "),t("code",[e._v("User_config.h")]),e._v(" (for main OMG settings) and "),t("code",[e._v("config_XX.h")]),e._v(" (for module-specific settings). You could also make most of those changes by instead writing some -D build flags in "),t("code",[e._v("platformio.ini")]),e._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.")]),e._v(" "),t("p",[e._v("To do this, create a file with a name ending in "),t("code",[e._v("_env.ini")]),e._v(", such as "),t("code",[e._v("production_env.ini")]),e._v(", into the root folder next to "),t("code",[e._v("platformio.ini")]),e._v(". PlatformIO will scan for all files ending in "),t("code",[e._v("_env.ini")]),e._v(" and use it to override the default values in "),t("code",[e._v("platformio.ini")]),e._v(".")]),e._v(" "),t("p",[e._v("At the top of your "),t("code",[e._v("*_env.ini")]),e._v(" file, for example, put the following to enable the ESP8266 (NodeMCU v2) with the Pilight module.")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("platformio")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("default_envs")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("nodemcuv2-pilight")]),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("p",[e._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.")]),e._v(" "),t("p",[e._v("For the rest of your config file, you can override the default configurations or add new configurations to existing environments in "),t("code",[e._v("platformio.ini")]),e._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 "),t("code",[e._v("my_env.ini")]),e._v(" file that creates two new environments:")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("platformio")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("default_envs")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("nodemcuv2-pilight-bme280-ota")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:nodemcuv2-pilight-bme280")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("extends")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("env:nodemcuv2-pilight")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env:nodemcuv2-pilight.lib_deps}\n ${libraries.bme280}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env:nodemcuv2-pilight.build_flags}\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DGateway_Name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"OpenMQTTGateway"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZsensorBME280")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"BME280"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DBase_Topic")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"rf/"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DESPWifiManualSetup")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dwifi_ssid")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mynetwork"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dwifi_password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DMQTT_USER")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mqttusername"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DMQTT_PASS")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mqttpassword"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DMQTT_SERVER")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mqttserver.local"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dgw_password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"12345678"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DLED_RECEIVE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("LED_BUILTIN' ; Comment 1")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DLED_RECEIVE_ON")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("LOW' ; Comment 2")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DRF_RECEIVER_GPIO")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("13'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DRF_EMITTER_GPIO")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("15'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DsimpleReceiving")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("false'")]),e._v("\n '-UZmqttDiscovery' ; Disable HA discovery\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("monitor_speed")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("115200")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:nodemcuv2-pilight-bme280-ota")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("extends")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("env:nodemcuv2-pilight-bme280")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_protocol")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("espota")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_port")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("OpenMQTTGateway.local")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--auth")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("otapassword")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--port")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("8266")]),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("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("span",{staticClass:"line-number"},[e._v("24")]),t("br"),t("span",{staticClass:"line-number"},[e._v("25")]),t("br"),t("span",{staticClass:"line-number"},[e._v("26")]),t("br"),t("span",{staticClass:"line-number"},[e._v("27")]),t("br"),t("span",{staticClass:"line-number"},[e._v("28")]),t("br"),t("span",{staticClass:"line-number"},[e._v("29")]),t("br"),t("span",{staticClass:"line-number"},[e._v("30")]),t("br"),t("span",{staticClass:"line-number"},[e._v("31")]),t("br"),t("span",{staticClass:"line-number"},[e._v("32")]),t("br"),t("span",{staticClass:"line-number"},[e._v("33")]),t("br"),t("span",{staticClass:"line-number"},[e._v("34")]),t("br"),t("span",{staticClass:"line-number"},[e._v("35")]),t("br")])]),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Adding manual WiFi and MQTT credentials to an environment also requires to define\n"),t("code",[e._v("'-DESPWifiManualSetup=true'")]),e._v("\nfor the credentials to be registered correctly.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Manual network configuration (IP, netmask, gateway, DNS) requires to define\n"),t("code",[e._v("'-DNetworkAdvancedSetup=true'")]),e._v("\nand related network parameters, e.g.:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._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")])]),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")])])]),e._v(" "),t("p",[e._v("The first new environment we create, "),t("code",[e._v("nodemcuv2-pilight-bme280")]),e._v(", inherits the default "),t("code",[e._v("nodemcuv2-pilight")]),e._v(" environment in "),t("code",[e._v("platformio.ini")]),e._v(" with the "),t("code",[e._v("extends = env:nodemcuv2-pilight")]),e._v(" line. In the "),t("code",[e._v("lib_deps")]),e._v(" section, it imports all the "),t("code",[e._v("lib_deps")]),e._v(" of "),t("code",[e._v("nodemcuv2-pilight")]),e._v(" with the "),t("code",[e._v("${env:nodemcuv2-pilight.lib_deps}")]),e._v(" line, and adds BME280 on top of it. (Since the environment we're extending already has this "),t("code",[e._v("lib_deps")]),e._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 "),t("code",[e._v("lib_deps")]),e._v(" attribute.) In the "),t("code",[e._v("build_flags")]),e._v(" section, it again imports all the "),t("code",[e._v("build_flags")]),e._v(" of "),t("code",[e._v("nodemcuv2-pilight")]),e._v(" and many of its own overrides, e.g. changing "),t("code",[e._v("Base_Topic")]),e._v(" found in "),t("code",[e._v("User_config.h")]),e._v(' from the default to "rf/" by using the '),t("code",[e._v("'-DBase_Topic=\"rf/\"'")]),e._v(" line. It also unsets previously set configurations (i.e. "),t("code",[e._v("mqttDiscovery")]),e._v(") by using "),t("code",[e._v("'-UZmqttDiscovery'")]),e._v(". This environment will work over serial upload.")]),e._v(" "),t("p",[e._v("The second new environment, "),t("code",[e._v("nodemcuv2-pilight-bme280-ota")]),e._v(", inherits everything we specified in the first environment (with the line "),t("code",[e._v("extends = env:nodemcuv2-pilight-bme280")]),e._v("), but modifies it to upload over OTA (Wi-Fi). We also specified this as the "),t("code",[e._v("default_env")]),e._v(" in the beginning of the file, so PlatformIO will choose this environment to build and upload if we don't specify otherwise.")]),e._v(" "),t("p",[e._v("The first time we're flashing OMG to the board, we can use the command "),t("code",[e._v("pio run --target upload --environment nodemcuv2-pilight-bme280")]),e._v(" to specify that we want to build and run the "),t("code",[e._v("nodemcuv2-pilight-bme280")]),e._v(" environment (over USB serial). Afterwards, we don't have to specify "),t("code",[e._v("--environment")]),e._v(" (e.g. just run "),t("code",[e._v("pio run --target upload")]),e._v(") to run the default "),t("code",[e._v("nodemcuv2-pilight-bme280-ota")]),e._v(" environment and update the code over the air.")]),e._v(" "),t("h3",{attrs:{id:"option-b-editing-files-directly"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#option-b-editing-files-directly"}},[e._v("#")]),e._v(" "),t("em",[e._v("(Option B)")]),e._v(" Editing files directly")]),e._v(" "),t("p",[e._v("You can also modify the "),t("code",[e._v("User_config.h")]),e._v(" file and your modules' "),t("code",[e._v("config_XX.h")]),e._v(" files to your liking, and then edit the "),t("code",[e._v("platformio.ini")]),e._v(" file to uncomment the "),t("code",[e._v("default_envs")]),e._v(" lines corresponding to your board and chosen modules, like below:")]),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 comment"}},[e._v(";default_envs = sonoff-basic-rfr3")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = rfbridge")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = esp32dev-all")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("default_envs")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("esp32dev-rf")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = esp32dev-ir")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = esp32dev-ble")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = ttgo-lora32-v1")]),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("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br")])]),t("p",[e._v("If you don't know which "),t("code",[e._v("env")]),e._v(" to activate, you can refer to "),t("a",{attrs:{href:"../prerequisites/devices"}},[e._v("devices")]),e._v(".")]),e._v(" "),t("p",[e._v("If you want to add more sensors or gateways to one "),t("code",[e._v("default_envs")]),e._v(" you can add the modules directly into your environment definition of your "),t("code",[e._v(".ini")]),e._v(" files or uncomment them in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/d2dd6138558909b71cc44f69665340247bd5f356/main/User_config.h#L84",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("User_config.h")]),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Example to add IR to "),t("code",[e._v("esp32dev-rf")]),e._v(" add the "),t("code",[e._v("build_flags")]),e._v(" below to the env definition:")]),e._v(" "),t("div",{staticClass:"language-ini line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[e._v(" "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayIR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"IR"\'')]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:esp32dev-rf")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("platform")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("${com.esp32_platform}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("board")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("esp32dev")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.lib_deps}\n ${libraries.rc-switch}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.build_flags}\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayRF")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"RF"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayIR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"IR"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DGateway_Name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"OpenMQTTGateway_ESP32_RF_IR"\'')]),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("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("p",[e._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"),t("code",[e._v("pio run --target upload")])]),e._v(" "),t("p",[e._v("PIO will download the necessaries platform and libraries with the correct versions, build the code and upload it.")]),e._v(" "),t("p",[e._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"),t("code",[e._v("pio run --target clean")])]),e._v(" "),t("p",[e._v("With some ESP it could be necessary to push the reset button when the upload begin.")]),e._v(" "),t("p",[e._v("If you want to erase the settings stored in the ESP memory use:\n"),t("code",[e._v("pio run --target erase")]),e._v("\nThis can be useful especially before the first upload or when you change the board partitions sizing.")]),e._v(" "),t("p",[e._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:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("home/OpenMQTTGateway/LWT Online\nhome/OpenMQTTGateway/version\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("p",[e._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, "),t("code",[e._v("upload_port")]),e._v(" is the IP address of your ESP:")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:esp32-ble")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("platform")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("${com.esp32_platform}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("board")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("esp32dev")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("board_build.partitions")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("min_spiffs.csv")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.lib_deps}\n ${libraries.ble}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.build_flags}\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayBT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"BT"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DGateway_Name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"OpenMQTTGateway_ESP32"\'')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_protocol")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("espota")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_port")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("192.168.1.22")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--auth")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("OTAPASSWORD")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--port")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("8266")]),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("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("h2",{attrs:{id:"configure-upload-with-arduino-ide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-upload-with-arduino-ide"}},[e._v("#")]),e._v(" Configure & Upload with Arduino IDE")]),e._v(" "),t("ul",[t("li",[e._v("Download the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("CODE"),t("OutboundLink")],1),e._v(" from github")]),e._v(" "),t("li",[e._v("First download the last version of the Arduino IDE from the Arduino "),t("a",{attrs:{href:"https://www.arduino.cc/en/Main/Software",target:"_blank",rel:"noopener noreferrer"}},[e._v("website"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Add ESP32 boards by following this "),t("a",{attrs:{href:"https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-arduino-ide",target:"_blank",rel:"noopener noreferrer"}},[e._v("tutorial"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Add ESP8266 boards by following this "),t("a",{attrs:{href:"https://github.com/esp8266/Arduino#installing-with-boards-manager",target:"_blank",rel:"noopener noreferrer"}},[e._v("tutorial"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Download the libraries package corresponding to your board and module wished into the same page (example esp32-m5stick-c-ble-libraries.zip)")]),e._v(" "),t("li",[e._v("Unzip the libraries into your Arduino libraries folder (example D:/Users/XXXX/Documents/Arduino/libraries)")]),e._v(" "),t("li",[e._v("If necessary replace the spaces into each library folder by _: example rename “ESP32 BLE Arduino” folder to “ESP32_BLE_Arduino”")]),e._v(" "),t("li",[e._v("Open the file main.ino from OpenMQTTGateway/main folder with the Arduino IDE")]),e._v(" "),t("li",[e._v("Change the settings and the desired gateways into "),t("code",[e._v("User_config.h")]),e._v(" (uncomment the modules you want)")])]),e._v(" "),t("p",[t("em",[e._v("Example for the use of RF gateway:")])]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("ZgatewayRF")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"RF"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//ESP8266, Arduino, ESP32")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayIR "IR" //ESP8266, Arduino, Sonoff RF Bridge')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayLORA "LORA" //ESP8266, Arduino, ESP32')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayPilight "Pilight" //ESP8266, Arduino, ESP32')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayBT "BT" //ESP8266, ESP32')]),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("ul",[t("li",[e._v("Change the pins or parameters corresponding to the modules chosen, for RF you can change the pins in config_RF.h")]),e._v(" "),t("li",[e._v("Choose the board on the Arduino IDE")]),e._v(" "),t("li",[e._v("Select the port corresponding to the board")]),e._v(" "),t("li",[e._v("Note that for using BLE on ESP32 you will need to select "),t("em",[e._v("Minimal SPIFFS")]),e._v(" into Tools->Partition Scheme")]),e._v(" "),t("li",[e._v("Open the serial monitor and set 115200 baud")]),e._v(" "),t("li",[e._v("Upload ➡️")]),e._v(" "),t("li",[e._v("You should see the logs in the serial monitor")])]),e._v(" "),t("p",[e._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),t("RouterLink",{attrs:{to:"/upload/portal.html"}},[e._v("web portal configuration")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[e._v("#")]),e._v(" API")]),e._v(" "),t("p",[e._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.")]),e._v(" "),t("p",[e._v("You can deactivate Json or simple mode following theses instructions:")]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("jsonPublishing")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//define false if you don't want to use Json publishing (one topic for all the parameters)")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//example home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4 {"rssi":-63,"servicedata":"fe0000000000000000000000000000000000000000"}')]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("simplePublishing")]),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 if you want to use simple publishing (one topic for one parameter)")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//example")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/rssi -63.0")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/servicedata fe0000000000000000000000000000000000000000")]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("simpleReceiving")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//define false if you don't want to use old way reception analysis")])]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("jsonReceiving")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//define false if you don't want to use Json reception analysis")])]),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("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("p",[e._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 "),t("code",[e._v("build_flags")]),e._v(":")]),e._v(" "),t("div",{staticClass:"language-cpp line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[e._v(" "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DjsonPublishing=true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DjsonReceiving=true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DsimpleReceiving=true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DsimplePublishing=true'")]),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("Note that depending on the environment the default platformio.ini has common option defined see sections:")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("com-arduino")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("com-esp")]),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("p",[e._v("If you want to use HASS MQTT discovery you need to have\n"),t("code",[e._v("#define jsonPublishing true")]),e._v("\n&\n"),t("code",[e._v('#define ZmqttDiscovery "HADiscovery"')]),e._v("\nuncommented.\nAdded to that auto discovery box should be selected into your Home Assistant MQTT integration configuration.")]),e._v(" "),t("p",[e._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),t("RouterLink",{attrs:{to:"/upload/portal.html"}},[e._v("web portal configuration")]),e._v(".")],1),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("simpleReceiving on Arduino boards doesn't accept 64 bits MQTT values, you can only send 32bits values from the MQTT broker.")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://hits.seeyoufarm.com",target:"_blank",rel:"noopener noreferrer"}},[t("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"}}),t("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{451: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:"option-3-upload-your-configurations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#option-3-upload-your-configurations"}},[e._v("#")]),e._v(" (Option 3) Upload your configurations")]),e._v(" "),t("h2",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("This section is useful if you want to do advanced configuration of your project or if you choose an Arduino. Indeed the ESP hardware family can be loaded directly without any configuration from your desktop.")]),e._v(" "),t("p",[e._v("Advanced configuration means changing the default pins, the MQTT topics, and all the expert parameters that you can find in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/development/main/User_config.h",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("User_config.h")]),t("OutboundLink")],1),e._v(" and in all "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/tree/development/main",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("config_XX.h")]),t("OutboundLink")],1),e._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 "),t("RouterLink",{attrs:{to:"/upload/binaries.html"}},[e._v("Upload Binaries")]),e._v(" section instead.")],1),e._v(" "),t("p",[e._v("To make advanced configurations to OpenMQTTGateway, you have the choice between two development environments:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://platformio.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("PlatformIO"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.arduino.cc/en/Main/Software",target:"_blank",rel:"noopener noreferrer"}},[e._v("Arduino IDE"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("I recommend using PlatformIO; this way you will not have to search for all the necessary libraries and adequate forks/revisions. If you really want to use Arduino IDE, you need to download the libraries listed "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/d2dd6138558909b71cc44f69665340247bd5f356/platformio.ini#L55",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(" at the version or revision specified.")]),e._v(" "),t("h2",{attrs:{id:"configure-upload-with-platformio"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-upload-with-platformio"}},[e._v("#")]),e._v(" Configure & Upload with PlatformIO")]),e._v(" "),t("ul",[t("li",[e._v("Download the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("CODE"),t("OutboundLink")],1),e._v(" from github.")]),e._v(" "),t("li",[e._v("Open the "),t("code",[e._v("OpenMQTTGateway")]),e._v(" folder")])]),e._v(" "),t("p",[e._v("You will find inside the folder a "),t("code",[e._v("platformio.ini")]),e._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.")]),e._v(" "),t("p",[e._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:')]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("framework")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("arduino")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${libraries.pubsubclient}\n ${libraries.arduinojson}\n ${libraries.arduinolog}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n -w ; supress all warnings\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("; '-DLOG_LEVEL=LOG_LEVEL_TRACE' ; Enable trace level logging")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("monitor_speed")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("115200")]),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("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("p",[e._v('Later "environments" get more specific, but inherit everything that was defined in this common environment:')]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("com-esp")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env.lib_deps} ; Inherit all the library dependencies from [env]\n ${libraries.wifimanager} ; Add another library dependency on top of them\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env.build_flags} ; Inherit all the build flags from [env]\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DsimpleReceiving")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("true' ; Add some of our own build flags")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZmqttDiscovery")]),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 "),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";'-DCORE_DEBUG_LEVEL=4'")]),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("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("p",[e._v('Here, build flags starting with "-D" let us set configuration values you would normally find in '),t("code",[e._v("User_config.h")]),e._v(" and "),t("code",[e._v("config_xx.h")]),e._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:")]),e._v(" "),t("div",{staticClass:"language-ini line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[e._v(" "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dwifi_password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),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("The different listed configurations in "),t("code",[e._v("platformio.ini")]),e._v(" represent some standard environments and boards. For example, the environment")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:nodemcuv2-pilight")]),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("p",[e._v("sets the default settings for ESP8266 (NodeMCU v2) devices using the Plight module.")]),e._v(" "),t("h3",{attrs:{id:"option-a-creating-a-portable-config-file"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#option-a-creating-a-portable-config-file"}},[e._v("#")]),e._v(" "),t("em",[e._v("(Option A)")]),e._v(" Creating a portable config file")]),e._v(" "),t("p",[e._v("You could make your configuration changes directly by editing the values in "),t("code",[e._v("User_config.h")]),e._v(" (for main OMG settings) and "),t("code",[e._v("config_XX.h")]),e._v(" (for module-specific settings). You could also make most of those changes by instead writing some -D build flags in "),t("code",[e._v("platformio.ini")]),e._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.")]),e._v(" "),t("p",[e._v("To do this, create a file with a name ending in "),t("code",[e._v("_env.ini")]),e._v(", such as "),t("code",[e._v("production_env.ini")]),e._v(", into the root folder next to "),t("code",[e._v("platformio.ini")]),e._v(". PlatformIO will scan for all files ending in "),t("code",[e._v("_env.ini")]),e._v(" and use it to override the default values in "),t("code",[e._v("platformio.ini")]),e._v(".")]),e._v(" "),t("p",[e._v("At the top of your "),t("code",[e._v("*_env.ini")]),e._v(" file, for example, put the following to enable the ESP8266 (NodeMCU v2) with the Pilight module.")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("platformio")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("default_envs")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("nodemcuv2-pilight")]),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("p",[e._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.")]),e._v(" "),t("p",[e._v("For the rest of your config file, you can override the default configurations or add new configurations to existing environments in "),t("code",[e._v("platformio.ini")]),e._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 "),t("code",[e._v("my_env.ini")]),e._v(" file that creates two new environments:")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("platformio")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("default_envs")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("nodemcuv2-pilight-bme280-ota")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:nodemcuv2-pilight-bme280")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("extends")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("env:nodemcuv2-pilight")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env:nodemcuv2-pilight.lib_deps}\n ${libraries.bme280}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${env:nodemcuv2-pilight.build_flags}\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DGateway_Name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"OpenMQTTGateway"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZsensorBME280")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"BME280"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DBase_Topic")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"rf/"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DESPWifiManualSetup")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dwifi_ssid")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mynetwork"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dwifi_password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("\"Cato\\\\\\'sYounger\\\\\\$on\"' ; Cato'sYounger$on")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DMQTT_USER")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mqttusername"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DMQTT_PASS")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mqttpassword"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DMQTT_SERVER")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"mqttserver.local"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-Dgw_password")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"12345678"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DLED_RECEIVE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("LED_BUILTIN' ; Comment 1")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DLED_RECEIVE_ON")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("LOW' ; Comment 2")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DRF_RECEIVER_GPIO")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("13'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DRF_EMITTER_GPIO")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("15'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DsimpleReceiving")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("false'")]),e._v("\n '-UZmqttDiscovery' ; Disable HA discovery\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("monitor_speed")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("115200")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:nodemcuv2-pilight-bme280-ota")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("extends")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("env:nodemcuv2-pilight-bme280")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_protocol")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("espota")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_port")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("OpenMQTTGateway.local")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--auth")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("otapassword")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--port")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("8266")]),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("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("span",{staticClass:"line-number"},[e._v("24")]),t("br"),t("span",{staticClass:"line-number"},[e._v("25")]),t("br"),t("span",{staticClass:"line-number"},[e._v("26")]),t("br"),t("span",{staticClass:"line-number"},[e._v("27")]),t("br"),t("span",{staticClass:"line-number"},[e._v("28")]),t("br"),t("span",{staticClass:"line-number"},[e._v("29")]),t("br"),t("span",{staticClass:"line-number"},[e._v("30")]),t("br"),t("span",{staticClass:"line-number"},[e._v("31")]),t("br"),t("span",{staticClass:"line-number"},[e._v("32")]),t("br"),t("span",{staticClass:"line-number"},[e._v("33")]),t("br"),t("span",{staticClass:"line-number"},[e._v("34")]),t("br"),t("span",{staticClass:"line-number"},[e._v("35")]),t("br")])]),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Adding manual WiFi and MQTT credentials to an environment also requires to define\n"),t("code",[e._v("'-DESPWifiManualSetup=true'")]),e._v("\nfor the credentials to be registered correctly.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Manual network configuration (IP, netmask, gateway, DNS) requires to define\n"),t("code",[e._v("'-DNetworkAdvancedSetup=true'")]),e._v("\nand related network parameters, e.g.:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._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")])]),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")])])]),e._v(" "),t("p",[e._v("The first new environment we create, "),t("code",[e._v("nodemcuv2-pilight-bme280")]),e._v(", inherits the default "),t("code",[e._v("nodemcuv2-pilight")]),e._v(" environment in "),t("code",[e._v("platformio.ini")]),e._v(" with the "),t("code",[e._v("extends = env:nodemcuv2-pilight")]),e._v(" line. In the "),t("code",[e._v("lib_deps")]),e._v(" section, it imports all the "),t("code",[e._v("lib_deps")]),e._v(" of "),t("code",[e._v("nodemcuv2-pilight")]),e._v(" with the "),t("code",[e._v("${env:nodemcuv2-pilight.lib_deps}")]),e._v(" line, and adds BME280 on top of it. (Since the environment we're extending already has this "),t("code",[e._v("lib_deps")]),e._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 "),t("code",[e._v("lib_deps")]),e._v(" attribute.) In the "),t("code",[e._v("build_flags")]),e._v(" section, it again imports all the "),t("code",[e._v("build_flags")]),e._v(" of "),t("code",[e._v("nodemcuv2-pilight")]),e._v(" and many of its own overrides, e.g. changing "),t("code",[e._v("Base_Topic")]),e._v(" found in "),t("code",[e._v("User_config.h")]),e._v(' from the default to "rf/" by using the '),t("code",[e._v("'-DBase_Topic=\"rf/\"'")]),e._v(" line. It also unsets previously set configurations (i.e. "),t("code",[e._v("mqttDiscovery")]),e._v(") by using "),t("code",[e._v("'-UZmqttDiscovery'")]),e._v(". This environment will work over serial upload.")]),e._v(" "),t("p",[e._v("The second new environment, "),t("code",[e._v("nodemcuv2-pilight-bme280-ota")]),e._v(", inherits everything we specified in the first environment (with the line "),t("code",[e._v("extends = env:nodemcuv2-pilight-bme280")]),e._v("), but modifies it to upload over OTA (Wi-Fi). We also specified this as the "),t("code",[e._v("default_env")]),e._v(" in the beginning of the file, so PlatformIO will choose this environment to build and upload if we don't specify otherwise.")]),e._v(" "),t("p",[e._v("The first time we're flashing OMG to the board, we can use the command "),t("code",[e._v("pio run --target upload --environment nodemcuv2-pilight-bme280")]),e._v(" to specify that we want to build and run the "),t("code",[e._v("nodemcuv2-pilight-bme280")]),e._v(" environment (over USB serial). Afterwards, we don't have to specify "),t("code",[e._v("--environment")]),e._v(" (e.g. just run "),t("code",[e._v("pio run --target upload")]),e._v(") to run the default "),t("code",[e._v("nodemcuv2-pilight-bme280-ota")]),e._v(" environment and update the code over the air.")]),e._v(" "),t("h3",{attrs:{id:"option-b-editing-files-directly"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#option-b-editing-files-directly"}},[e._v("#")]),e._v(" "),t("em",[e._v("(Option B)")]),e._v(" Editing files directly")]),e._v(" "),t("p",[e._v("You can also modify the "),t("code",[e._v("User_config.h")]),e._v(" file and your modules' "),t("code",[e._v("config_XX.h")]),e._v(" files to your liking, and then edit the "),t("code",[e._v("platformio.ini")]),e._v(" file to uncomment the "),t("code",[e._v("default_envs")]),e._v(" lines corresponding to your board and chosen modules, like below:")]),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 comment"}},[e._v(";default_envs = sonoff-basic-rfr3")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = rfbridge")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = esp32dev-all")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("default_envs")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("esp32dev-rf")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = esp32dev-ir")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = esp32dev-ble")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v(";default_envs = ttgo-lora32-v1")]),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("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br")])]),t("p",[e._v("If you don't know which "),t("code",[e._v("env")]),e._v(" to activate, you can refer to "),t("a",{attrs:{href:"../prerequisites/devices"}},[e._v("devices")]),e._v(".")]),e._v(" "),t("p",[e._v("If you want to add more sensors or gateways to one "),t("code",[e._v("default_envs")]),e._v(" you can add the modules directly into your environment definition of your "),t("code",[e._v(".ini")]),e._v(" files or uncomment them in "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/blob/d2dd6138558909b71cc44f69665340247bd5f356/main/User_config.h#L84",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("User_config.h")]),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Example to add IR to "),t("code",[e._v("esp32dev-rf")]),e._v(" add the "),t("code",[e._v("build_flags")]),e._v(" below to the env definition:")]),e._v(" "),t("div",{staticClass:"language-ini line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[e._v(" "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayIR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"IR"\'')]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:esp32dev-rf")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("platform")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("${com.esp32_platform}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("board")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("esp32dev")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.lib_deps}\n ${libraries.rc-switch}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.build_flags}\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayRF")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"RF"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayIR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"IR"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DGateway_Name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"OpenMQTTGateway_ESP32_RF_IR"\'')]),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("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("p",[e._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"),t("code",[e._v("pio run --target upload")])]),e._v(" "),t("p",[e._v("PIO will download the necessaries platform and libraries with the correct versions, build the code and upload it.")]),e._v(" "),t("p",[e._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"),t("code",[e._v("pio run --target clean")])]),e._v(" "),t("p",[e._v("With some ESP it could be necessary to push the reset button when the upload begin.")]),e._v(" "),t("p",[e._v("If you want to erase the settings stored in the ESP memory use:\n"),t("code",[e._v("pio run --target erase")]),e._v("\nThis can be useful especially before the first upload or when you change the board partitions sizing.")]),e._v(" "),t("p",[e._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:")]),e._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("home/OpenMQTTGateway/LWT Online\nhome/OpenMQTTGateway/version\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("p",[e._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, "),t("code",[e._v("upload_port")]),e._v(" is the IP address of your ESP:")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("env:esp32-ble")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("platform")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("${com.esp32_platform}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("board")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("esp32dev")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("board_build.partitions")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("min_spiffs.csv")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("lib_deps")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.lib_deps}\n ${libraries.ble}\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("build_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n ${com-esp.build_flags}\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DZgatewayBT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"BT"\'')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("'-DGateway_Name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v('"OpenMQTTGateway_ESP32"\'')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_protocol")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("espota")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_port")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("192.168.1.22")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("upload_flags")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--auth")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("OTAPASSWORD")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("--port")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("8266")]),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("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("h2",{attrs:{id:"configure-upload-with-arduino-ide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-upload-with-arduino-ide"}},[e._v("#")]),e._v(" Configure & Upload with Arduino IDE")]),e._v(" "),t("ul",[t("li",[e._v("Download the "),t("a",{attrs:{href:"https://github.com/1technophile/OpenMQTTGateway/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("CODE"),t("OutboundLink")],1),e._v(" from github")]),e._v(" "),t("li",[e._v("First download the last version of the Arduino IDE from the Arduino "),t("a",{attrs:{href:"https://www.arduino.cc/en/Main/Software",target:"_blank",rel:"noopener noreferrer"}},[e._v("website"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Add ESP32 boards by following this "),t("a",{attrs:{href:"https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-arduino-ide",target:"_blank",rel:"noopener noreferrer"}},[e._v("tutorial"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Add ESP8266 boards by following this "),t("a",{attrs:{href:"https://github.com/esp8266/Arduino#installing-with-boards-manager",target:"_blank",rel:"noopener noreferrer"}},[e._v("tutorial"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Download the libraries package corresponding to your board and module wished into the same page (example esp32-m5stick-c-ble-libraries.zip)")]),e._v(" "),t("li",[e._v("Unzip the libraries into your Arduino libraries folder (example D:/Users/XXXX/Documents/Arduino/libraries)")]),e._v(" "),t("li",[e._v("If necessary replace the spaces into each library folder by _: example rename “ESP32 BLE Arduino” folder to “ESP32_BLE_Arduino”")]),e._v(" "),t("li",[e._v("Open the file main.ino from OpenMQTTGateway/main folder with the Arduino IDE")]),e._v(" "),t("li",[e._v("Change the settings and the desired gateways into "),t("code",[e._v("User_config.h")]),e._v(" (uncomment the modules you want)")])]),e._v(" "),t("p",[t("em",[e._v("Example for the use of RF gateway:")])]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("ZgatewayRF")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"RF"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//ESP8266, Arduino, ESP32")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayIR "IR" //ESP8266, Arduino, Sonoff RF Bridge')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayLORA "LORA" //ESP8266, Arduino, ESP32')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayPilight "Pilight" //ESP8266, Arduino, ESP32')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//#define ZgatewayBT "BT" //ESP8266, ESP32')]),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("ul",[t("li",[e._v("Change the pins or parameters corresponding to the modules chosen, for RF you can change the pins in config_RF.h")]),e._v(" "),t("li",[e._v("Choose the board on the Arduino IDE")]),e._v(" "),t("li",[e._v("Select the port corresponding to the board")]),e._v(" "),t("li",[e._v("Note that for using BLE on ESP32 you will need to select "),t("em",[e._v("Minimal SPIFFS")]),e._v(" into Tools->Partition Scheme")]),e._v(" "),t("li",[e._v("Open the serial monitor and set 115200 baud")]),e._v(" "),t("li",[e._v("Upload ➡️")]),e._v(" "),t("li",[e._v("You should see the logs in the serial monitor")])]),e._v(" "),t("p",[e._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),t("RouterLink",{attrs:{to:"/upload/portal.html"}},[e._v("web portal configuration")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[e._v("#")]),e._v(" API")]),e._v(" "),t("p",[e._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.")]),e._v(" "),t("p",[e._v("You can deactivate Json or simple mode following theses instructions:")]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("jsonPublishing")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//define false if you don't want to use Json publishing (one topic for all the parameters)")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v('//example home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4 {"rssi":-63,"servicedata":"fe0000000000000000000000000000000000000000"}')]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("simplePublishing")]),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 if you want to use simple publishing (one topic for one parameter)")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//example")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/rssi -63.0")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("// home/OpenMQTTGateway_ESP32_DEVKIT/BTtoMQTT/4XXXXXXXXXX4/servicedata fe0000000000000000000000000000000000000000")]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("simpleReceiving")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//define false if you don't want to use old way reception analysis")])]),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("define")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token macro-name"}},[e._v("jsonReceiving")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token expression"}},[t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),e._v(" ")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("//define false if you don't want to use Json reception analysis")])]),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("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("p",[e._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 "),t("code",[e._v("build_flags")]),e._v(":")]),e._v(" "),t("div",{staticClass:"language-cpp line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-cpp"}},[t("code",[e._v(" "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DjsonPublishing=true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DjsonReceiving=true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DsimpleReceiving=true'")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token char"}},[e._v("'-DsimplePublishing=true'")]),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("Note that depending on the environment the default platformio.ini has common option defined see sections:")]),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 section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("com-arduino")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("com-esp")]),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("p",[e._v("If you want to use HASS MQTT discovery you need to have\n"),t("code",[e._v("#define jsonPublishing true")]),e._v("\n&\n"),t("code",[e._v('#define ZmqttDiscovery "HADiscovery"')]),e._v("\nuncommented.\nAdded to that auto discovery box should be selected into your Home Assistant MQTT integration configuration.")]),e._v(" "),t("p",[e._v("With an ESP if you did not set your network and MQTT parameters manually you can now open the "),t("RouterLink",{attrs:{to:"/upload/portal.html"}},[e._v("web portal configuration")]),e._v(".")],1),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("simpleReceiving on Arduino boards doesn't accept 64 bits MQTT values, you can only send 32bits values from the MQTT broker.")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://hits.seeyoufarm.com",target:"_blank",rel:"noopener noreferrer"}},[t("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"}}),t("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/63.517b5b82.js b/dev/assets/js/63.37a64bac.js similarity index 99% rename from dev/assets/js/63.517b5b82.js rename to dev/assets/js/63.37a64bac.js index cc1ece5b8e..0d6084e00e 100644 --- a/dev/assets/js/63.517b5b82.js +++ b/dev/assets/js/63.37a64bac.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{457:function(e,t,s){"use strict";s.r(t);var a=s(14),i=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"displays"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#displays"}},[e._v("#")]),e._v(" Displays")]),e._v(" "),t("h2",{attrs:{id:"ssd1306-display-heltec-sx127x-lilygo®-lora32-boards-generic-ssd1306-displays"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ssd1306-display-heltec-sx127x-lilygo®-lora32-boards-generic-ssd1306-displays"}},[e._v("#")]),e._v(" SSD1306 Display (Heltec SX127X, LILYGO® LoRa32 boards, generic SSD1306 displays)")]),e._v(" "),t("p",[e._v("Several options are available for the display of information on the SSD1306 display. Some options are exclusive to each other, and when a different option is enabled, the current option is disabled.")]),e._v(" "),t("p",[e._v("The current SSD1306 display states are being published to the "),t("code",[e._v("SSD1306toMQTT")]),e._v(" topic, e.g.")]),e._v(" "),t("p",[t("code",[e._v('{"onstate":true,"brightness":50,"display-flip":true,"idlelogo":true,"log-oled":false,"json-oled":true}')])]),e._v(" "),t("h3",{attrs:{id:"display-on-off"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-on-off"}},[e._v("#")]),e._v(" Display ON/OFF")]),e._v(" "),t("p",[e._v("To turn the SSD1306 display on or off.")]),e._v(" "),t("p",[e._v("This can be enabled with the compiler directive "),t("code",[e._v("-DDISPLAY_STATE=true")]),e._v(".")]),e._v(" "),t("p",[e._v("MQTT Display OFF command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"onstate":false}')])]),e._v(" "),t("p",[e._v("MQTT Display ON command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"onstate":true}')])]),e._v(" "),t("h3",{attrs:{id:"brightness"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#brightness"}},[e._v("#")]),e._v(" Brightness")]),e._v(" "),t("p",[e._v("The display brightness can be set between 0-100%.")]),e._v(" "),t("p",[e._v("It is recommended to set a value lower than 100 to extend the life of the OLED display. The default setting is 50.")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_BRIGHTNESS=50")]),e._v(".")]),e._v(" "),t("p",[e._v("or with the runtime command")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"brightness":50}')])]),e._v(" "),t("h3",{attrs:{id:"metric-or-imperial-property-units"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#metric-or-imperial-property-units"}},[e._v("#")]),e._v(" Metric or Imperial property units")]),e._v(" "),t("p",[e._v("To have applicable device properties displayed in Imperial units, e.g. °F for temperature.")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_METRIC=false")]),e._v(".")]),e._v(" "),t("p",[e._v("As the display Metric setting is being defined in the WebUI part of OpenMQTTGateway changes need to be sent there with the runtime command")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoWebUI/config -m {"displayMetric":false}')])]),e._v(" "),t("h3",{attrs:{id:"rotating-the-display-by-180-degrees"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rotating-the-display-by-180-degrees"}},[e._v("#")]),e._v(" Rotating the display by 180 degrees")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_FLIP=false")]),e._v(".")]),e._v(" "),t("p",[e._v("or with the runtime command")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"display-flip":false}')])]),e._v(" "),t("h3",{attrs:{id:"display-idle-logo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-idle-logo"}},[e._v("#")]),e._v(" Display idle Logo")]),e._v(" "),t("p",[e._v("To display the OpenMQTTGateway logo during device display idle time. This reduces the likelihood of burn-in.")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_IDLE_LOGO=true")]),e._v(".")]),e._v(" "),t("p",[e._v("or at runtime with")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"idlelogo":true}')])]),e._v(" "),t("h3",{attrs:{id:"setting-the-log-output"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-the-log-output"}},[e._v("#")]),e._v(" Setting the log output")]),e._v(" "),t("p",[e._v("The display of serial log messages to the display can be enabled via compiler directive "),t("code",[e._v("-DLOG_TO_OLED=true")]),e._v(" or via MQTT commands.")]),e._v(" "),t("p",[e._v("For example if you want to set the serial log to OLED")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"log-oled\":true}'")])]),e._v(" "),t("p",[e._v("you can also revert it back with")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"log-oled\":false}'")])]),e._v(" "),t("p",[e._v("The log level of the messages displayed is Errors and Warnings, and this can only be changed via the compiler directive "),t("code",[e._v("-DLOG_LEVEL_OLED=LOG_LEVEL_NOTICE")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"displaying-module-json-messages-default"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#displaying-module-json-messages-default"}},[e._v("#")]),e._v(" Displaying Module json messages (default)")]),e._v(" "),t("p",[e._v("The display of messages from various modules is also supported. Currently supported modules include "),t("code",[e._v("ZgatewayRTL_433")]),e._v(", "),t("code",[e._v("ZgatewayBT")]),e._v(" and "),t("code",[e._v("ZsensorBME280")]),e._v(".")]),e._v(" "),t("p",[e._v("This can be enabled with the compiler directive "),t("code",[e._v("-DJSON_TO_OLED=true")]),e._v(".")]),e._v(" "),t("p",[e._v("You can also change it by MQTT. For example if you want to display module json messages:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"json-oled\":true}'")])]),e._v(" "),t("p",[e._v("And to disable the display of module json messages:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"display-json\":false}'")])]),e._v(" "),t("h3",{attrs:{id:"store-the-current-display-configuration-in-the-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#store-the-current-display-configuration-in-the-gateway"}},[e._v("#")]),e._v(" Store the current display configuration in the gateway")]),e._v(" "),t("p",[e._v("To store the running display configuration into non-volatile storage on the gateway use the following command. This assures persistence across restarts.")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"save\":true}'")])]),e._v(" "),t("p",[e._v("At any time, you can reload the stored configuration with the command:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"load\":true}'")])]),e._v(" "),t("p",[e._v("If you want to erase the stored configuration, use the command:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"erase\":true}'")])]),e._v(" "),t("p",[e._v("Note that this will not change the running configuration, it only ensures that the default configuration is used at next startup.")]),e._v(" "),t("p",[e._v("If you want to load the default configuration use the command:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"init\":true}'")])]),e._v(" "),t("p",[e._v("Note that this will not change the stored configuration, "),t("code",[e._v("erase")]),e._v(" or "),t("code",[e._v("save")]),e._v(" is still needed to overwrite the saved configuration.")]),e._v(" "),t("h3",{attrs:{id:"connecting-a-generic-ssd1306-display-to-esp32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#connecting-a-generic-ssd1306-display-to-esp32"}},[e._v("#")]),e._v(" Connecting a generic SSD1306 display to ESP32")]),e._v(" "),t("p",[e._v("It is possible to connect a generic SSD1306 display with resolution 128*64 to the hardware setups.\nThis example describes how to do it with the ESP32 board.")]),e._v(" "),t("ul",[t("li",[e._v("Connect the display to the ESP32 (display → ESP32):\n"),t("ul",[t("li",[e._v("VCC → 5V (or 3.3V, check your display documentation)")]),e._v(" "),t("li",[e._v("GND → GND")]),e._v(" "),t("li",[e._v("SCL → pin 22")]),e._v(" "),t("li",[e._v("SDA → pin 21")])])]),e._v(" "),t("li",[e._v("Modify the environment definition in "),t("code",[e._v("environments.ini")]),e._v(".\n"),t("ul",[t("li",[e._v("Add the display library:"),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("lib_deps =\n ${com-esp32.lib_deps}\n ...\n ${libraries.ssd1306}\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")])])]),e._v(" "),t("li",[e._v("Add relevant build flags:"),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("build_flags =\n ${com-esp32.build_flags}\n ...\n; *** Generic SSD1306 OLED Options **\n '-DZdisplaySSD1306=\"GenericSSD1306\"'\n '-DOLED_SDA=21' ; SSD1306 pin SDA\n '-DOLED_SCL=22' ; SSD1306 pin SCL\n '-DGenericSSD1306=true'\n '-DJSON_TO_OLED=true'\n '-DDISPLAY_PAGE_INTERVAL=30'\n; '-DLOG_TO_OLED=true' ; Enable log to OLED\n; '-DLOG_LEVEL_OLED=LOG_LEVEL_NOTICE'\n; '-DDISPLAY_IDLE_LOGO=false'\n; '-DDISPLAY_BRIGHTNESS=80'\n; '-DDISPLAY_METRIC=false'\n; '-DDISPLAY_FLIP=false'\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")])])])])])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{458:function(e,t,s){"use strict";s.r(t);var a=s(14),i=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"displays"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#displays"}},[e._v("#")]),e._v(" Displays")]),e._v(" "),t("h2",{attrs:{id:"ssd1306-display-heltec-sx127x-lilygo®-lora32-boards-generic-ssd1306-displays"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ssd1306-display-heltec-sx127x-lilygo®-lora32-boards-generic-ssd1306-displays"}},[e._v("#")]),e._v(" SSD1306 Display (Heltec SX127X, LILYGO® LoRa32 boards, generic SSD1306 displays)")]),e._v(" "),t("p",[e._v("Several options are available for the display of information on the SSD1306 display. Some options are exclusive to each other, and when a different option is enabled, the current option is disabled.")]),e._v(" "),t("p",[e._v("The current SSD1306 display states are being published to the "),t("code",[e._v("SSD1306toMQTT")]),e._v(" topic, e.g.")]),e._v(" "),t("p",[t("code",[e._v('{"onstate":true,"brightness":50,"display-flip":true,"idlelogo":true,"log-oled":false,"json-oled":true}')])]),e._v(" "),t("h3",{attrs:{id:"display-on-off"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-on-off"}},[e._v("#")]),e._v(" Display ON/OFF")]),e._v(" "),t("p",[e._v("To turn the SSD1306 display on or off.")]),e._v(" "),t("p",[e._v("This can be enabled with the compiler directive "),t("code",[e._v("-DDISPLAY_STATE=true")]),e._v(".")]),e._v(" "),t("p",[e._v("MQTT Display OFF command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"onstate":false}')])]),e._v(" "),t("p",[e._v("MQTT Display ON command:")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"onstate":true}')])]),e._v(" "),t("h3",{attrs:{id:"brightness"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#brightness"}},[e._v("#")]),e._v(" Brightness")]),e._v(" "),t("p",[e._v("The display brightness can be set between 0-100%.")]),e._v(" "),t("p",[e._v("It is recommended to set a value lower than 100 to extend the life of the OLED display. The default setting is 50.")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_BRIGHTNESS=50")]),e._v(".")]),e._v(" "),t("p",[e._v("or with the runtime command")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"brightness":50}')])]),e._v(" "),t("h3",{attrs:{id:"metric-or-imperial-property-units"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#metric-or-imperial-property-units"}},[e._v("#")]),e._v(" Metric or Imperial property units")]),e._v(" "),t("p",[e._v("To have applicable device properties displayed in Imperial units, e.g. °F for temperature.")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_METRIC=false")]),e._v(".")]),e._v(" "),t("p",[e._v("As the display Metric setting is being defined in the WebUI part of OpenMQTTGateway changes need to be sent there with the runtime command")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoWebUI/config -m {"displayMetric":false}')])]),e._v(" "),t("h3",{attrs:{id:"rotating-the-display-by-180-degrees"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rotating-the-display-by-180-degrees"}},[e._v("#")]),e._v(" Rotating the display by 180 degrees")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_FLIP=false")]),e._v(".")]),e._v(" "),t("p",[e._v("or with the runtime command")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"display-flip":false}')])]),e._v(" "),t("h3",{attrs:{id:"display-idle-logo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-idle-logo"}},[e._v("#")]),e._v(" Display idle Logo")]),e._v(" "),t("p",[e._v("To display the OpenMQTTGateway logo during device display idle time. This reduces the likelihood of burn-in.")]),e._v(" "),t("p",[e._v("This can be set with the compiler directive "),t("code",[e._v("-DDISPLAY_IDLE_LOGO=true")]),e._v(".")]),e._v(" "),t("p",[e._v("or at runtime with")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m {"idlelogo":true}')])]),e._v(" "),t("h3",{attrs:{id:"setting-the-log-output"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-the-log-output"}},[e._v("#")]),e._v(" Setting the log output")]),e._v(" "),t("p",[e._v("The display of serial log messages to the display can be enabled via compiler directive "),t("code",[e._v("-DLOG_TO_OLED=true")]),e._v(" or via MQTT commands.")]),e._v(" "),t("p",[e._v("For example if you want to set the serial log to OLED")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"log-oled\":true}'")])]),e._v(" "),t("p",[e._v("you can also revert it back with")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"log-oled\":false}'")])]),e._v(" "),t("p",[e._v("The log level of the messages displayed is Errors and Warnings, and this can only be changed via the compiler directive "),t("code",[e._v("-DLOG_LEVEL_OLED=LOG_LEVEL_NOTICE")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"displaying-module-json-messages-default"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#displaying-module-json-messages-default"}},[e._v("#")]),e._v(" Displaying Module json messages (default)")]),e._v(" "),t("p",[e._v("The display of messages from various modules is also supported. Currently supported modules include "),t("code",[e._v("ZgatewayRTL_433")]),e._v(", "),t("code",[e._v("ZgatewayBT")]),e._v(" and "),t("code",[e._v("ZsensorBME280")]),e._v(".")]),e._v(" "),t("p",[e._v("This can be enabled with the compiler directive "),t("code",[e._v("-DJSON_TO_OLED=true")]),e._v(".")]),e._v(" "),t("p",[e._v("You can also change it by MQTT. For example if you want to display module json messages:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"json-oled\":true}'")])]),e._v(" "),t("p",[e._v("And to disable the display of module json messages:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"display-json\":false}'")])]),e._v(" "),t("h3",{attrs:{id:"store-the-current-display-configuration-in-the-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#store-the-current-display-configuration-in-the-gateway"}},[e._v("#")]),e._v(" Store the current display configuration in the gateway")]),e._v(" "),t("p",[e._v("To store the running display configuration into non-volatile storage on the gateway use the following command. This assures persistence across restarts.")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"save\":true}'")])]),e._v(" "),t("p",[e._v("At any time, you can reload the stored configuration with the command:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"load\":true}'")])]),e._v(" "),t("p",[e._v("If you want to erase the stored configuration, use the command:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"erase\":true}'")])]),e._v(" "),t("p",[e._v("Note that this will not change the running configuration, it only ensures that the default configuration is used at next startup.")]),e._v(" "),t("p",[e._v("If you want to load the default configuration use the command:")]),e._v(" "),t("p",[t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoSSD1306/config -m '{\"init\":true}'")])]),e._v(" "),t("p",[e._v("Note that this will not change the stored configuration, "),t("code",[e._v("erase")]),e._v(" or "),t("code",[e._v("save")]),e._v(" is still needed to overwrite the saved configuration.")]),e._v(" "),t("h3",{attrs:{id:"connecting-a-generic-ssd1306-display-to-esp32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#connecting-a-generic-ssd1306-display-to-esp32"}},[e._v("#")]),e._v(" Connecting a generic SSD1306 display to ESP32")]),e._v(" "),t("p",[e._v("It is possible to connect a generic SSD1306 display with resolution 128*64 to the hardware setups.\nThis example describes how to do it with the ESP32 board.")]),e._v(" "),t("ul",[t("li",[e._v("Connect the display to the ESP32 (display → ESP32):\n"),t("ul",[t("li",[e._v("VCC → 5V (or 3.3V, check your display documentation)")]),e._v(" "),t("li",[e._v("GND → GND")]),e._v(" "),t("li",[e._v("SCL → pin 22")]),e._v(" "),t("li",[e._v("SDA → pin 21")])])]),e._v(" "),t("li",[e._v("Modify the environment definition in "),t("code",[e._v("environments.ini")]),e._v(".\n"),t("ul",[t("li",[e._v("Add the display library:"),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("lib_deps =\n ${com-esp32.lib_deps}\n ...\n ${libraries.ssd1306}\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")])])]),e._v(" "),t("li",[e._v("Add relevant build flags:"),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("build_flags =\n ${com-esp32.build_flags}\n ...\n; *** Generic SSD1306 OLED Options **\n '-DZdisplaySSD1306=\"GenericSSD1306\"'\n '-DOLED_SDA=21' ; SSD1306 pin SDA\n '-DOLED_SCL=22' ; SSD1306 pin SCL\n '-DGenericSSD1306=true'\n '-DJSON_TO_OLED=true'\n '-DDISPLAY_PAGE_INTERVAL=30'\n; '-DLOG_TO_OLED=true' ; Enable log to OLED\n; '-DLOG_LEVEL_OLED=LOG_LEVEL_NOTICE'\n; '-DDISPLAY_IDLE_LOGO=false'\n; '-DDISPLAY_BRIGHTNESS=80'\n; '-DDISPLAY_METRIC=false'\n; '-DDISPLAY_FLIP=false'\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")])])])])])])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/64.4b220d3f.js b/dev/assets/js/64.25208722.js similarity index 98% rename from dev/assets/js/64.4b220d3f.js rename to dev/assets/js/64.25208722.js index fab4f02279..c0f486605d 100644 --- a/dev/assets/js/64.4b220d3f.js +++ b/dev/assets/js/64.25208722.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{466:function(e,t,a){"use strict";a.r(t);var n=a(14),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"rfm69-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rfm69-gateway"}},[e._v("#")]),e._v(" RFM69 gateway")]),e._v(" "),t("p",[e._v("The RFM69 gateway enables to send and receive signal from/to another RFM69 module. It is based on the work of @bbx10 https://github.com/bbx10/nanohab")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rfm-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rfm-signal"}},[e._v("#")]),e._v(" Receiving data from RFM signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals with a Moteino on other RFM69 based devices, you will receive :")]),e._v(" "),t("p",[t("code",[e._v("home/OpenMQTTGateway/RFM69toMQTT 60,-98,0")])]),e._v(" "),t("p",[e._v('In this case "60,-98,0" is the signal sent by another RFM69 + a wemos D1 with the sample sketch '),t("a",{attrs:{href:"https://github.com/1technophile/rfm69send/blob/master/rfm69send.ino",target:"_blank",rel:"noopener noreferrer"}},[e._v("rfm69send"),t("OutboundLink")],1),e._v(" loaded in it.")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-rfm69-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-rfm69-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on RFM69 signal")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"data":"test"}\'')])]),e._v(" "),t("p",[e._v("This command will send by RFM69 the string "),t("em",[e._v("test")]),e._v(" to the default receiver id 99")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-with-advanced-rfm69-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-rfm69-parameters"}},[e._v("#")]),e._v(" Send data by MQTT with advanced RFM69 parameters")]),e._v(" "),t("p",[e._v("RFM69 sending support one advanced parameters the target receiver ID.")]),e._v(" "),t("p",[e._v("Example:\nSimplePublishing\n"),t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRFM69/RCV_34 -m 33151562")]),e._v("\nwill make the gateway send to the receiver ID 34 (node number) instead of 99")]),e._v(" "),t("p",[e._v("JsonPublishing\n"),t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRFM69 -m \'{"data":1315156,"receiverid":34}\'')]),e._v("\nThis command will send by RFM69 the string "),t("em",[e._v("test")]),e._v(" to the receiver id 34 instead of 99")]),e._v(" "),t("h3",{attrs:{id:"rfm69-acknowledgment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rfm69-acknowledgment"}},[e._v("#")]),e._v(" RFM69 acknowledgment")]),e._v(" "),t("p",[e._v("Unlike RF or IR RFM69 as a complete acknowledgment mechanism. When a signal is sent the RFM69 can acknowledge the fact that the recipient received the message.\nIn this case the gateway will publish the sent message to the topic defined by subjectGTWRFM69toMQTT macro.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{465:function(e,t,a){"use strict";a.r(t);var n=a(14),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"rfm69-gateway"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rfm69-gateway"}},[e._v("#")]),e._v(" RFM69 gateway")]),e._v(" "),t("p",[e._v("The RFM69 gateway enables to send and receive signal from/to another RFM69 module. It is based on the work of @bbx10 https://github.com/bbx10/nanohab")]),e._v(" "),t("h3",{attrs:{id:"receiving-data-from-rfm-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#receiving-data-from-rfm-signal"}},[e._v("#")]),e._v(" Receiving data from RFM signal")]),e._v(" "),t("p",[e._v("Subscribe to all the messages with mosquitto or open your MQTT client software:")]),e._v(" "),t("p",[t("code",[e._v("sudo mosquitto_sub -t +/# -v")])]),e._v(" "),t("p",[e._v("Generate your RF signals with a Moteino on other RFM69 based devices, you will receive :")]),e._v(" "),t("p",[t("code",[e._v("home/OpenMQTTGateway/RFM69toMQTT 60,-98,0")])]),e._v(" "),t("p",[e._v('In this case "60,-98,0" is the signal sent by another RFM69 + a wemos D1 with the sample sketch '),t("a",{attrs:{href:"https://github.com/1technophile/rfm69send/blob/master/rfm69send.ino",target:"_blank",rel:"noopener noreferrer"}},[e._v("rfm69send"),t("OutboundLink")],1),e._v(" loaded in it.")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-to-convert-it-on-rfm69-signal"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-to-convert-it-on-rfm69-signal"}},[e._v("#")]),e._v(" Send data by MQTT to convert it on RFM69 signal")]),e._v(" "),t("p",[t("code",[e._v('mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoPilight" -m \'{"data":"test"}\'')])]),e._v(" "),t("p",[e._v("This command will send by RFM69 the string "),t("em",[e._v("test")]),e._v(" to the default receiver id 99")]),e._v(" "),t("h3",{attrs:{id:"send-data-by-mqtt-with-advanced-rfm69-parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#send-data-by-mqtt-with-advanced-rfm69-parameters"}},[e._v("#")]),e._v(" Send data by MQTT with advanced RFM69 parameters")]),e._v(" "),t("p",[e._v("RFM69 sending support one advanced parameters the target receiver ID.")]),e._v(" "),t("p",[e._v("Example:\nSimplePublishing\n"),t("code",[e._v("mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRFM69/RCV_34 -m 33151562")]),e._v("\nwill make the gateway send to the receiver ID 34 (node number) instead of 99")]),e._v(" "),t("p",[e._v("JsonPublishing\n"),t("code",[e._v('mosquitto_pub -t home/OpenMQTTGateway/commands/MQTTtoRFM69 -m \'{"data":1315156,"receiverid":34}\'')]),e._v("\nThis command will send by RFM69 the string "),t("em",[e._v("test")]),e._v(" to the receiver id 34 instead of 99")]),e._v(" "),t("h3",{attrs:{id:"rfm69-acknowledgment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rfm69-acknowledgment"}},[e._v("#")]),e._v(" RFM69 acknowledgment")]),e._v(" "),t("p",[e._v("Unlike RF or IR RFM69 as a complete acknowledgment mechanism. When a signal is sent the RFM69 can acknowledge the fact that the recipient received the message.\nIn this case the gateway will publish the sent message to the topic defined by subjectGTWRFM69toMQTT macro.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/dev/assets/js/65.5bca13cf.js b/dev/assets/js/65.eec8c9be.js similarity index 99% rename from dev/assets/js/65.5bca13cf.js rename to dev/assets/js/65.eec8c9be.js index 1c88419a0d..bbf5ff2459 100644 --- a/dev/assets/js/65.5bca13cf.js +++ b/dev/assets/js/65.eec8c9be.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{465: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-gateway"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rs232-gateway"}},[e._v("#")]),e._v(" RS232 gateway")]),e._v(" "),s("p",[e._v("The RS232 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-rs232-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sending-an-rs232-message"}},[e._v("#")]),e._v(" Sending an RS232 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/MQTTtoRS232 -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_RS232.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_RS232.h"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("h2",{attrs:{id:"receiving-an-rs232-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#receiving-an-rs232-message"}},[e._v("#")]),e._v(" Receiving an RS232 message")]),e._v(" "),s("p",[e._v("Two modes are available for receiving RS232 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/RS232toMQTT "),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/RStoMQTT "),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/RS232toMQTT/temperature "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{sens1: 22, sens2: 23}"')]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/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/RS232toMQTT/temperature/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("22")]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/temperature/sens2 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("23")]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/humidity/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("80")]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/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([[65],{466: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-gateway"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rs232-gateway"}},[e._v("#")]),e._v(" RS232 gateway")]),e._v(" "),s("p",[e._v("The RS232 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-rs232-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sending-an-rs232-message"}},[e._v("#")]),e._v(" Sending an RS232 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/MQTTtoRS232 -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_RS232.h",target:"_blank",rel:"noopener noreferrer"}},[e._v("config_RS232.h"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("h2",{attrs:{id:"receiving-an-rs232-message"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#receiving-an-rs232-message"}},[e._v("#")]),e._v(" Receiving an RS232 message")]),e._v(" "),s("p",[e._v("Two modes are available for receiving RS232 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/RS232toMQTT "),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/RStoMQTT "),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/RS232toMQTT/temperature "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{sens1: 22, sens2: 23}"')]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/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/RS232toMQTT/temperature/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("22")]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/temperature/sens2 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("23")]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/humidity/sens1 "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("80")]),e._v("\nhome/OpenMQTTGateway/RS232toMQTT/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/app.00c4062f.js b/dev/assets/js/app.9b7e7afb.js similarity index 82% rename from dev/assets/js/app.00c4062f.js rename to dev/assets/js/app.9b7e7afb.js index ab9f58c9ef..4a3e336c42 100644 --- a/dev/assets/js/app.00c4062f.js +++ b/dev/assets/js/app.9b7e7afb.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],u=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),u=l.querySelector(r.barSelector),c=r.speed,f=r.easing;return l.offsetWidth,a((function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,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,c,f)),1===t?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){s(l,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),e()}),c)}),c)):setTimeout(e,c)})),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");u(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),c=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),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(e),e},n.remove=function(){c(document.documentElement,"nprogress-busy"),c(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 u(t,e){var n=f(t),r=n+e;l(n,e)||(t.className=r.substring(1))}function c(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),u=n(120);t.exports=function(t,e){var n,c,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(c in e){if(p=e[c],f=t.dontCallGetSet?(d=o(n,c))&&d.value:n[c],!u(v?c:h+(m?".":"#")+c,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,c,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),u=r.Symbol,c=o("wks"),f=l?u.for||u:u&&u.withoutSetter||a;t.exports=function(t){return i(c,t)||(c[t]=s&&i(u,t)?u[t]:f("Symbol."+t)),c[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),u=n(8),c=n(58),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=s(t),e=l(e),c)try{return f(t,e)}catch(t){}if(u(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,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(r=c.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,u=i.f,c=0;cc))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]/;t.exports=function(t){var e,n=""+t,o=r.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a=e||n<0||m&&t-u>=i}function _(){var t=d();if(w(t))return x(t);s=setTimeout(_,function(t){var n=e-(t-l);return m?p(n,i-(t-u)):n}(t))}function x(t){return s=void 0,g&&r?y(t):(r=o=void 0,a)}function S(){var t=d(),n=w(t);if(r=arguments,o=this,l=t,n){if(void 0===s)return b(l);if(m)return s=setTimeout(_,e),y(l)}return void 0===s&&(s=setTimeout(_,e)),a}return e=v(e)||0,h(n)&&(c=!!n.leading,i=(m="maxWait"in n)?f(v(n.maxWait)||0,e):i,g="trailing"in n?!!n.trailing:g),S.cancel=function(){void 0!==s&&clearTimeout(s),u=0,r=l=o=s=void 0},S.flush=function(){return void 0===s?a:x(d())},S}},function(t,e,n){!function(){"use strict";t.exports={polyfill:function(){var t=window,e=document;if(!("scrollBehavior"in e.documentElement.style)||!0===t.__forceSmoothScrollPolyfill__){var n,r=t.HTMLElement||t.Element,o={scroll:t.scroll||t.scrollTo,scrollBy:t.scrollBy,elementScroll:r.prototype.scroll||s,scrollIntoView:r.prototype.scrollIntoView},i=t.performance&&t.performance.now?t.performance.now.bind(t.performance):Date.now,a=(n=t.navigator.userAgent,new RegExp(["MSIE ","Trident/","Edge/"].join("|")).test(n)?1:0);t.scroll=t.scrollTo=function(){void 0!==arguments[0]&&(!0!==l(arguments[0])?h.call(t,e.body,void 0!==arguments[0].left?~~arguments[0].left:t.scrollX||t.pageXOffset,void 0!==arguments[0].top?~~arguments[0].top:t.scrollY||t.pageYOffset):o.scroll.call(t,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:t.scrollX||t.pageXOffset,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:t.scrollY||t.pageYOffset))},t.scrollBy=function(){void 0!==arguments[0]&&(l(arguments[0])?o.scrollBy.call(t,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:0,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:0):h.call(t,e.body,~~arguments[0].left+(t.scrollX||t.pageXOffset),~~arguments[0].top+(t.scrollY||t.pageYOffset)))},r.prototype.scroll=r.prototype.scrollTo=function(){if(void 0!==arguments[0])if(!0!==l(arguments[0])){var t=arguments[0].left,e=arguments[0].top;h.call(this,this,void 0===t?this.scrollLeft:~~t,void 0===e?this.scrollTop:~~e)}else{if("number"==typeof arguments[0]&&void 0===arguments[1])throw new SyntaxError("Value could not be converted");o.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left:"object"!=typeof arguments[0]?~~arguments[0]:this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top:void 0!==arguments[1]?~~arguments[1]:this.scrollTop)}},r.prototype.scrollBy=function(){void 0!==arguments[0]&&(!0!==l(arguments[0])?this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior}):o.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop))},r.prototype.scrollIntoView=function(){if(!0!==l(arguments[0])){var n=p(this),r=n.getBoundingClientRect(),i=this.getBoundingClientRect();n!==e.body?(h.call(this,n,n.scrollLeft+i.left-r.left,n.scrollTop+i.top-r.top),"fixed"!==t.getComputedStyle(n).position&&t.scrollBy({left:r.left,top:r.top,behavior:"smooth"})):t.scrollBy({left:i.left,top:i.top,behavior:"smooth"})}else o.scrollIntoView.call(this,void 0===arguments[0]||arguments[0])}}function s(t,e){this.scrollLeft=t,this.scrollTop=e}function l(t){if(null===t||"object"!=typeof t||void 0===t.behavior||"auto"===t.behavior||"instant"===t.behavior)return!0;if("object"==typeof t&&"smooth"===t.behavior)return!1;throw new TypeError("behavior member of ScrollOptions "+t.behavior+" is not a valid value for enumeration ScrollBehavior.")}function u(t,e){return"Y"===e?t.clientHeight+a1?1:s,n=.5*(1-Math.cos(Math.PI*a)),r=e.startX+(e.x-e.startX)*n,o=e.startY+(e.y-e.startY)*n,e.method.call(e.scrollable,r,o),r===e.x&&o===e.y||t.requestAnimationFrame(d.bind(t,e))}function h(n,r,a){var l,u,c,f,p=i();n===e.body?(l=t,u=t.scrollX||t.pageXOffset,c=t.scrollY||t.pageYOffset,f=o.scroll):(l=n,u=n.scrollLeft,c=n.scrollTop,f=s),d({scrollable:l,method:f,startTime:p,startX:u,startY:c,x:r,y:a})}}}}()},function(t,e,n){"use strict";var r=n(23),o=n(33),i=n(35),a=n(124),s=n(126);r({target:"Array",proto:!0,arity:1,forced:n(3)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}()},{push:function(t){var e=o(this),n=i(e),r=arguments.length;s(n+r);for(var l=0;l79&&a<83||!i("reduce")},{reduce:function(t){var e=arguments.length;return o(this,t,e,e>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e,n){"use strict";var r=n(24),o=n(7),i=n(50),a=n(101),s=n(103),l=n(30),u=TypeError,c=l("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var n,l=a(t,c);if(l){if(void 0===e&&(e="default"),n=r(l,t,e),!o(n)||i(n))return n;throw new u("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},function(t,e,n){"use strict";t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},function(t,e,n){"use strict";var r=n(29),o=n(48);t.exports=function(t,e){var n=t[e];return o(n)?void 0:r(n)}},function(t,e,n){"use strict";var r=String;t.exports=function(t){try{return r(t)}catch(t){return"Object"}}},function(t,e,n){"use strict";var r=n(24),o=n(1),i=n(7),a=TypeError;t.exports=function(t,e){var n,s;if("string"===e&&o(n=t.toString)&&!i(s=r(n,t)))return s;if(o(n=t.valueOf)&&!i(s=r(n,t)))return s;if("string"!==e&&o(n=t.toString)&&!i(s=r(n,t)))return s;throw new a("Can't convert object to primitive value")}},function(t,e,n){"use strict";var r=n(0),o=n(7),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,e,n){"use strict";var r=n(5),o=n(3);t.exports=r&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(t,e,n){"use strict";var r=n(5),o=n(8),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);t.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},function(t,e,n){"use strict";var r=n(2),o=n(1),i=n(31),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},function(t,e,n){"use strict";var r,o,i,a=n(109),s=n(0),l=n(7),u=n(12),c=n(8),f=n(31),p=n(110),d=n(59),h=s.TypeError,v=s.WeakMap;if(a||f.state){var m=f.state||(f.state=new v);m.get=m.get,m.has=m.has,m.set=m.set,r=function(t,e){if(m.has(t))throw new h("Object already initialized");return e.facade=t,m.set(t,e),e},o=function(t){return m.get(t)||{}},i=function(t){return m.has(t)}}else{var g=p("state");d[g]=!0,r=function(t,e){if(c(t,g))throw new h("Object already initialized");return e.facade=t,u(t,g,e),e},o=function(t){return c(t,g)?t[g]:{}},i=function(t){return c(t,g)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=o(e)).type!==t)throw new h("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){"use strict";var r=n(0),o=n(1),i=r.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},function(t,e,n){"use strict";var r=n(55),o=n(57),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){"use strict";var r=n(28),o=n(2),i=n(112),a=n(119),s=n(34),l=o([].concat);t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(s(t)),n=a.f;return n?l(e,n(t)):e}},function(t,e,n){"use strict";var r=n(113),o=n(118).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=n(2),o=n(8),i=n(27),a=n(114).indexOf,s=n(59),l=r([].push);t.exports=function(t,e){var n,r=i(t),u=0,c=[];for(n in r)!o(s,n)&&o(r,n)&&l(c,n);for(;e.length>u;)o(r,n=e[u++])&&(~a(c,n)||l(c,n));return c}},function(t,e,n){"use strict";var r=n(27),o=n(115),i=n(35),a=function(t){return function(e,n,a){var s,l=r(e),u=i(l),c=o(a,u);if(t&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===n)return t||c||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e,n){"use strict";var r=n(61),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},function(t,e,n){"use strict";var r=Math.ceil,o=Math.floor;t.exports=Math.trunc||function(t){var e=+t;return(e>0?o:r)(e)}},function(t,e,n){"use strict";var r=n(61),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){"use strict";e.f=Object.getOwnPropertySymbols},function(t,e,n){"use strict";var r=n(3),o=n(1),i=/#|\.prototype\./,a=function(t,e){var n=l[s(t)];return n===c||n!==u&&(o(e)?r(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,".").toLowerCase()},l=a.data={},u=a.NATIVE="N",c=a.POLYFILL="P";t.exports=a},function(t,e,n){"use strict";var r=n(29),o=n(33),i=n(46),a=n(35),s=TypeError,l=function(t){return function(e,n,l,u){var c=o(e),f=i(c),p=a(c);r(n);var d=t?p-1:0,h=t?-1:1;if(l<2)for(;;){if(d in f){u=f[d],d+=h;break}if(d+=h,t?d<0:p<=d)throw new s("Reduce of empty array with no initial value")}for(;t?d>=0:p>d;d+=h)d in f&&(u=n(u,f[d],d,c));return u}};t.exports={left:l(!1),right:l(!0)}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){return 1},1)}))}},function(t,e,n){"use strict";var r=n(0),o=n(16);t.exports="process"===o(r.process)},function(t,e,n){"use strict";var r=n(5),o=n(125),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=s?function(t,e){if(o(t)&&!a(t,"length").writable)throw new i("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},function(t,e,n){"use strict";var r=n(16);t.exports=Array.isArray||function(t){return"Array"===r(t)}},function(t,e,n){"use strict";var r=TypeError;t.exports=function(t){if(t>9007199254740991)throw r("Maximum allowed index exceeded");return t}},function(t,e,n){"use strict";var r=n(23),o=n(0),i=n(128),a=n(129),s=o.WebAssembly,l=7!==new Error("e",{cause:7}).cause,u=function(t,e){var n={};n[t]=a(t,e,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},c=function(t,e){if(s&&s[t]){var n={};n[t]=a("WebAssembly."+t,e,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};u("Error",(function(t){return function(e){return i(t,this,arguments)}})),u("EvalError",(function(t){return function(e){return i(t,this,arguments)}})),u("RangeError",(function(t){return function(e){return i(t,this,arguments)}})),u("ReferenceError",(function(t){return function(e){return i(t,this,arguments)}})),u("SyntaxError",(function(t){return function(e){return i(t,this,arguments)}})),u("TypeError",(function(t){return function(e){return i(t,this,arguments)}})),u("URIError",(function(t){return function(e){return i(t,this,arguments)}})),c("CompileError",(function(t){return function(e){return i(t,this,arguments)}})),c("LinkError",(function(t){return function(e){return i(t,this,arguments)}})),c("RuntimeError",(function(t){return function(e){return i(t,this,arguments)}}))},function(t,e,n){"use strict";var r=n(25),o=Function.prototype,i=o.apply,a=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},function(t,e,n){"use strict";var r=n(28),o=n(8),i=n(12),a=n(51),s=n(62),l=n(60),u=n(133),c=n(134),f=n(135),p=n(138),d=n(139),h=n(5),v=n(56);t.exports=function(t,e,n,m){var g=m?2:1,y=t.split("."),b=y[y.length-1],w=r.apply(null,y);if(w){var _=w.prototype;if(!v&&o(_,"cause")&&delete _.cause,!n)return w;var x=r("Error"),S=e((function(t,e){var n=f(m?e:t,void 0),r=m?new w(t):new w;return void 0!==n&&i(r,"message",n),d(r,S,r.stack,2),this&&a(_,this)&&c(r,this,S),arguments.length>g&&p(r,arguments[g]),r}));if(S.prototype=_,"Error"!==b?s?s(S,x):l(S,x,{name:!0}):h&&"stackTraceLimit"in w&&(u(S,w,"stackTraceLimit"),u(S,w,"prepareStackTrace")),l(S,w),!v)try{_.name!==b&&i(_,"name",b),_.constructor=S}catch(t){}return S}}},function(t,e,n){"use strict";var r=n(2),o=n(29);t.exports=function(t,e,n){try{return r(o(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},function(t,e,n){"use strict";var r=n(132),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw new i("Can't set "+o(t)+" as a prototype")}},function(t,e,n){"use strict";var r=n(7);t.exports=function(t){return r(t)||null===t}},function(t,e,n){"use strict";var r=n(15).f;t.exports=function(t,e,n){n in t||r(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},function(t,e,n){"use strict";var r=n(1),o=n(7),i=n(62);t.exports=function(t,e,n){var a,s;return i&&r(a=e.constructor)&&a!==n&&o(s=a.prototype)&&s!==n.prototype&&i(t,s),t}},function(t,e,n){"use strict";var r=n(93);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:r(t)}},function(t,e,n){"use strict";var r=n(137),o=n(1),i=n(16),a=n(30)("toStringTag"),s=Object,l="Arguments"===i(function(){return arguments}());t.exports=r?i:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=s(t),a))?n:l?i(e):"Object"===(r=i(e))&&o(e.callee)?"Arguments":r}},function(t,e,n){"use strict";var r={};r[n(30)("toStringTag")]="z",t.exports="[object z]"===String(r)},function(t,e,n){"use strict";var r=n(7),o=n(12);t.exports=function(t,e){r(e)&&"cause"in e&&o(t,"cause",e.cause)}},function(t,e,n){"use strict";var r=n(12),o=n(140),i=n(141),a=Error.captureStackTrace;t.exports=function(t,e,n,s){i&&(a?a(t,e):r(t,"stack",o(n,s)))}},function(t,e,n){"use strict";var r=n(2),o=Error,i=r("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(a);t.exports=function(t,e){if(l&&"string"==typeof t&&!o.prepareStackTrace)for(;e--;)t=i(t,s,"");return t}},function(t,e,n){"use strict";var r=n(3),o=n(26);t.exports=!r((function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)}))},function(t,e,n){var r=n(63),o=n(143);t.exports=function t(e,n,i,a,s){var l=-1,u=e.length;for(i||(i=o),s||(s=[]);++l0&&i(c)?n>1?t(c,n-1,i,a,s):r(s,c):a||(s[s.length]=c)}return s}},function(t,e,n){var r=n(13),o=n(36),i=n(4),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(11),o=n(10);t.exports=function(t){return o(t)&&"[object Arguments]"==r(t)}},function(t,e,n){var r=n(13),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[s]=n:delete t[s]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(148),o=n(204),i=n(44),a=n(4),s=n(214);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?a(t)?o(t[0],t[1]):r(t):s(t)}},function(t,e,n){var r=n(149),o=n(203),i=n(81);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(65),o=n(69);t.exports=function(t,e,n,i){var a=n.length,s=a,l=!i;if(null==t)return!s;for(t=Object(t);a--;){var u=n[a];if(l&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++a-1}},function(t,e,n){var r=n(18);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(17);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(17),o=n(37),i=n(39);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(67),o=n(161),i=n(38),a=n(68),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,f=u.hasOwnProperty,p=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:s).test(a(t))}},function(t,e,n){var r,o=n(162),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(6)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(165),o=n(17),i=n(37);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(166),o=n(167),i=n(168),a=n(169),s=n(170);function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(71),o=n(226),i=n(231),a=n(72),s=n(232),l=n(40);t.exports=function(t,e,n){var u=-1,c=o,f=t.length,p=!0,d=[],h=d;if(n)p=!1,c=i;else if(f>=200){var v=e?null:s(t);if(v)return l(v);p=!1,c=a,h=new r}else h=e?[]:d;t:for(;++u-1}},function(t,e,n){var r=n(228),o=n(229),i=n(230);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++i]/;t.exports=function(t){var e,n=""+t,o=r.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a=e||n<0||m&&t-u>=i}function _(){var t=d();if(w(t))return x(t);s=setTimeout(_,function(t){var n=e-(t-l);return m?p(n,i-(t-u)):n}(t))}function x(t){return s=void 0,g&&r?y(t):(r=o=void 0,a)}function S(){var t=d(),n=w(t);if(r=arguments,o=this,l=t,n){if(void 0===s)return b(l);if(m)return s=setTimeout(_,e),y(l)}return void 0===s&&(s=setTimeout(_,e)),a}return e=v(e)||0,h(n)&&(c=!!n.leading,i=(m="maxWait"in n)?f(v(n.maxWait)||0,e):i,g="trailing"in n?!!n.trailing:g),S.cancel=function(){void 0!==s&&clearTimeout(s),u=0,r=l=o=s=void 0},S.flush=function(){return void 0===s?a:x(d())},S}},function(t,e,n){!function(){"use strict";t.exports={polyfill:function(){var t=window,e=document;if(!("scrollBehavior"in e.documentElement.style)||!0===t.__forceSmoothScrollPolyfill__){var n,r=t.HTMLElement||t.Element,o={scroll:t.scroll||t.scrollTo,scrollBy:t.scrollBy,elementScroll:r.prototype.scroll||s,scrollIntoView:r.prototype.scrollIntoView},i=t.performance&&t.performance.now?t.performance.now.bind(t.performance):Date.now,a=(n=t.navigator.userAgent,new RegExp(["MSIE ","Trident/","Edge/"].join("|")).test(n)?1:0);t.scroll=t.scrollTo=function(){void 0!==arguments[0]&&(!0!==l(arguments[0])?h.call(t,e.body,void 0!==arguments[0].left?~~arguments[0].left:t.scrollX||t.pageXOffset,void 0!==arguments[0].top?~~arguments[0].top:t.scrollY||t.pageYOffset):o.scroll.call(t,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:t.scrollX||t.pageXOffset,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:t.scrollY||t.pageYOffset))},t.scrollBy=function(){void 0!==arguments[0]&&(l(arguments[0])?o.scrollBy.call(t,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:0,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:0):h.call(t,e.body,~~arguments[0].left+(t.scrollX||t.pageXOffset),~~arguments[0].top+(t.scrollY||t.pageYOffset)))},r.prototype.scroll=r.prototype.scrollTo=function(){if(void 0!==arguments[0])if(!0!==l(arguments[0])){var t=arguments[0].left,e=arguments[0].top;h.call(this,this,void 0===t?this.scrollLeft:~~t,void 0===e?this.scrollTop:~~e)}else{if("number"==typeof arguments[0]&&void 0===arguments[1])throw new SyntaxError("Value could not be converted");o.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left:"object"!=typeof arguments[0]?~~arguments[0]:this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top:void 0!==arguments[1]?~~arguments[1]:this.scrollTop)}},r.prototype.scrollBy=function(){void 0!==arguments[0]&&(!0!==l(arguments[0])?this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior}):o.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop))},r.prototype.scrollIntoView=function(){if(!0!==l(arguments[0])){var n=p(this),r=n.getBoundingClientRect(),i=this.getBoundingClientRect();n!==e.body?(h.call(this,n,n.scrollLeft+i.left-r.left,n.scrollTop+i.top-r.top),"fixed"!==t.getComputedStyle(n).position&&t.scrollBy({left:r.left,top:r.top,behavior:"smooth"})):t.scrollBy({left:i.left,top:i.top,behavior:"smooth"})}else o.scrollIntoView.call(this,void 0===arguments[0]||arguments[0])}}function s(t,e){this.scrollLeft=t,this.scrollTop=e}function l(t){if(null===t||"object"!=typeof t||void 0===t.behavior||"auto"===t.behavior||"instant"===t.behavior)return!0;if("object"==typeof t&&"smooth"===t.behavior)return!1;throw new TypeError("behavior member of ScrollOptions "+t.behavior+" is not a valid value for enumeration ScrollBehavior.")}function u(t,e){return"Y"===e?t.clientHeight+a1?1:s,n=.5*(1-Math.cos(Math.PI*a)),r=e.startX+(e.x-e.startX)*n,o=e.startY+(e.y-e.startY)*n,e.method.call(e.scrollable,r,o),r===e.x&&o===e.y||t.requestAnimationFrame(d.bind(t,e))}function h(n,r,a){var l,u,c,f,p=i();n===e.body?(l=t,u=t.scrollX||t.pageXOffset,c=t.scrollY||t.pageYOffset,f=o.scroll):(l=n,u=n.scrollLeft,c=n.scrollTop,f=s),d({scrollable:l,method:f,startTime:p,startX:u,startY:c,x:r,y:a})}}}}()},function(t,e,n){"use strict";var r=n(23),o=n(33),i=n(35),a=n(124),s=n(126);r({target:"Array",proto:!0,arity:1,forced:n(3)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}()},{push:function(t){var e=o(this),n=i(e),r=arguments.length;s(n+r);for(var l=0;l79&&a<83||!i("reduce")},{reduce:function(t){var e=arguments.length;return o(this,t,e,e>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e,n){"use strict";var r=n(24),o=n(7),i=n(50),a=n(101),s=n(103),l=n(30),u=TypeError,c=l("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var n,l=a(t,c);if(l){if(void 0===e&&(e="default"),n=r(l,t,e),!o(n)||i(n))return n;throw new u("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},function(t,e,n){"use strict";t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},function(t,e,n){"use strict";var r=n(29),o=n(48);t.exports=function(t,e){var n=t[e];return o(n)?void 0:r(n)}},function(t,e,n){"use strict";var r=String;t.exports=function(t){try{return r(t)}catch(t){return"Object"}}},function(t,e,n){"use strict";var r=n(24),o=n(1),i=n(7),a=TypeError;t.exports=function(t,e){var n,s;if("string"===e&&o(n=t.toString)&&!i(s=r(n,t)))return s;if(o(n=t.valueOf)&&!i(s=r(n,t)))return s;if("string"!==e&&o(n=t.toString)&&!i(s=r(n,t)))return s;throw new a("Can't convert object to primitive value")}},function(t,e,n){"use strict";var r=n(0),o=n(7),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,e,n){"use strict";var r=n(5),o=n(3);t.exports=r&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(t,e,n){"use strict";var r=n(5),o=n(8),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);t.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},function(t,e,n){"use strict";var r=n(2),o=n(1),i=n(31),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},function(t,e,n){"use strict";var r,o,i,a=n(109),s=n(0),l=n(7),u=n(12),c=n(8),f=n(31),p=n(110),d=n(59),h=s.TypeError,v=s.WeakMap;if(a||f.state){var m=f.state||(f.state=new v);m.get=m.get,m.has=m.has,m.set=m.set,r=function(t,e){if(m.has(t))throw new h("Object already initialized");return e.facade=t,m.set(t,e),e},o=function(t){return m.get(t)||{}},i=function(t){return m.has(t)}}else{var g=p("state");d[g]=!0,r=function(t,e){if(c(t,g))throw new h("Object already initialized");return e.facade=t,u(t,g,e),e},o=function(t){return c(t,g)?t[g]:{}},i=function(t){return c(t,g)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=o(e)).type!==t)throw new h("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){"use strict";var r=n(0),o=n(1),i=r.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},function(t,e,n){"use strict";var r=n(55),o=n(57),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){"use strict";var r=n(28),o=n(2),i=n(112),a=n(119),s=n(34),l=o([].concat);t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(s(t)),n=a.f;return n?l(e,n(t)):e}},function(t,e,n){"use strict";var r=n(113),o=n(118).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=n(2),o=n(8),i=n(27),a=n(114).indexOf,s=n(59),l=r([].push);t.exports=function(t,e){var n,r=i(t),u=0,c=[];for(n in r)!o(s,n)&&o(r,n)&&l(c,n);for(;e.length>u;)o(r,n=e[u++])&&(~a(c,n)||l(c,n));return c}},function(t,e,n){"use strict";var r=n(27),o=n(115),i=n(35),a=function(t){return function(e,n,a){var s,l=r(e),u=i(l),c=o(a,u);if(t&&n!=n){for(;u>c;)if((s=l[c++])!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===n)return t||c||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e,n){"use strict";var r=n(61),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},function(t,e,n){"use strict";var r=Math.ceil,o=Math.floor;t.exports=Math.trunc||function(t){var e=+t;return(e>0?o:r)(e)}},function(t,e,n){"use strict";var r=n(61),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){"use strict";e.f=Object.getOwnPropertySymbols},function(t,e,n){"use strict";var r=n(3),o=n(1),i=/#|\.prototype\./,a=function(t,e){var n=l[s(t)];return n===c||n!==u&&(o(e)?r(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,".").toLowerCase()},l=a.data={},u=a.NATIVE="N",c=a.POLYFILL="P";t.exports=a},function(t,e,n){"use strict";var r=n(29),o=n(33),i=n(46),a=n(35),s=TypeError,l=function(t){return function(e,n,l,u){var c=o(e),f=i(c),p=a(c);r(n);var d=t?p-1:0,h=t?-1:1;if(l<2)for(;;){if(d in f){u=f[d],d+=h;break}if(d+=h,t?d<0:p<=d)throw new s("Reduce of empty array with no initial value")}for(;t?d>=0:p>d;d+=h)d in f&&(u=n(u,f[d],d,c));return u}};t.exports={left:l(!1),right:l(!0)}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){return 1},1)}))}},function(t,e,n){"use strict";var r=n(0),o=n(16);t.exports="process"===o(r.process)},function(t,e,n){"use strict";var r=n(5),o=n(125),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=s?function(t,e){if(o(t)&&!a(t,"length").writable)throw new i("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},function(t,e,n){"use strict";var r=n(16);t.exports=Array.isArray||function(t){return"Array"===r(t)}},function(t,e,n){"use strict";var r=TypeError;t.exports=function(t){if(t>9007199254740991)throw r("Maximum allowed index exceeded");return t}},function(t,e,n){"use strict";var r=n(23),o=n(0),i=n(128),a=n(129),s=o.WebAssembly,l=7!==new Error("e",{cause:7}).cause,u=function(t,e){var n={};n[t]=a(t,e,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},c=function(t,e){if(s&&s[t]){var n={};n[t]=a("WebAssembly."+t,e,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};u("Error",(function(t){return function(e){return i(t,this,arguments)}})),u("EvalError",(function(t){return function(e){return i(t,this,arguments)}})),u("RangeError",(function(t){return function(e){return i(t,this,arguments)}})),u("ReferenceError",(function(t){return function(e){return i(t,this,arguments)}})),u("SyntaxError",(function(t){return function(e){return i(t,this,arguments)}})),u("TypeError",(function(t){return function(e){return i(t,this,arguments)}})),u("URIError",(function(t){return function(e){return i(t,this,arguments)}})),c("CompileError",(function(t){return function(e){return i(t,this,arguments)}})),c("LinkError",(function(t){return function(e){return i(t,this,arguments)}})),c("RuntimeError",(function(t){return function(e){return i(t,this,arguments)}}))},function(t,e,n){"use strict";var r=n(25),o=Function.prototype,i=o.apply,a=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},function(t,e,n){"use strict";var r=n(28),o=n(8),i=n(12),a=n(51),s=n(62),l=n(60),u=n(133),c=n(134),f=n(135),p=n(138),d=n(139),h=n(5),v=n(56);t.exports=function(t,e,n,m){var g=m?2:1,y=t.split("."),b=y[y.length-1],w=r.apply(null,y);if(w){var _=w.prototype;if(!v&&o(_,"cause")&&delete _.cause,!n)return w;var x=r("Error"),S=e((function(t,e){var n=f(m?e:t,void 0),r=m?new w(t):new w;return void 0!==n&&i(r,"message",n),d(r,S,r.stack,2),this&&a(_,this)&&c(r,this,S),arguments.length>g&&p(r,arguments[g]),r}));if(S.prototype=_,"Error"!==b?s?s(S,x):l(S,x,{name:!0}):h&&"stackTraceLimit"in w&&(u(S,w,"stackTraceLimit"),u(S,w,"prepareStackTrace")),l(S,w),!v)try{_.name!==b&&i(_,"name",b),_.constructor=S}catch(t){}return S}}},function(t,e,n){"use strict";var r=n(2),o=n(29);t.exports=function(t,e,n){try{return r(o(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},function(t,e,n){"use strict";var r=n(132),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw new i("Can't set "+o(t)+" as a prototype")}},function(t,e,n){"use strict";var r=n(7);t.exports=function(t){return r(t)||null===t}},function(t,e,n){"use strict";var r=n(15).f;t.exports=function(t,e,n){n in t||r(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},function(t,e,n){"use strict";var r=n(1),o=n(7),i=n(62);t.exports=function(t,e,n){var a,s;return i&&r(a=e.constructor)&&a!==n&&o(s=a.prototype)&&s!==n.prototype&&i(t,s),t}},function(t,e,n){"use strict";var r=n(93);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:r(t)}},function(t,e,n){"use strict";var r=n(137),o=n(1),i=n(16),a=n(30)("toStringTag"),s=Object,l="Arguments"===i(function(){return arguments}());t.exports=r?i:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=s(t),a))?n:l?i(e):"Object"===(r=i(e))&&o(e.callee)?"Arguments":r}},function(t,e,n){"use strict";var r={};r[n(30)("toStringTag")]="z",t.exports="[object z]"===String(r)},function(t,e,n){"use strict";var r=n(7),o=n(12);t.exports=function(t,e){r(e)&&"cause"in e&&o(t,"cause",e.cause)}},function(t,e,n){"use strict";var r=n(12),o=n(140),i=n(141),a=Error.captureStackTrace;t.exports=function(t,e,n,s){i&&(a?a(t,e):r(t,"stack",o(n,s)))}},function(t,e,n){"use strict";var r=n(2),o=Error,i=r("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(a);t.exports=function(t,e){if(l&&"string"==typeof t&&!o.prepareStackTrace)for(;e--;)t=i(t,s,"");return t}},function(t,e,n){"use strict";var r=n(3),o=n(26);t.exports=!r((function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)}))},function(t,e,n){var r=n(63),o=n(143);t.exports=function t(e,n,i,a,s){var l=-1,u=e.length;for(i||(i=o),s||(s=[]);++l0&&i(c)?n>1?t(c,n-1,i,a,s):r(s,c):a||(s[s.length]=c)}return s}},function(t,e,n){var r=n(13),o=n(36),i=n(4),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(11),o=n(10);t.exports=function(t){return o(t)&&"[object Arguments]"==r(t)}},function(t,e,n){var r=n(13),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[s]=n:delete t[s]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(148),o=n(204),i=n(44),a=n(4),s=n(214);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?a(t)?o(t[0],t[1]):r(t):s(t)}},function(t,e,n){var r=n(149),o=n(203),i=n(81);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(65),o=n(69);t.exports=function(t,e,n,i){var a=n.length,s=a,l=!i;if(null==t)return!s;for(t=Object(t);a--;){var u=n[a];if(l&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++a-1}},function(t,e,n){var r=n(18);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(17);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(17),o=n(37),i=n(39);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(67),o=n(161),i=n(38),a=n(68),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,f=u.hasOwnProperty,p=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:s).test(a(t))}},function(t,e,n){var r,o=n(162),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(6)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(165),o=n(17),i=n(37);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(166),o=n(167),i=n(168),a=n(169),s=n(170);function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(71),o=n(226),i=n(231),a=n(72),s=n(232),l=n(40);t.exports=function(t,e,n){var u=-1,c=o,f=t.length,p=!0,d=[],h=d;if(n)p=!1,c=i;else if(f>=200){var v=e?null:s(t);if(v)return l(v);p=!1,c=a,h=new r}else h=e?[]:d;t:for(;++u-1}},function(t,e,n){var r=n(228),o=n(229),i=n(230);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++i=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 ut,ct="undefined"!=typeof Symbol&<(Symbol)&&"undefined"!=typeof Reflect&<(Reflect.ownKeys);ut="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((u=t(u,"".concat(n||"","_").concat(r)))[0])&&Kt(f)&&(p[c]=vt(f.text+u[0].text),u.shift()),p.push.apply(p,u)):l(u)?Kt(f)?p[c]=vt(f.text+u):""!==u&&p.push(vt(u)):Kt(u)&&Kt(f)?p[c]=vt(f.text+u.text):(s(e._isVList)&&a(u.tag)&&i(u.key)&&a(n)&&(u.key="__vlist".concat(n,"_").concat(r,"__")),p.push(u)));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 u in i={},e)e[u]&&"$"!==u[0]&&(i[u]=me(t,n,u,e[u]))}else i={};for(var c in n)c in i||(i[c]=ge(n,c));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 Bt(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||ct&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function ke(t){if(o(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(un=function(){return cn.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=un(),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,Fe(pn))}}function hn(t,e){if(t){for(var n=Object.create(null),r=ct?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),Fn(e),function(t){var e=t.$options.provide;if(e){var n=u(e)?e.call(t):e;if(!c(n))return;for(var r=Ht(t),o=ct?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=Fe,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),u(t.install)?t.install.apply(t,n):u(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&&u(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):""},ur=function(t){return null==t||!1===t};function cr(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)?ur(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 ur(e)||"false"===e?"false":"contenteditable"===t&&or(e)?e:"true"}(e,n)):sr(e)?ur(n)?t.removeAttributeNS(ar,lr(e)):t.setAttributeNS(ar,e,n):Ir(t,e,n)}function Ir(t,e,n){if(ur(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 Dr={create:Rr,update:Rr};function Fr(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=cr(e),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Br,qr={create:Fr,update:Fr};function Nr(t,e,n){var r=Br;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)}}Br.addEventListener(t,e,ot?{capture:n,passive:r}:n)}function Vr(t,e,n,r){(r||Br).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||{};Br=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),Br=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||{},u=e.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=e.data.domProps=A({},u)),l)n in u||(o[n]="");for(n in u){if(r=u[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 c=i(r)?"":String(r);Kr(o,c)&&(o.value=c)}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(uo).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(uo).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),co(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,u=function(){t.removeEventListener(s,c),n()},c=function(e){e.target===t&&++l>=a&&u()};setTimeout((function(){l0&&(n="transition",c=a,f=i.length):"animation"===e?u>0&&(n="animation",c=u,f=l.length):f=(n=(c=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:c,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={},u=t.modules,c=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,u):a(g)?(a(t.text)&&c.setTextContent(f,""),w(f,null,g,0,g.length-1,n)):a(v)?x(v,0,v.length-1):a(t.text)&&c.setTextContent(f,""):t.text!==e.text&&c.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(Fo(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Do(t,e){return e.every((function(e){return!I(e,t)}))}function Fo(t){return"_value"in t?t._value:t.value}function Bo(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),u=this._vnode,c=Wo(u);if(i.data.directives&&i.data.directives.some(Ko)&&(i.data.show=!0),c&&c.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,c)&&!he(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var f=c.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 u;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||""),u=e&&e.path||"/",c=l.path?Si(l.path,u,n||o.append):u,f=function(t,e,n){void 0===e&&(e={});var r,o=n||ci;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(ui):ui(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:c,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={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==c?"router-link-exact-active":c,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(c.path,s.params),l(c,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,u=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()})),c=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(u,c)}catch(t){c(t)}if(l)if("function"==typeof l.then)l.then(u,c);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,c)}}})),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,u=o.matched.length-1;if(yi(t,o)&&l===u&&t.matched[l]===o.matched[u])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 c=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(Da(),(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){Ba(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;Da()!==e&&(t?Ba(e):qa(e))},e.prototype.getCurrentLocation=function(){return Da()},e}($a);function Ia(){var t=Da();return"/"===t.charAt(0)||(qa("/"+t),!1)}function Da(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Fa(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Ba(t){va?ma(Fa(t)):window.location.hash=t}function qa(t){va?ga(Fa(t)):window.location.replace(Fa(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(17)]).then(n.bind(null,417)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,256)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(35)]).then(n.bind(null,244)),"components/Home":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,287)),"components/NavLink":()=>n.e(43).then(n.bind(null,243)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,269)),"components/Navbar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,414)),"components/Page":()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,288)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,271)),"components/PageNav":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,272)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,289)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(36)]).then(n.bind(null,290)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,270)),"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,423)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,418)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,419)),"layouts/404":()=>n.e(7).then(n.bind(null,420)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,421)),NotFound:()=>n.e(7).then(n.bind(null,420)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,421))},Ga={"v-347fe277":()=>n.e(12).then(n.bind(null,424)),"v-96f26938":()=>n.e(26).then(n.bind(null,425)),"v-06f4d0aa":()=>n.e(21).then(n.bind(null,426)),"v-b936cd92":()=>n.e(10).then(n.bind(null,427)),"v-73cb197f":()=>n.e(16).then(n.bind(null,428)),"v-095f6301":()=>n.e(44).then(n.bind(null,429)),"v-e115e73a":()=>n.e(50).then(n.bind(null,430)),"v-08357a02":()=>n.e(13).then(n.bind(null,431)),"v-2db1db37":()=>n.e(51).then(n.bind(null,432)),"v-117d8812":()=>n.e(52).then(n.bind(null,433)),"v-f3fbff12":()=>n.e(53).then(n.bind(null,434)),"v-01bee537":()=>n.e(37).then(n.bind(null,435)),"v-5e0eec87":()=>n.e(45).then(n.bind(null,436)),"v-56e06d4d":()=>n.e(54).then(n.bind(null,437)),"v-204c7852":()=>n.e(24).then(n.bind(null,438)),"v-0c47cd52":()=>n.e(56).then(n.bind(null,439)),"v-412f01af":()=>n.e(27).then(n.bind(null,440)),"v-cf2ed192":()=>n.e(38).then(n.bind(null,441)),"v-b5aec012":()=>n.e(46).then(n.bind(null,442)),"v-29f81312":()=>n.e(55).then(n.bind(null,443)),"v-eab731fa":()=>n.e(28).then(n.bind(null,444)),"v-0d1e8e9e":()=>n.e(57).then(n.bind(null,445)),"v-2fe62c26":()=>n.e(29).then(n.bind(null,446)),"v-60051d17":()=>n.e(30).then(n.bind(null,447)),"v-aa1cc612":()=>n.e(58).then(n.bind(null,448)),"v-6e14dcd7":()=>n.e(31).then(n.bind(null,449)),"v-303bd052":()=>n.e(59).then(n.bind(null,450)),"v-7df515d2":()=>n.e(39).then(n.bind(null,451)),"v-2c32e617":()=>n.e(40).then(n.bind(null,452)),"v-27c660f7":()=>n.e(32).then(n.bind(null,453)),"v-246d3f77":()=>n.e(60).then(n.bind(null,454)),"v-2b7b8f3b":()=>n.e(61).then(n.bind(null,455)),"v-0d819412":()=>n.e(62).then(n.bind(null,456)),"v-288d7b9e":()=>n.e(63).then(n.bind(null,457)),"v-3043a2b9":()=>n.e(41).then(n.bind(null,458)),"v-bbb970d2":()=>n.e(19).then(n.bind(null,459)),"v-20c05837":()=>n.e(47).then(n.bind(null,460)),"v-131b9357":()=>n.e(42).then(n.bind(null,461)),"v-a9ffe0fe":()=>n.e(48).then(n.bind(null,462)),"v-749f316f":()=>n.e(33).then(n.bind(null,463)),"v-947f362a":()=>n.e(34).then(n.bind(null,464)),"v-b6c52792":()=>n.e(65).then(n.bind(null,465)),"v-21b208b7":()=>n.e(64).then(n.bind(null,466)),"v-2494b4d7":()=>n.e(66).then(n.bind(null,467)),"v-2566e137":()=>n.e(67).then(n.bind(null,468))};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 us(t){return es(rs,t)}function cs(t){return es(as,t)}function fs(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!cs(t)&&us(t)){const e=await us(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-347fe277",path:"/integrate/aws_iot.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-347fe277").then(n)}},{name:"v-96f26938",path:"/",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-96f26938").then(n)}},{path:"/index.html",redirect:"/"},{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-e115e73a",path:"/participate/adding-protocols.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-e115e73a").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-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-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-56e06d4d",path:"/prerequisites/broker.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-56e06d4d").then(n)}},{name:"v-204c7852",path:"/prerequisites/devices.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-204c7852").then(n)}},{name:"v-0c47cd52",path:"/setitup/actuators.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-0c47cd52").then(n)}},{name:"v-412f01af",path:"/prerequisites/M5.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-412f01af").then(n)}},{name:"v-cf2ed192",path:"/setitup/ble.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-cf2ed192").then(n)}},{name:"v-b5aec012",path:"/setitup/gsm.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b5aec012").then(n)}},{name:"v-29f81312",path:"/prerequisites/parts.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-29f81312").then(n)}},{name:"v-eab731fa",path:"/setitup/ir.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-eab731fa").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-60051d17",path:"/setitup/rs232.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-60051d17").then(n)}},{name:"v-aa1cc612",path:"/setitup/sensors.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-aa1cc612").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-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-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-288d7b9e",path:"/use/displays.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-288d7b9e").then(n)}},{name:"v-3043a2b9",path:"/use/boards.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-3043a2b9").then(n)}},{name:"v-bbb970d2",path:"/use/ble.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-bbb970d2").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-b6c52792",path:"/use/rs232.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b6c52792").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)}},{path:"*",component:As}],Ls={title:"OpenMQTTGateway DEVELOPMENT SHA:33d7e6 TEST ONLY",description:"One gateway, many technologies: MQTT gateway for ESP8266, ESP32, Sonoff RF Bridge or Arduino with bidirectional 433mhz/315mhz/868mhz, Infrared communications, BLE, beacons detection, mi flora / mi jia / LYWSD02/ Mi Scale compatibility, SMS & LORA.",base:"/dev/",headTags:[["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:"icon",href:"/dev/img/Openmqttgateway_logo_mini.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:"apple-touch-icon",sizes:"180x180",href:"/dev/apple-touch-icon.png"}],["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:[{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"Auto discovery",slug:"auto-discovery"},{level:2,title:"RTL_433 auto discovery specificity",slug:"rtl-433-auto-discovery-specificity"},{level:2,title:"MQTT Device Trigger and RF",slug:"mqtt-device-trigger-and-rf"},{level:2,title:"Manual integration examples",slug:"manual-integration-examples"},{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:"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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"Community participation",frontmatter:{},regularPath:"/participate/community.html",relativePath:"participate/community.md",key:"v-2db1db37",path:"/participate/community.html",lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"Supporting the project",frontmatter:{},regularPath:"/participate/support.html",relativePath:"participate/support.md",key:"v-f3fbff12",path:"/participate/support.html",lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"Boards",frontmatter:{},regularPath:"/prerequisites/board.html",relativePath:"prerequisites/board.md",key:"v-01bee537",path:"/prerequisites/board.html",lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"Controller",frontmatter:{},regularPath:"/prerequisites/controller.html",relativePath:"prerequisites/controller.md",key:"v-5e0eec87",path:"/prerequisites/controller.html",lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"Broker",frontmatter:{},regularPath:"/prerequisites/broker.html",relativePath:"prerequisites/broker.md",key:"v-56e06d4d",path:"/prerequisites/broker.html",lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"Arduino Hardware setup",slug:"arduino-hardware-setup"},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"Arduino Hardware setup",slug:"arduino-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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"RS232 gateway",frontmatter:{},regularPath:"/setitup/rs232.html",relativePath:"setitup/rs232.md",key:"v-60051d17",path:"/setitup/rs232.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"Arduino Hardware setup",slug:"arduino-hardware-setup"},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:2,title:"ESP8266",slug:"esp8266"}],lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"Configure & Upload with Arduino IDE",slug:"configure-upload-with-arduino-ide"},{level:2,title:"API",slug:"api"}],lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"(Option 4) Build from the web",frontmatter:{},regularPath:"/upload/gitpod.html",relativePath:"upload/gitpod.md",key:"v-2c32e617",path:"/upload/gitpod.html",lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"Exception seen on serial monitor:",slug:"exception-seen-on-serial-monitor"},{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:"You don't see the messages appearing on your broker but they appears on the serial monitor",slug:"you-don-t-see-the-messages-appearing-on-your-broker-but-they-appears-on-the-serial-monitor"},{level:2,title:"Your Arduino with w5100 Ethernet shield does not connect to network until you press Reset button",slug:"your-arduino-with-w5100-ethernet-shield-does-not-connect-to-network-until-you-press-reset-button"},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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"},{level:3,title:"Low power mode for M5 boards",slug:"low-power-mode-for-m5-boards"},{level:3,title:"Low power mode (deepSleep) for ESP8266 & ESP32 boards",slug:"low-power-mode-deepsleep-for-esp8266-esp32-boards"}],lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"BLE ESP32 gateway",frontmatter:{title:"BLE ESP32 gateway",description:"Versatile BLE gateway that scans and decodes data from various Bluetooth 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:"The first plug-and-play OpenMQTTGateway BLE gateway and Smart Plug!",slug:"the-first-plug-and-play-openmqttgateway-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 tracker devices for Presence detection",slug:"receiving-signals-from-ble-tracker-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:"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:"Example command to set the SwitchBot state to ON:",slug:"example-command-to-set-the-switchbot-state-to-on"},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"AutoDiscovery compatible with OpenHAB (default: false)",slug:"autodiscovery-compatible-with-openhab-default-false"},{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 and or gateway name",slug:"change-the-mqtt-main-topic-and-or-gateway-name"},{level:2,title:"Switching brokers and using self signed and client certificates",slug:"switching-brokers-and-using-self-signed-and-client-certificates"},{level:2,title:"Change the LED indicator brightness",slug:"change-the-led-indicator-brightness"}],lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"Receiving data from RF signal",slug:"receiving-data-from-rf-signal"},{level:3,title:"Disabling Transmit function to safe a PIN",slug:"disabling-transmit-function-to-safe-a-pin"},{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"},{level:3,title:"Repeat the RF signal OpenMQTTGateway receive",slug:"repeat-the-rf-signal-openmqttgateway-receive"},{level:3,title:"Repeat the RF signal several times",slug:"repeat-the-rf-signal-several-times"},{level:3,title:"Set Transmit and Receive Frequency and Transmit Power of CC1101 Transceiver",slug:"set-transmit-and-receive-frequency-and-transmit-power-of-cc1101-transceiver"},{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-2"},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{title:"RS232 gateway",frontmatter:{},regularPath:"/use/rs232.html",relativePath:"use/rs232.md",key:"v-b6c52792",path:"/use/rs232.html",headers:[{level:2,title:"Sending an RS232 message",slug:"sending-an-rs232-message"},{level:2,title:"Receiving an RS232 message",slug:"receiving-an-rs232-message"},{level:3,title:"Single MQTT message mode (default)",slug:"single-mqtt-message-mode-default"},{level:3,title:"JSON mode",slug:"json-mode"}],lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4},{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:"Logging",slug:"logging"}],lastUpdated:"1/29/2024, 10:11:30 PM",lastUpdatedTimestamp:170656629e4}],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/rs232","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/rs232","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(49).then(n.bind(null,422))),Qn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,423))),Qn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,418))),Qn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,419)));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 Ds 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(Ds.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:us,getVueComponent:cs});var Fs={install(t){const e=new Ds;t.$vuepress=e,t.prototype.$vuepress=e}};function Bs(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(Fs),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(Bs(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Bs(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Bs(t,o)?r(o):Bs(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 u(t){return"function"==typeof t}function c(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,T=k((function(t){return t.replace(O,(function(t,e){return e?e.toUpperCase():""}))})),C=k((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),E=/\B([A-Z])/g,P=k((function(t){return t.replace(E,"-$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 ut,ct="undefined"!=typeof Symbol&<(Symbol)&&"undefined"!=typeof Reflect&<(Reflect.ownKeys);ut="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((u=t(u,"".concat(n||"","_").concat(r)))[0])&&Kt(f)&&(p[c]=vt(f.text+u[0].text),u.shift()),p.push.apply(p,u)):l(u)?Kt(f)?p[c]=vt(f.text+u):""!==u&&p.push(vt(u)):Kt(u)&&Kt(f)?p[c]=vt(f.text+u.text):(s(e._isVList)&&a(u.tag)&&i(u.key)&&a(n)&&(u.key="__vlist".concat(n,"_").concat(r,"__")),p.push(u)));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 u in i={},e)e[u]&&"$"!==u[0]&&(i[u]=me(t,n,u,e[u]))}else i={};for(var c in n)c in i||(i[c]=ge(n,c));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 Bt(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||ct&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function ke(t){if(o(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(un=function(){return cn.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=un(),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,Fe(pn))}}function hn(t,e){if(t){for(var n=Object.create(null),r=ct?Reflect.ownKeys(t):Object.keys(t),o=0;o-1)if(i&&!S(o,"default"))a=!1;else if(""===a||a===P(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&&(Et(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),Et(!0))}(e),Fn(e),function(t){var e=t.$options.provide;if(e){var n=u(e)?e.call(t):e;if(!c(n))return;for(var r=Ht(t),o=ct?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=Fe,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),u(t.install)?t.install.apply(t,n):u(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&&u(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):""},ur=function(t){return null==t||!1===t};function cr(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)?ur(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 ur(e)||"false"===e?"false":"contenteditable"===t&&or(e)?e:"true"}(e,n)):sr(e)?ur(n)?t.removeAttributeNS(ar,lr(e)):t.setAttributeNS(ar,e,n):Ir(t,e,n)}function Ir(t,e,n){if(ur(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 Dr={create:Rr,update:Rr};function Fr(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=cr(e),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Br,qr={create:Fr,update:Fr};function Nr(t,e,n){var r=Br;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)}}Br.addEventListener(t,e,ot?{capture:n,passive:r}:n)}function Vr(t,e,n,r){(r||Br).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||{};Br=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),Br=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||{},u=e.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=e.data.domProps=A({},u)),l)n in u||(o[n]="");for(n in u){if(r=u[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 c=i(r)?"":String(r);Kr(o,c)&&(o.value=c)}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(P(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(uo).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(uo).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),co(t,e))}function So(t,e){t._transitionClasses&&_(t._transitionClasses,e),fo(t,e)}function ko(t,e,n){var r=To(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?go:bo,l=0,u=function(){t.removeEventListener(s,c),n()},c=function(e){e.target===t&&++l>=a&&u()};setTimeout((function(){l0&&(n="transition",c=a,f=i.length):"animation"===e?u>0&&(n="animation",c=u,f=l.length):f=(n=(c=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:c,propCount:f,hasTransform:"transition"===n&&Oo.test(r[mo+"Property"])}}function Co(t,e){for(;t.length1}function Mo(t,e){!0!==e.data.show&&Po(e)}var Lo=function(t){var e,n,r={},u=t.modules,c=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,u):a(g)?(a(t.text)&&c.setTextContent(f,""),w(f,null,g,0,g.length-1,n)):a(v)?x(v,0,v.length-1):a(t.text)&&c.setTextContent(f,""):t.text!==e.text&&c.setTextContent(f,e.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(t,e)}}}function T(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(Fo(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Do(t,e){return e.every((function(e){return!I(e,t)}))}function Fo(t){return"_value"in t?t._value:t.value}function Bo(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,Po(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?Po(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[T(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),u=this._vnode,c=Wo(u);if(i.data.directives&&i.data.directives.some(Ko)&&(i.data.show=!0),c&&c.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,c)&&!he(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var f=c.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 u;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||""),u=e&&e.path||"/",c=l.path?Si(l.path,u,n||o.append):u,f=function(t,e,n){void 0===e&&(e={});var r,o=n||ci;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(ui):ui(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:c,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={},u=n.options.linkActiveClass,c=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==c?"router-link-exact-active":c,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(c.path,s.params),l(c,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 Ta(t){return function(e,n,r){var o=!1,i=0,a=null;Ca(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var l,u=ja((function(e){var o;((o=e).__esModule||Pa&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:zi.extend(e),n.components[s]=e,--i<=0&&r()})),c=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(u,c)}catch(t){c(t)}if(l)if("function"==typeof l.then)l.then(u,c);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,c)}}})),o||r()}}function Ca(t,e){return Ea(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Ea(t){return Array.prototype.concat.apply([],t)}var Pa="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=Ca(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 Ea(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,u=o.matched.length-1;if(yi(t,o)&&l===u&&t.matched[l]===o.matched[u])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 c=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(Da(),(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){Ba(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;Da()!==e&&(t?Ba(e):qa(e))},e.prototype.getCurrentLocation=function(){return Da()},e}($a);function Ia(){var t=Da();return"/"===t.charAt(0)||(qa("/"+t),!1)}function Da(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Fa(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Ba(t){va?ma(Fa(t)):window.location.hash=t}function qa(t){va?ga(Fa(t)):window.location.replace(Fa(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(17)]).then(n.bind(null,417)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,256)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(35)]).then(n.bind(null,244)),"components/Home":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,287)),"components/NavLink":()=>n.e(43).then(n.bind(null,243)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(15)]).then(n.bind(null,269)),"components/Navbar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,414)),"components/Page":()=>Promise.all([n.e(0),n.e(14)]).then(n.bind(null,288)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,271)),"components/PageNav":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,272)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,289)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(36)]).then(n.bind(null,290)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,270)),"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,423)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,418)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,419)),"layouts/404":()=>n.e(7).then(n.bind(null,420)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,421)),NotFound:()=>n.e(7).then(n.bind(null,420)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2)]).then(n.bind(null,421))},Ga={"v-96f26938":()=>n.e(26).then(n.bind(null,424)),"v-06f4d0aa":()=>n.e(21).then(n.bind(null,425)),"v-347fe277":()=>n.e(12).then(n.bind(null,426)),"v-b936cd92":()=>n.e(10).then(n.bind(null,427)),"v-095f6301":()=>n.e(44).then(n.bind(null,428)),"v-73cb197f":()=>n.e(16).then(n.bind(null,429)),"v-e115e73a":()=>n.e(50).then(n.bind(null,430)),"v-2db1db37":()=>n.e(51).then(n.bind(null,431)),"v-08357a02":()=>n.e(13).then(n.bind(null,432)),"v-f3fbff12":()=>n.e(53).then(n.bind(null,433)),"v-412f01af":()=>n.e(27).then(n.bind(null,434)),"v-117d8812":()=>n.e(52).then(n.bind(null,435)),"v-01bee537":()=>n.e(37).then(n.bind(null,436)),"v-56e06d4d":()=>n.e(54).then(n.bind(null,437)),"v-5e0eec87":()=>n.e(45).then(n.bind(null,438)),"v-29f81312":()=>n.e(55).then(n.bind(null,439)),"v-204c7852":()=>n.e(24).then(n.bind(null,440)),"v-0c47cd52":()=>n.e(56).then(n.bind(null,441)),"v-cf2ed192":()=>n.e(38).then(n.bind(null,442)),"v-eab731fa":()=>n.e(28).then(n.bind(null,443)),"v-b5aec012":()=>n.e(46).then(n.bind(null,444)),"v-0d1e8e9e":()=>n.e(57).then(n.bind(null,445)),"v-60051d17":()=>n.e(30).then(n.bind(null,446)),"v-2fe62c26":()=>n.e(29).then(n.bind(null,447)),"v-7df515d2":()=>n.e(39).then(n.bind(null,448)),"v-6e14dcd7":()=>n.e(31).then(n.bind(null,449)),"v-aa1cc612":()=>n.e(58).then(n.bind(null,450)),"v-303bd052":()=>n.e(59).then(n.bind(null,451)),"v-2c32e617":()=>n.e(40).then(n.bind(null,452)),"v-27c660f7":()=>n.e(32).then(n.bind(null,453)),"v-246d3f77":()=>n.e(60).then(n.bind(null,454)),"v-2b7b8f3b":()=>n.e(61).then(n.bind(null,455)),"v-0d819412":()=>n.e(62).then(n.bind(null,456)),"v-3043a2b9":()=>n.e(41).then(n.bind(null,457)),"v-288d7b9e":()=>n.e(63).then(n.bind(null,458)),"v-bbb970d2":()=>n.e(19).then(n.bind(null,459)),"v-20c05837":()=>n.e(47).then(n.bind(null,460)),"v-947f362a":()=>n.e(34).then(n.bind(null,461)),"v-a9ffe0fe":()=>n.e(48).then(n.bind(null,462)),"v-131b9357":()=>n.e(42).then(n.bind(null,463)),"v-749f316f":()=>n.e(33).then(n.bind(null,464)),"v-21b208b7":()=>n.e(64).then(n.bind(null,465)),"v-b6c52792":()=>n.e(65).then(n.bind(null,466)),"v-2494b4d7":()=>n.e(66).then(n.bind(null,467)),"v-2566e137":()=>n.e(67).then(n.bind(null,468))};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 us(t){return es(rs,t)}function cs(t){return es(as,t)}function fs(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!cs(t)&&us(t)){const e=await us(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),Ts={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})}},Cs=n(89),Es=n.n(Cs),Ps=[gs,Ss,Ts,{mounted(){Es.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",Ps);const Ms=[{name:"v-96f26938",path:"/",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-96f26938").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-06f4d0aa",path:"/integrate/home_assistant.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-06f4d0aa").then(n)}},{name:"v-347fe277",path:"/integrate/aws_iot.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-347fe277").then(n)}},{name:"v-b936cd92",path:"/integrate/jeedom.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b936cd92").then(n)}},{name:"v-095f6301",path:"/integrate/openhab2.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-095f6301").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-08357a02",path:"/integrate/openhab3.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-08357a02").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-117d8812",path:"/participate/development.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-117d8812").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-204c7852",path:"/prerequisites/devices.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-204c7852").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-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-60051d17",path:"/setitup/rs232.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-60051d17").then(n)}},{name:"v-2fe62c26",path:"/setitup/rf.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-2fe62c26").then(n)}},{name:"v-7df515d2",path:"/upload/advanced-configuration.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-7df515d2").then(n)}},{name:"v-6e14dcd7",path:"/upload/binaries.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-6e14dcd7").then(n)}},{name:"v-aa1cc612",path:"/setitup/sensors.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-aa1cc612").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-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-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-bbb970d2",path:"/use/ble.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-bbb970d2").then(n)}},{name:"v-20c05837",path:"/use/gateway.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-20c05837").then(n)}},{name:"v-947f362a",path:"/use/rf.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-947f362a").then(n)}},{name:"v-a9ffe0fe",path:"/use/ir.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-a9ffe0fe").then(n)}},{name:"v-131b9357",path:"/use/gsm.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-131b9357").then(n)}},{name:"v-749f316f",path:"/use/lora.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-749f316f").then(n)}},{name:"v-21b208b7",path:"/use/rfm69.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-21b208b7").then(n)}},{name:"v-b6c52792",path:"/use/rs232.html",component:As,beforeEnter:(t,e,n)=>{fs("Layout","v-b6c52792").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)}},{path:"*",component:As}],Ls={title:"OpenMQTTGateway DEVELOPMENT SHA:052967 TEST ONLY",description:"One gateway, many technologies: MQTT gateway for ESP8266, ESP32, Sonoff RF Bridge or Arduino with bidirectional 433mhz/315mhz/868mhz, Infrared communications, BLE, beacons detection, mi flora / mi jia / LYWSD02/ Mi Scale compatibility, SMS & LORA.",base:"/dev/",headTags:[["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:"icon",href:"/dev/img/Openmqttgateway_logo_mini.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:"apple-touch-icon",sizes:"180x180",href:"/dev/apple-touch-icon.png"}],["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:"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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"Auto discovery",slug:"auto-discovery"},{level:2,title:"RTL_433 auto discovery specificity",slug:"rtl-433-auto-discovery-specificity"},{level:2,title:"MQTT Device Trigger and RF",slug:"mqtt-device-trigger-and-rf"},{level:2,title:"Manual integration examples",slug:"manual-integration-examples"},{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:"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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"Community participation",frontmatter:{},regularPath:"/participate/community.html",relativePath:"participate/community.md",key:"v-2db1db37",path:"/participate/community.html",lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"Supporting the project",frontmatter:{},regularPath:"/participate/support.html",relativePath:"participate/support.md",key:"v-f3fbff12",path:"/participate/support.html",lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"Boards",frontmatter:{},regularPath:"/prerequisites/board.html",relativePath:"prerequisites/board.md",key:"v-01bee537",path:"/prerequisites/board.html",lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"Broker",frontmatter:{},regularPath:"/prerequisites/broker.html",relativePath:"prerequisites/broker.md",key:"v-56e06d4d",path:"/prerequisites/broker.html",lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"Controller",frontmatter:{},regularPath:"/prerequisites/controller.html",relativePath:"prerequisites/controller.md",key:"v-5e0eec87",path:"/prerequisites/controller.html",lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"Arduino Hardware setup",slug:"arduino-hardware-setup"},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"RS232 gateway",frontmatter:{},regularPath:"/setitup/rs232.html",relativePath:"setitup/rs232.md",key:"v-60051d17",path:"/setitup/rs232.html",headers:[{level:2,title:"Compatible parts",slug:"compatible-parts"},{level:2,title:"Pinout",slug:"pinout"},{level:2,title:"Arduino Hardware setup",slug:"arduino-hardware-setup"},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"Arduino Hardware setup",slug:"arduino-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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:2,title:"ESP8266",slug:"esp8266"}],lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"Configure & Upload with Arduino IDE",slug:"configure-upload-with-arduino-ide"},{level:2,title:"API",slug:"api"}],lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"(Option 4) Build from the web",frontmatter:{},regularPath:"/upload/gitpod.html",relativePath:"upload/gitpod.md",key:"v-2c32e617",path:"/upload/gitpod.html",lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"Exception seen on serial monitor:",slug:"exception-seen-on-serial-monitor"},{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:"You don't see the messages appearing on your broker but they appears on the serial monitor",slug:"you-don-t-see-the-messages-appearing-on-your-broker-but-they-appears-on-the-serial-monitor"},{level:2,title:"Your Arduino with w5100 Ethernet shield does not connect to network until you press Reset button",slug:"your-arduino-with-w5100-ethernet-shield-does-not-connect-to-network-until-you-press-reset-button"},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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"},{level:3,title:"Low power mode for M5 boards",slug:"low-power-mode-for-m5-boards"},{level:3,title:"Low power mode (deepSleep) for ESP8266 & ESP32 boards",slug:"low-power-mode-deepsleep-for-esp8266-esp32-boards"}],lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"BLE ESP32 gateway",frontmatter:{title:"BLE ESP32 gateway",description:"Versatile BLE gateway that scans and decodes data from various Bluetooth 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:"The first plug-and-play OpenMQTTGateway BLE gateway and Smart Plug!",slug:"the-first-plug-and-play-openmqttgateway-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 tracker devices for Presence detection",slug:"receiving-signals-from-ble-tracker-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:"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:"Example command to set the SwitchBot state to ON:",slug:"example-command-to-set-the-switchbot-state-to-on"},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"AutoDiscovery compatible with OpenHAB (default: false)",slug:"autodiscovery-compatible-with-openhab-default-false"},{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 and or gateway name",slug:"change-the-mqtt-main-topic-and-or-gateway-name"},{level:2,title:"Switching brokers and using self signed and client certificates",slug:"switching-brokers-and-using-self-signed-and-client-certificates"},{level:2,title:"Change the LED indicator brightness",slug:"change-the-led-indicator-brightness"}],lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"Receiving data from RF signal",slug:"receiving-data-from-rf-signal"},{level:3,title:"Disabling Transmit function to safe a PIN",slug:"disabling-transmit-function-to-safe-a-pin"},{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"},{level:3,title:"Repeat the RF signal OpenMQTTGateway receive",slug:"repeat-the-rf-signal-openmqttgateway-receive"},{level:3,title:"Repeat the RF signal several times",slug:"repeat-the-rf-signal-several-times"},{level:3,title:"Set Transmit and Receive Frequency and Transmit Power of CC1101 Transceiver",slug:"set-transmit-and-receive-frequency-and-transmit-power-of-cc1101-transceiver"},{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-2"},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{title:"RS232 gateway",frontmatter:{},regularPath:"/use/rs232.html",relativePath:"use/rs232.md",key:"v-b6c52792",path:"/use/rs232.html",headers:[{level:2,title:"Sending an RS232 message",slug:"sending-an-rs232-message"},{level:2,title:"Receiving an RS232 message",slug:"receiving-an-rs232-message"},{level:3,title:"Single MQTT message mode (default)",slug:"single-mqtt-message-mode-default"},{level:3,title:"JSON mode",slug:"json-mode"}],lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4},{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:"Logging",slug:"logging"}],lastUpdated:"1/29/2024, 11:05:20 AM",lastUpdatedTimestamp:170652632e4}],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/rs232","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/rs232","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(49).then(n.bind(null,422))),Qn.component("Badge",()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,423))),Qn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,418))),Qn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,419)));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 Ds 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(Ds.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:us,getVueComponent:cs});var Fs={install(t){const e=new Ds;t.$vuepress=e,t.prototype.$vuepress=e}};function Bs(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(Fs),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(Bs(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Bs(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Bs(t,o)?r(o):Bs(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 692b77421e..49ec37480f 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/avatto-bakeey-ir-firmware.bin b/dev/firmware_build/avatto-bakeey-ir-firmware.bin index 3d39b693fd..17a61da5be 100644 Binary files a/dev/firmware_build/avatto-bakeey-ir-firmware.bin and b/dev/firmware_build/avatto-bakeey-ir-firmware.bin differ diff --git a/dev/firmware_build/esp32-lolin32lite-ble-firmware.bin b/dev/firmware_build/esp32-lolin32lite-ble-firmware.bin index 573e9082ec..5f277edf19 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 bf284b8d6b..ef0172b4c7 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 a876d66c11..97812b8078 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 0187d4ca79..a743fa3830 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 19c3ada280..48f1bbeaa9 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 c3fc631501..77ce01c395 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 701a204cd8..35df4666fb 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 4cd1764b90..1d0c5d9258 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 78536f0752..26aa93d23e 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 2d604bf63d..7ac17a15f3 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 de5559521c..3c53e9a2f2 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 e9c5ad9972..0fc996005e 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 d7d74346fc..2af7c94e66 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 f237b28869..13f29581ed 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 d85dea06b0..23a914f73f 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 254f0d4298..367829c002 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 de804a4842..70f9cea274 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 6c1bef1a1d..a5ff12e91a 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 848e94ddb7..9e83ee36c1 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/esp32dev-ble-aws-firmware.bin b/dev/firmware_build/esp32dev-ble-aws-firmware.bin index 8a8da98cb9..6a4844a248 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-datatest-firmware.bin b/dev/firmware_build/esp32dev-ble-datatest-firmware.bin index 244ddf37eb..23515ad605 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 65c383debe..00f9e73aa6 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-mqtt-undecoded-firmware.bin b/dev/firmware_build/esp32dev-ble-mqtt-undecoded-firmware.bin index ecfcbe936b..3cf24fa4d6 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 df835afe9f..e00cd3ced3 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 1f58338354..89ef7a203e 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 42980868a8..7be66d5cf4 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 70b3a66292..913e899d7d 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 67aed735ba..f3dda3b0f6 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 44eb25758a..147cc6327b 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 b9039fabb4..f6b9a2bab9 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 9a77786457..aaafa940cb 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 9f59ce9d7c..2155346669 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-somfy-cc1101-firmware.bin b/dev/firmware_build/esp32dev-somfy-cc1101-firmware.bin index a63f49124f..8b6ef1e55c 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 b24d2fd67b..929e509895 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 ec7be79915..5ca585ae49 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 0cbf2fe402..fcb188e311 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 625fd9bb32..c9b6ee6594 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 791e3441d2..74761c5d6c 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/heltec-ble-firmware.bin b/dev/firmware_build/heltec-ble-firmware.bin index 6ba49fd441..e0ed24194b 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 7dcd674c39..d59799a214 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 18a9382b7d..fe1c24de8c 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 77b2d83bfe..d4df735801 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/latest_version_dev.json b/dev/firmware_build/latest_version_dev.json index 9664b021c7..798d995bef 100644 --- a/dev/firmware_build/latest_version_dev.json +++ b/dev/firmware_build/latest_version_dev.json @@ -1,4 +1,4 @@ { - "latest_version": "33d7e6", + "latest_version": "052967", "title": "OpenMQTTGateway Nightly (TEST ONLY)" } \ No newline at end of file diff --git a/dev/firmware_build/lilygo-ble-firmware.bin b/dev/firmware_build/lilygo-ble-firmware.bin index 879d5b247c..19a6889c66 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 5aea898c6b..01843e3a82 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 80ebd18a68..fb7c49e57e 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/nodemcuv2-2g-firmware.bin b/dev/firmware_build/nodemcuv2-2g-firmware.bin index e8e1243a7a..7d9138a5f9 100644 Binary files a/dev/firmware_build/nodemcuv2-2g-firmware.bin and b/dev/firmware_build/nodemcuv2-2g-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-ir-firmware.bin b/dev/firmware_build/nodemcuv2-ir-firmware.bin index abc0b5528f..ea57d743e0 100644 Binary files a/dev/firmware_build/nodemcuv2-ir-firmware.bin and b/dev/firmware_build/nodemcuv2-ir-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-pilight-firmware.bin b/dev/firmware_build/nodemcuv2-pilight-firmware.bin index fbf200949e..de29767a3e 100644 Binary files a/dev/firmware_build/nodemcuv2-pilight-firmware.bin and b/dev/firmware_build/nodemcuv2-pilight-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-rf-cc1101-firmware.bin b/dev/firmware_build/nodemcuv2-rf-cc1101-firmware.bin index 52a955d5af..422dbd542b 100644 Binary files a/dev/firmware_build/nodemcuv2-rf-cc1101-firmware.bin and b/dev/firmware_build/nodemcuv2-rf-cc1101-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-rf-firmware.bin b/dev/firmware_build/nodemcuv2-rf-firmware.bin index 3d46300c65..bd851fa45f 100644 Binary files a/dev/firmware_build/nodemcuv2-rf-firmware.bin and b/dev/firmware_build/nodemcuv2-rf-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-rf2-cc1101-firmware.bin b/dev/firmware_build/nodemcuv2-rf2-cc1101-firmware.bin index f838390aec..859a6d19e2 100644 Binary files a/dev/firmware_build/nodemcuv2-rf2-cc1101-firmware.bin and b/dev/firmware_build/nodemcuv2-rf2-cc1101-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-rf2-firmware.bin b/dev/firmware_build/nodemcuv2-rf2-firmware.bin index 2372aae7f2..3941deab3e 100644 Binary files a/dev/firmware_build/nodemcuv2-rf2-firmware.bin and b/dev/firmware_build/nodemcuv2-rf2-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-rs232-firmware.bin b/dev/firmware_build/nodemcuv2-rs232-firmware.bin index 05a183862a..1163baeec1 100644 Binary files a/dev/firmware_build/nodemcuv2-rs232-firmware.bin and b/dev/firmware_build/nodemcuv2-rs232-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-somfy-cc1101-firmware.bin b/dev/firmware_build/nodemcuv2-somfy-cc1101-firmware.bin index 73c6b2f18a..9c896acdd9 100644 Binary files a/dev/firmware_build/nodemcuv2-somfy-cc1101-firmware.bin and b/dev/firmware_build/nodemcuv2-somfy-cc1101-firmware.bin differ diff --git a/dev/firmware_build/nodemcuv2-weatherstation-firmware.bin b/dev/firmware_build/nodemcuv2-weatherstation-firmware.bin index 90768bb36a..b1f74aa943 100644 Binary files a/dev/firmware_build/nodemcuv2-weatherstation-firmware.bin and b/dev/firmware_build/nodemcuv2-weatherstation-firmware.bin differ diff --git a/dev/firmware_build/rf-wifi-gateway-firmware.bin b/dev/firmware_build/rf-wifi-gateway-firmware.bin index ae80a340fa..63abf9d68d 100644 Binary files a/dev/firmware_build/rf-wifi-gateway-firmware.bin and b/dev/firmware_build/rf-wifi-gateway-firmware.bin differ diff --git a/dev/firmware_build/rfbridge-direct-firmware.bin b/dev/firmware_build/rfbridge-direct-firmware.bin index 6e146053a7..9b9629f412 100644 Binary files a/dev/firmware_build/rfbridge-direct-firmware.bin and b/dev/firmware_build/rfbridge-direct-firmware.bin differ diff --git a/dev/firmware_build/rfbridge-firmware.bin b/dev/firmware_build/rfbridge-firmware.bin index a1adba6ca3..29e4f56904 100644 Binary files a/dev/firmware_build/rfbridge-firmware.bin and b/dev/firmware_build/rfbridge-firmware.bin differ diff --git a/dev/firmware_build/shelly-plus1-firmware.bin b/dev/firmware_build/shelly-plus1-firmware.bin index 76782f2869..50b37b8644 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/sonoff-basic-firmware.bin b/dev/firmware_build/sonoff-basic-firmware.bin index 36b8d301eb..61941b1119 100644 Binary files a/dev/firmware_build/sonoff-basic-firmware.bin and b/dev/firmware_build/sonoff-basic-firmware.bin differ diff --git a/dev/firmware_build/sonoff-basic-rfr3-firmware.bin b/dev/firmware_build/sonoff-basic-rfr3-firmware.bin index 81f4d563e8..596b2e80b3 100644 Binary files a/dev/firmware_build/sonoff-basic-rfr3-firmware.bin and b/dev/firmware_build/sonoff-basic-rfr3-firmware.bin differ diff --git a/dev/firmware_build/theengs-bridge-firmware.bin b/dev/firmware_build/theengs-bridge-firmware.bin index 96a89907c2..3bdf10dbb7 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/thingpulse-espgateway-firmware.bin b/dev/firmware_build/thingpulse-espgateway-firmware.bin index 2f369bda89..f1f7c4e288 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 81fb54e558..7cf8bd364c 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 55f0532179..59de659157 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 97ff45981b..2121b04d95 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 6e22e954ed..075cd8a43d 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 d6be57cfb5..601fb5d4f6 100644 --- a/dev/index.html +++ b/dev/index.html @@ -3,7 +3,7 @@ - OpenMQTTGateway DEVELOPMENT SHA:33d7e6 TEST ONLY + OpenMQTTGateway DEVELOPMENT SHA:052967 TEST ONLY @@ -19,11 +19,11 @@ - + -