From c3abde4ffda1c79186c94608eb70e5b4c8a0deec Mon Sep 17 00:00:00 2001 From: aitormurgu Date: Mon, 8 Apr 2024 16:31:21 +0000 Subject: [PATCH] deploy: 39ae3b829877e366d482022002f733902a16793e --- 404.html | 2 +- about.html | 2 +- ...mands-6df8ec57952e500961cdce5be6eb167a.png | Bin 70799 -> 0 bytes ...nnect-78fe35a41dff267525f92ada3e762a06.png | Bin 0 -> 24933 bytes ...nnect-b1dd700ff793e03ddd961dbb5086ada3.png | Bin 23609 -> 0 bytes assets/js/0fea52e5.388069ae.js | 1 + assets/js/0fea52e5.6f293a04.js | 1 - assets/js/1be0d2c3.3027d2b9.js | 1 + assets/js/1be0d2c3.4e2e5846.js | 1 - assets/js/935f2afb.45c5f0f9.js | 1 + assets/js/935f2afb.bdab4194.js | 1 - assets/js/b5796db6.3649bcfd.js | 1 + assets/js/b5796db6.3b7f2602.js | 1 - assets/js/c4c20b15.a5b1887f.js | 1 + assets/js/c4c20b15.bbe2cd8c.js | 1 - ...n.41cac303.js => runtime~main.52e75c0a.js} | 2 +- docs/Examples/MQTTX/Intro.html | 4 +- docs/Examples/MQTTX/MQTTX configuration.html | 13 +-- docs/Examples/MQTTX/MQttx instalation.html | 75 ++++++++++++++++-- docs/Examples/MQTTX/Message.html | 21 ++--- ...nd trigger a remote action in devices.html | 2 +- .../How to create a dashboard.html | 2 +- .../How-to guides/How to create a schema.html | 2 +- ...w to create developer API credentials.html | 2 +- ...ming from a device into the platform..html | 2 +- .../How to define alarm and triggers.html | 2 +- docs/How-to guides/How to invite users.html | 2 +- .../How to publish device data.html | 2 +- .../How to register devices.html | 2 +- .../How to update device firmware.html | 2 +- .../How to use dashboard variables.html | 2 +- docs/Reference guides/Developer API.html | 4 +- docs/Reference guides/Glossary.html | 2 +- docs/Reference guides/MQTT broker.html | 2 +- .../Message-type Schema specification.html | 2 +- docs/Tutorials/Creating a biotz account.html | 2 +- docs/Tutorials/Getting started.html | 2 +- .../Step 1 - Creating a Device Type.html | 2 +- .../Step 2 - Creating a Message Type.html | 2 +- .../Step 3 - Creating a Schema.html | 2 +- .../Step 4 - Creating a device.html | 2 +- .../Step 5 - Authenticating a device.html | 2 +- ... 6 - Sending a data ingestion request.html | 2 +- .../Step 7 - Displaying the data.html | 2 +- docs/category/examples.html | 2 +- docs/category/how-to-guides.html | 2 +- docs/category/mqttx.html | 4 +- docs/category/reference-guides.html | 2 +- docs/category/tutorials.html | 2 +- index.html | 2 +- 50 files changed, 130 insertions(+), 63 deletions(-) delete mode 100644 assets/images/commands-6df8ec57952e500961cdce5be6eb167a.png create mode 100644 assets/images/connect-disconnect-78fe35a41dff267525f92ada3e762a06.png delete mode 100644 assets/images/connect-disconnect-b1dd700ff793e03ddd961dbb5086ada3.png create mode 100644 assets/js/0fea52e5.388069ae.js delete mode 100644 assets/js/0fea52e5.6f293a04.js create mode 100644 assets/js/1be0d2c3.3027d2b9.js delete mode 100644 assets/js/1be0d2c3.4e2e5846.js create mode 100644 assets/js/935f2afb.45c5f0f9.js delete mode 100644 assets/js/935f2afb.bdab4194.js create mode 100644 assets/js/b5796db6.3649bcfd.js delete mode 100644 assets/js/b5796db6.3b7f2602.js create mode 100644 assets/js/c4c20b15.a5b1887f.js delete mode 100644 assets/js/c4c20b15.bbe2cd8c.js rename assets/js/{runtime~main.41cac303.js => runtime~main.52e75c0a.js} (95%) diff --git a/404.html b/404.html index 7593d94..a660e74 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@ Page Not Found | Biotz Academy - + diff --git a/about.html b/about.html index 7dd0c57..97c0a2c 100644 --- a/about.html +++ b/about.html @@ -4,7 +4,7 @@ Markdown page example 1 | Biotz Academy - + diff --git a/assets/images/commands-6df8ec57952e500961cdce5be6eb167a.png b/assets/images/commands-6df8ec57952e500961cdce5be6eb167a.png deleted file mode 100644 index dbd10c5c78eca90e51e104f39bbdbe2db128a6d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70799 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 Mkd$CK{|}%41Eiv}oB#j- diff --git a/assets/images/connect-disconnect-78fe35a41dff267525f92ada3e762a06.png b/assets/images/connect-disconnect-78fe35a41dff267525f92ada3e762a06.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c44aa69c7e5c4acfa8d58757bef8c2ac15eb15 GIT binary patch literal 24933 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.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var o=n(4848),r=n(8453);const i={sidebar_position:4},s="Developer API",c={id:"Reference guides/Developer API",title:"Developer API",description:"Here you can see the different data related to the developer API.",source:"@site/docs/Reference guides/Developer API.md",sourceDirName:"Reference guides",slug:"/Reference guides/Developer API",permalink:"/docs/Reference guides/Developer API",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Message-type Schema specification",permalink:"/docs/Reference guides/Message-type Schema specification"},next:{title:"Examples",permalink:"/docs/category/examples"}},a={},l=[];function d(e){const t={a:"a",h1:"h1",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"developer-api",children:"Developer API"}),"\n",(0,o.jsx)(t.p,{children:"Here you can see the different data related to the developer API."}),"\n",(0,o.jsx)(t.h1,{id:"reference-data",children:"Reference data"}),"\n",(0,o.jsxs)(t.p,{children:["The API documentation with every available endpoint is ",(0,o.jsx)(t.a,{href:"https://api.biotz.io/docs/ui/index.html#/",children:"here"}),". If you want to know how to authorize correctly before consuming the API go ",(0,o.jsx)("a",{href:"/docs/How-to guides/How to create developer API credentials",target:"_self",children:"here"}),"."]}),"\n",(0,o.jsx)(t.p,{children:"In order to connect correctly you'll need this data:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Authentication Token URL"}),": ",(0,o.jsx)(t.a,{href:"https://auth.biotz.io/realms/biotz-platform/protocol/openid-connect/token",children:"https://auth.biotz.io/realms/biotz-platform/protocol/openid-connect/token"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Client_id"}),": biotz-platform-programmatic-users"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Scope"}),": openid"]}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var o=n(6540);const r={},i=o.createContext(r);function s(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0fea52e5.6f293a04.js b/assets/js/0fea52e5.6f293a04.js deleted file mode 100644 index 197a42c..0000000 --- a/assets/js/0fea52e5.6f293a04.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[360],{1275:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var o=n(4848),r=n(8453);const i={sidebar_position:4},s="Developer API",c={id:"Reference guides/Developer API",title:"Developer API",description:"Here you can see the different data related to the developer API.",source:"@site/docs/Reference guides/Developer API.md",sourceDirName:"Reference guides",slug:"/Reference guides/Developer API",permalink:"/docs/Reference guides/Developer API",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Message-type Schema specification",permalink:"/docs/Reference guides/Message-type Schema specification"},next:{title:"Examples",permalink:"/docs/category/examples"}},a={},l=[];function d(e){const t={a:"a",h1:"h1",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"developer-api",children:"Developer API"}),"\n",(0,o.jsx)(t.p,{children:"Here you can see the different data related to the developer API."}),"\n",(0,o.jsx)(t.h1,{id:"reference-data",children:"Reference data"}),"\n",(0,o.jsxs)(t.p,{children:["The API documentation with every available endpoint is ",(0,o.jsx)("a",{href:"https://api.biotz.io/docs/ui/index.html#/",target:"_self",children:"here"}),". If you want to know how to authorize correctly before consuming the API go ",(0,o.jsx)("a",{href:"/docs/How-to guides/How to create developer API credentials",target:"_self",children:"here"}),"."]}),"\n",(0,o.jsx)(t.p,{children:"In order to connect correctly you'll need this data:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Authentication Token URL"}),": ",(0,o.jsx)(t.a,{href:"https://auth.biotz.io/realms/biotz-platform/protocol/openid-connect/token",children:"https://auth.biotz.io/realms/biotz-platform/protocol/openid-connect/token"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Client_id"}),": biotz-platform-programmatic-users"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Scope"}),": openid"]}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>c});var o=n(6540);const r={},i=o.createContext(r);function s(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1be0d2c3.3027d2b9.js b/assets/js/1be0d2c3.3027d2b9.js new file mode 100644 index 0000000..c479f8b --- /dev/null +++ b/assets/js/1be0d2c3.3027d2b9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[981],{4006:(g,A,I)=>{I.r(A),I.d(A,{assets:()=>a,contentTitle:()=>s,default:()=>c,frontMatter:()=>t,metadata:()=>i,toc:()=>n});var C=I(4848),e=I(8453);const t={sidebar_position:4,sidebar_label:"Publish data to Biotz"},s="Publish data to Biotz",i={id:"Examples/MQTTX/Message",title:"Publish data to Biotz",description:'To post messages, click on the "Post" icon and fill in the message and topic details.',source:"@site/docs/Examples/MQTTX/Message.md",sourceDirName:"Examples/MQTTX",slug:"/Examples/MQTTX/Message",permalink:"/docs/Examples/MQTTX/Message",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4,sidebar_label:"Publish data to Biotz"},sidebar:"tutorialSidebar",previous:{title:"MQTTX configuration",permalink:"/docs/Examples/MQTTX/MQTTX configuration"}},a={},n=[{value:"Correct message",id:"correct-message",level:2},{value:"Incorrect message",id:"incorrect-message",level:2}];function o(g){const A={code:"code",h1:"h1",h2:"h2",img:"img",p:"p",pre:"pre",...(0,e.R)(),...g.components};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(A.h1,{id:"publish-data-to-biotz",children:"Publish data to Biotz"}),"\n",(0,C.jsx)(A.p,{children:'To post messages, click on the "Post" icon and fill in the message and topic details.\nTo subscribe to a topic, click on the "Subscribe" icon and enter the name of the topic you wish to subscribe to.\nTo connect and disconnect in MQTTX you have to use this connect button'}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Message",src:I(9947).A+"",width:"1502",height:"234"})})}),"\n",(0,C.jsx)(A.p,{children:"This time you are going to do a test to publish a message and establish a connection with Biotz."}),"\n",(0,C.jsx)(A.p,{children:"Next, we will guide you through the process of verifying the successful publication of data to Biotz using our debugging tool."}),"\n",(0,C.jsx)(A.p,{children:"For this demonstration, we'll focus on a JSON format. We'll provide examples of both correct and incorrect JSON payloads to illustrate the testing process."}),"\n",(0,C.jsx)(A.h2,{id:"correct-message",children:"Correct message"}),"\n",(0,C.jsx)(A.p,{children:"Now, you will have to modify the topic, the topic is a string that is used to identify the destination of a message. It serves as a kind of address or channel to which the message is sent and to which other users can subscribe to receive messages related to that specific topic."}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Topic",src:I(5369).A+"",width:"447",height:"75"})})}),"\n",(0,C.jsx)(A.p,{children:"There is a standard format of the MQTT topics for sending data from devices to the Biotz IoT Platform:"}),"\n",(0,C.jsx)(A.pre,{children:(0,C.jsx)(A.code,{children:"biotz/1/0/CUSTOMER-ID/DEVICE-ID/publish/data/MESSAGE-TYPE-INTERNAL-NAME\n"})}),"\n",(0,C.jsx)(A.p,{children:"Here it will be important to put the data you obtained from excel correctly. In CUSTOMER-ID you will have to write the id of the Customer Id that you have in the excel you obtain before, in device id, the Device Id that you have also obtained and you have in excel, publish/data leave it the same."}),"\n",(0,C.jsx)(A.p,{children:"To know what to write in MESSAGE-TYPE-INTERNAL-NAME, you have to go to app.biotz.io and data ingestion flow, enter the name of the device type that you are using and look at the internal name that corresponds to it, that will be what you will have to write in topic."}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Message",src:I(9372).A+"",width:"1021",height:"203"})})}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Message",src:I(3537).A+"",width:"1247",height:"222"})})}),"\n",(0,C.jsx)(A.p,{children:"The topic should look something like this"}),"\n",(0,C.jsx)(A.pre,{children:(0,C.jsx)(A.code,{children:"biotz/1/0/805c2316-81c9-4cdd-aca5-c09eb2a79f35/09bdb2bc-991b-4c35-8a91-df1f6fe71f4d/publish/data/temp_lumin\n"})}),"\n",(0,C.jsx)(A.p,{children:"To send the message, first you will have to know the format in which you will have to send the message, for that you will have to go back to data ingestion flow and select the device type you are using and look at its attributes."}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Message",src:I(9449).A+"",width:"379",height:"230"})})}),"\n",(0,C.jsx)(A.p,{children:"After looking at the attributes, you have to write the correct JSON payload between the braces. The message would be something like this."}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Message",src:I(8952).A+"",width:"918",height:"154"})})}),"\n",(0,C.jsx)(A.p,{children:"After all this, you can send the message with the green button below."}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"box",src:I(320).A+"",width:"1278",height:"141"})})}),"\n",(0,C.jsx)(A.p,{children:"You will return to app.biotz.io, this time you will enter in developer tools, and inside developer tools in communications debugger. You will see this box with two pieces of information to fill in:"}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"box",src:I(3956).A+"",width:"423",height:"287"})})}),"\n",(0,C.jsx)(A.p,{children:"In select device, write the name with which we have sent the message and in the select message type the type of message that you have configured, in this case, temp-lumin."}),"\n",(0,C.jsx)(A.p,{children:"If you have sent the message you will see this:"}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"box",src:I(8676).A+"",width:"508",height:"214"})})}),"\n",(0,C.jsx)(A.p,{children:"As we can see if everything went well, the message will have been sent correctly and you will see something like this, the green circle will indicate that the message is correct, that means the format of the message is correct."}),"\n",(0,C.jsx)(A.h2,{id:"incorrect-message",children:"Incorrect message"}),"\n",(0,C.jsx)(A.p,{children:"Now let's modify something in the payload to send the message incorrectly to see the difference."}),"\n",(0,C.jsx)(A.p,{children:"You will need to replace what was inside the braces with this JSON payload:"}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Message",src:I(2835).A+"",width:"897",height:"137"})})}),"\n",(0,C.jsx)(A.p,{children:'Instead of "temperature", let\'s type "temperatura" and see how it changes.'}),"\n",(0,C.jsx)("div",{class:"tutorial-image-container",children:(0,C.jsx)(A.p,{children:(0,C.jsx)(A.img,{alt:"Message",src:I(7211).A+"",width:"706",height:"240"})})}),"\n",(0,C.jsx)(A.p,{children:'When you go back to communication debugger now this is what will appear, as you can see, now the circle is orange and an error appears."no-valid-schema-found-for-given-message".This is because the format is not correct now.'}),"\n",(0,C.jsx)(A.p,{children:"With this tutorial you have learned how to establish a connection and publish messages to Biotz via MQTTX."})]})}function c(g={}){const{wrapper:A}={...(0,e.R)(),...g.components};return A?(0,C.jsx)(A,{...g,children:(0,C.jsx)(o,{...g})}):o(g)}},2835:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/1-message-1abe720e4754d5b69f6f18514f9599f6.png"},8952:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/2-message-301bbc84f44cb4c9f690222dbe56f7ac.png"},9449:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/attributes-9f8a57d895ad46cadf6cba2bd78bbbb0.png"},9947:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/connect-disconnect-78fe35a41dff267525f92ada3e762a06.png"},8676:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/correct-message-98e7cf84e693a9008c4b879471bc4ce6.png"},320:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/green-button-819911f20d6810231b45fd2703637c91.png"},7211:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/incorrect-message-c461b0c800ab12a8647c13838c0d8788.png"},3537:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/internal-name-dcbefa1d590042ef5b9845d7559f0d72.png"},9372:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/internal-name1-0031c8e534ac64117cd3f36ea7002537.png"},5369:(g,A,I)=>{I.d(A,{A:()=>C});const C="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAb8AAABLCAYAAADgZ4nJAAAAinpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjaVY7LDcQwCETvVLEl8BmDXc4miqV0sOUvji1FfgeYQWiArt/d6TMQBqFE9ebOCRqaflNUnhizKMvoWSerm6TStMuT6RTeajDeRYA3inn1Hojw4qefmul6mT1VDPRsjbDxSnuDjr6U7XMc+wH6Awh1LXYeSFkhAAAKBGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjQ0NyIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249Ijc1IgogICB0aWZmOkltYWdlV2lkdGg9IjQ0NyIKICAgdGlmZjpJbWFnZUhlaWdodD0iNzUiCiAgIHRpZmY6T3JpZW50YXRpb249IjEiLz4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg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"},3956:(g,A,I)=>{I.d(A,{A:()=>C});const C=I.p+"assets/images/two-pieces-d72fdbfa5079480bb71086050870182e.png"},8453:(g,A,I)=>{I.d(A,{R:()=>s,x:()=>i});var C=I(6540);const e={},t=C.createContext(e);function s(g){const A=C.useContext(t);return C.useMemo((function(){return"function"==typeof g?g(A):{...A,...g}}),[A,g])}function i(g){let A;return A=g.disableParentContext?"function"==typeof g.components?g.components(e):g.components||e:s(g.components),C.createElement(t.Provider,{value:A},g.children)}}}]); \ No newline at end of file diff --git a/assets/js/1be0d2c3.4e2e5846.js b/assets/js/1be0d2c3.4e2e5846.js deleted file mode 100644 index 108b353..0000000 --- a/assets/js/1be0d2c3.4e2e5846.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[981],{4006:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>h});var i=s(4848),n=s(8453);const a={sidebar_position:4,sidebar_label:"Sending message to establish connection with Biotz"},o="Sending message to establish connection with Biotz",c={id:"Examples/MQTTX/Message",title:"Sending message to establish connection with Biotz",description:'To post messages, click on the "Post" icon and fill in the message and topic details.',source:"@site/docs/Examples/MQTTX/Message.md",sourceDirName:"Examples/MQTTX",slug:"/Examples/MQTTX/Message",permalink:"/docs/Examples/MQTTX/Message",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4,sidebar_label:"Sending message to establish connection with Biotz"},sidebar:"tutorialSidebar",previous:{title:"MQTTX configuration",permalink:"/docs/Examples/MQTTX/MQTTX configuration"}},r={},h=[{value:"Correct message",id:"correct-message",level:2},{value:"Incorrect message",id:"incorrect-message",level:2}];function l(e){const t={code:"code",h1:"h1",h2:"h2",img:"img",p:"p",pre:"pre",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"sending-message-to-establish-connection-with-biotz",children:"Sending message to establish connection with Biotz"}),"\n",(0,i.jsx)(t.p,{children:'To post messages, click on the "Post" icon and fill in the message and topic details.\nTo subscribe to a topic, click on the "Subscribe" icon and enter the name of the topic you wish to subscribe to.\nTo connect and disconnect in MQTTX you have to use this connect button'}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Message",src:s(9947).A+"",width:"1499",height:"236"})})}),"\n",(0,i.jsx)(t.p,{children:"This time you are going to do a test to publish a message and establish a connection with Biotz."}),"\n",(0,i.jsx)(t.p,{children:"You are going to create two different messages, one will be incorrect for the format that corresponds to it, and the other one will be the correct one and you will see the difference between both."}),"\n",(0,i.jsx)(t.h2,{id:"correct-message",children:"Correct message"}),"\n",(0,i.jsx)(t.p,{children:"In topic, there is a standard format of the MQTT topics for sending data from devices to the Biotz IoT Platform."}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"biotz/1/0/CUSTOMER-ID/DEVICE-ID/publish/data/MESSAGE-TYPE-INTERNAL-NAME\n"})}),"\n",(0,i.jsx)(t.p,{children:"Here it will be important to put the data you obtained from excel correctly. In CUSTOMER-ID you will have to write the id of the Customer Id that you have in the excel you obtain before, in device id, the Device Id that you have also obtained and you have in excel, publish/data leave it the same."}),"\n",(0,i.jsx)(t.p,{children:"To know what to write in MESSAGE-TYPE-INTERNAL-NAME, you have to go to app.biotz.io and data ingestion flow, enter the name of the device type that you are using and look at the internal name that corresponds to it, that will be what you will have to write in topic."}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Message",src:s(9372).A+"",width:"1021",height:"203"})})}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Message",src:s(3537).A+"",width:"1247",height:"222"})})}),"\n",(0,i.jsx)(t.p,{children:"The topic should look something like this"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"biotz/1/0/805c2316-81c9-4cdd-aca5-c09eb2a79f35/09bdb2bc-991b-4c35-8a91-df1f6fe71f4d/publish/data/temp_lumin\n"})}),"\n",(0,i.jsx)(t.p,{children:"To send the message, first you will have to know the format in which you will have to send the message, for that you will have to go back to data ingestion flow and select the device type you are using and look at its attributes."}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Message",src:s(9449).A+"",width:"379",height:"230"})})}),"\n",(0,i.jsx)(t.p,{children:"After looking at the attributes, you have to write the message between the braces. The message would be something like this."}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Message",src:s(8952).A+"",width:"918",height:"154"})})}),"\n",(0,i.jsx)(t.p,{children:"After all this, you can send the message with the green button below."}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"box",src:s(320).A+"",width:"1278",height:"141"})})}),"\n",(0,i.jsx)(t.p,{children:"You will return to app.biotz.io, this time you will enter in developer tools, and inside developer tools in communications debugger. You will see this box with two pieces of information to fill in:"}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"box",src:s(3956).A+"",width:"423",height:"287"})})}),"\n",(0,i.jsx)(t.p,{children:"In select device, write the name with which we have sent the message and in the select message type the type of message that you have configured, in this case, temp-lumin."}),"\n",(0,i.jsx)(t.p,{children:"If you have sent the message you will see this:"}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"box",src:s(8676).A+"",width:"508",height:"214"})})}),"\n",(0,i.jsx)(t.p,{children:"As we can see if everything went well, the message will have been sent correctly and you will see something like this, the green circle will indicate that the message is correct, that means the format of the JSON payload is correct."}),"\n",(0,i.jsx)(t.h2,{id:"incorrect-message",children:"Incorrect message"}),"\n",(0,i.jsx)(t.p,{children:"Now let's modify something in the payload to send the message incorrectly to see the difference."}),"\n",(0,i.jsx)(t.p,{children:"You will need to replace what was inside the braces with this JSON payload:"}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Message",src:s(2835).A+"",width:"897",height:"137"})})}),"\n",(0,i.jsx)(t.p,{children:'Instead of "temperature", let\'s type "temperatura" and see how it changes.'}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Message",src:s(7211).A+"",width:"706",height:"240"})})}),"\n",(0,i.jsx)(t.p,{children:'When you go back to communication debugger now this is what will appear, as you can see, now the circle is orange and an error appears."no-valid-schema-found-for-given-message".This is because the format is not correct now.'}),"\n",(0,i.jsx)(t.p,{children:"With this tutorial you have learned how to establish a connection to Biotz via MQTTX."})]})}function d(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},2835:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/1-message-1abe720e4754d5b69f6f18514f9599f6.png"},8952:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/2-message-301bbc84f44cb4c9f690222dbe56f7ac.png"},9449:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/attributes-9f8a57d895ad46cadf6cba2bd78bbbb0.png"},9947:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/connect-disconnect-b1dd700ff793e03ddd961dbb5086ada3.png"},8676:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/correct-message-98e7cf84e693a9008c4b879471bc4ce6.png"},320:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/green-button-819911f20d6810231b45fd2703637c91.png"},7211:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/incorrect-message-c461b0c800ab12a8647c13838c0d8788.png"},3537:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/internal-name-dcbefa1d590042ef5b9845d7559f0d72.png"},9372:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/internal-name1-0031c8e534ac64117cd3f36ea7002537.png"},3956:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/two-pieces-d72fdbfa5079480bb71086050870182e.png"},8453:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>c});var i=s(6540);const n={},a=i.createContext(n);function o(e){const t=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),i.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.45c5f0f9.js b/assets/js/935f2afb.45c5f0f9.js new file mode 100644 index 0000000..27fe692 --- /dev/null +++ b/assets/js/935f2afb.45c5f0f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Tutorials","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Creating a biotz account","href":"/docs/Tutorials/Creating a biotz account","docId":"Tutorials/Creating a biotz account","unlisted":false},{"type":"category","label":"Getting started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Step 1 - Creating a Device Type","href":"/docs/Tutorials/Getting started/Step 1 - Creating a Device Type","docId":"Tutorials/Getting started/Step 1 - Creating a Device Type","unlisted":false},{"type":"link","label":"Step 2 - Creating a Message Type","href":"/docs/Tutorials/Getting started/Step 2 - Creating a Message Type","docId":"Tutorials/Getting started/Step 2 - Creating a Message Type","unlisted":false},{"type":"link","label":"Step 3 - Creating a Schema","href":"/docs/Tutorials/Getting started/Step 3 - Creating a Schema","docId":"Tutorials/Getting started/Step 3 - Creating a Schema","unlisted":false},{"type":"link","label":"Step 4 - Creating a device","href":"/docs/Tutorials/Getting started/Step 4 - Creating a device","docId":"Tutorials/Getting started/Step 4 - Creating a device","unlisted":false},{"type":"link","label":"Step 5 - Authenticating a device","href":"/docs/Tutorials/Getting started/Step 5 - Authenticating a device","docId":"Tutorials/Getting started/Step 5 - Authenticating a device","unlisted":false},{"type":"link","label":"Step 6 - Sending a data ingestion request","href":"/docs/Tutorials/Getting started/Step 6 - Sending a data ingestion request","docId":"Tutorials/Getting started/Step 6 - Sending a data ingestion request","unlisted":false},{"type":"link","label":"Step 7 - Displaying the data","href":"/docs/Tutorials/Getting started/Step 7 - Displaying the data","docId":"Tutorials/Getting started/Step 7 - Displaying the data","unlisted":false}],"href":"/docs/Tutorials/Getting started/"}],"href":"/docs/category/tutorials"},{"type":"category","label":"How-to guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to invite users","href":"/docs/How-to guides/How to invite users","docId":"How-to guides/How to invite users","unlisted":false},{"type":"link","label":"How to register devices","href":"/docs/How-to guides/How to register devices","docId":"How-to guides/How to register devices","unlisted":false},{"type":"link","label":"How to create a schema - setup apllication to ingest certain data","href":"/docs/How-to guides/How to create a schema","docId":"How-to guides/How to create a schema","unlisted":false},{"type":"link","label":"How to publish device data using MQTT - setup devices to send data","href":"/docs/How-to guides/How to publish device data","docId":"How-to guides/How to publish device data","unlisted":false},{"type":"link","label":"How to configure and trigger a remote action in devices","href":"/docs/How-to guides/How to configure and trigger a remote action in devices","docId":"How-to guides/How to configure and trigger a remote action in devices","unlisted":false},{"type":"link","label":"How to create a dashboard","href":"/docs/How-to guides/How to create a dashboard","docId":"How-to guides/How to create a dashboard","unlisted":false},{"type":"link","label":"How to use dashboard variables","href":"/docs/How-to guides/How to use dashboard variables","docId":"How-to guides/How to use dashboard variables","unlisted":false},{"type":"link","label":"How to define alarm triggers","href":"/docs/How-to guides/How to define alarm and triggers","docId":"How-to guides/How to define alarm and triggers","unlisted":false},{"type":"link","label":"How to update device firmware","href":"/docs/How-to guides/How to update device firmware","docId":"How-to guides/How to update device firmware","unlisted":false},{"type":"link","label":"How to create Developer API credentials","href":"/docs/How-to guides/How to create developer API credentials","docId":"How-to guides/How to create developer API credentials","unlisted":false},{"type":"link","label":"How to debug communication coming from devices into the application","href":"/docs/How-to guides/How to debug communications coming from a device into the platform.","docId":"How-to guides/How to debug communications coming from a device into the platform.","unlisted":false}],"href":"/docs/category/how-to-guides"},{"type":"category","label":"Reference guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"MQTT Broker","href":"/docs/Reference guides/MQTT broker","docId":"Reference guides/MQTT broker","unlisted":false},{"type":"link","label":"Glossary","href":"/docs/Reference guides/Glossary","docId":"Reference guides/Glossary","unlisted":false},{"type":"link","label":"Message-type Schema specification","href":"/docs/Reference guides/Message-type Schema specification","docId":"Reference guides/Message-type Schema specification","unlisted":false},{"type":"link","label":"Developer API","href":"/docs/Reference guides/Developer API","docId":"Reference guides/Developer API","unlisted":false}],"href":"/docs/category/reference-guides"},{"type":"category","label":"Examples","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"MQTTX","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Intro","href":"/docs/Examples/MQTTX/Intro","docId":"Examples/MQTTX/Intro","unlisted":false},{"type":"link","label":"MQTTX instalation","href":"/docs/Examples/MQTTX/MQttx instalation","docId":"Examples/MQTTX/MQttx instalation","unlisted":false},{"type":"link","label":"MQTTX configuration","href":"/docs/Examples/MQTTX/MQTTX configuration","docId":"Examples/MQTTX/MQTTX configuration","unlisted":false},{"type":"link","label":"Publish data to Biotz","href":"/docs/Examples/MQTTX/Message","docId":"Examples/MQTTX/Message","unlisted":false}],"href":"/docs/category/mqttx"}],"href":"/docs/category/examples"}]},"docs":{"Examples/MQTTX/Intro":{"id":"Examples/MQTTX/Intro","title":"Intro","description":"MQTTX is a tool designed to assist in the development, testing and debugging of applications using the Message Queuing Telemetry Transport (MQTT) protocol.","sidebar":"tutorialSidebar"},"Examples/MQTTX/Message":{"id":"Examples/MQTTX/Message","title":"Publish data to Biotz","description":"To post messages, click on the \\"Post\\" icon and fill in the message and topic details.","sidebar":"tutorialSidebar"},"Examples/MQTTX/MQTTX configuration":{"id":"Examples/MQTTX/MQTTX configuration","title":"MQTTX configuration","description":"After installing the corresponding version you have to login into the app.biotz.io, if you don\'t have an account, you have to create one first.","sidebar":"tutorialSidebar"},"Examples/MQTTX/MQttx instalation":{"id":"Examples/MQTTX/MQttx instalation","title":"MQttx instalation","description":"To install MQTTX, first, Visit the official MQTTX website and select the download button and you will be sent to a page.","sidebar":"tutorialSidebar"},"How-to guides/How to configure and trigger a remote action in devices":{"id":"How-to guides/How to configure and trigger a remote action in devices","title":"Configure and trigger a \'remote actioning\'","description":"Biotz offers the feature to action devices remotely, this is offered just through MQTT. The configuration of this features include 3 steps:","sidebar":"tutorialSidebar"},"How-to guides/How to create a dashboard":{"id":"How-to guides/How to create a dashboard","title":"How to create a dashboard","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to create a schema":{"id":"How-to guides/How to create a schema","title":"How to create a schema","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to create developer API credentials":{"id":"How-to guides/How to create developer API credentials","title":"Developer API","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to debug communications coming from a device into the platform.":{"id":"How-to guides/How to debug communications coming from a device into the platform.","title":"How to debug communications coming from a device into the platform.","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to define alarm and triggers":{"id":"How-to guides/How to define alarm and triggers","title":"How to define alarm triggers","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to invite users":{"id":"How-to guides/How to invite users","title":"How to invite users","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to publish device data":{"id":"How-to guides/How to publish device data","title":"Publishing Device data","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to register devices":{"id":"How-to guides/How to register devices","title":"How to register devices","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to update device firmware":{"id":"How-to guides/How to update device firmware","title":"Update device firmware","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to use dashboard variables":{"id":"How-to guides/How to use dashboard variables","title":"How to use dashboard variables","description":"Introduction","sidebar":"tutorialSidebar"},"Reference guides/Developer API":{"id":"Reference guides/Developer API","title":"Developer API","description":"Here you can see the different data related to the developer API.","sidebar":"tutorialSidebar"},"Reference guides/Glossary":{"id":"Reference guides/Glossary","title":"Glossary","description":"Device type: Biotz allows managing multiple different devices from the same account. \u201cTypes\u201d are a way of grouping those devices.","sidebar":"tutorialSidebar"},"Reference guides/Message-type Schema specification":{"id":"Reference guides/Message-type Schema specification","title":"Message-type Schema specification","description":"his is the specification for the schema of a message-type. The users will have to specify a device-type, with one to many message-type. Each message-type will have one to many schemas.","sidebar":"tutorialSidebar"},"Reference guides/MQTT broker":{"id":"Reference guides/MQTT broker","title":"MQTT Broker Reference","description":"Connection details","sidebar":"tutorialSidebar"},"Tutorials/Creating a biotz account":{"id":"Tutorials/Creating a biotz account","title":"Creating a biotz account","description":"User registration is not currently available for the public. Please contact us if you want to create an account.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Getting started":{"id":"Tutorials/Getting started/Getting started","title":"Getting started","description":"This tutorial offers a comprehensive guide on establishing a seamless data ingestion flow within the Biotz platform. The process involves a systematic sequence of 7 steps that entail configuring Biotz\'s core components. Through these steps, you\'ll initiate the transmission and ingestion of data. Notably, this tutorial eliminates the necessity for a physical device to complete the procedures; all tasks associated with data transmission and ingestion will be simulated, fostering an accessible and hands-on learning experience.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 1 - Creating a Device Type":{"id":"Tutorials/Getting started/Step 1 - Creating a Device Type","title":"Creating a Device Type","description":"Before we start sending and ingesting data you have to configure your Biotz account to be able to know who is sending data and how to process it. The first step is to create a Device Type, which will allow you to categorise your devices. Assuming you have signed in into the application, from the sidebar, in the Setup section, click on Device Type.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 2 - Creating a Message Type":{"id":"Tutorials/Getting started/Step 2 - Creating a Message Type","title":"Creating a Message Type","description":"As the name implies this is a type of message your device can send. If your device outputs different information structures, each of them would be a different Message Type. In this tutorial, you will create a single Message Type for the sake of simplicity. To do so, from the sidebar, in the Setup section, click on Data Ingestion Flow. You will be presented with the following page:","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 3 - Creating a Schema":{"id":"Tutorials/Getting started/Step 3 - Creating a Schema","title":"Creating a Schema","description":"Now that you have created a Message Type, you have to define the shape of the data for that Message Type. This is what is called Schemas in Biotz. Schemas are just the definition of the structure of what your device will send to the platform. This helps Biotz ingest and process your data effectively.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 4 - Creating a device":{"id":"Tutorials/Getting started/Step 4 - Creating a device","title":"Creating a device","description":"Before sending any data you need to register a device. To do so, from the sidebar, in the Device Management section, click on Devices. This will show up a list of devices. In the top right corner you click on New device. You will see the following form:","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 5 - Authenticating a device":{"id":"Tutorials/Getting started/Step 5 - Authenticating a device","title":"Authenticating a device","description":"In this tutorial, as said in the beginning, the data sending will be simulated. To do so, you will make an HTTP request to the http-forwarder service of Biotz which will, as the name implies, forward your data ingestion request to the competent services. That is the reason why you chose the HTTP communication protocol before when creating a message type.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 6 - Sending a data ingestion request":{"id":"Tutorials/Getting started/Step 6 - Sending a data ingestion request","title":"Sending a data ingestion request","description":"Now that you have a token from Biotz Identity Provider, it is time to send actual data to Biotz. In this tutorial, as said before, you will simulate a device sending data using the terminal. The approach is basically the same as to retrieve a token, just an HTTP request to the http-forwarder service. It will take your request and re-route it into a queue to be processed when the system is available.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 7 - Displaying the data":{"id":"Tutorials/Getting started/Step 7 - Displaying the data","title":"Displaying the data","description":"In order to display the data you will need to create a dashboard and a panel. A dashboard is a collection of panels. Each panel contains a specific query to display your data. You can also apply different customizations to the panel\'s appearance. However, the focus of this tutorial is to just display your newly ingested data. Bear in mind that the data you will display is a single point, if you have followed this tutorial. Displaying a single point is not very useful but the end goal is to learn how it works. So, later on when you create your real dashboard panels you have a good foundation to do so.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.bdab4194.js b/assets/js/935f2afb.bdab4194.js deleted file mode 100644 index 756ad77..0000000 --- a/assets/js/935f2afb.bdab4194.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Tutorials","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Creating a biotz account","href":"/docs/Tutorials/Creating a biotz account","docId":"Tutorials/Creating a biotz account","unlisted":false},{"type":"category","label":"Getting started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Step 1 - Creating a Device Type","href":"/docs/Tutorials/Getting started/Step 1 - Creating a Device Type","docId":"Tutorials/Getting started/Step 1 - Creating a Device Type","unlisted":false},{"type":"link","label":"Step 2 - Creating a Message Type","href":"/docs/Tutorials/Getting started/Step 2 - Creating a Message Type","docId":"Tutorials/Getting started/Step 2 - Creating a Message Type","unlisted":false},{"type":"link","label":"Step 3 - Creating a Schema","href":"/docs/Tutorials/Getting started/Step 3 - Creating a Schema","docId":"Tutorials/Getting started/Step 3 - Creating a Schema","unlisted":false},{"type":"link","label":"Step 4 - Creating a device","href":"/docs/Tutorials/Getting started/Step 4 - Creating a device","docId":"Tutorials/Getting started/Step 4 - Creating a device","unlisted":false},{"type":"link","label":"Step 5 - Authenticating a device","href":"/docs/Tutorials/Getting started/Step 5 - Authenticating a device","docId":"Tutorials/Getting started/Step 5 - Authenticating a device","unlisted":false},{"type":"link","label":"Step 6 - Sending a data ingestion request","href":"/docs/Tutorials/Getting started/Step 6 - Sending a data ingestion request","docId":"Tutorials/Getting started/Step 6 - Sending a data ingestion request","unlisted":false},{"type":"link","label":"Step 7 - Displaying the data","href":"/docs/Tutorials/Getting started/Step 7 - Displaying the data","docId":"Tutorials/Getting started/Step 7 - Displaying the data","unlisted":false}],"href":"/docs/Tutorials/Getting started/"}],"href":"/docs/category/tutorials"},{"type":"category","label":"How-to guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"How to invite users","href":"/docs/How-to guides/How to invite users","docId":"How-to guides/How to invite users","unlisted":false},{"type":"link","label":"How to register devices","href":"/docs/How-to guides/How to register devices","docId":"How-to guides/How to register devices","unlisted":false},{"type":"link","label":"How to create a schema - setup apllication to ingest certain data","href":"/docs/How-to guides/How to create a schema","docId":"How-to guides/How to create a schema","unlisted":false},{"type":"link","label":"How to publish device data using MQTT - setup devices to send data","href":"/docs/How-to guides/How to publish device data","docId":"How-to guides/How to publish device data","unlisted":false},{"type":"link","label":"How to configure and trigger a remote action in devices","href":"/docs/How-to guides/How to configure and trigger a remote action in devices","docId":"How-to guides/How to configure and trigger a remote action in devices","unlisted":false},{"type":"link","label":"How to create a dashboard","href":"/docs/How-to guides/How to create a dashboard","docId":"How-to guides/How to create a dashboard","unlisted":false},{"type":"link","label":"How to use dashboard variables","href":"/docs/How-to guides/How to use dashboard variables","docId":"How-to guides/How to use dashboard variables","unlisted":false},{"type":"link","label":"How to define alarm triggers","href":"/docs/How-to guides/How to define alarm and triggers","docId":"How-to guides/How to define alarm and triggers","unlisted":false},{"type":"link","label":"How to update device firmware","href":"/docs/How-to guides/How to update device firmware","docId":"How-to guides/How to update device firmware","unlisted":false},{"type":"link","label":"How to create Developer API credentials","href":"/docs/How-to guides/How to create developer API credentials","docId":"How-to guides/How to create developer API credentials","unlisted":false},{"type":"link","label":"How to debug communication coming from devices into the application","href":"/docs/How-to guides/How to debug communications coming from a device into the platform.","docId":"How-to guides/How to debug communications coming from a device into the platform.","unlisted":false}],"href":"/docs/category/how-to-guides"},{"type":"category","label":"Reference guides","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"MQTT Broker","href":"/docs/Reference guides/MQTT broker","docId":"Reference guides/MQTT broker","unlisted":false},{"type":"link","label":"Glossary","href":"/docs/Reference guides/Glossary","docId":"Reference guides/Glossary","unlisted":false},{"type":"link","label":"Message-type Schema specification","href":"/docs/Reference guides/Message-type Schema specification","docId":"Reference guides/Message-type Schema specification","unlisted":false},{"type":"link","label":"Developer API","href":"/docs/Reference guides/Developer API","docId":"Reference guides/Developer API","unlisted":false}],"href":"/docs/category/reference-guides"},{"type":"category","label":"Examples","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"MQTTX","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Intro","href":"/docs/Examples/MQTTX/Intro","docId":"Examples/MQTTX/Intro","unlisted":false},{"type":"link","label":"MQTTX instalation","href":"/docs/Examples/MQTTX/MQttx instalation","docId":"Examples/MQTTX/MQttx instalation","unlisted":false},{"type":"link","label":"MQTTX configuration","href":"/docs/Examples/MQTTX/MQTTX configuration","docId":"Examples/MQTTX/MQTTX configuration","unlisted":false},{"type":"link","label":"Sending message to establish connection with Biotz","href":"/docs/Examples/MQTTX/Message","docId":"Examples/MQTTX/Message","unlisted":false}],"href":"/docs/category/mqttx"}],"href":"/docs/category/examples"}]},"docs":{"Examples/MQTTX/Intro":{"id":"Examples/MQTTX/Intro","title":"Intro","description":"MQTTX is a tool designed to assist in the development, testing and debugging of applications using the Message Queuing Telemetry Transport (MQTT) protocol.","sidebar":"tutorialSidebar"},"Examples/MQTTX/Message":{"id":"Examples/MQTTX/Message","title":"Sending message to establish connection with Biotz","description":"To post messages, click on the \\"Post\\" icon and fill in the message and topic details.","sidebar":"tutorialSidebar"},"Examples/MQTTX/MQTTX configuration":{"id":"Examples/MQTTX/MQTTX configuration","title":"MQTTX configuration","description":"After installing the corresponding version you have to login into the app.biotz.io, if you don\'t have an account, you have to create one first.","sidebar":"tutorialSidebar"},"Examples/MQTTX/MQttx instalation":{"id":"Examples/MQTTX/MQttx instalation","title":"MQttx instalation","description":"To install MQTTX, first, go to the official MQTTX website On the official page, you need to click in dowload and you will be sent to a page. Here indicate your operating system.","sidebar":"tutorialSidebar"},"How-to guides/How to configure and trigger a remote action in devices":{"id":"How-to guides/How to configure and trigger a remote action in devices","title":"Configure and trigger a \'remote actioning\'","description":"Biotz offers the feature to action devices remotely, this is offered just through MQTT. The configuration of this features include 3 steps:","sidebar":"tutorialSidebar"},"How-to guides/How to create a dashboard":{"id":"How-to guides/How to create a dashboard","title":"How to create a dashboard","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to create a schema":{"id":"How-to guides/How to create a schema","title":"How to create a schema","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to create developer API credentials":{"id":"How-to guides/How to create developer API credentials","title":"Developer API","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to debug communications coming from a device into the platform.":{"id":"How-to guides/How to debug communications coming from a device into the platform.","title":"How to debug communications coming from a device into the platform.","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to define alarm and triggers":{"id":"How-to guides/How to define alarm and triggers","title":"How to define alarm triggers","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to invite users":{"id":"How-to guides/How to invite users","title":"How to invite users","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to publish device data":{"id":"How-to guides/How to publish device data","title":"Publishing Device data","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to register devices":{"id":"How-to guides/How to register devices","title":"How to register devices","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to update device firmware":{"id":"How-to guides/How to update device firmware","title":"Update device firmware","description":"Introduction","sidebar":"tutorialSidebar"},"How-to guides/How to use dashboard variables":{"id":"How-to guides/How to use dashboard variables","title":"How to use dashboard variables","description":"Introduction","sidebar":"tutorialSidebar"},"Reference guides/Developer API":{"id":"Reference guides/Developer API","title":"Developer API","description":"Here you can see the different data related to the developer API.","sidebar":"tutorialSidebar"},"Reference guides/Glossary":{"id":"Reference guides/Glossary","title":"Glossary","description":"Device type: Biotz allows managing multiple different devices from the same account. \u201cTypes\u201d are a way of grouping those devices.","sidebar":"tutorialSidebar"},"Reference guides/Message-type Schema specification":{"id":"Reference guides/Message-type Schema specification","title":"Message-type Schema specification","description":"his is the specification for the schema of a message-type. The users will have to specify a device-type, with one to many message-type. Each message-type will have one to many schemas.","sidebar":"tutorialSidebar"},"Reference guides/MQTT broker":{"id":"Reference guides/MQTT broker","title":"MQTT Broker Reference","description":"Connection details","sidebar":"tutorialSidebar"},"Tutorials/Creating a biotz account":{"id":"Tutorials/Creating a biotz account","title":"Creating a biotz account","description":"User registration is not currently available for the public. Please contact us if you want to create an account.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Getting started":{"id":"Tutorials/Getting started/Getting started","title":"Getting started","description":"This tutorial offers a comprehensive guide on establishing a seamless data ingestion flow within the Biotz platform. The process involves a systematic sequence of 7 steps that entail configuring Biotz\'s core components. Through these steps, you\'ll initiate the transmission and ingestion of data. Notably, this tutorial eliminates the necessity for a physical device to complete the procedures; all tasks associated with data transmission and ingestion will be simulated, fostering an accessible and hands-on learning experience.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 1 - Creating a Device Type":{"id":"Tutorials/Getting started/Step 1 - Creating a Device Type","title":"Creating a Device Type","description":"Before we start sending and ingesting data you have to configure your Biotz account to be able to know who is sending data and how to process it. The first step is to create a Device Type, which will allow you to categorise your devices. Assuming you have signed in into the application, from the sidebar, in the Setup section, click on Device Type.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 2 - Creating a Message Type":{"id":"Tutorials/Getting started/Step 2 - Creating a Message Type","title":"Creating a Message Type","description":"As the name implies this is a type of message your device can send. If your device outputs different information structures, each of them would be a different Message Type. In this tutorial, you will create a single Message Type for the sake of simplicity. To do so, from the sidebar, in the Setup section, click on Data Ingestion Flow. You will be presented with the following page:","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 3 - Creating a Schema":{"id":"Tutorials/Getting started/Step 3 - Creating a Schema","title":"Creating a Schema","description":"Now that you have created a Message Type, you have to define the shape of the data for that Message Type. This is what is called Schemas in Biotz. Schemas are just the definition of the structure of what your device will send to the platform. This helps Biotz ingest and process your data effectively.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 4 - Creating a device":{"id":"Tutorials/Getting started/Step 4 - Creating a device","title":"Creating a device","description":"Before sending any data you need to register a device. To do so, from the sidebar, in the Device Management section, click on Devices. This will show up a list of devices. In the top right corner you click on New device. You will see the following form:","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 5 - Authenticating a device":{"id":"Tutorials/Getting started/Step 5 - Authenticating a device","title":"Authenticating a device","description":"In this tutorial, as said in the beginning, the data sending will be simulated. To do so, you will make an HTTP request to the http-forwarder service of Biotz which will, as the name implies, forward your data ingestion request to the competent services. That is the reason why you chose the HTTP communication protocol before when creating a message type.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 6 - Sending a data ingestion request":{"id":"Tutorials/Getting started/Step 6 - Sending a data ingestion request","title":"Sending a data ingestion request","description":"Now that you have a token from Biotz Identity Provider, it is time to send actual data to Biotz. In this tutorial, as said before, you will simulate a device sending data using the terminal. The approach is basically the same as to retrieve a token, just an HTTP request to the http-forwarder service. It will take your request and re-route it into a queue to be processed when the system is available.","sidebar":"tutorialSidebar"},"Tutorials/Getting started/Step 7 - Displaying the data":{"id":"Tutorials/Getting started/Step 7 - Displaying the data","title":"Displaying the data","description":"In order to display the data you will need to create a dashboard and a panel. A dashboard is a collection of panels. Each panel contains a specific query to display your data. You can also apply different customizations to the panel\'s appearance. However, the focus of this tutorial is to just display your newly ingested data. Bear in mind that the data you will display is a single point, if you have followed this tutorial. Displaying a single point is not very useful but the end goal is to learn how it works. So, later on when you create your real dashboard panels you have a good foundation to do so.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/b5796db6.3649bcfd.js b/assets/js/b5796db6.3649bcfd.js new file mode 100644 index 0000000..337a80e --- /dev/null +++ b/assets/js/b5796db6.3649bcfd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[338],{8517:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>r,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var i=n(4848),s=n(8453);const o={sidebar_position:2,sidebar_label:"MQTTX instalation"},a=void 0,l={id:"Examples/MQTTX/MQttx instalation",title:"MQttx instalation",description:"To install MQTTX, first, Visit the official MQTTX website and select the download button and you will be sent to a page.",source:"@site/docs/Examples/MQTTX/MQttx instalation.md",sourceDirName:"Examples/MQTTX",slug:"/Examples/MQTTX/MQttx instalation",permalink:"/docs/Examples/MQTTX/MQttx instalation",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,sidebar_label:"MQTTX instalation"},sidebar:"tutorialSidebar",previous:{title:"Intro",permalink:"/docs/Examples/MQTTX/Intro"},next:{title:"MQTTX configuration",permalink:"/docs/Examples/MQTTX/MQTTX configuration"}},r={},d=[{value:"Install MQTTX on Debian/Ubuntu (using commands):",id:"install-mqttx-on-debianubuntu-using-commands",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Update package lists",id:"update-package-lists",level:3},{value:"Install dependencies:",id:"install-dependencies",level:3},{value:"Install MQTTX on Windows:",id:"install-mqttx-on-windows",level:2},{value:"Install MQTTX on Mac:",id:"install-mqttx-on-mac",level:2},{value:"Additional Tips:",id:"additional-tips",level:4}];function c(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["To install MQTTX, first, Visit the official MQTTX ",(0,i.jsx)(t.a,{href:"https://mqttx.app/",children:"website"})," and select the download button and you will be sent to a page."]}),"\n",(0,i.jsx)(t.p,{children:"Choose your operating system: On the download page, identify your operating system\n(Windows, macOS, Linux) and download the appropriate installer."}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"OS",src:n(9287).A+"",width:"1278",height:"198"})})}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"For Windows and macOS:"})," The download will likely be an executable file (.exe or .dmg) that\nyou can double-click to begin the installation process.\n",(0,i.jsx)(t.strong,{children:"For Linux:"})," You might have options for a DEB package, RPM package, or a standalone\nexecutable. Choose the format that works best with your Linux distribution."]}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Version",src:n(6140).A+"",width:"924",height:"563"})})}),"\n",(0,i.jsx)(t.h2,{id:"install-mqttx-on-debianubuntu-using-commands",children:"Install MQTTX on Debian/Ubuntu (using commands):"}),"\n",(0,i.jsx)(t.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsx)(t.p,{children:"Ensure you have administrator privileges (sudo access) on your system."}),"\n",(0,i.jsx)(t.h3,{id:"update-package-lists",children:"Update package lists"}),"\n",(0,i.jsx)(t.p,{children:"Run the following command to update the list of available packages:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"sudo apt update\n"})}),"\n",(0,i.jsx)(t.h3,{id:"install-dependencies",children:"Install dependencies:"}),"\n",(0,i.jsx)(t.p,{children:"MQTTX might require additional libraries to function properly. Use this\ncommand to install them:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"sudo apt install libgirepository1.2-dev libqt5widgets5-dev libgqt5core5-dev\n"})}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Download the DEB package:"})," Visit the MQTTX download page again and download the DEB package for your specific version and architecture (32-bit or 64-bit).\n",(0,i.jsx)(t.strong,{children:"Install the DEB package:"})," Use the dpkg command to install the downloaded DEB package.\nReplace path/to/mqttx.deb with the actual path to the downloaded file:"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"sudo dpkg -i path/to/mqttx.deb\n"})}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Resolve dependencies (if needed):"})," In rare cases, additional dependencies might be missing.\nIf you encounter errors during installation, run the following command to attempt resolving\nthem:"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:"sudo apt --fix-broken install\n"})}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Verify installation:"})," You can try running mqttx in your terminal to launch the application. If successful, MQTTX should start."]}),"\n",(0,i.jsx)(t.p,{children:"This method assumes you prefer installing software using package managers. The\nofficial MQTTX website might offer alternative installation methods like pre-built binaries or\nSnap packages. Choose the method that best suits your needs and technical experience."}),"\n",(0,i.jsx)(t.h2,{id:"install-mqttx-on-windows",children:"Install MQTTX on Windows:"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Download the installer:"})," Visit the official MQTTX website (",(0,i.jsx)(t.a,{href:"https://mqttx.app/downloads",children:"https://mqttx.app/downloads"}),") and\nclick the download button."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Choose the installer:"})," On the download page, select the version compatible with your system.\nTypically, for Windows, you'll choose between a 32-bit (x86) or 64-bit (x64) installer based on your system architecture. Most users will have a 64-bit system. If you're unsure, you can search online to identify your system type."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Run the installer:"})," Once downloaded, double-click the installer file (usually named mqttx-*.exe). This will launch the installation wizard."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Follow the installation wizard:"})," The wizard will guide you through the installation process. It's generally recommended to keep the default settings unless you have specific preferences."]}),"\n",(0,i.jsx)(t.p,{children:'Click "Next" to progress through each step.'}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Complete the installation:"}),' Once you\'ve reviewed the settings, click "Install" to begin the installation. It might take a few minutes to complete.']}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Launch MQTTX:"})," After successful installation, you can launch MQTTX directly from your\ndesktop or Start menu."]}),"\n",(0,i.jsx)(t.p,{children:"The installer might offer you the option to create a desktop shortcut or add MQTTX to your\nStart menu. Choose the options you prefer.\nYou can always uninstall MQTTX from the Windows Control Panel or Settings app like any\nother program."}),"\n",(0,i.jsx)(t.h2,{id:"install-mqttx-on-mac",children:"Install MQTTX on Mac:"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Download the installer:"})," There are two recommended ways to get MQTTX on Mac:"]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"App Store:"}),' This is the easiest method for most users. Visit the Mac App Store and search for "MQTTX". Download and install the application directly from there. However, keep in mind\nthe App Store version might not be the latest due to the review process.']}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Official Website:"})," Visit the official MQTTX download page (",(0,i.jsx)(t.a,{href:"https://mqttx.app/downloads",children:"https://mqttx.app/downloads"}),') and\nselect the download button. Choose the ".dmg" installer file compatible with your Mac.']}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Install from DMG file (Official Website method):"}),"\nOnce downloaded, locate the DMG file (e.g., mqttx-*.dmg). Double-click it to mount the disk\nimage."]}),"\n",(0,i.jsx)(t.p,{children:"The DMG file will open a new window displaying the MQTTX application icon."}),"\n",(0,i.jsx)(t.p,{children:"Drag and drop the MQTTX application icon to your Applications folder.\nEject the DMG disk image when finished."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Launch MQTTX:"})," Open the Applications folder and double-click the MQTTX application icon\nto launch it."]}),"\n",(0,i.jsx)(t.h4,{id:"additional-tips",children:"Additional Tips:"}),"\n",(0,i.jsx)(t.p,{children:'You can also right-click the downloaded DMG file and choose "Open With" > "Disk Utility" to\nmount the disk image and then drag the application to Applications.'}),"\n",(0,i.jsx)(t.p,{children:"If you encounter permission issues during installation, you might need to provide\nadministrator access using your Mac password."}),"\n",(0,i.jsx)(t.p,{children:"The official website might offer alternative installation methods like pre-built binaries.\nHowever, the DMG file and App Store methods are generally the most straightforward\noptions."})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},9287:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/operating-system-a5594e7f52683309baddba21f48f6e6a.png"},6140:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/version-2313272a6fcaf88f2f4288ea03c5b385.png"},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>l});var i=n(6540);const s={},o=i.createContext(s);function a(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b5796db6.3b7f2602.js b/assets/js/b5796db6.3b7f2602.js deleted file mode 100644 index 16b1246..0000000 --- a/assets/js/b5796db6.3b7f2602.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[338],{8517:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>r,toc:()=>c});var i=n(4848),s=n(8453);const o={sidebar_position:2,sidebar_label:"MQTTX instalation"},a=void 0,r={id:"Examples/MQTTX/MQttx instalation",title:"MQttx instalation",description:"To install MQTTX, first, go to the official MQTTX website On the official page, you need to click in dowload and you will be sent to a page. Here indicate your operating system.",source:"@site/docs/Examples/MQTTX/MQttx instalation.md",sourceDirName:"Examples/MQTTX",slug:"/Examples/MQTTX/MQttx instalation",permalink:"/docs/Examples/MQTTX/MQttx instalation",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,sidebar_label:"MQTTX instalation"},sidebar:"tutorialSidebar",previous:{title:"Intro",permalink:"/docs/Examples/MQTTX/Intro"},next:{title:"MQTTX configuration",permalink:"/docs/Examples/MQTTX/MQTTX configuration"}},l={},c=[];function d(e){const t={a:"a",img:"img",p:"p",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["To install MQTTX, first, go to the official MQTTX ",(0,i.jsx)(t.a,{href:"https://mqttx.app/",children:"website"})," On the official page, you need to click in dowload and you will be sent to a page. Here indicate your operating system."]}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"OS",src:n(9287).A+"",width:"1278",height:"198"})})}),"\n",(0,i.jsx)(t.p,{children:"There choose your operating system and download the corresponding version for your operating system."}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Version",src:n(6140).A+"",width:"924",height:"563"})})}),"\n",(0,i.jsx)(t.p,{children:"Once the download is complete, follow the installation instructions for your operating system. In most cases, this will involve simply opening the downloaded file and following the steps in the installation wizard but here is an example of how to install it using commands after dowloading."}),"\n",(0,i.jsx)(t.p,{children:"This is Debian/Ubuntu example."}),"\n",(0,i.jsx)("div",{class:"tutorial-image-container",children:(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Comands",src:n(4968).A+"",width:"720",height:"429"})})})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},4968:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/commands-6df8ec57952e500961cdce5be6eb167a.png"},9287:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/operating-system-a5594e7f52683309baddba21f48f6e6a.png"},6140:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/version-2313272a6fcaf88f2f4288ea03c5b385.png"},8453:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>r});var i=n(6540);const s={},o=i.createContext(s);function a(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c4c20b15.a5b1887f.js b/assets/js/c4c20b15.a5b1887f.js new file mode 100644 index 0000000..5a30361 --- /dev/null +++ b/assets/js/c4c20b15.a5b1887f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[541],{113:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=i(4848),o=i(8453);const a={sidebar_position:3,sidebar_label:"MQTTX configuration"},s="MQTTX configuration",c={id:"Examples/MQTTX/MQTTX configuration",title:"MQTTX configuration",description:"After installing the corresponding version you have to login into the app.biotz.io, if you don't have an account, you have to create one first.",source:"@site/docs/Examples/MQTTX/MQTTX configuration.md",sourceDirName:"Examples/MQTTX",slug:"/Examples/MQTTX/MQTTX configuration",permalink:"/docs/Examples/MQTTX/MQTTX configuration",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"MQTTX configuration"},sidebar:"tutorialSidebar",previous:{title:"MQTTX instalation",permalink:"/docs/Examples/MQTTX/MQttx instalation"},next:{title:"Publish data to Biotz",permalink:"/docs/Examples/MQTTX/Message"}},r={},l=[];function d(e){const t={h1:"h1",img:"img",p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"mqttx-configuration",children:"MQTTX configuration"}),"\n",(0,n.jsxs)(t.p,{children:["After installing the corresponding version you have to login into the ",(0,n.jsx)("a",{href:"https://auth.biotz.io/realms/biotz-platform/protocol/openid-connect/auth?client_id=biotz-platform-spa&redirect_uri=https%3A%2F%2Fapp.biotz.io%2Foverview&state=6a2ba4af-3824-4682-895c-9f1b98bb837a&response_mode=fragment&response_type=code&scope=openid&nonce=86bcf3a0-ba56-4538-8c99-136fc91d06bc&ui_locales=en&code_challenge=p-QGhObRGoSHNiApAA4jDd6X4l9fLh4h53hGmDHnxdw&code_challenge_method=S2cd aca56",target:"_self",children:"app.biotz.io"}),", if you don't have an account, you have to create one first."]}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"OS",src:i(436).A+"",width:"551",height:"559"})})}),"\n",(0,n.jsxs)(t.p,{children:["The information to create an account is ",(0,n.jsx)("a",{href:"/docs/Tutorials/Creating a biotz account",target:"_self",children:"here"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"When you log in, this tab will open with this toolbar:"}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Toolbar",src:i(8045).A+"",width:"238",height:"482"})})}),"\n",(0,n.jsx)(t.p,{children:"You will have to create a Device."}),"\n",(0,n.jsx)(t.p,{children:"When creating a device, specific settings can be set for that particular device, such as device type, time zone and tags. This ensures that each device is correctly configured according to its individual needs."}),"\n",(0,n.jsx)(t.p,{children:"The device registration process also involves the creation of unique credentials for each device, which include a username and password. These credentials are used to authenticate the device when communicating with the platform, ensuring a level of communication security."}),"\n",(0,n.jsxs)(t.p,{children:["The information to create a device is ",(0,n.jsx)("a",{href:"/docs/Tutorials/Getting started/Step 4 - Creating a device",target:"_self",children:"here"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"After creating the device, you will get an excel with some data that you will have to use later, so save it!"}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"excell",src:i(6696).A+"",width:"1559",height:"146"})})}),"\n",(0,n.jsx)(t.p,{children:'After doing all the above mentioned process, you would have to go to the MQTTX application that you installed previously and click on the "+" icon.'}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"icon",src:i(2778).A+"",width:"73",height:"698"})})}),"\n",(0,n.jsx)(t.p,{children:"Enter the connection details such as the connection name, the MQTT server address, the port, the username and password. You will have this information in the excel you got from app.biotz.io. And the rest of the configuration is on these two pictures:"}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"configuration",src:i(8785).A+"",width:"730",height:"692"})})}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"configuration",src:i(4122).A+"",width:"730",height:"690"})})}),"\n",(0,n.jsx)(t.p,{children:'Once you have configured everything correctly, click "Save" or "Connect" to save the configuration and establish the connection.\nOnce you are connected, you can post messages to a specific topic or subscribe to a topic to receive messages.'})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8785:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/configuration1-29d4eba5d6f0502c2559220921137150.png"},4122:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/configuration2-adbbe9139fbe5c48de7b1e5bdece6ee5.png"},6696:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/excell-data-9b8d0c0223a080cb3f6346afb36525d7.png"},436:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/log-in-f8627de98755f66341fa640f5c6fd23c.png"},2778:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/plus-icon-0da2e8304f01e86cab687c55ac0db2da.png"},8045:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/toolbar-1d17dc2672ff719a84800dedb5048780.png"},8453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>c});var n=i(6540);const o={},a=n.createContext(o);function s(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c4c20b15.bbe2cd8c.js b/assets/js/c4c20b15.bbe2cd8c.js deleted file mode 100644 index 9965a51..0000000 --- a/assets/js/c4c20b15.bbe2cd8c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[541],{113:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=i(4848),o=i(8453);const a={sidebar_position:3,sidebar_label:"MQTTX configuration"},s="MQTTX configuration",c={id:"Examples/MQTTX/MQTTX configuration",title:"MQTTX configuration",description:"After installing the corresponding version you have to login into the app.biotz.io, if you don't have an account, you have to create one first.",source:"@site/docs/Examples/MQTTX/MQTTX configuration.md",sourceDirName:"Examples/MQTTX",slug:"/Examples/MQTTX/MQTTX configuration",permalink:"/docs/Examples/MQTTX/MQTTX configuration",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"MQTTX configuration"},sidebar:"tutorialSidebar",previous:{title:"MQTTX instalation",permalink:"/docs/Examples/MQTTX/MQttx instalation"},next:{title:"Sending message to establish connection with Biotz",permalink:"/docs/Examples/MQTTX/Message"}},r={},l=[];function d(e){const t={h1:"h1",img:"img",p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"mqttx-configuration",children:"MQTTX configuration"}),"\n",(0,n.jsxs)(t.p,{children:["After installing the corresponding version you have to login into the ",(0,n.jsx)("a",{href:"https://auth.biotz.io/realms/biotz-platform/protocol/openid-connect/auth?client_id=biotz-platform-spa&redirect_uri=https%3A%2F%2Fapp.biotz.io%2Foverview&state=6a2ba4af-3824-4682-895c-9f1b98bb837a&response_mode=fragment&response_type=code&scope=openid&nonce=86bcf3a0-ba56-4538-8c99-136fc91d06bc&ui_locales=en&code_challenge=p-QGhObRGoSHNiApAA4jDd6X4l9fLh4h53hGmDHnxdw&code_challenge_method=S256",target:"_self",children:"app.biotz.io"}),", if you don't have an account, you have to create one first."]}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"OS",src:i(436).A+"",width:"551",height:"559"})})}),"\n",(0,n.jsxs)(t.p,{children:["The information to create an account is ",(0,n.jsx)("a",{href:"/docs/Tutorials/Creating a biotz account",target:"_self",children:"here"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"When you log in, this tab will open with this toolbar:"}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Toolbar",src:i(8045).A+"",width:"238",height:"482"})})}),"\n",(0,n.jsxs)(t.p,{children:["You will have to create a Device. The information to create a device is ",(0,n.jsx)("a",{href:"/docs/Tutorials/Getting started/Step 4 - Creating a device",target:"_self",children:"here"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"After creating the device, you will get an excel with some data that you will have to use later, so save it!"}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"excell",src:i(6696).A+"",width:"1559",height:"146"})})}),"\n",(0,n.jsx)(t.p,{children:'After doing all the above mentioned process, you would have to go to the MQTTX application that you installed previously and click on the "+" icon.'}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"icon",src:i(2778).A+"",width:"73",height:"698"})})}),"\n",(0,n.jsx)(t.p,{children:"Enter the connection details such as the connection name, the MQTT server address, the port, the username and password. You will have this information in the excel you got from app.biotz.io. And the rest of the configuration is on these two pictures:"}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"configuration",src:i(8785).A+"",width:"730",height:"692"})})}),"\n",(0,n.jsx)("div",{class:"tutorial-image-container",children:(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"configuration",src:i(4122).A+"",width:"730",height:"690"})})}),"\n",(0,n.jsx)(t.p,{children:'Once you have configured everything correctly, click "Save" or "Connect" to save the configuration and establish the connection.\nOnce you are connected, you can post messages to a specific topic or subscribe to a topic to receive messages.'})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8785:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/configuration1-29d4eba5d6f0502c2559220921137150.png"},4122:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/configuration2-adbbe9139fbe5c48de7b1e5bdece6ee5.png"},6696:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/excell-data-9b8d0c0223a080cb3f6346afb36525d7.png"},436:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/log-in-f8627de98755f66341fa640f5c6fd23c.png"},2778:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/plus-icon-0da2e8304f01e86cab687c55ac0db2da.png"},8045:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/toolbar-1d17dc2672ff719a84800dedb5048780.png"},8453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>c});var n=i(6540);const o={},a=n.createContext(o);function s(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.41cac303.js b/assets/js/runtime~main.52e75c0a.js similarity index 95% rename from assets/js/runtime~main.41cac303.js rename to assets/js/runtime~main.52e75c0a.js index 54751c7..73078a8 100644 --- a/assets/js/runtime~main.41cac303.js +++ b/assets/js/runtime~main.52e75c0a.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,r,b={},c={};function d(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return b[e].call(f.exports,f,f.exports,d),f.exports}d.m=b,e=[],d.O=(a,f,t,r)=>{if(!f){var b=1/0;for(i=0;i=r)&&Object.keys(d.O).every((e=>d.O[e](f[o])))?f.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var b={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,d.d(r,b),r},d.d=(e,a)=>{for(var f in a)d.o(a,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,f)=>(d.f[f](e,a),a)),[])),d.u=e=>"assets/js/"+({48:"a94703ab",61:"1f391b9e",93:"3f776845",98:"a7bd4aaa",118:"ca79eafe",246:"498d4d26",271:"ffd52dfa",300:"4cd738bd",331:"c16f5663",338:"b5796db6",360:"0fea52e5",363:"f5546e3f",401:"17896441",438:"fbacb533",471:"de5aeb7c",473:"3c01fd32",488:"8cb4ad27",502:"4a070847",541:"c4c20b15",563:"e72b9bb3",576:"3987870c",581:"935f2afb",583:"1df93b7f",590:"578ed02f",635:"b9a9e23a",647:"5e95c892",710:"e829bf52",712:"842fc954",741:"8ebf884c",748:"94375d41",750:"356a0ac6",759:"f9aaae36",767:"142bacfa",814:"75a8a8f3",832:"8f9e59a2",837:"9fb72dca",865:"f59d81ac",943:"519f47fb",962:"4f6f0beb",964:"a165d0ef",968:"15c5b2e6",969:"14eb3368",972:"bde2094a",981:"1be0d2c3"}[e]||e)+"."+{48:"672689b8",61:"3de1569f",93:"cdcc10b4",98:"cb220483",118:"05ad5545",237:"4c14c75f",246:"5a35bd0d",271:"01c8b9d3",300:"1c14f24b",331:"4d4830eb",338:"3b7f2602",360:"6f293a04",363:"72a1985e",401:"816063a2",438:"5915066a",471:"ae00c978",473:"18a36d0c",488:"2f071301",502:"4042db84",541:"bbe2cd8c",563:"757c8641",576:"02150fbb",581:"bdab4194",583:"f5e951e0",590:"5d8b0e3b",635:"43045c96",647:"774f91d8",674:"68ee5ac8",710:"68b32638",712:"0d72ca51",741:"9be63690",748:"678ad8bb",750:"13faa606",759:"67ab695c",767:"ddd2a8aa",814:"92c4bd30",832:"8d05202e",837:"532eb847",865:"570d8ec3",943:"0d832a0d",962:"d9923ff2",964:"eb22cda0",968:"923d945a",969:"babcf1dd",972:"1fe759c3",981:"4e2e5846"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="my-website:",d.l=(e,a,f,b)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={17896441:"401",a94703ab:"48","1f391b9e":"61","3f776845":"93",a7bd4aaa:"98",ca79eafe:"118","498d4d26":"246",ffd52dfa:"271","4cd738bd":"300",c16f5663:"331",b5796db6:"338","0fea52e5":"360",f5546e3f:"363",fbacb533:"438",de5aeb7c:"471","3c01fd32":"473","8cb4ad27":"488","4a070847":"502",c4c20b15:"541",e72b9bb3:"563","3987870c":"576","935f2afb":"581","1df93b7f":"583","578ed02f":"590",b9a9e23a:"635","5e95c892":"647",e829bf52:"710","842fc954":"712","8ebf884c":"741","94375d41":"748","356a0ac6":"750",f9aaae36:"759","142bacfa":"767","75a8a8f3":"814","8f9e59a2":"832","9fb72dca":"837",f59d81ac:"865","519f47fb":"943","4f6f0beb":"962",a165d0ef:"964","15c5b2e6":"968","14eb3368":"969",bde2094a:"972","1be0d2c3":"981"}[e]||e,d.p+d.u(e)},(()=>{var e={354:0,869:0};d.f.j=(a,f)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var b=d.p+d.u(a),c=new Error;d.l(b,(f=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+b+")",c.name="ChunkLoadError",c.type=r,c.request=b,t[1](c)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,b=f[0],c=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(t in c)d.o(c,t)&&(d.m[t]=c[t]);if(o)var i=o(d)}for(a&&a(f);n{"use strict";var e,a,f,t,r,b={},c={};function d(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return b[e].call(f.exports,f,f.exports,d),f.exports}d.m=b,e=[],d.O=(a,f,t,r)=>{if(!f){var b=1/0;for(i=0;i=r)&&Object.keys(d.O).every((e=>d.O[e](f[o])))?f.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var b={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,d.d(r,b),r},d.d=(e,a)=>{for(var f in a)d.o(a,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,f)=>(d.f[f](e,a),a)),[])),d.u=e=>"assets/js/"+({48:"a94703ab",61:"1f391b9e",93:"3f776845",98:"a7bd4aaa",118:"ca79eafe",246:"498d4d26",271:"ffd52dfa",300:"4cd738bd",331:"c16f5663",338:"b5796db6",360:"0fea52e5",363:"f5546e3f",401:"17896441",438:"fbacb533",471:"de5aeb7c",473:"3c01fd32",488:"8cb4ad27",502:"4a070847",541:"c4c20b15",563:"e72b9bb3",576:"3987870c",581:"935f2afb",583:"1df93b7f",590:"578ed02f",635:"b9a9e23a",647:"5e95c892",710:"e829bf52",712:"842fc954",741:"8ebf884c",748:"94375d41",750:"356a0ac6",759:"f9aaae36",767:"142bacfa",814:"75a8a8f3",832:"8f9e59a2",837:"9fb72dca",865:"f59d81ac",943:"519f47fb",962:"4f6f0beb",964:"a165d0ef",968:"15c5b2e6",969:"14eb3368",972:"bde2094a",981:"1be0d2c3"}[e]||e)+"."+{48:"672689b8",61:"3de1569f",93:"cdcc10b4",98:"cb220483",118:"05ad5545",237:"4c14c75f",246:"5a35bd0d",271:"01c8b9d3",300:"1c14f24b",331:"4d4830eb",338:"3649bcfd",360:"388069ae",363:"72a1985e",401:"816063a2",438:"5915066a",471:"ae00c978",473:"18a36d0c",488:"2f071301",502:"4042db84",541:"a5b1887f",563:"757c8641",576:"02150fbb",581:"45c5f0f9",583:"f5e951e0",590:"5d8b0e3b",635:"43045c96",647:"774f91d8",674:"68ee5ac8",710:"68b32638",712:"0d72ca51",741:"9be63690",748:"678ad8bb",750:"13faa606",759:"67ab695c",767:"ddd2a8aa",814:"92c4bd30",832:"8d05202e",837:"532eb847",865:"570d8ec3",943:"0d832a0d",962:"d9923ff2",964:"eb22cda0",968:"923d945a",969:"babcf1dd",972:"1fe759c3",981:"3027d2b9"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="my-website:",d.l=(e,a,f,b)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={17896441:"401",a94703ab:"48","1f391b9e":"61","3f776845":"93",a7bd4aaa:"98",ca79eafe:"118","498d4d26":"246",ffd52dfa:"271","4cd738bd":"300",c16f5663:"331",b5796db6:"338","0fea52e5":"360",f5546e3f:"363",fbacb533:"438",de5aeb7c:"471","3c01fd32":"473","8cb4ad27":"488","4a070847":"502",c4c20b15:"541",e72b9bb3:"563","3987870c":"576","935f2afb":"581","1df93b7f":"583","578ed02f":"590",b9a9e23a:"635","5e95c892":"647",e829bf52:"710","842fc954":"712","8ebf884c":"741","94375d41":"748","356a0ac6":"750",f9aaae36:"759","142bacfa":"767","75a8a8f3":"814","8f9e59a2":"832","9fb72dca":"837",f59d81ac:"865","519f47fb":"943","4f6f0beb":"962",a165d0ef:"964","15c5b2e6":"968","14eb3368":"969",bde2094a:"972","1be0d2c3":"981"}[e]||e,d.p+d.u(e)},(()=>{var e={354:0,869:0};d.f.j=(a,f)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var b=d.p+d.u(a),c=new Error;d.l(b,(f=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+b+")",c.name="ChunkLoadError",c.type=r,c.request=b,t[1](c)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,b=f[0],c=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(t in c)d.o(c,t)&&(d.m[t]=c[t]);if(o)var i=o(d)}for(a&&a(f);n Intro | Biotz Academy - + -

Intro

+

Intro

MQTTX is a tool designed to assist in the development, testing and debugging of applications using the Message Queuing Telemetry Transport (MQTT) protocol.

MQTTX provides a graphical user interface that allows developers to connect, subscribe and publish messages to MQTT brokers, as well as monitor incoming and outgoing messages.

In this tutorial, you will learn how to establish a connection to Biotz using MQTTX. For that we will first have to install MQTTX.