diff --git a/404.html b/404.html index 974de69a..1de992ec 100644 --- a/404.html +++ b/404.html @@ -4,10 +4,10 @@ Lobaro Documentation - - + + -
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

\ No newline at end of file diff --git a/assets/images/bulk-operations-c1fb9b3364eecf3d617070a2f8b998f2.png b/assets/images/bulk-operations-c1fb9b3364eecf3d617070a2f8b998f2.png new file mode 100644 index 00000000..248413ca Binary files /dev/null and b/assets/images/bulk-operations-c1fb9b3364eecf3d617070a2f8b998f2.png differ diff --git a/assets/images/bulk-operations-update-83cdf35011eae26a53ba60d9539360a6.png b/assets/images/bulk-operations-update-83cdf35011eae26a53ba60d9539360a6.png new file mode 100644 index 00000000..b408c0b6 Binary files /dev/null and b/assets/images/bulk-operations-update-83cdf35011eae26a53ba60d9539360a6.png differ diff --git a/assets/js/01233d77.3c26db8f.js b/assets/js/01233d77.3c26db8f.js deleted file mode 100644 index e9b36858..00000000 --- a/assets/js/01233d77.3c26db8f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[804],{6460:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var r=n(4848),o=n(8453);const s={sidebar_position:1},i="Lobaro IoT Platform",a={id:"cloud/platform/index",title:"Lobaro IoT Platform",description:"Getting Started",source:"@site/docs/cloud/platform/index.md",sourceDirName:"cloud/platform",slug:"/cloud/platform/",permalink:"/iot/cloud/platform/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/cloud/platform/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"cloudSidebar",previous:{title:"Lobaro Direct+",permalink:"/iot/cloud/direct+/"},next:{title:"Integrations",permalink:"/iot/cloud/platform/integrations/"}},l={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Generate a new site",id:"generate-a-new-site",level:2},{value:"Start your site",id:"start-your-site",level:2}];function c(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"lobaro-iot-platform",children:"Lobaro IoT Platform"}),"\n",(0,r.jsx)(t.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsxs)(t.p,{children:["Get started by ",(0,r.jsx)(t.strong,{children:"creating a new site"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Or ",(0,r.jsx)(t.strong,{children:"try Docusaurus immediately"})," with ",(0,r.jsx)(t.strong,{children:(0,r.jsx)(t.a,{href:"https://docusaurus.new",children:"docusaurus.new"})}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"what-youll-need",children:"What you'll need"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://nodejs.org/en/download/",children:"Node.js"})," version 18.0 or above:","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"When installing Node.js, you are recommended to check all checkboxes related to dependencies."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"generate-a-new-site",children:"Generate a new site"}),"\n",(0,r.jsxs)(t.p,{children:["Generate a new Docusaurus site using the ",(0,r.jsx)(t.strong,{children:"classic template"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"The classic template will automatically be added to your project after you run the command:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npm init docusaurus@latest my-website classic\n"})}),"\n",(0,r.jsx)(t.p,{children:"You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor."}),"\n",(0,r.jsx)(t.p,{children:"The command also installs all necessary dependencies you need to run Docusaurus."}),"\n",(0,r.jsx)(t.h2,{id:"start-your-site",children:"Start your site"}),"\n",(0,r.jsx)(t.p,{children:"Run the development server:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"cd my-website\nnpm run start\n"})}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"cd"})," command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"npm run start"})," command builds your website locally and serves it through a development server, ready for you to view at ",(0,r.jsx)(t.a,{href:"http://localhost:3000/",children:"http://localhost:3000/"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Open ",(0,r.jsx)(t.code,{children:"docs/intro.md"})," (this page) and edit some lines: the site ",(0,r.jsx)(t.strong,{children:"reloads automatically"})," and displays your changes."]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var r=n(6540);const o={},s=r.createContext(o);function i(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0b02251e.10f23387.js b/assets/js/0b02251e.10f23387.js deleted file mode 100644 index 9e0a6c04..00000000 --- a/assets/js/0b02251e.10f23387.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[3830],{5570:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"htmlSidebar":[{"type":"html","value":"TEST|TEST","defaultStyle":true}],"allDocSidebar":[{"type":"category","label":"All Docs","items":[{"type":"link","label":"Lobaro Documentation","href":"/iot/","docId":"index","unlisted":false},{"type":"category","label":"Products","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Metering Gateways","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Wireless M-BUS (Gen. 3)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g3/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g3/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Gateway V4","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Description","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/"},{"type":"link","label":"Gateway V3","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index","unlisted":false},{"type":"link","label":"Gateway DinRail","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index","unlisted":false},{"type":"link","label":"Gateway Solar","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index","unlisted":false},{"type":"link","label":"Gateway Concentrator","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index","unlisted":false},{"type":"category","label":"Discontinued","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index","unlisted":false},{"type":"link","label":"Gateway V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/"}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/"},{"type":"category","label":"Wireless M-BUS (Gen. 2)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g2/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g2/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/"},{"type":"category","label":"Wired M-BUS (Gen. 1)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/cfg","docId":"products/metering-gateways/wired-mbus-g1/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/workflow","docId":"products/metering-gateways/wired-mbus-g1/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wired-mbus-g1/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Hybrid Gateway","href":"/iot/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wired-mbus-g1/"}],"href":"/iot/products/metering-gateways/"},{"type":"category","label":"Sensor Gateways","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Current Loop","href":"/iot/products/sensor-gateways/current-loop/","docId":"products/sensor-gateways/current-loop/index","unlisted":false},{"type":"link","label":"Liquid Level","href":"/iot/products/sensor-gateways/level/","docId":"products/sensor-gateways/level/index","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/products/sensor-gateways/modbus/","docId":"products/sensor-gateways/modbus/index","unlisted":false},{"type":"link","label":"Temperature","href":"/iot/products/sensor-gateways/temperature/","docId":"products/sensor-gateways/temperature/index","unlisted":false}],"href":"/iot/products/sensor-gateways/"}],"href":"/iot/products/"},{"type":"category","label":"Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Lobaro USB Config Adapter","href":"/iot/configuration/usb-config-adapter","docId":"configuration/usb-config-adapter","unlisted":false},{"type":"link","label":"Lobaro Config Tool","href":"/iot/configuration/lobaro-config-tool","docId":"configuration/lobaro-config-tool","unlisted":false},{"type":"link","label":"MBUS Reception Filtering","href":"/iot/configuration/meter-reception-filter-config","docId":"configuration/meter-reception-filter-config","unlisted":false},{"type":"link","label":"LoRaWAN Downlink Config","href":"/iot/configuration/lorawan-downlink-config","docId":"configuration/lorawan-downlink-config","unlisted":false},{"type":"link","label":"CRON Configuration","href":"/iot/configuration/cron-configuration","docId":"configuration/cron-configuration","unlisted":false},{"type":"link","label":"LTE Network Configuration","href":"/iot/configuration/lte-network-configuration","docId":"configuration/lte-network-configuration","unlisted":false},{"type":"link","label":"OBIS-Code Configuration","href":"/iot/configuration/obis-code-configuration","docId":"configuration/obis-code-configuration","unlisted":false}],"href":"/iot/configuration/"},{"type":"category","label":"Firmware","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"app-nrf9160-wmbus","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/iot/firmware/app-nrf9160-wmbus/introduction","docId":"firmware/app-nrf9160-wmbus/introduction","unlisted":false},{"type":"link","label":"Configuration Parameter","href":"/iot/firmware/app-nrf9160-wmbus/configuration-parameter","docId":"firmware/app-nrf9160-wmbus/configuration-parameter","unlisted":false},{"type":"link","label":"LoRaWAN Communication","href":"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol","docId":"firmware/app-nrf9160-wmbus/lorawan-communication-protocol","unlisted":false},{"type":"link","label":"Cellular IoT Communication","href":"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","docId":"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","unlisted":false},{"type":"link","label":"Compatible Hardware","href":"/iot/firmware/app-nrf9160-wmbus/compatible-hardware","docId":"firmware/app-nrf9160-wmbus/compatible-hardware","unlisted":false},{"type":"link","label":"Changelog & Updates","href":"/iot/firmware/app-nrf9160-wmbus/changelog-download","docId":"firmware/app-nrf9160-wmbus/changelog-download","unlisted":false}]},{"type":"link","label":"app-hybrid-modbus","href":"/iot/firmware/app-hybrid-modbus/","docId":"firmware/app-hybrid-modbus/index","unlisted":false}],"href":"/iot/firmware/"},{"type":"category","label":"Hardware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Mainboards","href":"/iot/hardware/mainboards/","docId":"hardware/mainboards/index","unlisted":false},{"type":"link","label":"Extension Modules","href":"/iot/hardware/extension-modules/","docId":"hardware/extension-modules/index","unlisted":false},{"type":"link","label":"Device Housings","href":"/iot/hardware/housings/","docId":"hardware/housings/index","unlisted":false}],"href":"/iot/hardware/"},{"type":"category","label":"Lobaro Cloud","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Lobaro Direct+","href":"/iot/cloud/direct+/","docId":"cloud/direct+/index","unlisted":false},{"type":"category","label":"Lobaro IoT Platform","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Integrations","href":"/iot/cloud/platform/integrations/","docId":"cloud/platform/integrations/index","unlisted":false}],"href":"/iot/cloud/platform/"}],"href":"/iot/cloud/"},{"type":"category","label":"Knowledge Base","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Wireless M-BUS","href":"/iot/knowledge-base/wireless-mbus","docId":"knowledge-base/wireless-mbus","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/knowledge-base/modbus","docId":"knowledge-base/modbus","unlisted":false}]}],"collapsed":true,"collapsible":true}],"configurationSidebar":[{"type":"category","label":"Configuration","items":[{"type":"link","label":"Overview","href":"/iot/configuration/","docId":"configuration/index","unlisted":false},{"type":"link","label":"Lobaro USB Config Adapter","href":"/iot/configuration/usb-config-adapter","docId":"configuration/usb-config-adapter","unlisted":false},{"type":"link","label":"Lobaro Config Tool","href":"/iot/configuration/lobaro-config-tool","docId":"configuration/lobaro-config-tool","unlisted":false},{"type":"link","label":"MBUS Reception Filtering","href":"/iot/configuration/meter-reception-filter-config","docId":"configuration/meter-reception-filter-config","unlisted":false},{"type":"link","label":"LoRaWAN Downlink Config","href":"/iot/configuration/lorawan-downlink-config","docId":"configuration/lorawan-downlink-config","unlisted":false},{"type":"link","label":"CRON Configuration","href":"/iot/configuration/cron-configuration","docId":"configuration/cron-configuration","unlisted":false},{"type":"link","label":"LTE Network Configuration","href":"/iot/configuration/lte-network-configuration","docId":"configuration/lte-network-configuration","unlisted":false},{"type":"link","label":"OBIS-Code Configuration","href":"/iot/configuration/obis-code-configuration","docId":"configuration/obis-code-configuration","unlisted":false}],"collapsed":true,"collapsible":true}],"productsSidebar":[{"type":"category","label":"Products","items":[{"type":"link","label":"Overview","href":"/iot/products/","docId":"products/index","unlisted":false},{"type":"category","label":"Metering Gateways","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Wireless M-BUS (Gen. 3)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g3/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g3/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Gateway V4","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Description","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/"},{"type":"link","label":"Gateway V3","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index","unlisted":false},{"type":"link","label":"Gateway DinRail","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index","unlisted":false},{"type":"link","label":"Gateway Solar","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index","unlisted":false},{"type":"link","label":"Gateway Concentrator","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index","unlisted":false},{"type":"category","label":"Discontinued","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index","unlisted":false},{"type":"link","label":"Gateway V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/"}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/"},{"type":"category","label":"Wireless M-BUS (Gen. 2)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g2/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g2/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/"},{"type":"category","label":"Wired M-BUS (Gen. 1)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/cfg","docId":"products/metering-gateways/wired-mbus-g1/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/workflow","docId":"products/metering-gateways/wired-mbus-g1/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wired-mbus-g1/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Hybrid Gateway","href":"/iot/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wired-mbus-g1/"}],"href":"/iot/products/metering-gateways/"},{"type":"category","label":"Sensor Gateways","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Current Loop","href":"/iot/products/sensor-gateways/current-loop/","docId":"products/sensor-gateways/current-loop/index","unlisted":false},{"type":"link","label":"Liquid Level","href":"/iot/products/sensor-gateways/level/","docId":"products/sensor-gateways/level/index","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/products/sensor-gateways/modbus/","docId":"products/sensor-gateways/modbus/index","unlisted":false},{"type":"link","label":"Temperature","href":"/iot/products/sensor-gateways/temperature/","docId":"products/sensor-gateways/temperature/index","unlisted":false}],"href":"/iot/products/sensor-gateways/"}],"collapsed":true,"collapsible":true}],"firmwareSidebar":[{"type":"category","label":"Firmware","items":[{"type":"link","label":"Overview","href":"/iot/firmware/","docId":"firmware/index","unlisted":false},{"type":"category","label":"app-nrf9160-wmbus","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/iot/firmware/app-nrf9160-wmbus/introduction","docId":"firmware/app-nrf9160-wmbus/introduction","unlisted":false},{"type":"link","label":"Configuration Parameter","href":"/iot/firmware/app-nrf9160-wmbus/configuration-parameter","docId":"firmware/app-nrf9160-wmbus/configuration-parameter","unlisted":false},{"type":"link","label":"LoRaWAN Communication","href":"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol","docId":"firmware/app-nrf9160-wmbus/lorawan-communication-protocol","unlisted":false},{"type":"link","label":"Cellular IoT Communication","href":"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","docId":"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","unlisted":false},{"type":"link","label":"Compatible Hardware","href":"/iot/firmware/app-nrf9160-wmbus/compatible-hardware","docId":"firmware/app-nrf9160-wmbus/compatible-hardware","unlisted":false},{"type":"link","label":"Changelog & Updates","href":"/iot/firmware/app-nrf9160-wmbus/changelog-download","docId":"firmware/app-nrf9160-wmbus/changelog-download","unlisted":false}]},{"type":"link","label":"app-hybrid-modbus","href":"/iot/firmware/app-hybrid-modbus/","docId":"firmware/app-hybrid-modbus/index","unlisted":false}],"collapsed":true,"collapsible":true}],"hardwareSidebar":[{"type":"category","label":"Hardware","items":[{"type":"link","label":"Overview","href":"/iot/hardware/","docId":"hardware/index","unlisted":false},{"type":"link","label":"Mainboards","href":"/iot/hardware/mainboards/","docId":"hardware/mainboards/index","unlisted":false},{"type":"link","label":"Extension Modules","href":"/iot/hardware/extension-modules/","docId":"hardware/extension-modules/index","unlisted":false},{"type":"link","label":"Device Housings","href":"/iot/hardware/housings/","docId":"hardware/housings/index","unlisted":false}],"collapsed":true,"collapsible":true}],"cloudSidebar":[{"type":"category","label":"Lobaro Cloud","items":[{"type":"link","label":"Overview","href":"/iot/cloud/","docId":"cloud/index","unlisted":false},{"type":"link","label":"Lobaro Direct+","href":"/iot/cloud/direct+/","docId":"cloud/direct+/index","unlisted":false},{"type":"category","label":"Lobaro IoT Platform","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Integrations","href":"/iot/cloud/platform/integrations/","docId":"cloud/platform/integrations/index","unlisted":false}],"href":"/iot/cloud/platform/"}],"collapsed":true,"collapsible":true}],"knowledgeBaseSidebar":[{"type":"category","label":"Knowledge Base","items":[{"type":"link","label":"Wireless M-BUS","href":"/iot/knowledge-base/wireless-mbus","docId":"knowledge-base/wireless-mbus","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/knowledge-base/modbus","docId":"knowledge-base/modbus","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"cloud/direct+/index":{"id":"cloud/direct+/index","title":"Lobaro Direct+","description":"test","sidebar":"cloudSidebar"},"cloud/index":{"id":"cloud/index","title":"Overview","description":"The Lobaro IoT Platform operates as a Head End System for IoT Devices. The Platform is optimized for but not limited","sidebar":"cloudSidebar"},"cloud/platform/index":{"id":"cloud/platform/index","title":"Lobaro IoT Platform","description":"Getting Started","sidebar":"cloudSidebar"},"cloud/platform/integrations/index":{"id":"cloud/platform/integrations/index","title":"Integrations","description":"","sidebar":"cloudSidebar"},"configuration/cron-configuration":{"id":"configuration/cron-configuration","title":"CRON Configuration","description":"We use CRON expressions configure the behavioral timing of our devices. This CRON configuration can be adjusted during","sidebar":"configurationSidebar"},"configuration/index":{"id":"configuration/index","title":"Overview","description":"The device configuration allows a wide range and flexible way of internal settings adjustments for Lobaro hardware.","sidebar":"configurationSidebar"},"configuration/lobaro-config-tool":{"id":"configuration/lobaro-config-tool","title":"Lobaro Config Tool","description":"The Lobaro Config Tool (a.k.a. Lobaro Maintenance Tool) can be used to configure and diagnose Lobaro devices locally using a PC and our special","sidebar":"configurationSidebar"},"configuration/lorawan-downlink-config":{"id":"configuration/lorawan-downlink-config","title":"LoRaWAN Downlink Config","description":"This article describes the technical details how to remotely configure Lobaro devices that are using LoRaWAN as","sidebar":"configurationSidebar"},"configuration/lte-network-configuration":{"id":"configuration/lte-network-configuration","title":"LTE Network Configuration","description":"In order for the Lobaro devices to be able to dial into the mobile network, it may be necessary to configure the network","sidebar":"configurationSidebar"},"configuration/meter-reception-filter-config":{"id":"configuration/meter-reception-filter-config","title":"MBUS Reception Filtering","description":"Lobaro firmwares that can receive (wireless) M-BUS have (optional) common filter configuration parameter, that can limit, which telegrams are","sidebar":"configurationSidebar"},"configuration/obis-code-configuration":{"id":"configuration/obis-code-configuration","title":"OBIS-Code Configuration","description":"Object identification system (OBIS) Codes are used to identify the different readings of a smart meter transferred in","sidebar":"configurationSidebar"},"configuration/usb-config-adapter":{"id":"configuration/usb-config-adapter","title":"Lobaro USB Config Adapter","description":"The Lobaro USB configuration adapters connects the configuration serial uart of our devices to a PC. It is used for:","sidebar":"configurationSidebar"},"firmware/app-hybrid-modbus/index":{"id":"firmware/app-hybrid-modbus/index","title":"app-hybrid-modbus","description":"This new documentation center is currently work in progress","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol":{"id":"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","title":"Cellular IoT Communication","description":"This page describes the possible uplink and downlink message contents when using NB-IoT or LTE-M (cellular IoT) as","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/changelog-download":{"id":"firmware/app-nrf9160-wmbus/changelog-download","title":"Changelog & Updates","description":"Firmware Updates","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/compatible-hardware":{"id":"firmware/app-nrf9160-wmbus/compatible-hardware","title":"Compatible Hardware","description":"","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/configuration-parameter":{"id":"firmware/app-nrf9160-wmbus/configuration-parameter","title":"Configuration Parameter","description":"On this page all common configuration parameters of the firmware are presented. Usually the internal defaults work","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/introduction":{"id":"firmware/app-nrf9160-wmbus/introduction","title":"Introduction","description":"This page describes the Lobaro wireless M-Bus gateway firmware, called app-nrf9160-wmbus, which is executable on","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/lorawan-communication-protocol":{"id":"firmware/app-nrf9160-wmbus/lorawan-communication-protocol","title":"LoRaWAN Communication","description":"The Gateway can use LoRaWAN as Uplink technology for forwarding received wireless M-BUS telegrams to any network server.","sidebar":"firmwareSidebar"},"firmware/index":{"id":"firmware/index","title":"Overview","description":"This section describes the different available firmware implementation. In different products the same firmware is","sidebar":"firmwareSidebar"},"hardware/extension-modules/index":{"id":"hardware/extension-modules/index","title":"Hardware Addons","description":"","sidebar":"hardwareSidebar"},"hardware/housings/index":{"id":"hardware/housings/index","title":"Device Housings","description":"","sidebar":"hardwareSidebar"},"hardware/index":{"id":"hardware/index","title":"Overview","description":"This section describes the different available hardware modules and mainboard. In different products the same hardware is","sidebar":"hardwareSidebar"},"hardware/mainboards/index":{"id":"hardware/mainboards/index","title":"Mainboards","description":"","sidebar":"hardwareSidebar"},"index":{"id":"index","title":"Lobaro Documentation","description":"This new documentation center is currently work in progress","sidebar":"allDocSidebar"},"knowledge-base/modbus":{"id":"knowledge-base/modbus","title":"Modbus","description":"Some notable things in a block quote!","sidebar":"knowledgeBaseSidebar"},"knowledge-base/wireless-mbus":{"id":"knowledge-base/wireless-mbus","title":"Wireless M-BUS","description":"Some notable things in a block quote!","sidebar":"knowledgeBaseSidebar"},"products/index":{"id":"products/index","title":"Overview","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/index":{"id":"products/metering-gateways/index","title":"Metering Gateway","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index":{"id":"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index","title":"Overview","description":"Some notable things in a block quote!","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/index":{"id":"products/metering-gateways/wired-mbus-g1/index","title":"Wired M-BUS Gateways","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/manual/cfg":{"id":"products/metering-gateways/wired-mbus-g1/manual/cfg","title":"Configuration","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/manual/index":{"id":"products/metering-gateways/wired-mbus-g1/manual/index","title":"Operation Manual","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/manual/workflow":{"id":"products/metering-gateways/wired-mbus-g1/manual/workflow","title":"Workflow","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index":{"id":"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/index":{"id":"products/metering-gateways/wireless-mbus-g2/index","title":"Wireless M-BUS Gateways","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/manual/cfg":{"id":"products/metering-gateways/wireless-mbus-g2/manual/cfg","title":"Configuration","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/manual/index":{"id":"products/metering-gateways/wireless-mbus-g2/manual/index","title":"Operation Manual","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/manual/workflow":{"id":"products/metering-gateways/wireless-mbus-g2/manual/workflow","title":"Workflow","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/index","title":"Discontinued Gateways","description":"These products have been discontinued and are no longer available for sale.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","title":"Description","description":"Getting Started","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/index","title":"Wmbus Gateway V4","description":"Getting Started","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/index":{"id":"products/metering-gateways/wireless-mbus-g3/index","title":"Wireless M-BUS Gateways","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/manual/cfg":{"id":"products/metering-gateways/wireless-mbus-g3/manual/cfg","title":"Configuration","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/manual/index":{"id":"products/metering-gateways/wireless-mbus-g3/manual/index","title":"Operation Manual","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/manual/workflow":{"id":"products/metering-gateways/wireless-mbus-g3/manual/workflow","title":"Workflow","description":"Einleitung","sidebar":"productsSidebar"},"products/sensor-gateways/current-loop/index":{"id":"products/sensor-gateways/current-loop/index","title":"Current Loop Sensors (4...20 mA)","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/sensor-gateways/index":{"id":"products/sensor-gateways/index","title":"Metering Gateway","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/sensor-gateways/level/index":{"id":"products/sensor-gateways/level/index","title":"Liquid Level Sensors","description":"","sidebar":"productsSidebar"},"products/sensor-gateways/modbus/index":{"id":"products/sensor-gateways/modbus/index","title":"Modbus Sensors","description":"","sidebar":"productsSidebar"},"products/sensor-gateways/temperature/index":{"id":"products/sensor-gateways/temperature/index","title":"Temperature Sensors","description":"","sidebar":"productsSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/0b02251e.e59e18a3.js b/assets/js/0b02251e.e59e18a3.js new file mode 100644 index 00000000..1351a0b5 --- /dev/null +++ b/assets/js/0b02251e.e59e18a3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[3830],{5570:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"htmlSidebar":[{"type":"html","value":"TEST|TEST","defaultStyle":true}],"allDocSidebar":[{"type":"category","label":"All Docs","items":[{"type":"link","label":"Lobaro Documentation","href":"/iot/","docId":"index","unlisted":false},{"type":"category","label":"Products","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Metering Gateways","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Wireless M-BUS (Gen. 3)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g3/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g3/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Gateway V4","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Description","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/"},{"type":"link","label":"Gateway V3","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index","unlisted":false},{"type":"link","label":"Gateway DinRail","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index","unlisted":false},{"type":"link","label":"Gateway Solar","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index","unlisted":false},{"type":"link","label":"Gateway Concentrator","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index","unlisted":false},{"type":"category","label":"Discontinued","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index","unlisted":false},{"type":"link","label":"Gateway V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/"}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/"},{"type":"category","label":"Wireless M-BUS (Gen. 2)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g2/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g2/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/"},{"type":"category","label":"Wired M-BUS (Gen. 1)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/cfg","docId":"products/metering-gateways/wired-mbus-g1/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/workflow","docId":"products/metering-gateways/wired-mbus-g1/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wired-mbus-g1/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Hybrid Gateway","href":"/iot/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wired-mbus-g1/"}],"href":"/iot/products/metering-gateways/"},{"type":"category","label":"Sensor Gateways","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Current Loop","href":"/iot/products/sensor-gateways/current-loop/","docId":"products/sensor-gateways/current-loop/index","unlisted":false},{"type":"link","label":"Liquid Level","href":"/iot/products/sensor-gateways/level/","docId":"products/sensor-gateways/level/index","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/products/sensor-gateways/modbus/","docId":"products/sensor-gateways/modbus/index","unlisted":false},{"type":"link","label":"Temperature","href":"/iot/products/sensor-gateways/temperature/","docId":"products/sensor-gateways/temperature/index","unlisted":false}],"href":"/iot/products/sensor-gateways/"}],"href":"/iot/products/"},{"type":"category","label":"Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Lobaro USB Config Adapter","href":"/iot/configuration/usb-config-adapter","docId":"configuration/usb-config-adapter","unlisted":false},{"type":"link","label":"Lobaro Config Tool","href":"/iot/configuration/lobaro-config-tool","docId":"configuration/lobaro-config-tool","unlisted":false},{"type":"link","label":"MBUS Reception Filtering","href":"/iot/configuration/meter-reception-filter-config","docId":"configuration/meter-reception-filter-config","unlisted":false},{"type":"link","label":"LoRaWAN Downlink Config","href":"/iot/configuration/lorawan-downlink-config","docId":"configuration/lorawan-downlink-config","unlisted":false},{"type":"link","label":"CRON Configuration","href":"/iot/configuration/cron-configuration","docId":"configuration/cron-configuration","unlisted":false},{"type":"link","label":"LTE Network Configuration","href":"/iot/configuration/lte-network-configuration","docId":"configuration/lte-network-configuration","unlisted":false},{"type":"link","label":"OBIS-Code Configuration","href":"/iot/configuration/obis-code-configuration","docId":"configuration/obis-code-configuration","unlisted":false}],"href":"/iot/configuration/"},{"type":"category","label":"Firmware","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"app-nrf9160-wmbus","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/iot/firmware/app-nrf9160-wmbus/introduction","docId":"firmware/app-nrf9160-wmbus/introduction","unlisted":false},{"type":"link","label":"Configuration Parameter","href":"/iot/firmware/app-nrf9160-wmbus/configuration-parameter","docId":"firmware/app-nrf9160-wmbus/configuration-parameter","unlisted":false},{"type":"link","label":"LoRaWAN Communication","href":"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol","docId":"firmware/app-nrf9160-wmbus/lorawan-communication-protocol","unlisted":false},{"type":"link","label":"Cellular IoT Communication","href":"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","docId":"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","unlisted":false},{"type":"link","label":"Compatible Hardware","href":"/iot/firmware/app-nrf9160-wmbus/compatible-hardware","docId":"firmware/app-nrf9160-wmbus/compatible-hardware","unlisted":false},{"type":"link","label":"Changelog & Updates","href":"/iot/firmware/app-nrf9160-wmbus/changelog-download","docId":"firmware/app-nrf9160-wmbus/changelog-download","unlisted":false}]},{"type":"link","label":"app-hybrid-modbus","href":"/iot/firmware/app-hybrid-modbus/","docId":"firmware/app-hybrid-modbus/index","unlisted":false}],"href":"/iot/firmware/"},{"type":"category","label":"Hardware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Mainboards","href":"/iot/hardware/mainboards/","docId":"hardware/mainboards/index","unlisted":false},{"type":"link","label":"Extension Modules","href":"/iot/hardware/extension-modules/","docId":"hardware/extension-modules/index","unlisted":false},{"type":"link","label":"Device Housings","href":"/iot/hardware/housings/","docId":"hardware/housings/index","unlisted":false}],"href":"/iot/hardware/"},{"type":"category","label":"Lobaro IoT Platform","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Integrations","href":"/iot/platform/integrations/","docId":"platform/integrations/index","unlisted":false},{"type":"category","label":"Administration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Changelog","href":"/iot/platform/administration/changelog","docId":"platform/administration/changelog","unlisted":false},{"type":"link","label":"Monitoring","href":"/iot/platform/administration/monitoring","docId":"platform/administration/monitoring","unlisted":false},{"type":"link","label":"Server Certificates","href":"/iot/platform/administration/server-certificates","docId":"platform/administration/server-certificates","unlisted":false},{"type":"link","label":"Server Configuration","href":"/iot/platform/administration/server-configuration","docId":"platform/administration/server-configuration","unlisted":false}],"href":"/iot/platform/administration/"},{"type":"category","label":"Hosting & Licensing","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Lobaro Direct+","href":"/iot/platform/license/direct+/","docId":"platform/license/direct+/index","unlisted":false}],"href":"/iot/platform/license/"}],"href":"/iot/platform/"},{"type":"category","label":"Knowledge Base","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Wireless M-BUS","href":"/iot/knowledge-base/wireless-mbus","docId":"knowledge-base/wireless-mbus","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/knowledge-base/modbus","docId":"knowledge-base/modbus","unlisted":false}]}],"collapsed":true,"collapsible":true}],"configurationSidebar":[{"type":"category","label":"Configuration","items":[{"type":"link","label":"Overview","href":"/iot/configuration/","docId":"configuration/index","unlisted":false},{"type":"link","label":"Lobaro USB Config Adapter","href":"/iot/configuration/usb-config-adapter","docId":"configuration/usb-config-adapter","unlisted":false},{"type":"link","label":"Lobaro Config Tool","href":"/iot/configuration/lobaro-config-tool","docId":"configuration/lobaro-config-tool","unlisted":false},{"type":"link","label":"MBUS Reception Filtering","href":"/iot/configuration/meter-reception-filter-config","docId":"configuration/meter-reception-filter-config","unlisted":false},{"type":"link","label":"LoRaWAN Downlink Config","href":"/iot/configuration/lorawan-downlink-config","docId":"configuration/lorawan-downlink-config","unlisted":false},{"type":"link","label":"CRON Configuration","href":"/iot/configuration/cron-configuration","docId":"configuration/cron-configuration","unlisted":false},{"type":"link","label":"LTE Network Configuration","href":"/iot/configuration/lte-network-configuration","docId":"configuration/lte-network-configuration","unlisted":false},{"type":"link","label":"OBIS-Code Configuration","href":"/iot/configuration/obis-code-configuration","docId":"configuration/obis-code-configuration","unlisted":false}],"collapsed":true,"collapsible":true}],"productsSidebar":[{"type":"category","label":"Products","items":[{"type":"link","label":"Overview","href":"/iot/products/","docId":"products/index","unlisted":false},{"type":"category","label":"Metering Gateways","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Wireless M-BUS (Gen. 3)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g3/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g3/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Gateway V4","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Description","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/"},{"type":"link","label":"Gateway V3","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index","unlisted":false},{"type":"link","label":"Gateway DinRail","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index","unlisted":false},{"type":"link","label":"Gateway Solar","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index","unlisted":false},{"type":"link","label":"Gateway Concentrator","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index","unlisted":false},{"type":"category","label":"Discontinued","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index","unlisted":false},{"type":"link","label":"Gateway V2","href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/","docId":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/"}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g3/"},{"type":"category","label":"Wireless M-BUS (Gen. 2)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/cfg","docId":"products/metering-gateways/wireless-mbus-g2/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/workflow","docId":"products/metering-gateways/wireless-mbus-g2/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LoRaWAN Bridge V2","href":"/iot/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/","docId":"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wireless-mbus-g2/"},{"type":"category","label":"Wired M-BUS (Gen. 1)","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Operation Manual","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuration","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/cfg","docId":"products/metering-gateways/wired-mbus-g1/manual/cfg","unlisted":false},{"type":"link","label":"Workflow","href":"/iot/products/metering-gateways/wired-mbus-g1/manual/workflow","docId":"products/metering-gateways/wired-mbus-g1/manual/workflow","unlisted":false}],"href":"/iot/products/metering-gateways/wired-mbus-g1/manual/"},{"type":"category","label":"Hardware Variants","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Hybrid Gateway","href":"/iot/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/","docId":"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index","unlisted":false}]}],"href":"/iot/products/metering-gateways/wired-mbus-g1/"}],"href":"/iot/products/metering-gateways/"},{"type":"category","label":"Sensor Gateways","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Current Loop","href":"/iot/products/sensor-gateways/current-loop/","docId":"products/sensor-gateways/current-loop/index","unlisted":false},{"type":"link","label":"Liquid Level","href":"/iot/products/sensor-gateways/level/","docId":"products/sensor-gateways/level/index","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/products/sensor-gateways/modbus/","docId":"products/sensor-gateways/modbus/index","unlisted":false},{"type":"link","label":"Temperature","href":"/iot/products/sensor-gateways/temperature/","docId":"products/sensor-gateways/temperature/index","unlisted":false}],"href":"/iot/products/sensor-gateways/"}],"collapsed":true,"collapsible":true}],"firmwareSidebar":[{"type":"category","label":"Firmware","items":[{"type":"link","label":"Overview","href":"/iot/firmware/","docId":"firmware/index","unlisted":false},{"type":"category","label":"app-nrf9160-wmbus","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/iot/firmware/app-nrf9160-wmbus/introduction","docId":"firmware/app-nrf9160-wmbus/introduction","unlisted":false},{"type":"link","label":"Configuration Parameter","href":"/iot/firmware/app-nrf9160-wmbus/configuration-parameter","docId":"firmware/app-nrf9160-wmbus/configuration-parameter","unlisted":false},{"type":"link","label":"LoRaWAN Communication","href":"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol","docId":"firmware/app-nrf9160-wmbus/lorawan-communication-protocol","unlisted":false},{"type":"link","label":"Cellular IoT Communication","href":"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","docId":"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","unlisted":false},{"type":"link","label":"Compatible Hardware","href":"/iot/firmware/app-nrf9160-wmbus/compatible-hardware","docId":"firmware/app-nrf9160-wmbus/compatible-hardware","unlisted":false},{"type":"link","label":"Changelog & Updates","href":"/iot/firmware/app-nrf9160-wmbus/changelog-download","docId":"firmware/app-nrf9160-wmbus/changelog-download","unlisted":false}]},{"type":"link","label":"app-hybrid-modbus","href":"/iot/firmware/app-hybrid-modbus/","docId":"firmware/app-hybrid-modbus/index","unlisted":false}],"collapsed":true,"collapsible":true}],"hardwareSidebar":[{"type":"category","label":"Hardware","items":[{"type":"link","label":"Overview","href":"/iot/hardware/","docId":"hardware/index","unlisted":false},{"type":"link","label":"Mainboards","href":"/iot/hardware/mainboards/","docId":"hardware/mainboards/index","unlisted":false},{"type":"link","label":"Extension Modules","href":"/iot/hardware/extension-modules/","docId":"hardware/extension-modules/index","unlisted":false},{"type":"link","label":"Device Housings","href":"/iot/hardware/housings/","docId":"hardware/housings/index","unlisted":false}],"collapsed":true,"collapsible":true}],"cloudSidebar":[{"type":"category","label":"Lobaro IoT Platform","items":[{"type":"link","label":"Overview","href":"/iot/platform/","docId":"platform/index","unlisted":false},{"type":"link","label":"Integrations","href":"/iot/platform/integrations/","docId":"platform/integrations/index","unlisted":false},{"type":"category","label":"Administration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Changelog","href":"/iot/platform/administration/changelog","docId":"platform/administration/changelog","unlisted":false},{"type":"link","label":"Monitoring","href":"/iot/platform/administration/monitoring","docId":"platform/administration/monitoring","unlisted":false},{"type":"link","label":"Server Certificates","href":"/iot/platform/administration/server-certificates","docId":"platform/administration/server-certificates","unlisted":false},{"type":"link","label":"Server Configuration","href":"/iot/platform/administration/server-configuration","docId":"platform/administration/server-configuration","unlisted":false}],"href":"/iot/platform/administration/"},{"type":"category","label":"Hosting & Licensing","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Lobaro Direct+","href":"/iot/platform/license/direct+/","docId":"platform/license/direct+/index","unlisted":false}],"href":"/iot/platform/license/"}],"collapsed":true,"collapsible":true}],"knowledgeBaseSidebar":[{"type":"category","label":"Knowledge Base","items":[{"type":"link","label":"Wireless M-BUS","href":"/iot/knowledge-base/wireless-mbus","docId":"knowledge-base/wireless-mbus","unlisted":false},{"type":"link","label":"Modbus","href":"/iot/knowledge-base/modbus","docId":"knowledge-base/modbus","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"configuration/cron-configuration":{"id":"configuration/cron-configuration","title":"CRON Configuration","description":"We use CRON expressions configure the behavioral timing of our devices. This CRON configuration can be adjusted during","sidebar":"configurationSidebar"},"configuration/index":{"id":"configuration/index","title":"Overview","description":"The device configuration allows a wide range and flexible way of internal settings adjustments for Lobaro hardware.","sidebar":"configurationSidebar"},"configuration/lobaro-config-tool":{"id":"configuration/lobaro-config-tool","title":"Lobaro Config Tool","description":"The Lobaro Config Tool (a.k.a. Lobaro Maintenance Tool) can be used to configure and diagnose Lobaro devices locally using a PC and our special","sidebar":"configurationSidebar"},"configuration/lorawan-downlink-config":{"id":"configuration/lorawan-downlink-config","title":"LoRaWAN Downlink Config","description":"This article describes the technical details how to remotely configure Lobaro devices that are using LoRaWAN as","sidebar":"configurationSidebar"},"configuration/lte-network-configuration":{"id":"configuration/lte-network-configuration","title":"LTE Network Configuration","description":"In order for the Lobaro devices to be able to dial into the mobile network, it may be necessary to configure the network","sidebar":"configurationSidebar"},"configuration/meter-reception-filter-config":{"id":"configuration/meter-reception-filter-config","title":"MBUS Reception Filtering","description":"Lobaro firmwares that can receive (wireless) M-BUS have (optional) common filter configuration parameter, that can limit, which telegrams are","sidebar":"configurationSidebar"},"configuration/obis-code-configuration":{"id":"configuration/obis-code-configuration","title":"OBIS-Code Configuration","description":"Object identification system (OBIS) Codes are used to identify the different readings of a smart meter transferred in","sidebar":"configurationSidebar"},"configuration/usb-config-adapter":{"id":"configuration/usb-config-adapter","title":"Lobaro USB Config Adapter","description":"The Lobaro USB configuration adapters connects the configuration serial uart of our devices to a PC. It is used for:","sidebar":"configurationSidebar"},"firmware/app-hybrid-modbus/index":{"id":"firmware/app-hybrid-modbus/index","title":"app-hybrid-modbus","description":"This new documentation center is currently work in progress","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol":{"id":"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","title":"Cellular IoT Communication","description":"This page describes the possible uplink and downlink message contents when using NB-IoT or LTE-M (cellular IoT) as","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/changelog-download":{"id":"firmware/app-nrf9160-wmbus/changelog-download","title":"Changelog & Updates","description":"Firmware Updates","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/compatible-hardware":{"id":"firmware/app-nrf9160-wmbus/compatible-hardware","title":"Compatible Hardware","description":"","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/configuration-parameter":{"id":"firmware/app-nrf9160-wmbus/configuration-parameter","title":"Configuration Parameter","description":"On this page all common configuration parameters of the firmware are presented. Usually the internal defaults work","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/introduction":{"id":"firmware/app-nrf9160-wmbus/introduction","title":"Introduction","description":"This page describes the Lobaro wireless M-Bus gateway firmware, called app-nrf9160-wmbus, which is executable on","sidebar":"firmwareSidebar"},"firmware/app-nrf9160-wmbus/lorawan-communication-protocol":{"id":"firmware/app-nrf9160-wmbus/lorawan-communication-protocol","title":"LoRaWAN Communication","description":"The Gateway can use LoRaWAN as Uplink technology for forwarding received wireless M-BUS telegrams to any network server.","sidebar":"firmwareSidebar"},"firmware/index":{"id":"firmware/index","title":"Overview","description":"This section describes the different available firmware implementation. In different products the same firmware is","sidebar":"firmwareSidebar"},"hardware/extension-modules/index":{"id":"hardware/extension-modules/index","title":"Hardware Addons","description":"","sidebar":"hardwareSidebar"},"hardware/housings/index":{"id":"hardware/housings/index","title":"Device Housings","description":"","sidebar":"hardwareSidebar"},"hardware/index":{"id":"hardware/index","title":"Overview","description":"This section describes the different available hardware modules and mainboard. In different products the same hardware is","sidebar":"hardwareSidebar"},"hardware/mainboards/index":{"id":"hardware/mainboards/index","title":"Mainboards","description":"","sidebar":"hardwareSidebar"},"index":{"id":"index","title":"Lobaro Documentation","description":"This new documentation center is currently work in progress","sidebar":"allDocSidebar"},"knowledge-base/modbus":{"id":"knowledge-base/modbus","title":"Modbus","description":"Some notable things in a block quote!","sidebar":"knowledgeBaseSidebar"},"knowledge-base/wireless-mbus":{"id":"knowledge-base/wireless-mbus","title":"Wireless M-BUS","description":"Some notable things in a block quote!","sidebar":"knowledgeBaseSidebar"},"platform/administration/changelog":{"id":"platform/administration/changelog","title":"Changelog","description":"Application: Lobaro Backend","sidebar":"cloudSidebar"},"platform/administration/index":{"id":"platform/administration/index","title":"Administration","description":"admin","sidebar":"cloudSidebar"},"platform/administration/monitoring":{"id":"platform/administration/monitoring","title":"Monitoring","description":"admin","sidebar":"cloudSidebar"},"platform/administration/server-certificates":{"id":"platform/administration/server-certificates","title":"Server Certificates","description":"The server needs certificates for different use cases.","sidebar":"cloudSidebar"},"platform/administration/server-configuration":{"id":"platform/administration/server-configuration","title":"Server Configuration","description":"Server Admin (ssh access required)","sidebar":"cloudSidebar"},"platform/index":{"id":"platform/index","title":"Overview","description":"The Lobaro IoT Platform operates as a Head End System for IoT Devices. The Platform is optimized for but not limited","sidebar":"cloudSidebar"},"platform/integrations/index":{"id":"platform/integrations/index","title":"Integrations","description":"This page is not ready yet","sidebar":"cloudSidebar"},"platform/license/direct+/index":{"id":"platform/license/direct+/index","title":"Lobaro Direct+","description":"test","sidebar":"cloudSidebar"},"platform/license/index":{"id":"platform/license/index","title":"Hosting & Licensing","description":"This page is not ready yet","sidebar":"cloudSidebar"},"products/index":{"id":"products/index","title":"Overview","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/index":{"id":"products/metering-gateways/index","title":"Metering Gateway","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index":{"id":"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index","title":"Overview","description":"Some notable things in a block quote!","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/index":{"id":"products/metering-gateways/wired-mbus-g1/index","title":"Wired M-BUS Gateways","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/manual/cfg":{"id":"products/metering-gateways/wired-mbus-g1/manual/cfg","title":"Configuration","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/manual/index":{"id":"products/metering-gateways/wired-mbus-g1/manual/index","title":"Operation Manual","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wired-mbus-g1/manual/workflow":{"id":"products/metering-gateways/wired-mbus-g1/manual/workflow","title":"Workflow","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index":{"id":"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/index":{"id":"products/metering-gateways/wireless-mbus-g2/index","title":"Wireless M-BUS Gateways","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/manual/cfg":{"id":"products/metering-gateways/wireless-mbus-g2/manual/cfg","title":"Configuration","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/manual/index":{"id":"products/metering-gateways/wireless-mbus-g2/manual/index","title":"Operation Manual","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g2/manual/workflow":{"id":"products/metering-gateways/wireless-mbus-g2/manual/workflow","title":"Workflow","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/index","title":"Discontinued Gateways","description":"These products have been discontinued and are no longer available for sale.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","title":"Description","description":"Getting Started","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/index","title":"Wmbus Gateway V4","description":"Getting Started","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index":{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index","title":"index","description":"This product has been discontinued and functionally replaced by the wMBUS gateway V3 / V4.","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/index":{"id":"products/metering-gateways/wireless-mbus-g3/index","title":"Wireless M-BUS Gateways","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/manual/cfg":{"id":"products/metering-gateways/wireless-mbus-g3/manual/cfg","title":"Configuration","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/manual/index":{"id":"products/metering-gateways/wireless-mbus-g3/manual/index","title":"Operation Manual","description":"Einleitung","sidebar":"productsSidebar"},"products/metering-gateways/wireless-mbus-g3/manual/workflow":{"id":"products/metering-gateways/wireless-mbus-g3/manual/workflow","title":"Workflow","description":"Einleitung","sidebar":"productsSidebar"},"products/sensor-gateways/current-loop/index":{"id":"products/sensor-gateways/current-loop/index","title":"Current Loop Sensors (4...20 mA)","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/sensor-gateways/index":{"id":"products/sensor-gateways/index","title":"Metering Gateway","description":"This new documentation center is currently work in progress","sidebar":"productsSidebar"},"products/sensor-gateways/level/index":{"id":"products/sensor-gateways/level/index","title":"Liquid Level Sensors","description":"","sidebar":"productsSidebar"},"products/sensor-gateways/modbus/index":{"id":"products/sensor-gateways/modbus/index","title":"Modbus Sensors","description":"","sidebar":"productsSidebar"},"products/sensor-gateways/temperature/index":{"id":"products/sensor-gateways/temperature/index","title":"Temperature Sensors","description":"","sidebar":"productsSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/142d61b0.2ae6ca6f.js b/assets/js/142d61b0.2ae6ca6f.js new file mode 100644 index 00000000..e1d31660 --- /dev/null +++ b/assets/js/142d61b0.2ae6ca6f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[5907],{4369:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var o=t(4848),r=t(8453);const i={},a="Server Configuration",s={id:"platform/administration/server-configuration",title:"Server Configuration",description:"Server Admin (ssh access required)",source:"@site/docs/platform/administration/server-configuration.md",sourceDirName:"platform/administration",slug:"/platform/administration/server-configuration",permalink:"/iot/platform/administration/server-configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/administration/server-configuration.md",tags:[],version:"current",frontMatter:{},sidebar:"cloudSidebar",previous:{title:"Server Certificates",permalink:"/iot/platform/administration/server-certificates"},next:{title:"Hosting & Licensing",permalink:"/iot/platform/license/"}},l={},d=[{value:"Commandline and Environment Variables",id:"commandline-and-environment-variables",level:2},{value:"Configuration File",id:"configuration-file",level:2}];function c(n){const e={admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...n.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.h1,{id:"server-configuration",children:"Server Configuration"}),"\n",(0,o.jsx)(e.admonition,{title:"Required roles",type:"info",children:(0,o.jsx)(e.p,{children:"Server Admin (ssh access required)"})}),"\n",(0,o.jsx)(e.p,{children:"Each value is loaded from different locations (highest priority first, e.g. 1. overrides 2.):"}),"\n",(0,o.jsxs)(e.ol,{children:["\n",(0,o.jsx)(e.li,{children:"Environment variables"}),"\n",(0,o.jsx)(e.li,{children:"Config File"}),"\n",(0,o.jsx)(e.li,{children:"Command line Flags"}),"\n",(0,o.jsx)(e.li,{children:"Default values"}),"\n"]}),"\n",(0,o.jsx)(e.h2,{id:"commandline-and-environment-variables",children:"Commandline and Environment Variables"}),"\n",(0,o.jsx)(e.p,{children:"Some options are only available via Environment Variables"}),"\n",(0,o.jsxs)(e.table,{children:[(0,o.jsx)(e.thead,{children:(0,o.jsxs)(e.tr,{children:[(0,o.jsx)(e.th,{children:"Environment Variable"}),(0,o.jsx)(e.th,{children:"Commandline parameter"}),(0,o.jsx)(e.th,{children:"Description"}),(0,o.jsx)(e.th,{children:"Version"})]})}),(0,o.jsxs)(e.tbody,{children:[(0,o.jsxs)(e.tr,{children:[(0,o.jsx)(e.td,{}),(0,o.jsx)(e.td,{children:"--config"}),(0,o.jsxs)(e.td,{children:["Defile path of config file (default",":lobaro-iot-platform",".yml)"]}),(0,o.jsx)(e.td,{})]}),(0,o.jsxs)(e.tr,{children:[(0,o.jsx)(e.td,{children:"LOB_JSON_LOGGING=1"}),(0,o.jsx)(e.td,{children:"--json_logging=1"}),(0,o.jsx)(e.td,{children:"Enable JSON Logging"}),(0,o.jsx)(e.td,{children:">= 1.84.1"})]})]})]}),"\n",(0,o.jsx)(e.h2,{id:"configuration-file",children:"Configuration File"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-toml",children:"# This is an generated example config file for the Lobaro Backend\n# On production systems you can change the default values as required\n\n# Enable debug log output\nDebug = false\n# License key for the Lobaro Backend to unlock certain features\nLicense = ''\n# TCP port for Tekelek devices\nTekelekTcpPort = 54345\n# TCP port for Dragino devices\nDraginoTcpPort = 5600\n# DevEUI Blocks for Hardware Provisioning\nDevEUIBlocks = []\n\n# Frontend HTTP Server Configuration\n[Server]\n# Frontend URL without trailing slash (not needed when using a single domain)\nFrontendUrl = ''\n# Port to listen on, deprecated in favour of Bind. When Bins is set Port is ignored\nPort = 0\n# Address to bind to, e.g. :8082\nBind = ':8082'\n# Enable development mode. Not safe for production!\n# Authentication might be disabled.\nDevMode = false\n# Token secret to encrypt API Tokens. When changed, all existing Tokens are invalidated.\nApiTokenSecret = ''\n# Token secret to encrypt User Tokens. When changed, all existing Tokens are invalidated.\nOauthTokenSecret = ''\n# Token secret to encrypt User Refresh Tokens. When changed, all existing Tokens are invalidated.\nOauthRefreshTokenSecret = ''\n# Directory where all file based data is stored\nDataDir = './data'\n\n# DTLS Configuration, used by CoAPs Server\n[Server.DtlsConfig]\nDtlsCertDir = ''\nDtlsCertName = ''\nAcceptPoolSize = 10000\n\n# Customer specific branding configuration\n[Branding]\nPlatformName = 'IoT Platform'\nFrontendBaseUrl = ''\nDefaultLogoUrl = '/static/branding/logo.svg'\nLegalDisclosureUrl = 'https://www.lobaro.com/contact/'\nParserDocUrl = 'https://doc.lobaro.com/x/Y4B5'\nDisplayDocLinks = true\nIntegrationDocUrl = 'https://doc.lobaro.com/x/YIB5'\nAllowRegistration = false\nFavicon = '/static/img/favicon.ico'\n\n# Deprecated: use BrandingConfig\n[Whitelabel]\nPlatformName = ''\n\n# Postgres Database Configuration\n[Database]\nDatabase = 'postgres'\n# Schema for the database, default is public. If empty string the search_path will be determined by the db\nSchema = 'public'\nUsername = 'postgres'\nPassword = 'admin'\nHost = 'localhost'\nPort = 5432\nSslMode = 'disable'\nMaxOpenConns = 90\nMaxIdleConns = 20\n# Enable debug log output for the database\nDebug = false\nAutoFixMigration = false\n# Threshold for slow queries in milliseconds\nSlowQueryThresholdMs = 5000\n\n# Cache Configuration\n[Database.Cache]\n# Expiration time for the device cache in seconds, 0 = no cache\nDeviceExpirationSec = 600\n# Disable the local cache\nLocalCacheDisabled = false\n# Expiration time for the local cache in seconds\nLocalCacheExpirationSec = 3600\n# Purge time for the local cache in seconds\nLocalCachePurgeSec = 3600\n\n# Email Server settings\n[Email]\nServer = ''\nTls = false\nUsername = ''\nPassword = ''\nSender = ''\n\n# CoAP(s) Server Configuration\n[CoapServer]\n# CoAP port\nCoapPort = 5683\n# CoAPs port\nCoapsPort = 5684\n\n# Digimondo Platform specific settings\n[Digimondo]\nApiKey = ''\n\n# MQTT Broker Configuration for outbound MQTT Integrations\n[Mqtt]\nName = ''\nClientId = ''\nBroker = ''\nUsername = ''\nPassword = ''\n\n# Internal MQTT Broker Configuration\n[MqttBrokerConfig]\nStartBroker = false\nAdminUsername = 'admin'\nAdminPassword = 'admin'\n# port used for broker\nPort = 1883\n\n# DevEUI Provisioning Configuration\n[DevEUIConfig]\n# When set to true, the server will assign a new DevEUI when a device with that DevEUI already exists in the platform\nCheckDeviceExistOnNewEui = false\n\n# Allows to enable/disable single features\n[FeatureToggle]\nHardwareActivationEnabled = true\nWmbusParserApiTabEnabled = true\nWmbusParserApiPublic = false\n\n# JavaScript Device Parser Configuration\n[Parser]\nTimeoutMs = 250\n\n# Device Data Storage related Configuration\n[Data]\nDefaultRetentionDuration = ''\n\n# Organisation related Configuration\n[Organisation]\nDefaultUserLimit = 0\nDefaultMaxSubOrganisations = 0\nMaxDepthSubOrganisations = 10\n\n# NATS related Configuration. NATS is used as the internal Message Broker\n[Nats]\n# Start the internal nats server, host has to be localhost then\nStartNatsServer = true\n# NATS server hostname or IP address to connect to\nHost = 'localhost'\n# NATS server port to connect to\nPort = 4222\nUsername = 'admin'\nPassword = 'admin'\nHTTPPort = 8222\n# Enable NATS for CoAP and CoAPs datasource\nEnableCoapDatasource = false\n# Size of the NATS client pool for publishing messages\nClientPoolSize = 1000\n# Hostname or IP address of the config companion\nConfigCompanionHost = 'localhost'\n# Port of the config companion\nConfigCompanionPort = 8099\n# Number of workers for the uplink handler queue\nUplinkHandlerWorkers = 2\n# Number of workers for the integrations queue\nIntegrationHandlerWorkers = 4\n# Maximum memory (RAM) size of JetStream streams in bytes\nJetStreamMaxMemory = 1073741824\n# Maximum memory (disk) usage of JetStream streams in bytes\nJetStreamMaxStore = 0\n# Path to store JetStream data\nJetStreamStoreDirectory = './data/jetstream'\n\n# general Config regarding the REST API offered by the platform\n[RestApiConfig]\nLogBodyOnPanic = false\nLogHttpHeaderOnPanic = false\n\n# Integration related Configuration\n[Integration]\n# Default timeout for MQTT integrations in milliseconds\nMqttDefaultTimeoutMs = 10000\n# Default timeout for HTTP integrations in milliseconds\nHttpDefaultTimeoutMs = 10000\n# Rate limit for updating logging in case if success Seconds, 0 for no limit\nLoggingSuccessRateLimitSeconds = 10\n# Rate limit for updating logging in case of error/failur in Seconds, 0 for no limit\nLoggingErrorRateLimitSeconds = 10\n"})})]})}function f(n={}){const{wrapper:e}={...(0,r.R)(),...n.components};return e?(0,o.jsx)(e,{...n,children:(0,o.jsx)(c,{...n})}):c(n)}},8453:(n,e,t)=>{t.d(e,{R:()=>a,x:()=>s});var o=t(6540);const r={},i=o.createContext(r);function a(n){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function s(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:a(n.components),o.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/2c53b313.7607acbe.js b/assets/js/2c53b313.7607acbe.js new file mode 100644 index 00000000..c4ef8e98 --- /dev/null +++ b/assets/js/2c53b313.7607acbe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[4867],{8133:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>c,frontMatter:()=>r,metadata:()=>s,toc:()=>a});var A=i(4848),t=i(8453);const r={},d="Administration",s={id:"platform/administration/index",title:"Administration",description:"admin",source:"@site/docs/platform/administration/index.md",sourceDirName:"platform/administration",slug:"/platform/administration/",permalink:"/iot/platform/administration/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/administration/index.md",tags:[],version:"current",frontMatter:{},sidebar:"cloudSidebar",previous:{title:"Integrations",permalink:"/iot/platform/integrations/"},next:{title:"Changelog",permalink:"/iot/platform/administration/changelog"}},l={},a=[{value:"Hardware",id:"hardware",level:2},{value:"Bulk Operations",id:"bulk-operations",level:3},{value:"New Hardware",id:"new-hardware",level:3},{value:"Import",id:"import",level:3},{value:"CSV Import File Format",id:"csv-import-file-format",level:4}];function o(e){const n={admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(n.h1,{id:"administration",children:"Administration"}),"\n",(0,A.jsx)(n.admonition,{title:"Required roles",type:"info",children:(0,A.jsx)(n.p,{children:"admin"})}),"\n",(0,A.jsx)(n.p,{children:'Global platform admins have access to the "Configuration" page from the main navigation.'}),"\n",(0,A.jsx)(n.p,{children:(0,A.jsx)(n.img,{alt:"nav-configuration.png",src:i(5091).A+"",width:"780",height:"90"})}),"\n",(0,A.jsx)(n.p,{children:"The Configuration page gives access to entities independent of an Organisation."}),"\n",(0,A.jsx)(n.h2,{id:"hardware",children:"Hardware"}),"\n",(0,A.jsx)(n.p,{children:"On the hardware page, all devices independent of the organisation can be managed."}),"\n",(0,A.jsx)(n.p,{children:"In the top right corner you can select different actions."}),"\n",(0,A.jsx)(n.p,{children:(0,A.jsx)(n.img,{alt:"actions.png",src:i(104).A+"",width:"385",height:"36"})}),"\n",(0,A.jsx)(n.h3,{id:"bulk-operations",children:"Bulk Operations"}),"\n",(0,A.jsx)(n.p,{children:"Select one or multiple devices from the list to execute bulk updates like changing of the Organisation or Device Type."}),"\n",(0,A.jsx)(n.p,{children:(0,A.jsx)(n.img,{alt:"bulk-operations.png",src:i(2354).A+"",width:"1195",height:"296"})}),"\n",(0,A.jsxs)(n.ul,{children:["\n",(0,A.jsx)(n.li,{children:"Select all relevant devices (search box and pagination can be used with out looking the selection)"}),"\n",(0,A.jsx)(n.li,{children:'Click "Bulk Operations"'}),"\n"]}),"\n",(0,A.jsx)(n.p,{children:(0,A.jsx)(n.img,{alt:"bulk-operations-update.png",src:i(7298).A+"",width:"973",height:"429"})}),"\n",(0,A.jsxs)(n.ul,{children:["\n",(0,A.jsx)(n.li,{children:"A list of devices to update is shown below the form"}),"\n",(0,A.jsx)(n.li,{children:'Select what properties update and click "Bulk Update"'}),"\n"]}),"\n",(0,A.jsx)(n.h3,{id:"new-hardware",children:"New Hardware"}),"\n",(0,A.jsx)(n.p,{children:"Create a new device. Each device needs:"}),"\n",(0,A.jsxs)(n.ul,{children:["\n",(0,A.jsx)(n.li,{children:"Address"}),"\n",(0,A.jsx)(n.li,{children:"Name (optional, default is the Address)"}),"\n",(0,A.jsx)(n.li,{children:'Device Type (optional, default is the "Generic Device")'}),"\n",(0,A.jsx)(n.li,{children:"Organisation (optional)"}),"\n"]}),"\n",(0,A.jsx)(n.h3,{id:"import",children:"Import"}),"\n",(0,A.jsx)(n.p,{children:"Import Hardware from a CSV file."}),"\n",(0,A.jsx)(n.h4,{id:"csv-import-file-format",children:"CSV Import File Format"}),"\n",(0,A.jsxs)(n.ul,{children:["\n",(0,A.jsx)(n.li,{children:"Column names in first row"}),"\n"]}),"\n",(0,A.jsx)(n.p,{children:(0,A.jsx)(n.strong,{children:"Columns:"})}),"\n",(0,A.jsxs)(n.table,{children:[(0,A.jsx)(n.thead,{children:(0,A.jsxs)(n.tr,{children:[(0,A.jsx)(n.th,{children:"Column Name"}),(0,A.jsx)(n.th,{children:"Required"}),(0,A.jsx)(n.th,{children:"Type"}),(0,A.jsx)(n.th,{children:"Description"})]})}),(0,A.jsxs)(n.tbody,{children:[(0,A.jsxs)(n.tr,{children:[(0,A.jsx)(n.td,{children:"address"}),(0,A.jsx)(n.td,{}),(0,A.jsx)(n.td,{children:"string"}),(0,A.jsxs)(n.td,{children:["Globally unique address of the device, e.g. IMEI or DevEUI.",(0,A.jsx)("br",{}),"The address that is used to assign Uplinks to the device."]})]}),(0,A.jsxs)(n.tr,{children:[(0,A.jsx)(n.td,{children:"name"}),(0,A.jsx)(n.td,{children:"optional"}),(0,A.jsx)(n.td,{children:"string"}),(0,A.jsxs)(n.td,{children:["User friendly name of the device.",(0,A.jsx)("br",{}),"Default: the address of the device."]})]}),(0,A.jsxs)(n.tr,{children:[(0,A.jsx)(n.td,{children:"serial"}),(0,A.jsx)(n.td,{children:"optional"}),(0,A.jsx)(n.td,{children:"string"}),(0,A.jsxs)(n.td,{children:["Serial number printed on the device.",(0,A.jsx)("br",{}),"For Lobaro devices, the firmware typically has no knowledge of the serial."]})]}),(0,A.jsxs)(n.tr,{children:[(0,A.jsx)(n.td,{children:"firmware"}),(0,A.jsx)(n.td,{children:"optional"}),(0,A.jsx)(n.td,{children:"string"}),(0,A.jsx)(n.td,{children:"Initial Firmware name and version on the device as user friendly string"})]}),(0,A.jsxs)(n.tr,{children:[(0,A.jsx)(n.td,{children:"config"}),(0,A.jsxs)(n.td,{children:[(0,A.jsx)(n.strong,{children:"deprecated"}),(0,A.jsx)("br",{}),"use cfg:",(0,A.jsx)(n.code,{children:""})]}),(0,A.jsx)(n.td,{children:"json"}),(0,A.jsxs)(n.td,{children:["A whole config can be imported as JSON object. e.g. ",(0,A.jsx)(n.code,{children:'{"key":"value"}'}),(0,A.jsx)("br",{}),"Warning: this requires a lot of escaping in CSV."]})]}),(0,A.jsxs)(n.tr,{children:[(0,A.jsxs)(n.td,{children:["cfg:",(0,A.jsx)(n.code,{children:""})]}),(0,A.jsx)(n.td,{children:"optional"}),(0,A.jsx)(n.td,{children:"string"}),(0,A.jsxs)(n.td,{children:["Initial config value of the device where ",(0,A.jsx)(n.code,{children:""})," is the technical name of the config value. ",(0,A.jsx)("br",{}),"Multiple of these columns can exist. ",(0,A.jsx)("br",{}),"e.g. ",(0,A.jsx)(n.code,{children:"cfg:DevEUI"})," to specify the config value of the parameter ",(0,A.jsx)(n.code,{children:"DevEUI"}),". ",(0,A.jsx)("br",{}),'Users can export the Initial config values on the "Hardware Activation" page based on the settings in the "Device Type"']})]})]})]}),"\n",(0,A.jsx)(n.p,{children:"There are preferred config values for some device classes. Technically the name can vary, but might need some custom setup inside the device type."}),"\n",(0,A.jsx)(n.p,{children:(0,A.jsx)(n.strong,{children:"LoRaWAN"})}),"\n",(0,A.jsx)(n.p,{children:"LoRaWAN specific config keys:"}),"\n",(0,A.jsxs)(n.ul,{children:["\n",(0,A.jsx)(n.li,{children:"DevEUI - Unique address of the LoRaWAN Device"}),"\n",(0,A.jsx)(n.li,{children:"JoinEUI - optional JoinEUI or AppEUI of the LoRaWAN device"}),"\n",(0,A.jsx)(n.li,{children:"AppKey - AppKey of the LoRaWAN Device"}),"\n",(0,A.jsx)(n.li,{children:"NwkKey - LoRaWAN 1.1 only"}),"\n"]})]})}function c(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,A.jsx)(n,{...e,children:(0,A.jsx)(o,{...e})}):o(e)}},104:(e,n,i)=>{i.d(n,{A:()=>A});const A="data:image/png;base64,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"},7298:(e,n,i)=>{i.d(n,{A:()=>A});const A=i.p+"assets/images/bulk-operations-update-83cdf35011eae26a53ba60d9539360a6.png"},2354:(e,n,i)=>{i.d(n,{A:()=>A});const A=i.p+"assets/images/bulk-operations-c1fb9b3364eecf3d617070a2f8b998f2.png"},5091:(e,n,i)=>{i.d(n,{A:()=>A});const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwwAAABaCAIAAACaIkZbAAAYYElEQVR4Xu2d/ZMcxXnH7z8QP15VUiUqL5Uf8oOUSlJUymVLWCqwMdGJ8CJShNxxIBDGRoeQIHGEdYiQAOaOAwKOLIMECi8GlpMwSAhszoAC6I4XgZARcEICIx3iRQdWKMXB0Hl2eufZZ57u2ZnZnb3bvfl+quu0+0x3T0/P7vZne3pWHQYAAAAAADh06AAAAAAAAIAkAQAAAAB4gSQBAAAAAHiAJAEAAAAAeIAkAQAAAAB4gCQBAAAAAHiAJAEAAAAAeIAkAQAAAAB4aKIkbdiwQYeaz8jIyP79+3W0GOw3H+0zh58340+bN/Q2AAAAAGSkiZI0b948HWo+a9asIU/S0ZnOU2bP6ebmPzOrvm6uOcH0zzfXLjKDT5rdOh8AAAAAUgNJanuuNVu+Ztb+u3lkj3nfRr40Xw2YbQvMv60xpWheAAAAAKQFktTeDJitf2RW3Gae1BuMedW893VzzWrzoN4AAAAAgBRAktqbM80tN5jHdDTkFXPgT83KT83negMAAAAAkoAktTG7zLt/bX6oo1HONv+x0TyrowAAAABIApLUxtxhnj7D3KyjUa41W84363UUtCcHDx78cQoomy4JAAAgO5CkBCYnJ3WoZbjQ3Pl3ZkhHo/zAPHCqGdBR0J5s3759ZQoomy4JAAAgO60uSfv37+/r6zv++OPnhcyaNWvx4sWbN2/WWQOkJNEDykn5uezs2bP7+/sTf0iJxGhoaIh2OmfOHC44f/78jRs36qwBNwXYx6+88kpPTw/l551SAyhC8WghDe2U6p87dy6Xpb3TU2pJnKitNcPfMP+qo1F6Job+fNeFn332md4A2pA4SdoeIJ/qkgAAALLT0pI0PDxMouD+KCUJR1dXF5mHaw8sSd3d3ZRHqQnlp9qoTqpZxiVUhDSFsqnKSa2WL19OZb07JewDOmq3cnsgpDsqzlDl5ENUXAkcPbV1eh3rN+aTk8z1R80xvUFwqhnoe/JHvb29b731lt4GUnD44d7OgKEX9aapx5Wk1atXHzx4cMuWLc888wwHIUkAAJALrStJ5DpUg2skDHkMaZAKWkmigq5aMVQnZfBelSMpoU01ppps5SpoJWl5gNokIW/jCScJtYcUyqtBFtrklTNimbnzQnOHjobcZZ79S3MVPdi6despp5xC4yhvmjz2xcZd713xi1+f8/BL5z+ya9vbH1aLzTgaEZ1GyuaOK0l2+RH9lUFIEgAA5EKLSpL1Bq8WSEhK1LRNGlkx8fXHzdlISHRU/bRT0rU0x+s1MPcoXLxyZso3+ZdvcPuReVRvMOZJs/tkc/1jpnI4L7/88pIlSx544AF6fMHPd/3Jrb9c+vNdq59644cje3u37Fp0/86Fm55/9YOZeVWuEdFppGzuKEkaGxszgSFdddVVMg5JAgCAXGhRSSIRqTEVxFjXkRHylVmzZrn24+LugkSku7tbRuJQgkU77ejoSLQr49uFnbuSkTiooHcXvzB7FpnB88xPHjKjn5rP3zMfP2v2nmv+82/NwGNml8x56NAhErITBx887Wejb358VG4iVj+195R7d85IT2pEdBopmztSkrZs2bJ7927XkFZCkgAAICdaVJK80zxelDqQr6QUHVew4izERQkW7VRVVQOV03W1OIaHh+NmyH5vvrzEbPyWueGPj/XNPvLdwJnWf2A+1fmM+enL7/7NHc9+cPR/9YaAW3a+c/oD5cmJGUYjotNI2dyRkkR69MQTTwg1qgJJAgCAXGhRSUpfVt5ZZgJf8a778aL2kl50RkZG1gQrtS1rAvhpbdRycnd1eQ0Su4UaNjBQ64b/RfeP3vd65b9483LSpuf/+Zdv6Gibkyg6Y4N2ewWZTZYV2XpLh8Ich0qVHLzt4cNcurTUxobGXhyqPKhsGrPPQzheC3dNkhdIEgAA5EIrSlL6K1DG5ysjvhXZXuZFVwjNnj2bH08GN+T39/f39PT09fXRA/mjA6qFmSRJtTD9kZpoC73UlqSfvHTgr9ZX1257uXXnO2fMuMmkmpKkZCVksNIJXNYh9KSK/US3VTyJJYkJZMhXpNPfvAi7d+/WQuSDsumSAAAAstOKkjQSs0jZS4OSJDPzBb41weUzWxXT3d09R/x2QN2SpC4jpj9SoqMj4XyN1JSkrW8fPvPBhHH4hfcnF979nI62OTUkiSeHePqHIzZzVZKWliriw5FQpAShFVUyC0mqZmYt4+kojqSaT2L4tn9YEQAANIOEQbcRMg3/kpFpkiQOxhkP+U1XV5ddQlS3JCnSH6lpWJKePvDx35de0tEorx3+7OT/ekFH25x4SQrtJBSgMnz5LNAaX1lfKT05ZHWHJUlcngtziqty3r2kwv5Cko4CAADIg4RBtxEyDf+SaZSkNLpjS7WiJN27/c2V1z+z6EKz8mYzqW9eI7aPfzhn3a90NMrNO99Z8lDGgbrliVcQn+5klKSY63FKksQUUa6SBAAAoHnUHHQbI9PwL5kuSUq5FoqyzQn+uxKOTL8kffd6M3+ZWXT5l32Dv79s0Jx6mem63Hz/Rp3NmLk3Dq9/6V0dFZy06fnrdryto21OvILUJUmRDPpKWXi1DpIEAABtT8ygmweZhn/JdElS+rvxu7u7W0iSulaab19qnnstEnzzXXPGleaUPg588skn1Mhv/ctNf7HuV8+++4nIWmXguX0zbxrJ1FQQtQLJjbhrkiLLmEJhCo1HOZNPknQebwQAAMD04xt0cyLT8C+ZLkmaV/N/QZEMDw+3iiQtHzAnX2oOfaTjlr4B091P/+7YseOss86666676PHFj732jY3/vWXvhMz429998Y/Dryy8+/kDk5/L+Myg5hWxeu9uqzhTTPFakuQuYKrgOhwAAIBpxBl08yPT8C+ZLklKvMGeUS2cTkn65sVmR+RntSN89ZU54bxHr7jm3HPPHR0d5fD3tu7+2p07uu4fvejRVy9+7NVv3/PCovt2nv/IroO/rfV/5bYvMaJTFZd0v5MkfMh7eS4omHy5rUI9v5MEAABgKnEG3fzINPxLUq4NsjQoSXG/k1SbRn4nSZH+SI3bwnseLy8/qsmny6557pvnHj3qWcf9xL4Pb9n5zvLHXydP2vvx/+jNAAAAQLFpRUkyWcpO1y9u5yVJDf3i9h2PmBVJB/vjkrnkeh0EAAAAQBItKknT9X+3pZyFor3kJUnpV4t7/u+2m+4zK4YiEZcNj5jetToIAAAAgCRaVJLIG9JMCLmiQ7LS0dGRRrBcOyHZSilYOf4EgHsIcXR1dcmLg2V+cLu8f83P92803VfrIAAAAACSaFFJsuqgncCBnIb/nxCL9ZVE17G/deS61Dzn5yVd7AW+vCSJWL58eeJkEh0mSZKOfvGFWXS5+fV+HZeQRd2zTQcBAAAAkESLSpIJ1v14PYYhU3FlaE2wcJviQ0Ox16Gozrlz53plyMpTjUVCJCt24idHSaL21JYzas/s2bP9XXHZTea0VTrIXHGrOfOfdBAAAAAAKWhdSTKBJ5EckO4oPyBTWbx4sV6gE2AlyQSTTJRn8+bNcivVQ7VRnbWNhFre39+v5rEo3tPT09XVZRuToySZ0JP6+vqUn1EbKJgwqfadPvO9G8zv/k/HLx8q/87k+x/qOAAAAABS0FxJmp8FXT6A7MFe25o1axblmTt3LimOWqwtYUky4RojMgwqRWWPO+44qodq80/JCCjDhg0beKcE7ZT0SKqVlCR1h13d2GtqvFN6wP+fbgLnrTUn9JT/y7ah+836zebi68x3LjOnXwlDAgAAAOqmiZIEppTRPebq9ebSG83515Sd6f4ndAYAAAAAZAGSBAAAAADgAZIEAAAAAOABkgQAAAAA4AGSBAAAAADgAZIEAAAAAOABkgQAAAAA4AGSBAAAAADgAZIEAAAAAOABkgQAAAAA4AGSBAAAoFj84e1IdaaiAUkCAABQLNyxHyllKhqQJAAAAMXCHfuRUqaiAUkCAABQOCaOfomUNelOLACQJAAAAIXDNQCkxKQ7sQBAkgAAABQO1wCQEpPuxAIASQIAAFA4XANASky6EwsAJAkAAEDhcA0AKTHpTiwATZSkiYmJ2267beXKlfSXHtcdBwAAAPLFNQCkxKQ7sQA0UZKs8Vjocd1xAAAAIF9cA0BKTLoTC0ATJYmNx1J3HAAAAMgX1wCQEpPuxALQREmKmxnKGm8LxgY7O5eWDutwag6VejvL9D5cfx0AAABS4hoAUmLSnVgAmihJcWuMssaz8eIQmUbpkA57KOf0M/SizkscfthqjD9bQ5IUGJJ3pwAAAJqBawBIiUl3YgFooiRND+klSZBGcQJJGhrj54Fj8cRPmhos5ZyD1WqMWzMAAIAm4xoAUmLSnVgAIEll0iiOqzKyVJoaLJCkTJQ7J13HgmllbGhmzYaOj48vWbKE/uoNoC5KpdKqVauOHTumN6RgMEBHG8Y1gKamtdcN0Pdq+nvnPQ9d0rfywEefu3nySnt/8/FpZy55/OkX3E0NJt2JTeDIkSPLli1rnbceJKlMGsXxqEx5X5VImhoshZIkfY0yeuBtxeHS0sihJAlBOX9SnlwgO6n54ilfzK2ZoW6aV3PDjI6OypNV9/BcB2QDctdTvPc6IP/gpjbDReqAuos6jU6i3pArrgHUSFZxLHXIxwuvvdVzwUXkLu6mvBJZF7lXHW3LlHQn+mjwLZCLJFHxHTt26GjIeICOxtBESYpbY5Q1ng2PJJW/4zLeldFpFMejMvGSFJWDsD16FRSVjbRN1B8dkiNuUfnKXt5juKkiXtX67R5F5dNkJ9QPssODNrfosJoEnRH5ugr6tlavQpKmExpf5XhPn9oLFixI/7HYOFMzzDeIbaTsKHqcaTxrElPTe64BeJOdlSFJsk/JRW776d1Z54FIkq5cfXXWUplS60iSpe6TmIsknXPOOQsXLvRWQsHFixevWLFCb4ihiZIUd7da1ng2lCRFVw5VbiJzxrb6JCn+ctvYkKhNmUHyTJJuZDAey8rpiJb26mXj1SKBYC3t7eV+CCr02mGzUZJkgqZypKqStuV0sqL9RsdYzqO6IqBy+OFdgaIDOU/mCcWaKEkywY4qEeHEthlCT4MjcjLkSFWSgr4dC/U6CAovD7vd1z/cjUtLY+EpC3q+FNRWrkofgq652huRw+dzZ40qLBX7GsgJJUkm8CSO0KckORPt8+yzz6ZPZHpKH8r0gHMSMkh/Kadtpv3QVzWEO6kiRwj6K82DmmF3Ya8iyWo5gw1SHhvhr+b5zvTIPrHIZtOmdevW0QHaxnMn0N9t27bZgrJnuLW0adOmTVTKZrb9I/elDpA7szPoB1mn3bXtMVWWa7ZjKjXJVpK+i1wD8CZ7gcyNU6K4bcy8ExeQBk0ERtVzwUX3Dm+lSGdwcY2CJC42W2cwC0WlWLm4BhIvsihbCW1l16EHNjPlpAykQWRstBcuaJ9ak7MRyvPa+EFqhq3NVigzx7UzTdKdGI+SJHmW+Wwa8drmrzFSkhLfaHFQwa6uLpIh5UnWkGiT15+8NFGS2HgsdcezEZGksi5oOfBMNdUjScHTaj21aigPD9GcNSXJzRC9/c0zh6FnaJQa1m5eM3ElqWpCQolCc1IDbTg2Vw62fODsRqXyA5G/Ulvz5m9cSeJmHy4NClcWqhq2xJshLyKSxK/J6o4i8z2iVdW46Ebh09FXuO8QIjVzJZE3XdWJpfrzOyKqxTniShJLj/wItvoyOTnJn+b0yb527drxAM5PH9DsRq+//rpbgzv1IkcImZ8eU5z+2rGBq+X1TywTXEPcLhrH+0WfG0B/eWRSh0Nxm8c2z0QPgTbxgDcYIKt1zYz8hjvT7lGNryxJJbGwibvFtkc+dg/Ki2sAbrIywbYhE+kLOwdfTbOyYpccyYVBciaJJYk28eIkCrJpxUkSZ5CzWbTVZpAzSbLZcgkU7zGunYlJd2I87mvGPpZxPuPG9w6Vb5w6GHc8aTy7IZmmSlLczFDWeDakA0XtJKQ81rrTG4kf1uKbtCUyJeCpIXpxjUdud5iMSpJQgSrB5JBwBU/7ZZ0RqQozJB1gM/BIErXNtRnqq6D9Y8HskYxUJSmMMM4kU7kPq6NyzngkyXN01UbG6JpzFA2jZpLC9rB/SJWJSEnliKLdWD0oFa/Ch+CVJOU9ldMd42qRYJ6MOpIk7YQ3ySDPapAk0ec4f2S7VXlrkBmM8zWa8vOo4HUF6wFqVLCt4pZw5rywOqiC3EJWExuUoub2CculiSnIx6uqknBnur3ndg7vUcXl3mvjGoCbSCDIJKwJyeRe27Jmo6SKZ6FcSVI10NPEmSTvfA9n8EqSag/vJa6diUl3YjzyJKpXu339qLNswrcJn1A3Q1akJ9VnSKapkhS3xihrPBtSkuTjKjGSkeQQar5HEanBfmnmzFFl0UKjanb8JkBLksqg63QqSXOAzSBeI4IjkvD0UmVr5cTxUO1W5WhrdSaj/CRnVfJIUkTpGK8keTLkRYwkee0kKu6dwYtEdWysJLmHECdJkQMMmxf1IafrYt9Z9eGO4mw/peiqUjvnwVvZZsZDNbGmIqvy1iAzGEeSpHl4hw27lyPiSpOFxaIz+xWHRLwjEB+vch13kDPhYap+kAVlt3MNtgNZleRR15hJcn1UjalcOe+9Nq4BuCluJkk6jU0kGZRUfhuciJEkWUNWSXpcXMKrLUlK8rwyx+1MTLoT41GSJE+KfVVMTk4qTbfZ5Anl14b7Qk3JeOBJCwPqMCTTVEmaHqQY5T+TFPtRLmqQQhOQSZJ8DjSDJInVweMcAcGYygN8VJLcfos3oZiJnPpxGsyjvpw7qSqCaIA/Q15klCRn76pjuZJI3HsIcZKUPJMkJMmiSjWMK0k8cnsHUTstMRpMcthhWEqSqspbg0IN81a/9u3bx/Wranm8Vx4gsc2zYpEL7qHJZitJkru2BWVm24EpJUlWokZEe/hxkpRmJinN2bG4BuBN3lmWlDNJtSVJ1iALJkrS4+I6XS4zSVMgSfLs27enOssmxnpNw0u5rSfVZ0hmhkuSz4eiGSqkcYi6JclOeKSWJF28TER62leSIodWPmpfk8rD5+AQl6oO1fKg7JokvwRXiBhDDkQlSTRGyoQ4EVVJismQF1kkyffiiXRjcFyuJPkPQddsK4m86apNqi1J0a2NoyRpUNy0NR7zA0j0OU6D7rp16+xTlqTxYOmo/SgfD9YkxdUgcQcAO07w+F0SN9yNipUZgwFcSsJN0hvq5YhYXWTCNvNT2Vqb0x4Ol5JDl+wTWXA8XpKseO3Zs4cPivvBK0n2AZ9H9rZmSxKZxLwTF7BDHAjXA1HEuybJKx+uJNkH3jVJnGGvuLFOSpJ8vDZpTRJt9a5J8rYzMelOjEeeRPkmUvJUY02St6r6GA/Q0XTMbEmqTOZHRg5Xm9I5RGpJCh5zzmCPUpLcenTEFqkOpeVRRz1tI0kKp4QjnWAJOsrZFD2DkfmMsDOjV1RDytkq19rCpzkiai4jz2B1E+lddb+2beVuj8mQD0mSFPazkJUQOTkURqJ3t3FT/YcgamZJKof5rETfeo4kVU9frOzWx2j0d5LUqCm38sgtP8ftUx687aZOcUXJW4PE/ViXGmFCJ1sVXKuSF+xsQVuzjfO+vNf1GkTurjPaUdJ1jOiEs8Xdbdw26iuqxzavtiSVwouVPDpyZFUAC5ONHIu5u41tqdmSNBHKit0vq8xE4BY2qO4ac+XDK0kT4r4zeXcb747+3ju81ZUk60O2IEvSRHgN7pL4u9vYluLamZh0J8aj3gL8+umMXjtzXw98Qo/47p2cepooSXFrjLLGs+FOFMlRwRmnLWkcQqtMlGgNYkCloFYWHkIqtflqrg4zndrq2kmSQNuh53hATrAu2KcsDe1IehFpZVwDmMa011k81JpJd2IBaKIkxd2tljUOAJgiyt8xYr8JgEYYDJdsW9pXktSUWPviGoCb/qHnfPF1NU/UjnhCSOebQtzDd5PuxALQREli47HUHQcANJHIVGvOl72ACa8cKSVqL0mSFz46G7jVqKVwDWCKE1+t6xQXwlo86U4sAE2UpLiZoaxxAAAAIF9cA0BKTLoTC0ATJSlujVHWOAAAAJAvrgEgJSbdiQWgiZIEAAAAtCauASAlJt2JBQCSBAAAoHC4BoCUmHQnFgBIEgAAgMLhGgBSYtKdWAAgSQAAAAqHawBIiUl3YgGAJAEAACgcrgEgJSbdiQUAkgQAAKBwuAaAlJh0JxYASBIAAIDC4RoAUmLSnVgAIEkAAAAKh2sASIlJd2IB6PiD2w0SEhISEhISEpJKkCQkJCQkJCQkJE+CJCEhISEhISEhedL/A+Q0kCN16H4iAAAAAElFTkSuQmCC"},8453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>s});var A=i(6540);const t={},r=A.createContext(t);function d(e){const n=A.useContext(r);return A.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),A.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/337e0e25.160e9c44.js b/assets/js/337e0e25.160e9c44.js deleted file mode 100644 index 41d940ac..00000000 --- a/assets/js/337e0e25.160e9c44.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[7191],{6995:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>d,toc:()=>l});var r=n(4848),s=n(8453);const o={sidebar_position:1},i="Lobaro Direct+",d={id:"cloud/direct+/index",title:"Lobaro Direct+",description:"test",source:"@site/docs/cloud/direct+/index.md",sourceDirName:"cloud/direct+",slug:"/cloud/direct+/",permalink:"/iot/cloud/direct+/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/cloud/direct+/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"cloudSidebar",previous:{title:"Overview",permalink:"/iot/cloud/"},next:{title:"Lobaro IoT Platform",permalink:"/iot/cloud/platform/"}},a={},l=[{value:"Getting Started",id:"getting-started",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Generate a new site",id:"generate-a-new-site",level:2},{value:"Start your site",id:"start-your-site",level:2}];function c(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"lobaro-direct",children:"Lobaro Direct+"}),"\n",(0,r.jsx)(t.p,{children:"test"}),"\n",(0,r.jsx)(t.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsxs)(t.p,{children:["Get started by ",(0,r.jsx)(t.strong,{children:"creating a new site"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Or ",(0,r.jsx)(t.strong,{children:"try Docusaurus immediately"})," with ",(0,r.jsx)(t.strong,{children:(0,r.jsx)(t.a,{href:"https://docusaurus.new",children:"docusaurus.new"})}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"what-youll-need",children:"What you'll need"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://nodejs.org/en/download/",children:"Node.js"})," version 18.0 or above:","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"When installing Node.js, you are recommended to check all checkboxes related to dependencies."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"generate-a-new-site",children:"Generate a new site"}),"\n",(0,r.jsxs)(t.p,{children:["Generate a new Docusaurus site using the ",(0,r.jsx)(t.strong,{children:"classic template"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"The classic template will automatically be added to your project after you run the command:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npm init docusaurus@latest my-website classic\n"})}),"\n",(0,r.jsx)(t.p,{children:"You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor."}),"\n",(0,r.jsx)(t.p,{children:"The command also installs all necessary dependencies you need to run Docusaurus."}),"\n",(0,r.jsx)(t.h2,{id:"start-your-site",children:"Start your site"}),"\n",(0,r.jsx)(t.p,{children:"Run the development server:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"cd my-website\nnpm run start\n"})}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"cd"})," command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"npm run start"})," command builds your website locally and serves it through a development server, ready for you to view at ",(0,r.jsx)(t.a,{href:"http://localhost:3000/",children:"http://localhost:3000/"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Open ",(0,r.jsx)(t.code,{children:"docs/intro.md"})," (this page) and edit some lines: the site ",(0,r.jsx)(t.strong,{children:"reloads automatically"})," and displays your changes."]})]})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>d});var r=n(6540);const s={},o=r.createContext(s);function i(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7adc43c9.289123be.js b/assets/js/7adc43c9.289123be.js new file mode 100644 index 00000000..66f0ec1d --- /dev/null +++ b/assets/js/7adc43c9.289123be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[1259],{9799:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=t(4848),i=t(8453);const s={},o="Server Certificates",a={id:"platform/administration/server-certificates",title:"Server Certificates",description:"The server needs certificates for different use cases.",source:"@site/docs/platform/administration/server-certificates.md",sourceDirName:"platform/administration",slug:"/platform/administration/server-certificates",permalink:"/iot/platform/administration/server-certificates",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/administration/server-certificates.md",tags:[],version:"current",frontMatter:{},sidebar:"cloudSidebar",previous:{title:"Monitoring",permalink:"/iot/platform/administration/monitoring"},next:{title:"Server Configuration",permalink:"/iot/platform/administration/server-configuration"}},c={},l=[{value:"HTTPS (Frontend)",id:"https-frontend",level:2},{value:"CoAPs (Devices)",id:"coaps-devices",level:2},{value:"Create a Certificate Signing Request (CSR)",id:"create-a-certificate-signing-request-csr",level:3},{value:"Create Private Key",id:"create-private-key",level:4},{value:"Create CSR",id:"create-csr",level:4},{value:"Request Certificate from Lobaro",id:"request-certificate-from-lobaro",level:3},{value:"Install the signed Certificate in the Platform",id:"install-the-signed-certificate-in-the-platform",level:3}];function d(e){const r={a:"a",admonition:"admonition",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.h1,{id:"server-certificates",children:"Server Certificates"}),"\n",(0,n.jsx)(r.p,{children:"The server needs certificates for different use cases."}),"\n",(0,n.jsx)(r.h2,{id:"https-frontend",children:"HTTPS (Frontend)"}),"\n",(0,n.jsx)(r.p,{children:"The frontend is always serves via HTTP. To setup HTTPS connections to the Platform Frontend you will need a reverse proxy like Nginx or Apache."}),"\n",(0,n.jsxs)(r.p,{children:["By default we setup an nginx using docker together with the ",(0,n.jsx)(r.a,{href:"https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion",children:"let's encrypt companion"})," to provide HTTPS."]}),"\n",(0,n.jsx)(r.h2,{id:"coaps-devices",children:"CoAPs (Devices)"}),"\n",(0,n.jsx)(r.p,{children:"Devices can used secure CoAPs connections to the backend. To use CoAPs a Certificate signed by Lobaro is required."}),"\n",(0,n.jsx)(r.p,{children:"The setup consists of the following steps:"}),"\n",(0,n.jsxs)(r.ol,{children:["\n",(0,n.jsx)(r.li,{children:"Create a Certificate Signing Request (CSR)"}),"\n",(0,n.jsx)(r.li,{children:"Request a Certificate from Lobaro"}),"\n",(0,n.jsx)(r.li,{children:"Install the signed Certificate in the Platform"}),"\n"]}),"\n",(0,n.jsx)(r.h3,{id:"create-a-certificate-signing-request-csr",children:"Create a Certificate Signing Request (CSR)"}),"\n",(0,n.jsx)(r.h4,{id:"create-private-key",children:"Create Private Key"}),"\n",(0,n.jsx)(r.p,{children:"The key must be created at the Platform server and should never leave the system."}),"\n",(0,n.jsx)(r.p,{children:"openssl ecparam -name prime256v1 -genkey -noout -out platform.key"}),"\n",(0,n.jsx)(r.div,{children:(0,n.jsxs)(r.p,{children:["Do not send the resulting private key file ",(0,n.jsx)(r.code,{children:"platform.key"})," to anyone."]})}),"\n",(0,n.jsx)(r.h4,{id:"create-csr",children:"Create CSR"}),"\n",(0,n.jsx)(r.p,{children:'Update "-subj" parameter in the command below according to you server and organisation.'}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsxs)(r.li,{children:["C is Country Name: e.g. ",(0,n.jsx)(r.code,{children:"C=DE"})]}),"\n",(0,n.jsxs)(r.li,{children:["ST is State or Province Name (full name): e.g. ",(0,n.jsx)(r.code,{children:"ST=Hamburg"})]}),"\n",(0,n.jsxs)(r.li,{children:["O is Organization Name (eg, company): e.g. ",(0,n.jsx)(r.code,{children:"O=Lobaro GmbH"})]}),"\n",(0,n.jsxs)(r.li,{children:["CN is Common Name (e.g. server FQDN or YOUR name): e.g. ",(0,n.jsx)(r.code,{children:"CN=up.lobaro.com"}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsxs)(r.li,{children:["The CN ",(0,n.jsx)(r.strong,{children:"must"})," match your domain that is configured in the devices. It can also be an IP address."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-bash",children:'openssl req -new -key platform.key -sha256 -subj "/C=DE/ST=Hamburg/O=Lobaro GmbH/CN=up.lobaro.com" -out "platform.csr"\n'})}),"\n",(0,n.jsx)(r.p,{children:"Verify your request with:"}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-bash",children:" openssl req -text -noout -in platform.csr\n"})}),"\n",(0,n.jsx)(r.h3,{id:"request-certificate-from-lobaro",children:"Request Certificate from Lobaro"}),"\n",(0,n.jsxs)(r.p,{children:["Send the generated CSR file (",(0,n.jsx)(r.strong,{children:"platform.csr"}),") to ",(0,n.jsx)(r.a,{href:"mailto:support@lobaro.de",children:"support@lobaro.de"})," to receive a valid certificate for your Server."]}),"\n",(0,n.jsx)(r.h3,{id:"install-the-signed-certificate-in-the-platform",children:"Install the signed Certificate in the Platform"}),"\n",(0,n.jsx)(r.p,{children:"Add or update the following keys in the Platform configuration file:"}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-yaml",children:'server:\n dtlsConfig:\n dtlsCertDir: "./config" # This way the configuration directory is used to lookup the key and cert.\n dtlsCertName: "platform" # Used to lookup "platform.crt" and "platform.key"\nfeatureToggle:\n dtlsSecureCoapServiceEnabled: true # removed in > v1.59.1\n'})}),"\n",(0,n.jsxs)(r.admonition,{type:"danger",children:[(0,n.jsxs)(r.p,{children:["We recommend to ",(0,n.jsxs)(r.strong,{children:["not backup the ",(0,n.jsx)(r.code,{children:"platform.key"})]})," file. If it's lost, we can issue new certificates."]}),(0,n.jsx)(r.p,{children:"If you need to backup the key file make sure the backup is encrypted in a secure way."})]}),"\n",(0,n.jsxs)(r.p,{children:["In case you choose another location than ",(0,n.jsx)(r.code,{children:"./config"})," the ",(0,n.jsx)(r.code,{children:"docker-compose.yml"})," must be updated to mount the ",(0,n.jsx)(r.code,{children:"dtlsCertDir"}),":"]}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-yaml",children:"services:\n lobaro-backend:\n volumes:\n - :\n"})}),"\n",(0,n.jsx)(r.p,{children:"To apply the Configuration restart the Platfrom:"}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-bash",children:"docker restart platform_lobaro-backend_1\n"})}),"\n",(0,n.jsxs)(r.admonition,{type:"tip",children:[(0,n.jsxs)(r.p,{children:["In case the commands fails with e.g.\n",(0,n.jsx)(r.code,{children:"Error response from daemon: No such container: platform_lobaro-backend_1"})]}),(0,n.jsx)(r.p,{children:"Execute"}),(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{children:"docker ps | grep lobaro\n"})}),(0,n.jsxs)(r.p,{children:["You should find the container that is running the platform. The restart command can be issued with the ",(0,n.jsx)(r.code,{children:"CONTAINER ID"})," or ",(0,n.jsx)(r.code,{children:"NAME"})]})]})]})}function h(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,r,t)=>{t.d(r,{R:()=>o,x:()=>a});var n=t(6540);const i={},s=n.createContext(i);function o(e){const r=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function a(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/963797ee.dc35e217.js b/assets/js/963797ee.dc35e217.js deleted file mode 100644 index 2f74f41c..00000000 --- a/assets/js/963797ee.dc35e217.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[5534],{3390:(A,e,n)=>{n.r(e),n.d(e,{assets:()=>t,contentTitle:()=>d,default:()=>a,frontMatter:()=>o,metadata:()=>r,toc:()=>l});var i=n(4848),s=n(8453);const o={sidebar_position:0,displayed_sidebar:"cloudSidebar",title:"Overview"},d="Lobaro IoT Platform",r={id:"cloud/index",title:"Overview",description:"The Lobaro IoT Platform operates as a Head End System for IoT Devices. The Platform is optimized for but not limited",source:"@site/docs/cloud/index.md",sourceDirName:"cloud",slug:"/cloud/",permalink:"/iot/cloud/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/cloud/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"cloudSidebar",title:"Overview"},sidebar:"cloudSidebar",next:{title:"Lobaro Direct+",permalink:"/iot/cloud/direct+/"}},t={},l=[{value:"Features",id:"features",level:2},{value:"Overview",id:"overview",level:2}];function c(A){const e={a:"a",code:"code",h1:"h1",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...A.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"lobaro-iot-platform",children:"Lobaro IoT Platform"}),"\n",(0,i.jsxs)(e.p,{children:["The Lobaro IoT Platform operates as a ",(0,i.jsx)(e.strong,{children:"Head End System for IoT Devices"}),". The Platform is optimized for but not limited\nto handle Lobaro devices."]}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"Public Lobaro instance: platform.lobaro.com"}),"\n",(0,i.jsx)(e.li,{children:"For On-Premise hosting check out Hosting & Licensing"}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"The documentation will always reference the Public Lobaro instance."}),"\n",(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:"img.png",src:n(5072).A+"",width:"2656",height:"1506"})}),"\n",(0,i.jsx)(e.h2,{id:"features",children:"Features"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"Multi tenant (Organisations) with branding / white labeling"}),"\n",(0,i.jsx)(e.li,{children:"IoT Device Management"}),"\n",(0,i.jsx)(e.li,{children:"Support for all Lobaro Devices"}),"\n",(0,i.jsx)(e.li,{children:"Possibility to integrate 3rd party IoT Devices (LoRaWAN, NB-IoT, ...)"}),"\n",(0,i.jsx)(e.li,{children:"Device configuration"}),"\n",(0,i.jsx)(e.li,{children:"Firmware updates"}),"\n",(0,i.jsx)(e.li,{children:"Data parsing and persistence"}),"\n",(0,i.jsxs)(e.li,{children:["Device protocols:","\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"LoRaWAN Network Server"}),"\n",(0,i.jsx)(e.li,{children:"CoAP"}),"\n",(0,i.jsx)(e.li,{children:"HTTP"}),"\n",(0,i.jsx)(e.li,{children:"Manufacturer specifics"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(e.li,{children:["Connect devices via:","\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:"LoRaWAN"}),"\n",(0,i.jsx)(e.li,{children:"NB-IoT"}),"\n",(0,i.jsx)(e.li,{children:"LTE-M"}),"\n",(0,i.jsx)(e.li,{children:"GSM / LTE"}),"\n",(0,i.jsx)(e.li,{children:"etc."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(e.li,{children:"APIs to access or forward data to Use-Case specific applications"}),"\n",(0,i.jsx)(e.li,{children:"Scaling to handle thousands of devices"}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"We offer free access to the platform for tests and integrations (up to 12 Month) with the purchase of any Lobaro device\nin our shared instance. In addition we offer private instance hosting or On-Premise (any Server with Root access)."}),"\n",(0,i.jsx)(e.h2,{id:"overview",children:"Overview"}),"\n",(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:"img.png",src:n(9468).A+"",width:"921",height:"114"})}),"\n",(0,i.jsx)(e.p,{children:"You can find your organisations name next to the Logo. Admins can change their organisation by clicking the small Icon\nnext to it."}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Devices:"})," Manage all devices of your organisation."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Data:"})," See incoming data of all your devices."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Integrations:"})," Manage data connections to and from other applications. (See: ",(0,i.jsx)(e.a,{href:"/iot/cloud/platform/integrations/",children:"Integrations"}),")."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Organisation:"})," Manage all organisation related data."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Configuration:"})," Platform administration of global entities independent of the Organisation (Admins only)."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Tools:"})," wMbus Parser and Hardware Activation."]}),"\n"]}),"\n",(0,i.jsx)(e.p,{children:"The platform shows device data received via various data sources like LoRaWAN, NB.IoT, GSM, etc."}),"\n",(0,i.jsxs)(e.p,{children:["The connection to a device in handled by a ",(0,i.jsx)(e.code,{children:"Datasource"}),". Incoming data is mapped to a matching ",(0,i.jsx)(e.code,{children:"Device"}),". Raw data is saved\nas ",(0,i.jsx)(e.code,{children:"Uplink"})," Message. The ",(0,i.jsx)(e.code,{children:"Uplink"})," Message gets processed by a ",(0,i.jsx)(e.code,{children:"Parser"}),". The result of the parser is saved as ",(0,i.jsx)(e.code,{children:"Device Data"})," used\nfor visualization inside the dashboard and in outgoing APIs."]}),"\n",(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:"img.png",src:n(5207).A+"",width:"836",height:"82"})})]})}function a(A={}){const{wrapper:e}={...(0,s.R)(),...A.components};return e?(0,i.jsx)(e,{...A,children:(0,i.jsx)(c,{...A})}):c(A)}},5207:(A,e,n)=>{n.d(e,{A:()=>i});const i="data:image/png;base64,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"},9468:(A,e,n)=>{n.d(e,{A:()=>i});const i="data:image/png;base64,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"},5072:(A,e,n)=>{n.d(e,{A:()=>i});const i=n.p+"assets/images/platform-frontpage-7b857da575a3432831a1aec09d6d1683.png"},8453:(A,e,n)=>{n.d(e,{R:()=>d,x:()=>r});var i=n(6540);const s={},o=i.createContext(s);function d(A){const e=i.useContext(o);return i.useMemo((function(){return"function"==typeof A?A(e):{...e,...A}}),[e,A])}function r(A){let e;return e=A.disableParentContext?"function"==typeof A.components?A.components(s):A.components||s:d(A.components),i.createElement(o.Provider,{value:e},A.children)}}}]); \ No newline at end of file diff --git a/assets/js/b7192c96.95b5eb72.js b/assets/js/b7192c96.95b5eb72.js new file mode 100644 index 00000000..b54f8e2c --- /dev/null +++ b/assets/js/b7192c96.95b5eb72.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[7816],{286:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var o=n(4848),i=n(8453);const r={},s="Hosting & Licensing",c={id:"platform/license/index",title:"Hosting & Licensing",description:"This page is not ready yet",source:"@site/docs/platform/license/index.md",sourceDirName:"platform/license",slug:"/platform/license/",permalink:"/iot/platform/license/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/license/index.md",tags:[],version:"current",frontMatter:{},sidebar:"cloudSidebar",previous:{title:"Server Configuration",permalink:"/iot/platform/administration/server-configuration"},next:{title:"Lobaro Direct+",permalink:"/iot/platform/license/direct+/"}},a={},l=[];function d(e){const t={admonition:"admonition",h1:"h1",p:"p",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"hosting--licensing",children:"Hosting & Licensing"}),"\n",(0,o.jsx)(t.admonition,{title:"Work in progress",type:"warning",children:(0,o.jsx)(t.p,{children:"This page is not ready yet"})})]})}function p(e={}){const{wrapper:t}={...(0,i.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 i={},r=o.createContext(i);function s(e){const t=o.useContext(r);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(i):e.components||i:s(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ba9c1b43.60736ebe.js b/assets/js/ba9c1b43.60736ebe.js new file mode 100644 index 00000000..29998dac --- /dev/null +++ b/assets/js/ba9c1b43.60736ebe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[346],{4375:(e,d,i)=>{i.r(d),i.d(d,{assets:()=>h,contentTitle:()=>r,default:()=>v,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var n=i(4848),l=i(8453);const s={},r="Changelog",a={id:"platform/administration/changelog",title:"Changelog",description:"Application: Lobaro Backend",source:"@site/docs/platform/administration/changelog.md",sourceDirName:"platform/administration",slug:"/platform/administration/changelog",permalink:"/iot/platform/administration/changelog",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/administration/changelog.md",tags:[],version:"current",frontMatter:{},sidebar:"cloudSidebar",previous:{title:"Administration",permalink:"/iot/platform/administration/"},next:{title:"Monitoring",permalink:"/iot/platform/administration/monitoring"}},h={},c=[{value:"1.104.5 - 2024-06-24",id:"11045---2024-06-24",level:2},{value:"Changed",id:"changed",level:3},{value:"1.104.4 - 2024-06-24",id:"11044---2024-06-24",level:2},{value:"Fixed",id:"fixed",level:3},{value:"1.104.3 - 2024-06-24",id:"11043---2024-06-24",level:2},{value:"Changed",id:"changed-1",level:3},{value:"Fixed",id:"fixed-1",level:3},{value:"1.104.2 - 2024-06-19",id:"11042---2024-06-19",level:2},{value:"Fixed",id:"fixed-2",level:3},{value:"1.104.1 - 2024-06-19",id:"11041---2024-06-19",level:2},{value:"Changed",id:"changed-2",level:3},{value:"1.104.0 - 2024-06-18",id:"11040---2024-06-18",level:2},{value:"Added",id:"added",level:3},{value:"Changed",id:"changed-3",level:3},{value:"1.103.3 - 2024-06-12",id:"11033---2024-06-12",level:2},{value:"Fixed",id:"fixed-3",level:3},{value:"1.103.2 - 2024-06-11",id:"11032---2024-06-11",level:2},{value:"Fixed",id:"fixed-4",level:3},{value:"1.103.1 - 2024-06-11",id:"11031---2024-06-11",level:2},{value:"Changed",id:"changed-4",level:3},{value:"Fixed",id:"fixed-5",level:3},{value:"1.103.0 - 2024-06-11",id:"11030---2024-06-11",level:2},{value:"Fixed",id:"fixed-6",level:3},{value:"Changed",id:"changed-5",level:3},{value:"1.102.3 - 2024-06-06",id:"11023---2024-06-06",level:2},{value:"Fixed",id:"fixed-7",level:3},{value:"1.102.2 - 2024-06-04",id:"11022---2024-06-04",level:2},{value:"Fixed",id:"fixed-8",level:3},{value:"1.102.1 - 2024-06-04",id:"11021---2024-06-04",level:2},{value:"Fixed",id:"fixed-9",level:3},{value:"1.102.0 - 2024-06-04",id:"11020---2024-06-04",level:2},{value:"Changed",id:"changed-6",level:3},{value:"Added",id:"added-1",level:3},{value:"1.101.10 - 2024-05-25",id:"110110---2024-05-25",level:2},{value:"Fixed",id:"fixed-10",level:3},{value:"Changed",id:"changed-7",level:3},{value:"1.101.9 - 2024-05-24",id:"11019---2024-05-24",level:2},{value:"Fixed",id:"fixed-11",level:3},{value:"1.101.8 - 2024-05-24",id:"11018---2024-05-24",level:2},{value:"Changed",id:"changed-8",level:3},{value:"1.101.7 - 2024-05-24",id:"11017---2024-05-24",level:2},{value:"Added",id:"added-2",level:3},{value:"Changed",id:"changed-9",level:3},{value:"Removed",id:"removed",level:3},{value:"1.101.6 - 2024-05-22",id:"11016---2024-05-22",level:2},{value:"Changed",id:"changed-10",level:3},{value:"1.101.5 - 2024-05-22",id:"11015---2024-05-22",level:2},{value:"Changed",id:"changed-11",level:3},{value:"Fixed",id:"fixed-12",level:3},{value:"1.101.4 - 2024-05-22",id:"11014---2024-05-22",level:2},{value:"Fixed",id:"fixed-13",level:3},{value:"1.101.3 - 2024-05-22 - DO NOT USE - BROKEN",id:"11013---2024-05-22---do-not-use---broken",level:2},{value:"1.101.2 - 2024-05-16",id:"11012---2024-05-16",level:2},{value:"Fixed",id:"fixed-14",level:3},{value:"1.101.1 - 2024-05-16",id:"11011---2024-05-16",level:2},{value:"Fixed",id:"fixed-15",level:3},{value:"1.101.0 - 2024-05-15",id:"11010---2024-05-15",level:2},{value:"Added",id:"added-3",level:3},{value:"Changed",id:"changed-12",level:3},{value:"Deprecated",id:"deprecated",level:3},{value:"Fixed",id:"fixed-16",level:3},{value:"1.100.0 - 2024-05-07",id:"11000---2024-05-07",level:2},{value:"Added",id:"added-4",level:3},{value:"Fixed",id:"fixed-17",level:3},{value:"1.99.6 - 2024-04-30",id:"1996---2024-04-30",level:2},{value:"Fixed",id:"fixed-18",level:3},{value:"Changed",id:"changed-13",level:3},{value:"1.99.5 - 2024-04-23",id:"1995---2024-04-23",level:2},{value:"Fixed",id:"fixed-19",level:3},{value:"1.99.4 - 2024-04-22",id:"1994---2024-04-22",level:2},{value:"Changed",id:"changed-14",level:3},{value:"Fixed",id:"fixed-20",level:3},{value:"1.99.3 - 2024-04-16",id:"1993---2024-04-16",level:2},{value:"Changed",id:"changed-15",level:3},{value:"Fixed",id:"fixed-21",level:3},{value:"v1.99.2 - 2024-04-16",id:"v1992---2024-04-16",level:2},{value:"Added",id:"added-5",level:2},{value:"Changed",id:"changed-16",level:2},{value:"Fixed",id:"fixed-22",level:3},{value:"v1.99.1 - 2024-04-08",id:"v1991---2024-04-08",level:2},{value:"Fixed",id:"fixed-23",level:3},{value:"v1.99.0 - 2024-04-03",id:"v1990---2024-04-03",level:2},{value:"Added",id:"added-6",level:3},{value:"Changed",id:"changed-17",level:3},{value:"Fixed",id:"fixed-24",level:3},{value:"v1.98.1 - 2024-04-02",id:"v1981---2024-04-02",level:2},{value:"Fixed",id:"fixed-25",level:3},{value:"Changed",id:"changed-18",level:3},{value:"v1.98.0 - 2024-04-02",id:"v1980---2024-04-02",level:2},{value:"Changed",id:"changed-19",level:3},{value:"Fixed",id:"fixed-26",level:3},{value:"v1.97.1 - 2024-03-28",id:"v1971---2024-03-28",level:2},{value:"Added",id:"added-7",level:3},{value:"Changed",id:"changed-20",level:3},{value:"Fixed",id:"fixed-27",level:3},{value:"v1.97.0 - 2024-03-26",id:"v1970---2024-03-26",level:2},{value:"DB Migrations",id:"db-migrations",level:3},{value:"Added",id:"added-8",level:3},{value:"Changed",id:"changed-21",level:3},{value:"Fixes",id:"fixes",level:3},{value:"v1.96.5 - 2024-03-12",id:"v1965---2024-03-12",level:2},{value:"Fixed",id:"fixed-28",level:3},{value:"v1.96.4 - 2024-03-10",id:"v1964---2024-03-10",level:2},{value:"Fixed",id:"fixed-29",level:3},{value:"v1.96.3 - 2024-03-07",id:"v1963---2024-03-07",level:2},{value:"Added",id:"added-9",level:3},{value:"Changed",id:"changed-22",level:3},{value:"Fixed",id:"fixed-30",level:3},{value:"v1.96.2 - 2024-03-04",id:"v1962---2024-03-04",level:2},{value:"Fixed",id:"fixed-31",level:3},{value:"v1.96.1 - 2024-03-04",id:"v1961---2024-03-04",level:2},{value:"Added",id:"added-10",level:3},{value:"Fixed",id:"fixed-32",level:3},{value:"v1.96.0 - 2024-02-27",id:"v1960---2024-02-27",level:2},{value:"Added",id:"added-11",level:3},{value:"Changed",id:"changed-23",level:3},{value:"v1.95.3 - 2024-02-27",id:"v1953---2024-02-27",level:2},{value:"Fixed",id:"fixed-33",level:3},{value:"v1.95.2 - 2024-02-24",id:"v1952---2024-02-24",level:2},{value:"Fixed",id:"fixed-34",level:3},{value:"v1.95.1 - 2024-02-24",id:"v1951---2024-02-24",level:2},{value:"Added",id:"added-12",level:3},{value:"Fixed",id:"fixed-35",level:3},{value:"v1.95.0 - 2024-02-24",id:"v1950---2024-02-24",level:2},{value:"Added",id:"added-13",level:3},{value:"Changed",id:"changed-24",level:3},{value:"v1.94.4 - 2024-02-21",id:"v1944---2024-02-21",level:2},{value:"Added",id:"added-14",level:3},{value:"Changed",id:"changed-25",level:3},{value:"v1.94.3 - 2024-02-20",id:"v1943---2024-02-20",level:2},{value:"Fixed",id:"fixed-36",level:3},{value:"v1.94.2 - 2024-02-20 - SKIPPED DUE TO BUILD PROBLEMS",id:"v1942---2024-02-20---skipped-due-to-build-problems",level:2},{value:"Changed",id:"changed-26",level:3},{value:"v1.94.1 - 2024-02-19",id:"v1941---2024-02-19",level:2},{value:"Changed",id:"changed-27",level:3},{value:"Fixed",id:"fixed-37",level:3},{value:"v1.94.0 - 2024-02-15",id:"v1940----2024-02-15",level:2},{value:"Changed",id:"changed-28",level:3},{value:"Fixed",id:"fixed-38",level:3},{value:"v1.93.1 - 2024-02-14",id:"v1931----2024-02-14",level:2},{value:"Reverted",id:"reverted",level:3},{value:"v1.93.0 - 2024-02-09",id:"v1930----2024-02-09",level:2},{value:"Added",id:"added-15",level:3},{value:"Changed",id:"changed-29",level:3},{value:"Fixed",id:"fixed-39",level:3},{value:"v1.92.0 - 2024-02-02",id:"v1920----2024-02-02",level:2},{value:"Added",id:"added-16",level:3},{value:"Changed",id:"changed-30",level:3},{value:"v1.91.1 - 2024-01-29",id:"v1911---2024-01-29",level:2},{value:"Fixed",id:"fixed-40",level:3},{value:"v1.91.0 - 2024-01-31",id:"v1910---2024-01-31",level:2},{value:"Added",id:"added-17",level:3},{value:"v1.90.0 - 2024-01-26",id:"v1900---2024-01-26",level:2},{value:"Added",id:"added-18",level:3},{value:"Changed",id:"changed-31",level:3},{value:"Fixed",id:"fixed-41",level:3},{value:"v1.89.0 - 2024-01-22",id:"v1890---2024-01-22",level:2},{value:"Added",id:"added-19",level:2},{value:"v1.88.2 - 2024-01-19",id:"v1882---2024-01-19",level:2},{value:"Fixed",id:"fixed-42",level:2},{value:"v1.88.1 - 2024-01-19",id:"v1881---2024-01-19",level:2},{value:"Changed",id:"changed-32",level:3},{value:"v1.88.0 - 2024-01-16",id:"v1880---2024-01-16",level:2},{value:"Changed",id:"changed-33",level:3},{value:"Added",id:"added-20",level:3},{value:"v1.87.1 - 2023-12-19",id:"v1871---2023-12-19",level:2},{value:"Fixed",id:"fixed-43",level:3},{value:"v1.87.0 - 2023-12-19",id:"v1870---2023-12-19",level:2},{value:"Changed",id:"changed-34",level:3},{value:"v1.86.0 - 2023-12-14",id:"v1860---2023-12-14",level:2},{value:"Added",id:"added-21",level:3},{value:"Fixed",id:"fixed-44",level:3},{value:"v1.85.0 - 2023-12-12",id:"v1850---2023-12-12",level:2},{value:"Changed",id:"changed-35",level:3},{value:"Fixed",id:"fixed-45",level:3},{value:"v1.84.2 - 2023-12-11",id:"v1842---2023-12-11",level:2},{value:"Changed",id:"changed-36",level:3},{value:"v1.84.1 - 2023-12-11",id:"v1841---2023-12-11",level:2},{value:"Note",id:"note",level:3},{value:"v1.84.0 - 2023-12-07",id:"v1840---2023-12-07",level:2},{value:"Added",id:"added-22",level:3},{value:"Fixed",id:"fixed-46",level:3},{value:"v1.83.0 - 2023-12-04",id:"v1830---2023-12-04",level:2},{value:"Added",id:"added-23",level:3},{value:"v1.82.1 - 2023-11-9",id:"v1821---2023-11-9",level:2},{value:"Fixed",id:"fixed-47",level:3},{value:"Changed",id:"changed-37",level:3},{value:"v1.82.0 - 2023-10-24",id:"v1820---2023-10-24",level:2},{value:"Added",id:"added-24",level:3},{value:"v1.81.2 - 2023-10-23",id:"v1812---2023-10-23",level:2},{value:"Fixed",id:"fixed-48",level:3},{value:"v1.81.1 - 2023-10-08",id:"v1811---2023-10-08",level:2},{value:"Fixed",id:"fixed-49",level:3},{value:"Added",id:"added-25",level:3},{value:"v1.81.0 - 2023-10-02",id:"v1810---2023-10-02",level:2},{value:"Fixed",id:"fixed-50",level:3},{value:"Added",id:"added-26",level:3},{value:"Changed",id:"changed-38",level:3},{value:"v1.80.3 - 2023-08-19",id:"v1803---2023-08-19",level:2},{value:"Fixed",id:"fixed-51",level:3},{value:"v1.80.2 - 2023-08-18",id:"v1802---2023-08-18",level:2},{value:"Fixed",id:"fixed-52",level:3},{value:"v1.80.1 - 2023-08-18",id:"v1801---2023-08-18",level:2},{value:"Fixed",id:"fixed-53",level:3},{value:"Changed",id:"changed-39",level:3},{value:"v1.80.0 - 2023-08-15",id:"v1800---2023-08-15",level:2},{value:"Added",id:"added-27",level:3},{value:"Changed",id:"changed-40",level:3},{value:"Fixed",id:"fixed-54",level:3},{value:"v1.79.1 - 2023-07-14",id:"v1791---2023-07-14",level:2},{value:"Fixed",id:"fixed-55",level:3},{value:"v1.79.0 - 2023-07-13",id:"v1790---2023-07-13",level:2},{value:"Added",id:"added-28",level:3},{value:"Changed",id:"changed-41",level:3},{value:"v1.78.1 - 2023-07-05",id:"v1781---2023-07-05",level:2},{value:"Added",id:"added-29",level:3},{value:"Fixed",id:"fixed-56",level:3},{value:"v1.77.0 - 2023-06-29",id:"v1770---2023-06-29",level:2},{value:"Added",id:"added-30",level:3},{value:"Changed",id:"changed-42",level:3},{value:"v1.76.0 - 2023-06-22",id:"v1760---2023-06-22",level:2},{value:"Added",id:"added-31",level:3},{value:"Changed",id:"changed-43",level:3},{value:"Fixed",id:"fixed-57",level:3},{value:"v1.75.4 - 2023-06-13",id:"v1754---2023-06-13",level:2},{value:"Added",id:"added-32",level:3},{value:"v1.75.3 - 2023-06-06",id:"v1753---2023-06-06",level:2},{value:"Added",id:"added-33",level:3},{value:"Fixed",id:"fixed-58",level:3},{value:"v1.75.2 - 2023-06-02",id:"v1752---2023-06-02",level:2},{value:"Fixed",id:"fixed-59",level:3},{value:"v1.75.1 - 2023-06-02",id:"v1751---2023-06-02",level:2},{value:"Added",id:"added-34",level:3},{value:"v1.75.0 - 2023-06-01",id:"v1750---2023-06-01",level:2},{value:"Added",id:"added-35",level:3},{value:"v1.74.0 - 2023-05-31",id:"v1740---2023-05-31",level:2},{value:"Added",id:"added-36",level:3},{value:"Fixed",id:"fixed-60",level:2},{value:"Changed",id:"changed-44",level:3},{value:"Fixed",id:"fixed-61",level:3},{value:"v1.73.0 - 2023-05-18",id:"v1730---2023-05-18",level:2},{value:"Added",id:"added-37",level:3},{value:"Fixed",id:"fixed-62",level:3},{value:"Change",id:"change",level:3},{value:"v1.72.0 - 2023-05-16",id:"v1720---2023-05-16",level:2},{value:"Added",id:"added-38",level:3},{value:"Fixed",id:"fixed-63",level:3},{value:"v1.71.9 - 2023-04-17",id:"v1719---2023-04-17",level:2},{value:"Changed",id:"changed-45",level:3},{value:"Fixed",id:"fixed-64",level:3},{value:"v1.71.7 - 2023-04-05",id:"v1717---2023-04-05",level:2},{value:"Changed",id:"changed-46",level:3},{value:"v1.71.6 - 2023-04-05",id:"v1716---2023-04-05",level:2},{value:"Fixed",id:"fixed-65",level:3},{value:"v1.71.5 - 2023-04-04",id:"v1715---2023-04-04",level:2},{value:"Fixed",id:"fixed-66",level:3},{value:"v1.71.4 - 2023-04-03",id:"v1714---2023-04-03",level:2},{value:"Fixed",id:"fixed-67",level:3},{value:"v1.71.3 - 2023-03-30",id:"v1713---2023-03-30",level:2},{value:"Fixed",id:"fixed-68",level:3},{value:"v1.71.2 - 2023-03-28",id:"v1712---2023-03-28",level:2},{value:"Changed",id:"changed-47",level:3},{value:"v1.71.1 - 2023-03-27",id:"v1711---2023-03-27",level:2},{value:"Added",id:"added-39",level:3},{value:"v1.70.2 - 2023-03-19",id:"v1702---2023-03-19",level:2},{value:"Added",id:"added-40",level:3},{value:"Changed",id:"changed-48",level:3},{value:"v1.70.1 - 2023-02-15",id:"v1701---2023-02-15",level:2},{value:"Added",id:"added-41",level:3},{value:"Fixed",id:"fixed-69",level:3},{value:"v1.70.0 - 2023-02-01",id:"v1700---2023-02-01",level:2},{value:"Added",id:"added-42",level:3},{value:"v1.64.1 - 2023-01-30",id:"v1641---2023-01-30",level:2},{value:"Fixed",id:"fixed-70",level:3},{value:"v1.64.0 - 2023-01-17",id:"v1640---2023-01-17",level:2},{value:"Changed",id:"changed-49",level:3},{value:"Fixed",id:"fixed-71",level:3},{value:"v1.63.0 - 2022-12-07",id:"v1630---2022-12-07",level:2},{value:"Added",id:"added-43",level:3},{value:"Changed",id:"changed-50",level:3},{value:"Fixed",id:"fixed-72",level:3},{value:"v1.62.1 - 2022-11-25",id:"v1621---2022-11-25",level:2},{value:"Added",id:"added-44",level:3},{value:"v1.61.7 - 2022-11-23",id:"v1617---2022-11-23",level:2},{value:"Fixed",id:"fixed-73",level:3},{value:"v1.61.6 - 2022-11-23",id:"v1616---2022-11-23",level:2},{value:"Fixed",id:"fixed-74",level:3},{value:"1.61.5 - 2022-11-18",id:"1615---2022-11-18",level:2},{value:"Fixed",id:"fixed-75",level:3},{value:"v1.61.2 - 2022-11-15",id:"v1612---2022-11-15",level:2},{value:"Added",id:"added-45",level:3},{value:"Fixed",id:"fixed-76",level:3},{value:"v1.61.1 - 2022-11-04",id:"v1611---2022-11-04",level:2},{value:"Added",id:"added-46",level:3},{value:"Changed",id:"changed-51",level:3},{value:"v1.61.0 - 2022-11-04",id:"v1610---2022-11-04",level:2},{value:"Added",id:"added-47",level:3},{value:"Changed",id:"changed-52",level:3},{value:"Fixed",id:"fixed-77",level:3},{value:"v1.60.0 - 2022-10-13",id:"v1600---2022-10-13",level:2},{value:"Added",id:"added-48",level:3},{value:"Changed",id:"changed-53",level:3},{value:"Fixed",id:"fixed-78",level:3},{value:"v1.59.0 - 2022-10-05",id:"v1590---2022-10-05",level:2},{value:"Added",id:"added-49",level:3},{value:"Fixed",id:"fixed-79",level:3},{value:"v1.58.1 - 2022-09-30",id:"v1581---2022-09-30",level:2},{value:"Fixed",id:"fixed-80",level:3},{value:"v1.58.0 - 2022-09-30",id:"v1580---2022-09-30",level:2},{value:"Added",id:"added-50",level:3},{value:"Changed",id:"changed-54",level:3},{value:"v1.57.0 - 2022-09-23",id:"v1570---2022-09-23",level:2},{value:"Added",id:"added-51",level:3},{value:"Fixed",id:"fixed-81",level:3},{value:"v1.56.0 - 2022-09-20",id:"v1560---2022-09-20",level:2},{value:"Added",id:"added-52",level:3},{value:"Fixed",id:"fixed-82",level:3},{value:"v1.55.0 - 2022-08-09",id:"v1550---2022-08-09",level:2},{value:"Added",id:"added-53",level:3},{value:"Changed",id:"changed-55",level:3},{value:"v1.54.1 - 2022-08-09",id:"v1541---2022-08-09",level:2},{value:"Added",id:"added-54",level:3},{value:"v1.54.0 - 2022-08-09 [YANKED]",id:"v1540---2022-08-09-yanked",level:2},{value:"Added",id:"added-55",level:3},{value:"v1.53.1 - 2022-08-05",id:"v1531---2022-08-05",level:2},{value:"Changed",id:"changed-56",level:3},{value:"Added",id:"added-56",level:3},{value:"Fixed",id:"fixed-83",level:3},{value:"v1.52.2 - 2022-07-28",id:"v1522---2022-07-28",level:2},{value:"Changed",id:"changed-57",level:3},{value:"v1.52.0 - 2022-07-25",id:"v1520---2022-07-25",level:2},{value:"Added",id:"added-57",level:3},{value:"Fixed",id:"fixed-84",level:3},{value:"v1.51.1 - 2022-07-04",id:"v1511---2022-07-04",level:2},{value:"Added",id:"added-58",level:3},{value:"Changed",id:"changed-58",level:3},{value:"Fixed",id:"fixed-85",level:3},{value:"v1.49.0 - 2022-06-20",id:"v1490---2022-06-20",level:2},{value:"Added",id:"added-59",level:3},{value:"Fixed",id:"fixed-86",level:3},{value:"v1.48.0 - 2022-06-15",id:"v1480---2022-06-15",level:2},{value:"Added",id:"added-60",level:3},{value:"Fixed",id:"fixed-87",level:3},{value:"v1.47.0 - 2022-06-13",id:"v1470---2022-06-13",level:2},{value:"Added",id:"added-61",level:3},{value:"Changed",id:"changed-59",level:3},{value:"v1.46.2 - 2022-05-18",id:"v1462---2022-05-18",level:2},{value:"Fixed",id:"fixed-88",level:3},{value:"v1.46.1 - 2022-05-18",id:"v1461---2022-05-18",level:2},{value:"Changed",id:"changed-60",level:3},{value:"v1.46.0 - 2022-05-18",id:"v1460---2022-05-18",level:2},{value:"Added",id:"added-62",level:3},{value:"v1.45.2 - 2022-05-13",id:"v1452---2022-05-13",level:2},{value:"Fixed",id:"fixed-89",level:3},{value:"v1.45.1 - 2022-05-11",id:"v1451---2022-05-11",level:2},{value:"Added",id:"added-63",level:3},{value:"v1.43.2 - 2022-05-09",id:"v1432---2022-05-09",level:2},{value:"Changed",id:"changed-61",level:3},{value:"Fixed",id:"fixed-90",level:3},{value:"v1.43.1 - 2022-05-08",id:"v1431---2022-05-08",level:2},{value:"Fixed",id:"fixed-91",level:3},{value:"v1.43.0 - 2022-05-06",id:"v1430---2022-05-06",level:2},{value:"Changed",id:"changed-62",level:3},{value:"v1.42.0 - 2022-05-05",id:"v1420---2022-05-05",level:2},{value:"Added",id:"added-64",level:3},{value:"v1.41.2 - 2022-05-04",id:"v1412---2022-05-04",level:2},{value:"Fixed",id:"fixed-92",level:3},{value:"v1.41.1 - 2022-05-03",id:"v1411---2022-05-03",level:2},{value:"Changed",id:"changed-63",level:3},{value:"v1.41.0 - 2022-05-02",id:"v1410---2022-05-02",level:2},{value:"Added",id:"added-65",level:3},{value:"Changed",id:"changed-64",level:3},{value:"Fixed",id:"fixed-93",level:3},{value:"Added",id:"added-66",level:3},{value:"v1.40.1 - 2022-04-28",id:"v1401---2022-04-28",level:2},{value:"Added",id:"added-67",level:3},{value:"Fixed",id:"fixed-94",level:3},{value:"v1.40.0 - 2022-04-28",id:"v1400---2022-04-28",level:2},{value:"Added",id:"added-68",level:3},{value:"Changed",id:"changed-65",level:3},{value:"v1.39.0 - 2022-04-25",id:"v1390---2022-04-25",level:2},{value:"Added",id:"added-69",level:3},{value:"Changed",id:"changed-66",level:3},{value:"v1.38.0 - 2022-04-25",id:"v1380---2022-04-25",level:2},{value:"Added",id:"added-70",level:3},{value:"Changed",id:"changed-67",level:3},{value:"Fixed",id:"fixed-95",level:3},{value:"v1.37.0 - 2022-04-21",id:"v1370---2022-04-21",level:2},{value:"Changed",id:"changed-68",level:3},{value:"v1.36.0 - 2022-04-20",id:"v1360---2022-04-20",level:2},{value:"Added",id:"added-71",level:3},{value:"Changed",id:"changed-69",level:3},{value:"v1.35.0 - 2022-04-19",id:"v1350---2022-04-19",level:2},{value:"Added",id:"added-72",level:3},{value:"Changed",id:"changed-70",level:3},{value:"Fixed",id:"fixed-96",level:3},{value:"v1.34.0 - 2022-03-29",id:"v1340---2022-03-29",level:2},{value:"Changed",id:"changed-71",level:3},{value:"Fixed",id:"fixed-97",level:3},{value:"v1.33.1 - 2022-03-24",id:"v1331---2022-03-24",level:2},{value:"Changed",id:"changed-72",level:3},{value:"Fixed",id:"fixed-98",level:3},{value:"v1.33.0 - 2022-03-23",id:"v1330---2022-03-23",level:2},{value:"Added",id:"added-73",level:3},{value:"Changed",id:"changed-73",level:3},{value:"v1.32.1 - 2022-03-04",id:"v1321---2022-03-04",level:2},{value:"Changed",id:"changed-74",level:3},{value:"v1.32.0 - 2022-03-01",id:"v1320---2022-03-01",level:2},{value:"Changed",id:"changed-75",level:3},{value:"Added",id:"added-74",level:3},{value:"Fixed",id:"fixed-99",level:3},{value:"v1.31.0 - 2022-02-17",id:"v1310---2022-02-17",level:2},{value:"Added",id:"added-75",level:3},{value:"Fixed",id:"fixed-100",level:3},{value:"Changed",id:"changed-76",level:3},{value:"v1.30.0 - 2022-02-08",id:"v1300---2022-02-08",level:2},{value:"Changed",id:"changed-77",level:3},{value:"v1.29.2 - 2022-02-07",id:"v1292---2022-02-07",level:2},{value:"Added",id:"added-76",level:3},{value:"Changed",id:"changed-78",level:3},{value:"Fixed",id:"fixed-101",level:3},{value:"v1.29.1 - 2022-02-02",id:"v1291---2022-02-02",level:2},{value:"Added",id:"added-77",level:3},{value:"Fixed",id:"fixed-102",level:3},{value:"1.29.0 - skipped due to problems with build",id:"1290---skipped-due-to-problems-with-build",level:2},{value:"v1.28.1 - 2022-01-14",id:"v1281---2022-01-14",level:2},{value:"Added",id:"added-78",level:3},{value:"Changed",id:"changed-79",level:3},{value:"Fixed",id:"fixed-103",level:3},{value:"v1.28.0 - 2022-01-12",id:"v1280---2022-01-12",level:2},{value:"Added",id:"added-79",level:3},{value:"Changed",id:"changed-80",level:3},{value:"Fixed",id:"fixed-104",level:3},{value:"v1.27.2 - 2021-12-16",id:"v1272---2021-12-16",level:2},{value:"Added",id:"added-80",level:3},{value:"Fixed",id:"fixed-105",level:3},{value:"v1.27.1 - 2021-12-02",id:"v1271---2021-12-02",level:2},{value:"Fixed",id:"fixed-106",level:3},{value:"v1.27.0 - 2021-12-01",id:"v1270---2021-12-01",level:2},{value:"Added",id:"added-81",level:3},{value:"Changed",id:"changed-81",level:3},{value:"Fixed",id:"fixed-107",level:3},{value:"v1.26.1 - 2021-11-30",id:"v1261---2021-11-30",level:2},{value:"Added",id:"added-82",level:3},{value:"v1.26.0 - 2021-11-30",id:"v1260---2021-11-30",level:2},{value:"Added",id:"added-83",level:3},{value:"v1.25.0 - 2021-11-15",id:"v1250---2021-11-15",level:2},{value:"Added",id:"added-84",level:3},{value:"v1.24.0 - 2021-11-12",id:"v1240---2021-11-12",level:2},{value:"Added",id:"added-85",level:3},{value:"Fixed",id:"fixed-108",level:3},{value:"v1.23.0 - 2021-11-04",id:"v1230---2021-11-04",level:2},{value:"Added",id:"added-86",level:3},{value:"v1.22.3 - 2021-10-15",id:"v1223---2021-10-15",level:2},{value:"Added",id:"added-87",level:3},{value:"Fixed",id:"fixed-109",level:3},{value:"v1.22.0 - 2021-10-11",id:"v1220---2021-10-11",level:2},{value:"Added",id:"added-88",level:3},{value:"Fixed",id:"fixed-110",level:3},{value:"v1.21.0 - 2021-10-11",id:"v1210---2021-10-11",level:2},{value:"Added",id:"added-89",level:3},{value:"Changed",id:"changed-82",level:3},{value:"Fixed",id:"fixed-111",level:3},{value:"v1.20.0 - 2021-09-30",id:"v1200---2021-09-30",level:2},{value:"Added",id:"added-90",level:3},{value:"Fixed",id:"fixed-112",level:3},{value:"v1.19.5 - 2021-09-28",id:"v1195---2021-09-28",level:2},{value:"Fixed",id:"fixed-113",level:3},{value:"v1.19.4 - 2021-09-24",id:"v1194---2021-09-24",level:2},{value:"Added",id:"added-91",level:3},{value:"Changed",id:"changed-83",level:3},{value:"Fixed",id:"fixed-114",level:3},{value:"v1.19.3 - 2021-09-23",id:"v1193---2021-09-23",level:2},{value:"Added",id:"added-92",level:3},{value:"Fixed",id:"fixed-115",level:3},{value:"v1.19.2 - 2021-09-20",id:"v1192---2021-09-20",level:2},{value:"Changed",id:"changed-84",level:3},{value:"Fixed",id:"fixed-116",level:3},{value:"v1.19.1 - 2021-09-19",id:"v1191---2021-09-19",level:2},{value:"Added",id:"added-93",level:3},{value:"Fixed",id:"fixed-117",level:3},{value:"v1.18.3 - 2021-09-13",id:"v1183---2021-09-13",level:2},{value:"Fixed",id:"fixed-118",level:3},{value:"v1.18.2 - 2021-09-09",id:"v1182---2021-09-09",level:2},{value:"Fixed",id:"fixed-119",level:3},{value:"v1.18.1 - 2021-09-09",id:"v1181---2021-09-09",level:2},{value:"Fixed",id:"fixed-120",level:3},{value:"v1.18.0 - 2021-09-07",id:"v1180---2021-09-07",level:2},{value:"Added",id:"added-94",level:3},{value:"Changed",id:"changed-85",level:3},{value:"Fixed",id:"fixed-121",level:3},{value:"v1.17.4 - 2021-09-01",id:"v1174---2021-09-01",level:2},{value:"Fixed",id:"fixed-122",level:3},{value:"v1.17.3 - 2021-08-31",id:"v1173---2021-08-31",level:2},{value:"Fixed",id:"fixed-123",level:3},{value:"v1.17.2 - 2021-08-30",id:"v1172---2021-08-30",level:2},{value:"Changed",id:"changed-86",level:3},{value:"Fixed",id:"fixed-124",level:3},{value:"v1.17.1 - 2021-08-30",id:"v1171---2021-08-30",level:2},{value:"Changed",id:"changed-87",level:3},{value:"v1.17.0 - 2021-08-30",id:"v1170---2021-08-30",level:2},{value:"Added",id:"added-95",level:3},{value:"Changed",id:"changed-88",level:3},{value:"Fixed",id:"fixed-125",level:3},{value:"v1.16.0 - 2021-08-18",id:"v1160---2021-08-18",level:2},{value:"v1.15.2 - 2021-08-18",id:"v1152---2021-08-18",level:2},{value:"v1.15.1 - 2021-08-16",id:"v1151---2021-08-16",level:2},{value:"Added",id:"added-96",level:3},{value:"Changed",id:"changed-89",level:3},{value:"v1.14.1 - 2021-08-03",id:"v1141---2021-08-03",level:2},{value:"Fixed",id:"fixed-126",level:3},{value:"v1.14.0 - 2021-08-02",id:"v1140---2021-08-02",level:2},{value:"Changed",id:"changed-90",level:3},{value:"Added",id:"added-97",level:3},{value:"Fixed",id:"fixed-127",level:3},{value:"v1.13.2 - 2021-07-09",id:"v1132---2021-07-09",level:2},{value:"Added",id:"added-98",level:3},{value:"Changed",id:"changed-91",level:3},{value:"Fixed",id:"fixed-128",level:3},{value:"v1.12.3 - 2021-07-02",id:"v1123---2021-07-02",level:2},{value:"Change",id:"change-1",level:3},{value:"v1.12.2 - 2021-07-02",id:"v1122---2021-07-02",level:2},{value:"Changed",id:"changed-92",level:3},{value:"Fixed",id:"fixed-129",level:3},{value:"v1.12.00 - 2021-06-15",id:"v11200---2021-06-15",level:2},{value:"Added",id:"added-99",level:3},{value:"v1.11.17 - 2021-06-14",id:"v11117---2021-06-14",level:2},{value:"Fixed",id:"fixed-130",level:3},{value:"v1.11.16 - 2021-05-26",id:"v11116---2021-05-26",level:2},{value:"Added",id:"added-100",level:3},{value:"Fixed",id:"fixed-131",level:3},{value:"Changed",id:"changed-93",level:3},{value:"v1.11.12 - 2021-05-11",id:"v11112---2021-05-11",level:2},{value:"Added",id:"added-101",level:3},{value:"v1.11.11 - 2021-04-26",id:"v11111---2021-04-26",level:2},{value:"fixed",id:"fixed-132",level:3},{value:"v1.11.10 - 2021-04-23",id:"v11110---2021-04-23",level:2},{value:"Added",id:"added-102",level:3},{value:"Changed",id:"changed-94",level:3},{value:"v1.11.09 - 2021-04-xx",id:"v11109---2021-04-xx",level:2},{value:"Added",id:"added-103",level:3},{value:"v1.11.8 - 2021-04-15",id:"v1118---2021-04-15",level:2},{value:"Added",id:"added-104",level:3},{value:"Changed",id:"changed-95",level:3},{value:"Fixed",id:"fixed-133",level:3},{value:"v1.11.6 - 2021-03-31",id:"v1116---2021-03-31",level:2},{value:"Changed",id:"changed-96",level:3},{value:"v1.11.5 - 2021-03-22",id:"v1115---2021-03-22",level:2},{value:"Added",id:"added-105",level:3},{value:"Changed",id:"changed-97",level:3},{value:"v1.11.4 - 2021-03-16",id:"v1114---2021-03-16",level:2},{value:"Added",id:"added-106",level:3},{value:"Changed",id:"changed-98",level:3},{value:"Fixed",id:"fixed-134",level:3},{value:"v1.11.0 - 2021-03-03",id:"v1110---2021-03-03",level:2},{value:"Added",id:"added-107",level:3},{value:"v1.10.7 - 2021-02-26",id:"v1107---2021-02-26",level:2},{value:"Changed",id:"changed-99",level:3},{value:"v1.10.6 - 2021-02-18",id:"v1106---2021-02-18",level:2},{value:"Added",id:"added-108",level:3},{value:"Fixed",id:"fixed-135",level:3},{value:"v1.10.2 - 2021-02-13",id:"v1102---2021-02-13",level:2},{value:"Fixed",id:"fixed-136",level:3},{value:"v1.10.1 - 2021-02-12",id:"v1101---2021-02-12",level:2},{value:"Added",id:"added-109",level:3},{value:"Changed",id:"changed-100",level:3},{value:"Fixed",id:"fixed-137",level:3},{value:"v1.10.0 - 2021-02-08",id:"v1100---2021-02-08",level:2},{value:"Added",id:"added-110",level:3},{value:"Changed",id:"changed-101",level:3},{value:"Fixed",id:"fixed-138",level:3},{value:"v1.9.2 - 2021-01-25",id:"v192---2021-01-25",level:2},{value:"Added",id:"added-111",level:3},{value:"1.9.1 - 2021-01-15",id:"191---2021-01-15",level:2},{value:"Fixed",id:"fixed-139",level:3},{value:"v1.9.1 - 2021-01-13",id:"v191---2021-01-13",level:2},{value:"Added",id:"added-112",level:3},{value:"Changed",id:"changed-102",level:3},{value:"Fixed",id:"fixed-140",level:3},{value:"v1.8.7 - 2020-09-29",id:"v187---2020-09-29",level:2},{value:"Added",id:"added-113",level:3},{value:"Fixed",id:"fixed-141",level:3},{value:"v1.8.5 - 2020-09-08",id:"v185---2020-09-08",level:2},{value:"Fixed",id:"fixed-142",level:3},{value:"v1.8.4 - 2020-09-02",id:"v184---2020-09-02",level:2},{value:"Fixed",id:"fixed-143",level:3},{value:"v1.8.3 - 2020-08-28",id:"v183---2020-08-28",level:2},{value:"Added",id:"added-114",level:3},{value:"Changed",id:"changed-103",level:3},{value:"v1.7.0 - 2020-06-04",id:"v170---2020-06-04",level:2},{value:"Added",id:"added-115",level:3},{value:"Changed",id:"changed-104",level:3},{value:"v1.6.0 - 2020-04-09",id:"v160---2020-04-09",level:2},{value:"Added",id:"added-116",level:3},{value:"Changed",id:"changed-105",level:3},{value:"Removed",id:"removed-1",level:3},{value:"Fixed",id:"fixed-144",level:3},{value:"v1.5.0",id:"v150",level:2},{value:"Added",id:"added-117",level:3}];function o(e){const d={code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.h1,{id:"changelog",children:"Changelog"}),"\n",(0,n.jsxs)(d.p,{children:[(0,n.jsx)(d.strong,{children:"Application:"})," Lobaro Backend"]}),"\n",(0,n.jsx)(d.h2,{id:"11045---2024-06-24",children:"1.104.5 - 2024-06-24"}),"\n",(0,n.jsx)(d.h3,{id:"changed",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Devices Created At added as hidden default column in Devices Table"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11044---2024-06-24",children:"1.104.4 - 2024-06-24"}),"\n",(0,n.jsx)(d.h3,{id:"fixed",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Parser UI - Editor would switch to default parser when editing the custom parser"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11043---2024-06-24",children:"1.104.3 - 2024-06-24"}),"\n",(0,n.jsx)(d.h3,{id:"changed-1",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["Default input format for js parser function ",(0,n.jsx)(d.code,{children:"Record.setTime()"})," is an RFC3339 string, default timestamp format for JSON.","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["It can be created from a Date in JavaScript via ",(0,n.jsx)(d.code,{children:"new Date(unixms).toISOString()"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-1",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fix api token deletion message"}),"\n",(0,n.jsx)(d.li,{children:"HTTP handler panic for Chirpstack Join events"}),"\n",(0,n.jsx)(d.li,{children:"Devices Table - localStorage was not use in some special cases - causing the table to change unexpectedly when sorting or filtering"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11042---2024-06-19",children:"1.104.2 - 2024-06-19"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-2",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"bad timing caused nil Nats client on startup"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11041---2024-06-19",children:"1.104.1 - 2024-06-19"}),"\n",(0,n.jsx)(d.h3,{id:"changed-2",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'Devices Table - deactivate ability to sort by organisation when displaying scope "global" or "organisation with suborgs" as it caused empty results. Workaround is to change into the organisation and display the devices table'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11040---2024-06-18",children:"1.104.0 - 2024-06-18"}),"\n",(0,n.jsx)(d.h3,{id:"added",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Devices Table - New Column Settings Dialog - Pin columns to left or right edge of the table to make them always visible while scrolling"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-3",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Key Exchange Import - Reworked with async backend processing to handle large key imports"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11033---2024-06-12",children:"1.103.3 - 2024-06-12"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-3",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Devices Page: when opening a filter dialog, the filter input field is always focused"}),"\n",(0,n.jsx)(d.li,{children:"broken export on non-devicesPages"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11032---2024-06-11",children:"1.103.2 - 2024-06-11"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-4",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fix double x axis scroll bar - where the table was not scrollable because the page displayed a scrollbar over the devices table scrollbar"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11031---2024-06-11",children:"1.103.1 - 2024-06-11"}),"\n",(0,n.jsx)(d.h3,{id:"changed-4",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'Lansen wMbus Gateways will use a "las-" prefix in the address.'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-5",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed translation of export devices csv dialog on devices page"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11030---2024-06-11",children:"1.103.0 - 2024-06-11"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-6",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"WmbusKeyImport: Reset all button now resets all fields"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-5",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["Export Devices CSV now exports:","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"selected or all devices of a device type"}),"\n",(0,n.jsx)(d.li,{children:"CSV format as configured in the table config or in a hardware import conform CSV format"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11023---2024-06-06",children:"1.102.3 - 2024-06-06"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-7",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"WmbusKeyImport: Scale table (full page) and progressbar (only half page) as intended"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11022---2024-06-04",children:"1.102.2 - 2024-06-04"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-8",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Too much logging of failed wMBus parsing attempts"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11021---2024-06-04",children:"1.102.1 - 2024-06-04"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-9",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Parser cache not being saved due to failing Cache directory creation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11020---2024-06-04",children:"1.102.0 - 2024-06-04"}),"\n",(0,n.jsx)(d.h3,{id:"changed-6",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Reworked wMBus key import page, unifying import via CSV and Key Exchange Platform"}),"\n",(0,n.jsx)(d.li,{children:"Key import in batches for better performance"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-1",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Supported importing of Sensus RF key CSVs"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"110110---2024-05-25",children:"1.101.10 - 2024-05-25"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-10",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fixed a bug where the device type side menu would show wrong counts when a device type was not owned by the current organisation"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-7",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Device Type Side Menu size when expanded is now smaller"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11019---2024-05-24",children:"1.101.9 - 2024-05-24"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-11",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fixed a bug where the device type side menu would not show the correct device type count"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11018---2024-05-24",children:"1.101.8 - 2024-05-24"}),"\n",(0,n.jsx)(d.h3,{id:"changed-8",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"New Devices Data Table is now permanent active - removed experimental design switch in myAccountMenu"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11017---2024-05-24",children:"1.101.7 - 2024-05-24"}),"\n",(0,n.jsx)(d.h3,{id:"added-2",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:[(0,n.jsx)(d.code,{children:"suborg"}),"role for REST API Tokens: Read-only access to devices and parsed data of all suborgs"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-9",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Devices CSV export only exports the devices of the current selected device type"}),"\n",(0,n.jsxs)(d.li,{children:["Improve PipelineStore queries, avoiding ",(0,n.jsx)(d.code,{children:"LIMIT 1"})," for unique data queries, update cache device with every device update in (pipeline) DB"]}),"\n",(0,n.jsxs)(d.li,{children:["Making ",(0,n.jsx)(d.code,{children:"xlog"})," main logging factory:","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["Wrapping ",(0,n.jsx)(d.code,{children:"slog.Logger"}),", but also supplying some ",(0,n.jsx)(d.code,{children:"logrus"})," functions (",(0,n.jsx)(d.code,{children:"WithError()"}),", ",(0,n.jsx)(d.code,{children:"WithFields()"}),", \xb4...) for compatibility"]}),"\n",(0,n.jsx)(d.li,{children:"Added functions for dynamically changing logging settings"}),"\n",(0,n.jsx)(d.li,{children:"Unifying Log levels, to make a future change of the logging backend easier"}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.li,{children:"Device Type Side Menu uses cached queries for device counts - frontend caches for 1 minute - backend caches for 5 minutes and invalidates cache if new devices are created"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"removed",children:"Removed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:[(0,n.jsx)(d.code,{children:"slogLogrus"}),"package, as the logging backend was switched from logrus to slog"]}),"\n",(0,n.jsxs)(d.li,{children:["Direct ",(0,n.jsx)(d.code,{children:"logrus"})," dependency; still needed by github.com/docker/docker"]}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11016---2024-05-22",children:"1.101.6 - 2024-05-22"}),"\n",(0,n.jsx)(d.h3,{id:"changed-10",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Improvements in UI for Device Type Side Menu"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11015---2024-05-22",children:"1.101.5 - 2024-05-22"}),"\n",(0,n.jsx)(d.h3,{id:"changed-11",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Update mbus lib to v1.11.3"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-12",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fix humanizing attempts of invalid compact profiles"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11014---2024-05-22",children:"1.101.4 - 2024-05-22"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-13",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Export Devices CSV failed on Devices Page - works now"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11013---2024-05-22---do-not-use---broken",children:"1.101.3 - 2024-05-22 - DO NOT USE - BROKEN"}),"\n",(0,n.jsx)(d.h2,{id:"11012---2024-05-16",children:"1.101.2 - 2024-05-16"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-14",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"reintruduced now fixed device ammount bubbles"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11011---2024-05-16",children:"1.101.1 - 2024-05-16"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-15",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Gormstore: ignored scope in device count query"}),"\n",(0,n.jsx)(d.li,{children:"Devices Page Navigation: use correct scope on device count query"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11010---2024-05-15",children:"1.101.0 - 2024-05-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-3",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Display wMBus key fingerprints in the key table, searchable to find the key used to decrypt a telegram"}),"\n",(0,n.jsx)(d.li,{children:"Device Types Menu shows device types with count and allows order by count or alphabetically"}),"\n",(0,n.jsxs)(d.li,{children:[(0,n.jsx)(d.code,{children:"Record.setTimeField()"}),"to set the name of a custom time field in each output record, works for batch records as well","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["This field is then used to set the time of each record, instead of the default ",(0,n.jsx)(d.code,{children:"time"})," field or ",(0,n.jsx)(d.code,{children:"receivedAt"})," field"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-12",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Updated mbus lib to v1.11.2"}),"\n",(0,n.jsx)(d.li,{children:"Output of key fingerprint in parsed telegram output"}),"\n",(0,n.jsx)(d.li,{children:"Reworked Device Types Menu on left side of Device Types and Data Page"}),"\n",(0,n.jsx)(d.li,{children:"Logging raw telegram + key fingerprint if parser panics"}),"\n",(0,n.jsx)(d.li,{children:"Devices Import Dialog now shows the organisation of an existing device"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"deprecated",children:"Deprecated"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:[(0,n.jsx)(d.code,{children:"Record.setTime()"}),", as it doesn't work for batch record returns","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["Use ",(0,n.jsx)(d.code,{children:"Record.setTimeField()"})," so set the name of a custom time field in each output record instead"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-16",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Panic when OMS parsing via API fails, logging errors and info, and returning nil instead"}),"\n",(0,n.jsx)(d.li,{children:"Logging app and org id values"}),"\n",(0,n.jsx)(d.li,{children:"JSON logging without HTML escaping"}),"\n",(0,n.jsx)(d.li,{children:"keyExchangePlatform import: inform user when there was no new key at exchange platform"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"11000---2024-05-07",children:"1.100.0 - 2024-05-07"}),"\n",(0,n.jsx)(d.h3,{id:"added-4",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added menu to display/hide columns in the device (experimental) table. The configuration is saved per user and device type."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-17",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"When exporting devices, only selected Devices will be exported."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"1996---2024-04-30",children:"1.99.6 - 2024-04-30"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-18",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Devices Page: frontend crash on empty deviceType Device Table Config cols array"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-13",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Batch uplinks: If parsing fails, individual errors will be returned for each uplink, and the successful ones will be stored and processed"}),"\n",(0,n.jsx)(d.li,{children:"Use pipeline store to fetch device info for parsing and CoAP: For better performance it only preloads the certificate, and includes only a limited number of columns. If caching is enabled, it will cache the device data there."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"1995---2024-04-23",children:"1.99.5 - 2024-04-23"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-19",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Device table fallback to default table config, if none is present"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"1994---2024-04-22",children:"1.99.4 - 2024-04-22"}),"\n",(0,n.jsx)(d.h3,{id:"changed-14",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Silence housekeeping for organisations without data retention limits in DB log"}),"\n",(0,n.jsx)(d.li,{children:"Searchable Cron log table"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-20",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:[(0,n.jsx)(d.code,{children:"NaN"}),"replacement for customer parser (slice of maps was not handled correctly)"]}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"1993---2024-04-16",children:"1.99.3 - 2024-04-16"}),"\n",(0,n.jsx)(d.h3,{id:"changed-15",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Pipeline: always load device from DB before parsing and never take it from msg object"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-21",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Update MBus lib to v1.10.0, fixing Qundis failed decryption, but parsing encrypted payload issue"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1992---2024-04-16",children:"v1.99.2 - 2024-04-16"}),"\n",(0,n.jsx)(d.h2,{id:"added-5",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"New (ant) table design in the devices tab. (Can be activated via the profile settings)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"changed-16",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Devices query returns a devicesResult object, containing a devices array and pagination info, instead of an array of devices"}),"\n",(0,n.jsx)(d.li,{children:"Pre-select current organisation when creating new users via Organisation section"}),"\n",(0,n.jsxs)(d.li,{children:["Replacing all ",(0,n.jsx)(d.code,{children:"NaN"})," values in parsed output, device config and properties updates with ",(0,n.jsx)(d.code,{children:"null"})," for JSON compatibility"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-22",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["wMBus key import from exchange platform: Only import ",(0,n.jsx)(d.code,{children:"END_USE"})," keys"]}),"\n",(0,n.jsx)(d.li,{children:"dont crash on nil nats connection ins NATS Client Service."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1991---2024-04-08",children:"v1.99.1 - 2024-04-08"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-23",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Key field usage with org key store in wmbus parser page"}),"\n",(0,n.jsx)(d.li,{children:"fixed DB connection string logging"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1990---2024-04-03",children:"v1.99.0 - 2024-04-03"}),"\n",(0,n.jsx)(d.h3,{id:"added-6",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added metrics for Stream sizes to prometheus"}),"\n",(0,n.jsx)(d.li,{children:"Slow Queries are now also logged in JSON format"}),"\n",(0,n.jsx)(d.li,{children:"Metric gorm_query_duration_seconds to trace Query Duration for different query types"}),"\n",(0,n.jsxs)(d.li,{children:["Output format options for HTTP integrations","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"JSON object (default)"}),"\n",(0,n.jsx)(d.li,{children:"JSON Array (wrapping a JSON object)"}),"\n",(0,n.jsx)(d.li,{children:"URL-encoded JSON (with customizable key)"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-17",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"NATS based pipeline metric names for prometheus were cleaned up"}),"\n",(0,n.jsxs)(d.li,{children:["When Parser runtime is exceeded and parser can not be interrupted shut down the server again","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Create CPU and memory profile before shutdown"}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.li,{children:"Updated to GoLang v1.22.2"}),"\n",(0,n.jsx)(d.li,{children:"Updated MBus Parser to v1.9.0"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-24",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"GraphQL query in wMBus parser tab updated to ensure org keystore is used when option is ticked"}),"\n",(0,n.jsx)(d.li,{children:"Update device in cache after parsing properties or config values"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1981---2024-04-02",children:"v1.98.1 - 2024-04-02"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-25",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"JetStream messages are all acked, else they stay inside the stream"}),"\n",(0,n.jsx)(d.li,{children:"URL Escaping for DB Connection string"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-18",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Updated mbus parser lib to v1.8.0"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1980---2024-04-02",children:"v1.98.0 - 2024-04-02"}),"\n",(0,n.jsx)(d.h3,{id:"changed-19",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"NATS is using JetStream to persist Queue items"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-26",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus Key Import (exchange platform) use start param"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1971---2024-03-28",children:"v1.97.1 - 2024-03-28"}),"\n",(0,n.jsx)(d.h3,{id:"added-7",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Integration Individual Log Limits for Success and Error"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-20",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Deivces are not cached during uplink handling (Config: Database.Cache.deviceExpirationSec)"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-27",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Stop startup of nats client when other service failed"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1970---2024-03-26",children:"v1.97.0 - 2024-03-26"}),"\n",(0,n.jsx)(d.h3,{id:"db-migrations",children:"DB Migrations"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:[(0,n.jsx)(d.strong,{children:"ATTENTION"}),": Contains long running DB transformation (on startup)","\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Migrations: 74"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-8",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Uplinks can be searched by their type"}),"\n",(0,n.jsx)(d.li,{children:"Uplinks can be filtered by created_at date"}),"\n",(0,n.jsx)(d.li,{children:"Slow Queries are now also logged in JSON"}),"\n",(0,n.jsx)(d.li,{children:"MQTT Integrations: Configurable Timeout"}),"\n",(0,n.jsx)(d.li,{children:"MQTT Integrations: Do not log executions option"}),"\n",(0,n.jsx)(d.li,{children:"HTTP Integrations: Do not log executions option"}),"\n",(0,n.jsx)(d.li,{children:"Configureable Ratelimit for Integration execution logging"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-21",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Removed quotes from text based logging"}),"\n",(0,n.jsx)(d.li,{children:"Device Type bulk operation entries link to the device's respective data page, as is the default for other device tables."}),"\n",(0,n.jsx)(d.li,{children:"Default Timeout for MQTT Integrations is now 10 seconds"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixes",children:"Fixes"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"JSON Log Format was not printing some fields"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1965---2024-03-12",children:"v1.96.5 - 2024-03-12"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-28",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"nats pending item metrics now published"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1964---2024-03-10",children:"v1.96.4 - 2024-03-10"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-29",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Cron runner for some nats metrics was not running"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1963---2024-03-07",children:"v1.96.3 - 2024-03-07"}),"\n",(0,n.jsx)(d.h3,{id:"added-9",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Metrics for NATS pending messages nats_handle_device_uplink_pending, nats_integrations_pending"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-22",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Removed metric integration_queue_seconds"}),"\n",(0,n.jsx)(d.li,{children:"Table headers use no caps to make german umlaut better readable"}),"\n",(0,n.jsx)(d.li,{children:"Prefill device type when calling import from device page"}),"\n",(0,n.jsx)(d.li,{children:"Updated mbus parser lib to v1.7.0"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-30",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fixed a bug where a moving devices into another organisation via the bulk operation would display failed operations as successful"}),"\n",(0,n.jsx)(d.li,{children:"Device bulk operations from suborgs into parent/base org now work as expected"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1962---2024-03-04",children:"v1.96.2 - 2024-03-04"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-31",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"handle_integrations_seconds was not available"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1961---2024-03-04",children:"v1.96.1 - 2024-03-04"}),"\n",(0,n.jsx)(d.h3,{id:"added-10",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Config parameters to set the amount of queue workers: nats.UplinkHandlerWorkers and nats.IntegrationHandlerWorkers"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-32",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Limit parallel execution of integrations"}),"\n",(0,n.jsx)(d.li,{children:"Do not shutdown platform when parser times out during heavy load"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1960---2024-02-27",children:"v1.96.0 - 2024-02-27"}),"\n",(0,n.jsx)(d.h3,{id:"added-11",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus Parser updated to v1.6.4"}),"\n",(0,n.jsx)(d.li,{children:"wMbus key management allows to search for meterId and manufacturer at the same time"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-23",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"new button design for wMbus key management"}),"\n",(0,n.jsx)(d.li,{children:"Optimized query for parsed_data uses limit of 3500"}),"\n",(0,n.jsx)(d.li,{children:"csv import of wmbus keys is now more reliable"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1953---2024-02-27",children:"v1.95.3 - 2024-02-27"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-33",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"problem with temporary keys in organisation wmbus Keystore."}),"\n",(0,n.jsx)(d.li,{children:"Language selection based on two digit language code (ISO 639), ignoring possible following country code (ISO 3166). E.g.: 'en-US' will be read as 'en'"}),"\n",(0,n.jsx)(d.li,{children:"Link to hardware Activationpage in the top navigation for guests/not logged in users"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1952---2024-02-24",children:"v1.95.2 - 2024-02-24"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-34",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"added missing default store middelware to mbus handler stack"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1951---2024-02-24",children:"v1.95.1 - 2024-02-24"}),"\n",(0,n.jsx)(d.h3,{id:"added-12",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus key store usage on wmbus api in frontend"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-35",children:"Fixed"}),"\n",(0,n.jsx)(d.p,{children:"forgotten label on prometheus statistics increment that could lead to panic"}),"\n",(0,n.jsx)(d.h2,{id:"v1950---2024-02-24",children:"v1.95.0 - 2024-02-24"}),"\n",(0,n.jsx)(d.h3,{id:"added-13",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"loggedin Users (frontend and API used with token) can now use their organisations wmbus key store when using the wmbus API"}),"\n",(0,n.jsx)(d.li,{children:"Configurable amount of workers for parser"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-24",children:"Changed"}),"\n",(0,n.jsx)(d.p,{children:"limited parallel computing of wmbus API requests"}),"\n",(0,n.jsx)(d.h2,{id:"v1944---2024-02-21",children:"v1.94.4 - 2024-02-21"}),"\n",(0,n.jsx)(d.h3,{id:"added-14",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"prometheus monitoring for NATS Queues"}),"\n",(0,n.jsx)(d.li,{}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-25",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Optimization to reduce runtime of getParsedDataForOrg call via rest endpoint"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1943---2024-02-20",children:"v1.94.3 - 2024-02-20"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-36",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fixed nil pointer issues in the optimization of long-running queries in the data tab"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1942---2024-02-20---skipped-due-to-build-problems",children:"v1.94.2 - 2024-02-20 - SKIPPED DUE TO BUILD PROBLEMS"}),"\n",(0,n.jsx)(d.h3,{id:"changed-26",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Optimization to reduce runtime of some long-running queries in the data tab"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1941---2024-02-19",children:"v1.94.1 - 2024-02-19"}),"\n",(0,n.jsx)(d.h3,{id:"changed-27",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Updated to GoLang v1.22"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-37",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Data Tab did not load table config"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1940----2024-02-15",children:"v1.94.0 - 2024-02-15"}),"\n",(0,n.jsx)(d.h3,{id:"changed-28",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"MBus lib: Update to 1.6.3"}),"\n",(0,n.jsx)(d.li,{children:"Otto JS runtime enviroment update to 0.3.0"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-38",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"sanitizing of unusual quote marks in downlink text input"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1931----2024-02-14",children:"v1.93.1 - 2024-02-14"}),"\n",(0,n.jsx)(d.h3,{id:"reverted",children:"Reverted"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Otto JS runtime enviroment update"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1930----2024-02-09",children:"v1.93.0 - 2024-02-09"}),"\n",(0,n.jsx)(d.h3,{id:"added-15",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Firmware page: copy downlink json button for common used firmware"}),"\n",(0,n.jsx)(d.li,{children:"log functions for js parsers"}),"\n",(0,n.jsx)(d.li,{children:"updated to otto 0.3.0"}),"\n",(0,n.jsx)(d.li,{children:'Sanitize \u201e,\u201c literals in downlink text input with " literal to avoid parsing errors.'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-29",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Updated Otto JS Runtime to v0.3.0"}),"\n",(0,n.jsx)(d.li,{children:"KeyExchangePlatform: Use API v2"}),"\n",(0,n.jsx)(d.li,{children:"KeyExchangePlatform: Display progress of key import"}),"\n",(0,n.jsx)(d.li,{children:"Improved performance of Data Page"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-39",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Creating new hardware for a device type that is private produced an invalid validation error"}),"\n",(0,n.jsx)(d.li,{children:"Fixed infinite spinner in device types data, when no data was returned from the server"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1920----2024-02-02",children:"v1.92.0 - 2024-02-02"}),"\n",(0,n.jsx)(d.h3,{id:"added-16",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"mbus Lib v1.6.2"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-30",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"on shutdown after Otto infinity loop input data are logged to enable debugging."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1911---2024-01-29",children:"v1.91.1 - 2024-01-29"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-40",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"coap handler: binary firmware updates total calculation offset of 1 fixed"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1910---2024-01-31",children:"v1.91.0 - 2024-01-31"}),"\n",(0,n.jsx)(d.h3,{id:"added-17",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Filter for default columns in device table"}),"\n",(0,n.jsx)(d.li,{children:"binary firmware files over coap now have address query Param"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1900---2024-01-26",children:"v1.90.0 - 2024-01-26"}),"\n",(0,n.jsx)(d.h3,{id:"added-18",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Basic support for binary firmware files over coap, e.g. for modem firmware updates"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-31",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DeviceType Import: current organisation is now preselected"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-41",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Firmware Cache removes file when deleted."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1890---2024-01-22",children:"v1.89.0 - 2024-01-22"}),"\n",(0,n.jsx)(d.h2,{id:"added-19",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Platform can now receive lobaro WMBUS Gateway uploads over MQTT"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1882---2024-01-19",children:"v1.88.2 - 2024-01-19"}),"\n",(0,n.jsx)(d.h2,{id:"fixed-42",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Issuses with the Lansen gateway information (MQTT topic LAS/W/I)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1881---2024-01-19",children:"v1.88.1 - 2024-01-19"}),"\n",(0,n.jsx)(d.h3,{id:"changed-32",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Device Type Selectors now can display up 25 matching device types"}),"\n",(0,n.jsx)(d.li,{children:"Search for device types now also looks for device type ID"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1880---2024-01-16",children:"v1.88.0 - 2024-01-16"}),"\n",(0,n.jsx)(d.h3,{id:"changed-33",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"updated to GoLang v1.21"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-20",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Platform can now receive Lansen WMBUS Gateway uploads over MQTT"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1871---2023-12-19",children:"v1.87.1 - 2023-12-19"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-43",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Missing store in context of async integrations"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1870---2023-12-19",children:"v1.87.0 - 2023-12-19"}),"\n",(0,n.jsx)(d.h3,{id:"changed-34",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Lobaro wMbus Api v1.5.14"}),"\n",(0,n.jsx)(d.li,{children:"org-admins can now also create, reschedule and delete downlinks for devices in their organisation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1860---2023-12-14",children:"v1.86.0 - 2023-12-14"}),"\n",(0,n.jsx)(d.h3,{id:"added-21",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Allow usage of shorter default RealData keys for parsing appropriate wMBus telegrams"}),"\n",(0,n.jsx)(d.li,{}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-44",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Creating new hardware for a device type that is private was not possible"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1850---2023-12-12",children:"v1.85.0 - 2023-12-12"}),"\n",(0,n.jsx)(d.h3,{id:"changed-35",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Lobaro mBus Lib v1.5.13"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-45",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"When importing a device type the data table config was set as the device table config"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1842---2023-12-11",children:"v1.84.2 - 2023-12-11"}),"\n",(0,n.jsx)(d.h3,{id:"changed-36",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["JSON Logging Environment variable is now: ",(0,n.jsx)(d.code,{children:"LOB_JSON_LOGGING"})]}),"\n",(0,n.jsx)(d.li,{children:"Also use structured logging for first line of log output when enabled"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1841---2023-12-11",children:"v1.84.1 - 2023-12-11"}),"\n",(0,n.jsx)(d.h3,{id:"note",children:"Note"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Broken release!"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1840---2023-12-07",children:"v1.84.0 - 2023-12-07"}),"\n",(0,n.jsx)(d.h3,{id:"added-22",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Device Type Config Properties can be reordered"}),"\n",(0,n.jsx)(d.li,{children:"Tags can be searched in the Device page"}),"\n",(0,n.jsx)(d.li,{children:"Server logging in JSON format"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-46",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DeviceDetailPage link to devices page in header fixed"}),"\n",(0,n.jsx)(d.li,{children:"GraphQL Broken escaping for field value in custom filters"}),"\n",(0,n.jsx)(d.li,{children:"Broken Top Navigation after login/logout/user change"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1830---2023-12-04",children:"v1.83.0 - 2023-12-04"}),"\n",(0,n.jsx)(d.h3,{id:"added-23",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Czech language"}),"\n",(0,n.jsx)(d.li,{children:"Device Type Import"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1821---2023-11-9",children:"v1.82.1 - 2023-11-9"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-47",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fixed error on GQL Device endpoint for devices that are not attached to a organisation"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-37",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Suborg Statics and Page are no longer shown in Orgs without suborgs/the right to have suborgs"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1820---2023-10-24",children:"v1.82.0 - 2023-10-24"}),"\n",(0,n.jsx)(d.h3,{id:"added-24",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Device Usage Statistics can now be closed in an accordion with a persistant state"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1812---2023-10-23",children:"v1.81.2 - 2023-10-23"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-48",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fixed view downlink list was not possible when org_admin was viewing devices in a suborg"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1811---2023-10-08",children:"v1.81.1 - 2023-10-08"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-49",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fixed statistics now include devices from parent and sub orgs"}),"\n",(0,n.jsx)(d.li,{children:"Fixed a bug where device data could not be sorted by field"}),"\n",(0,n.jsx)(d.li,{children:"Updated permissions to allow admin, orgAdmin and deviceAdmin to create device downlinks"}),"\n",(0,n.jsx)(d.li,{children:"Fixed a bug where searching devices via their comments failed when the device comment was used to store id like strings (e.g. serial numbers)"}),"\n",(0,n.jsx)(d.li,{children:"Fixed a bug where the test input of a device setting did not show the latest device data and did not update after an uplink was simulated"}),"\n",(0,n.jsx)(d.li,{children:"When paginating devices that have no last received date, an arbitrary order (by internal id) will be used to preserve the pagination order"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-25",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'Added "Organisation" selection to Device Settings Page'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1810---2023-10-02",children:"v1.81.0 - 2023-10-02"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-50",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed creating new users as non-admin, where a maxUsers limit was falsely shown to be reached"}),"\n",(0,n.jsx)(d.li,{children:"fixed updating the maxUser limit of an organisation"}),"\n",(0,n.jsx)(d.li,{children:"fixed a typo in the device-type copy resolver, that copied the 'data table config' into the 'device table config'"}),"\n",(0,n.jsx)(d.li,{children:"fixed a bug where subOrgs could not be displayed when an admin selects subOrgs in the devices page"}),"\n",(0,n.jsx)(d.li,{children:"fixed typos in german translation"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-26",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"REST Endpoints for http integration management"}),"\n",(0,n.jsx)(d.li,{children:"Inform user about amount of ignored keys when importing from exchange platform"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-38",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"REST API: added panic catching middleware with extended logging on rest API handlers."}),"\n",(0,n.jsx)(d.li,{children:"create a device tag when focus is lost on the device/settings page"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1803---2023-08-19",children:"v1.80.3 - 2023-08-19"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-51",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Allow org-admin to switch bach to own base organisation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1802---2023-08-18",children:"v1.80.2 - 2023-08-18"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-52",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"typo that lead to error on devices Page"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1801---2023-08-18",children:"v1.80.1 - 2023-08-18"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-53",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"organisation edit in device settings"}),"\n",(0,n.jsx)(d.li,{children:"admins impersonating users can have problems with no longer assacibile scope for devices set"}),"\n",(0,n.jsx)(d.li,{children:"error on wmbus key edit."}),"\n",(0,n.jsx)(d.li,{}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-39",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'DeviceType Parser: Removed feature for "default" selection'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1800---2023-08-15",children:"v1.80.0 - 2023-08-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-27",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Example configuration is automatically generated with comments and default values"}),"\n",(0,n.jsx)(d.li,{children:"Device import on Devices Page in organisation"}),"\n",(0,n.jsx)(d.li,{children:"Configuration parameters for CoAP and CoAPs ports"}),"\n",(0,n.jsx)(d.li,{children:"CompactFrame Table: cut Values decimal places to exponent precision"}),"\n",(0,n.jsx)(d.li,{children:"Copy DeviceType feature"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-40",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wMbus AES Keys can now be displayed with masked middle"}),"\n",(0,n.jsx)(d.li,{children:"Devices Pages saves scope and selected device type in local storage"}),"\n",(0,n.jsx)(d.li,{children:"Removed unused components like customer specific prototypes"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-54",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"CertEnforceDtls only blocks requests without cert"}),"\n",(0,n.jsx)(d.li,{children:"fixed some frontend issue with wmbus key import from key exchange platform"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1791---2023-07-14",children:"v1.79.1 - 2023-07-14"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-55",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Org Admin can access device page"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1790---2023-07-13",children:"v1.79.0 - 2023-07-13"}),"\n",(0,n.jsx)(d.h3,{id:"added-28",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Bulk operation supports to change device organisation"}),"\n",(0,n.jsx)(d.li,{children:"Device Table can now display devices from scope: Organisation, Organisation With Suborgs and Global"}),"\n",(0,n.jsx)(d.li,{children:"search for empty meterId and manufacturer in WmbusKey Table"}),"\n",(0,n.jsx)(d.li,{children:'added is isnull filter for "is null" and "is not null" searches in filter API/GQL-filter'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-41",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Only admins can change the address of existing devices"}),"\n",(0,n.jsx)(d.li,{children:"Updates wmbus parser to v1.5.12 to fix parsing of Zenner invalid values"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1781---2023-07-05",children:"v1.78.1 - 2023-07-05"}),"\n",(0,n.jsx)(d.h3,{id:"added-29",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:[(0,n.jsx)(d.strong,{children:"ATTENTION"}),": Contains long running DB transformation (on startup)"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-56",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Nats monitoring endpoint was not working"}),"\n",(0,n.jsx)(d.li,{children:"Properly handle server shutdown, do not hang up"}),"\n",(0,n.jsx)(d.li,{children:"Start monitoring immediately after startup and do not wait 30 seconds"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1770---2023-06-29",children:"v1.77.0 - 2023-06-29"}),"\n",(0,n.jsx)(d.h3,{id:"added-30",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"device certificates can now be deleted by admins/orgadmins/device-admins"}),"\n",(0,n.jsx)(d.li,{children:"Device DTLS Certs can now be deleted by admins, org-admins and device-admins"}),"\n",(0,n.jsx)(d.li,{children:"UsageStatistics Cron worker now also reports into the CronLog."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-42",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Actility datasource now uses network-server tokens, disabled old datasource concept in apps"}),"\n",(0,n.jsx)(d.li,{children:"Update mbus parser to v1.5.10 to fix compact profiles with invalid values"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1760---2023-06-22",children:"v1.76.0 - 2023-06-22"}),"\n",(0,n.jsx)(d.h3,{id:"added-31",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"device usage Statistics"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-43",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"retry mechanism for configuration downlinks on coap endpoints"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-57",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'dont display Hardware Activation Link under "Ogranisation" when Featureoggle is disabled'}),"\n",(0,n.jsx)(d.li,{children:"routing for Hardware Activation"}),"\n",(0,n.jsx)(d.li,{children:"browser back button on pages with redirects"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1754---2023-06-13",children:"v1.75.4 - 2023-06-13"}),"\n",(0,n.jsx)(d.h3,{id:"added-32",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"helpfull error message on failed wmbus key imports"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1753---2023-06-06",children:"v1.75.3 - 2023-06-06"}),"\n",(0,n.jsx)(d.h3,{id:"added-33",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus LIB v1.5.9"}),"\n",(0,n.jsx)(d.li,{children:"DbStats for prometheus metrics"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-58",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"detail pages in Configuration now also highlight the correct navigation item"}),"\n",(0,n.jsx)(d.li,{children:"missing edit button on max Sub Orgs for admins of Parentorganisation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1752---2023-06-02",children:"v1.75.2 - 2023-06-02"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-59",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"cpu usage statistics for prometheus metrics"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1751---2023-06-02",children:"v1.75.1 - 2023-06-02"}),"\n",(0,n.jsx)(d.h3,{id:"added-34",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"cpu usage every 10sec sampled for prometheus metrics"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1750---2023-06-01",children:"v1.75.0 - 2023-06-01"}),"\n",(0,n.jsx)(d.h3,{id:"added-35",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Monitoring Service with host stats for Prometheus Metrics"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1740---2023-05-31",children:"v1.74.0 - 2023-05-31"}),"\n",(0,n.jsx)(d.h3,{id:"added-36",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Key import from Key Exchange Platform"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"fixed-60",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"prohibit wmbus_key manufacturer entry to become empty string instead of null"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-44",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Update to Go 1.20"}),"\n",(0,n.jsx)(d.li,{children:"extend coap/coaps prometheus monitoring"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-61",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"error page on password reset"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1730---2023-05-18",children:"v1.73.0 - 2023-05-18"}),"\n",(0,n.jsx)(d.h3,{id:"added-37",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Lobaro Mbus Lib v1.5.6"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-62",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"SensusRF Keys were not found on parsing in Key Store"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"change",children:"Change"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"move from github.com/dgrijalva/jwt-go to github.com/golang-jwt/jwt"}),"\n",(0,n.jsx)(d.li,{children:"removed no longer used last Keycloak auth features"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1720---2023-05-16",children:"v1.72.0 - 2023-05-16"}),"\n",(0,n.jsx)(d.h3,{id:"added-38",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"SubOrganisations in tenant management"}),"\n",(0,n.jsx)(d.li,{children:"API Endpoints for deletion of Devices ParsedData and SensorData"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-63",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Configuration Area: Broken Firmware Upload Form"}),"\n",(0,n.jsx)(d.li,{children:"navigation bar is not shown after login"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1719---2023-04-17",children:"v1.71.9 - 2023-04-17"}),"\n",(0,n.jsx)(d.h3,{id:"changed-45",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Update wMbus Parser to v1.5.5"}),"\n",(0,n.jsx)(d.li,{children:"remove broken DeviceTable Edit from Device Table Page"}),"\n",(0,n.jsx)(d.li,{children:'Using "Clear" on Table Config editor now clears config but doesn\'t save clear action directly'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-64",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Search for data table fixed when searching for a prefix e.g. 'my prefix*'"}),"\n",(0,n.jsx)(d.li,{children:"Format errors in logs"}),"\n",(0,n.jsx)(d.li,{children:"Hardware Activation detail page was not loading"}),"\n",(0,n.jsx)(d.li,{children:"Create hardware activation"}),"\n",(0,n.jsx)(d.li,{children:"Create device type without Organisation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1717---2023-04-05",children:"v1.71.7 - 2023-04-05"}),"\n",(0,n.jsx)(d.h3,{id:"changed-46",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"removed sensitivity in wmbus key import table search"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1716---2023-04-05",children:"v1.71.6 - 2023-04-05"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-65",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"unneeded re-renderings and double query execution on Data Table"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1715---2023-04-04",children:"v1.71.5 - 2023-04-04"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-66",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DeviceType Parser in Device Parser Editor"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1714---2023-04-03",children:"v1.71.4 - 2023-04-03"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-67",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"mixups in Parser Editor"}),"\n",(0,n.jsx)(d.li,{children:"Path problems in configuration area that lead to error page"}),"\n",(0,n.jsx)(d.li,{children:"missing navigation highlighting"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1713---2023-03-30",children:"v1.71.3 - 2023-03-30"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-68",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"error on search for Wmbus_Keys with long Sensus Device Id."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1712---2023-03-28",children:"v1.71.2 - 2023-03-28"}),"\n",(0,n.jsx)(d.h3,{id:"changed-47",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"some more improvements for wmbus_key refactoring"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1711---2023-03-27",children:"v1.71.1 - 2023-03-27"}),"\n",(0,n.jsx)(d.h3,{id:"added-39",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"update to wmbus Lib v1.5.4"}),"\n",(0,n.jsx)(d.li,{children:"Additional saftey in wmbus_keys transformation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1702---2023-03-19",children:"v1.70.2 - 2023-03-19"}),"\n",(0,n.jsx)(d.h3,{id:"added-40",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Dragino TCP Endpoint for NB-IoT at port 5600"}),"\n",(0,n.jsx)(d.li,{children:"CoAP .well-known/core endpoint"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-48",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'wMbus API parameter "ident" renamed to "indent" as it was meant to be'}),"\n",(0,n.jsx)(d.li,{children:"removed bloated debug log that was introduced in v1.61.7"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1701---2023-02-15",children:"v1.70.1 - 2023-02-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-41",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus LIB v1.5.3"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-69",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"out of index error in parser for lansen v3 co2 sensors"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1700---2023-02-01",children:"v1.70.0 - 2023-02-01"}),"\n",(0,n.jsx)(d.h3,{id:"added-42",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus LIB v1.5.2"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1641---2023-01-30",children:"v1.64.1 - 2023-01-30"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-70",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'race condition in HTTP integration that lead to "context canceled" before msg was published over http'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1640---2023-01-17",children:"v1.64.0 - 2023-01-17"}),"\n",(0,n.jsx)(d.h3,{id:"changed-49",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"MBUS Lib updated to v1.5.1"}),"\n",(0,n.jsx)(d.li,{children:"HTTP integrations now run asynchronous in background"}),"\n",(0,n.jsx)(d.li,{children:"CompactFrame now uses EU Date Format."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-71",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"long running http integration blocks COAP call"}),"\n",(0,n.jsx)(d.li,{children:"white labeling on swagger API documentation improved"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1630---2022-12-07",children:"v1.63.0 - 2022-12-07"}),"\n",(0,n.jsx)(d.h3,{id:"added-43",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus LIB v1.5.0"}),"\n",(0,n.jsx)(d.li,{children:"CompactProfile Support"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-50",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Domain Model endpoint meterData will work with empty body and use default Configuration from mbus lib"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-72",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"missing fields in Device Export"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1621---2022-11-25",children:"v1.62.1 - 2022-11-25"}),"\n",(0,n.jsx)(d.h3,{id:"added-44",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Timezone feature for date Handelbar helper"}),"\n",(0,n.jsx)(d.li,{children:"Support TimeString and Epoch in Handelbar date helper"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1617---2022-11-23",children:"v1.61.7 - 2022-11-23"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-73",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed mbus parser error on to short key ids in organisation key store."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1616---2022-11-23",children:"v1.61.6 - 2022-11-23"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-74",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Out of Index error on humanize of Lansen Co2 Meters with failed decryption."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"1615---2022-11-18",children:"1.61.5 - 2022-11-18"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-75",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"moved lobaro-cron-validate dependency from github to npm repo"}),"\n",(0,n.jsx)(d.li,{children:"DeviceConfig: lobaro-cron-validate to support L and W (as Lists) on"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1612---2022-11-15",children:"v1.61.2 - 2022-11-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-45",children:"Added"}),"\n",(0,n.jsx)(d.p,{children:"_ wmbus LIB v1.4.2"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus: Lansen Co2 Sensors added DB Ambience level to DomainModel"}),"\n",(0,n.jsx)(d.li,{children:"meaningful error on decryption failure for DomainModel"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-76",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DomainModel: fixed missing MeterId for Multisensors (in specific: Lansen CO2)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1611---2022-11-04",children:"v1.61.1 - 2022-11-04"}),"\n",(0,n.jsx)(d.h3,{id:"added-46",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus: Lansen Co2 Sensors added DB Ambience level to DomainModel"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-51",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus Parser Lib updated to v1.4.1"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1610---2022-11-04",children:"v1.61.0 - 2022-11-04"}),"\n",(0,n.jsx)(d.h3,{id:"added-47",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus: Subunit is now displayed for wmbus telegrams"}),"\n",(0,n.jsx)(d.li,{children:"wmbus: Lansen Co2 Sensors are now supported by he DomainModel"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-52",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus Parser Lib updated to v1.4.0"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-77",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus: SubUnit and Tariff"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1600---2022-10-13",children:"v1.60.0 - 2022-10-13"}),"\n",(0,n.jsx)(d.h3,{id:"added-48",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"CONFIG CHANGES FOR DTLS CERTS NEEDED (see changed)"}),"\n",(0,n.jsx)(d.li,{children:"Mqtt Integration now also displays the publishInformation for the last execution where an error occurred"}),"\n",(0,n.jsx)(d.li,{children:"Cron validation support for: Last Day Of Week (L for Weekday), Nearest Week Day (W for weekday param), Last Day Of Month (L and L-x for day of month param)"}),"\n",(0,n.jsx)(d.li,{children:"support for raw downlinks over coap to Lobaro NB-IoT Devices"}),"\n",(0,n.jsx)(d.li,{children:"Link Device Type in Device Header (on Device pages) with Device Type page"}),"\n",(0,n.jsx)(d.li,{children:"Device Bulk operation: Export Hardware csv for devices"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-53",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus Parser Lib updated to 1.2.3"}),"\n",(0,n.jsx)(d.li,{children:"removed config Value featureToggle.dtlsSecureCoapServiceEnabled"}),"\n",(0,n.jsx)(d.li,{children:"SecureCoapService is now started when server.dtlsConfig.dtlsCertDir and server.dtlsConfig.dtlsCertDir are set"}),"\n",(0,n.jsx)(d.li,{children:"Removed server.dtlsConfig.dtlsCertDir and server.dtlsConfig.dtlsCertName no longer have default Values"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-78",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"double 0x-prefixon wmbus Device Type at Application Layer for long header"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1590---2022-10-05",children:"v1.59.0 - 2022-10-05"}),"\n",(0,n.jsx)(d.h3,{id:"added-49",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Rest API: update Device"}),"\n",(0,n.jsx)(d.li,{children:"Fields to copy&paste GPS location for devices"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-79",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"MQTT Integration UI: fix empty string displayed as QosByte instead of 0"}),"\n",(0,n.jsx)(d.li,{children:"MQTT Integration UI: edit on Retained Flag not saved correctly"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1581---2022-09-30",children:"v1.58.1 - 2022-09-30"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-80",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"GQL Schema for build"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1580---2022-09-30",children:"v1.58.0 - 2022-09-30"}),"\n",(0,n.jsx)(d.h3,{id:"added-50",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added QosBytes and retained Flag to MQTT integrations"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-54",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'DeviceType "makePrivate" now sets Org automatically if no org is set on deviceType'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1570---2022-09-23",children:"v1.57.0 - 2022-09-23"}),"\n",(0,n.jsx)(d.h3,{id:"added-51",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"delete device endpoint in REST API"}),"\n",(0,n.jsx)(d.li,{children:"org bulkoperation: change devicetype"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-81",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"CSV-Export of Devices from DeviceTable had no access to device properties"}),"\n",(0,n.jsx)(d.li,{children:"Org-Admin cant edit DeviceType Parser and Tables of own deviceType (private)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1560---2022-09-20",children:"v1.56.0 - 2022-09-20"}),"\n",(0,n.jsx)(d.h3,{id:"added-52",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'wmbus key store can now contain MFields as "Meter Id" so the key is used for all devices of a manufacturer'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-82",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'wmbus key import from csv destroyed entrys with "*" als Meter Id'}),"\n",(0,n.jsx)(d.li,{children:"removed Unknown property '_grid' for div component in Grid Component because it caused react/no-unknown-property rule to fail builds"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1550---2022-08-09",children:"v1.55.0 - 2022-08-09"}),"\n",(0,n.jsx)(d.h3,{id:"added-53",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"ATTENTION: Contains DB Transformations"}),"\n",(0,n.jsx)(d.li,{children:"Display Telegram Types on uplinks"}),"\n",(0,n.jsx)(d.li,{children:"more translations"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-55",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"sharped private device types"}),"\n",(0,n.jsx)(d.li,{children:"unique Device Addr (DB transformation can interrupt startup on failure!)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1541---2022-08-09",children:"v1.54.1 - 2022-08-09"}),"\n",(0,n.jsx)(d.h3,{id:"added-54",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"configurable ConnectionPool limits for Gorm DB Connection"}),"\n",(0,n.jsx)(d.li,{children:"added LastError Information for HTTP integrations"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1540---2022-08-09-yanked",children:"v1.54.0 - 2022-08-09 [YANKED]"}),"\n",(0,n.jsx)(d.h3,{id:"added-55",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"configurable ConnectionPool limits for Gorm DB Connection"}),"\n",(0,n.jsx)(d.li,{children:"added LastError Information for HTTP integrations"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1531---2022-08-05",children:"v1.53.1 - 2022-08-05"}),"\n",(0,n.jsx)(d.h3,{id:"changed-56",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Updated mbus Parser to v1.2.2"}),"\n",(0,n.jsx)(d.li,{children:"mbus Parser: Support for wired M-Bus Headers"}),"\n",(0,n.jsx)(d.li,{children:"mbus Parser: Support for Enhanced Identification Block"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-56",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"MQTT Integrations can now listen for downlinks over MQTT"}),"\n",(0,n.jsx)(d.li,{children:'Handlebars "replace" helper'}),"\n",(0,n.jsx)(d.li,{children:"Handlebars config helper"}),"\n",(0,n.jsx)(d.li,{children:"Replay Device Data feature"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-83",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"org-admins can create password reset links and change pws of users (in same org)"}),"\n",(0,n.jsx)(d.li,{children:"org-admins can send password set emails for users (in same org)"}),"\n",(0,n.jsx)(d.li,{children:"fixed redirect on user creation in organisation menu"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1522---2022-07-28",children:"v1.52.2 - 2022-07-28"}),"\n",(0,n.jsx)(d.h3,{id:"changed-57",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'also sort devices table by deviceType on "last received"'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1520---2022-07-25",children:"v1.52.0 - 2022-07-25"}),"\n",(0,n.jsx)(d.h3,{id:"added-57",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Chirpstack join info as uplink"}),"\n",(0,n.jsx)(d.li,{children:'"in" operator for filters (text elem in array)'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-84",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Filters for the Devices Table from the Device Table Configuration of DeviceTypes"}),"\n",(0,n.jsx)(d.li,{children:"Import of big hardwareCSV files"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1511---2022-07-04",children:"v1.51.1 - 2022-07-04"}),"\n",(0,n.jsx)(d.h3,{id:"added-58",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"max User Limit for organisations (first steps)"}),"\n",(0,n.jsx)(d.li,{children:"lorawan downlinks"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-58",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"API Tokens now can have the Roles Device-Admin and Org-Admin."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-85",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"removal of device ConfigValues removes them from the initial config also"}),"\n",(0,n.jsx)(d.li,{children:"base64 encoded telegrams are correctly handeled by the frontend now"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1490---2022-06-20",children:"v1.49.0 - 2022-06-20"}),"\n",(0,n.jsx)(d.h3,{id:"added-59",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"config values that are not part of deviceType schema can be removed from device"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-86",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus Parser page: Base64 telegrams are now converted to base64url to fix parsing on base64 telegram with +,/ and ="}),"\n",(0,n.jsx)(d.li,{children:"broken password change on password change page"}),"\n",(0,n.jsx)(d.li,{children:"password could get broken by Ampersand on transport"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1480---2022-06-15",children:"v1.48.0 - 2022-06-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-60",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"org admins can create and manage users in their organisation"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-87",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Firmware Management page: missing refetches, unwanted uuid in file name is no longer added"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1470---2022-06-13",children:"v1.47.0 - 2022-06-13"}),"\n",(0,n.jsx)(d.h3,{id:"added-61",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Bulk creation of Downlinks for Devices."}),"\n",(0,n.jsx)(d.li,{children:"Firmware File Management (upload/deletion..) page for Platform Admins"}),"\n",(0,n.jsx)(d.li,{children:"Api Endpoints for device and user creation"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-59",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Selection box at top of Table now always adds all unmarked elements to exiting selection"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1462---2022-05-18",children:"v1.46.2 - 2022-05-18"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-88",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fix blockwise transport with coap server v2.5.0k"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1461---2022-05-18",children:"v1.46.1 - 2022-05-18"}),"\n",(0,n.jsx)(d.h3,{id:"changed-60",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"updated mbus parser for M\xfcllerRF bugfixes"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1460---2022-05-18",children:"v1.46.0 - 2022-05-18"}),"\n",(0,n.jsx)(d.h3,{id:"added-62",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'parser support for "mbus" and "M\xfcllerRF" frames'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1452---2022-05-13",children:"v1.45.2 - 2022-05-13"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-89",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Blockwise CoAP upload by rolling back to coap server v2.3.0"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1451---2022-05-11",children:"v1.45.1 - 2022-05-11"}),"\n",(0,n.jsx)(d.h3,{id:"added-63",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added gzip compression support to REST API and GraphQL"}),"\n",(0,n.jsx)(d.li,{children:"Allow integrations to access device Serial, Id, Name, Addr, and OrgId in URL / Topic"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1432---2022-05-09",children:"v1.43.2 - 2022-05-09"}),"\n",(0,n.jsx)(d.h3,{id:"changed-61",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"increase default and max pagination limit to 100.000"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-90",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"csv download uses pagination"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1431---2022-05-08",children:"v1.43.1 - 2022-05-08"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-91",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fix localization files path"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1430---2022-05-06",children:"v1.43.0 - 2022-05-06"}),"\n",(0,n.jsx)(d.h3,{id:"changed-62",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"enforce max Page size of 1000 items"}),"\n",(0,n.jsx)(d.li,{children:"use of default page size when no pagination config is supplied on request"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1420---2022-05-05",children:"v1.42.0 - 2022-05-05"}),"\n",(0,n.jsx)(d.h3,{id:"added-64",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"language files will be loaded from filesystem on startup"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1412---2022-05-04",children:"v1.41.2 - 2022-05-04"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-92",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["api param ",(0,n.jsx)(d.code,{children:"ident"})," corrected to ",(0,n.jsx)(d.code,{children:"indent"})]}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1411---2022-05-03",children:"v1.41.1 - 2022-05-03"}),"\n",(0,n.jsx)(d.h3,{id:"changed-63",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"update mbus lib to fix parsing of invalid and negativ BCD numbers"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1410---2022-05-02",children:"v1.41.0 - 2022-05-02"}),"\n",(0,n.jsx)(d.h3,{id:"added-65",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"pprof endpoints"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-64",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"pass context of gql query to gorm for big querys so gorm can cancel execution in ctx.Done"}),"\n",(0,n.jsx)(d.li,{children:"updated GqlGen to v0.17.5"}),"\n",(0,n.jsx)(d.li,{children:"Log Warning on querys with more than 10.000 results"}),"\n",(0,n.jsx)(d.li,{children:"Error on Querys with more than 100.000 results"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-93",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Missing page parameter in initial query org/device/parsedData"}),"\n",(0,n.jsx)(d.li,{children:"high memory consumption during CoAP fw update"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-66",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"added ident param to endpoints of REST API"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1401---2022-04-28",children:"v1.40.1 - 2022-04-28"}),"\n",(0,n.jsx)(d.h3,{id:"added-67",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"added ident flag for api/mbus"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-94",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"frontend crash on device tag edit"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1400---2022-04-28",children:"v1.40.0 - 2022-04-28"}),"\n",(0,n.jsx)(d.h3,{id:"added-68",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DatasourceString so the technical source of a Uplink can be identified"}),"\n",(0,n.jsx)(d.li,{children:"Users can be deleted by admins"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-65",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Org is now required on user generation"}),"\n",(0,n.jsx)(d.li,{children:"improved space for dropdown selection in user creation modal"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1390---2022-04-25",children:"v1.39.0 - 2022-04-25"}),"\n",(0,n.jsx)(d.h3,{id:"added-69",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DTLS: configure if a device can fallback to unsecure coap in frontend"}),"\n",(0,n.jsx)(d.li,{children:"trim white spaces in config values"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-66",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"new mbus Parser Lib version (1.0.0) with fixed Storage Numbers"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1380---2022-04-25",children:"v1.38.0 - 2022-04-25"}),"\n",(0,n.jsx)(d.h3,{id:"added-70",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"roles field in user creation modal"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-67",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"login is set to email address for new users"}),"\n",(0,n.jsx)(d.li,{children:"Change color of admin role pills to red background"}),"\n",(0,n.jsx)(d.li,{children:"Fallback to nonsecure DTLS can be allowed for device"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-95",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"scrollbar for org chooser in user creation modal is presented for long org lists"}),"\n",(0,n.jsx)(d.li,{children:"DTLS: Lost updates on device (config/properties) for all Messages beside the last one on dtls connection"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1370---2022-04-21",children:"v1.37.0 - 2022-04-21"}),"\n",(0,n.jsx)(d.h3,{id:"changed-68",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"update CoAP implementation to v2.5.0"}),"\n",(0,n.jsx)(d.li,{children:"adjusted flight time for dtls handshake"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1360---2022-04-20",children:"v1.36.0 - 2022-04-20"}),"\n",(0,n.jsx)(d.h3,{id:"added-71",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"basic prometheus statistics for GraphQL API"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-69",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"updated PION DTLS to v2.1.3 to fix potential deadlock bug"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1350---2022-04-19",children:"v1.35.0 - 2022-04-19"}),"\n",(0,n.jsx)(d.h3,{id:"added-72",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added TLS support for MQTT integrations"}),"\n",(0,n.jsx)(d.li,{children:"Allow Variable Substitution in MQTT Topic"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-70",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Update to GoLang 1.18"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-96",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"MQTT publish leads to DB update error without information"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1340---2022-03-29",children:"v1.34.0 - 2022-03-29"}),"\n",(0,n.jsx)(d.h3,{id:"changed-71",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"make Database sslmode configurable"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-97",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"improved cron evaluation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1331---2022-03-24",children:"v1.33.1 - 2022-03-24"}),"\n",(0,n.jsx)(d.h3,{id:"changed-72",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"removed possible logging of Auth Header at TTN endpoint"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-98",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"look in to forwarded for Header Entry for mbus API requests IP ratelimeting"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1330---2022-03-23",children:"v1.33.0 - 2022-03-23"}),"\n",(0,n.jsx)(d.h3,{id:"added-73",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"count Access by IP on mbus API"}),"\n",(0,n.jsx)(d.li,{children:"monitor push integrations (mqtt/http) with prometheus"}),"\n",(0,n.jsx)(d.li,{children:"favicon can be configured in branding configuration"}),"\n",(0,n.jsx)(d.li,{children:"Device Config Form: config values with type CRON are now validated an error displayed on invalid crons"}),"\n",(0,n.jsx)(d.li,{children:'Translate hardcoded column names in global "Data" table'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-73",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"distinguish timeout and error returned by parser in parser monitoring"}),"\n",(0,n.jsx)(d.li,{children:"removed AppLauncher in Top Navigation"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1321---2022-03-04",children:"v1.32.1 - 2022-03-04"}),"\n",(0,n.jsx)(d.h3,{id:"changed-74",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Change DTLS config to request Extended Master Secret, instead of requiring it."}),"\n",(0,n.jsx)(d.li,{children:"Wrap Pion-Logger to Logrus, so that messages from DTLS-lib show up in log."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1320---2022-03-01",children:"v1.32.0 - 2022-03-01"}),"\n",(0,n.jsx)(d.h3,{id:"changed-75",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"COAP FW update: Use file table to look up files instead of metadata from filesystem"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-74",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Prometheus statistics for COAP Endpoint Runtimes and JS Parser Runtime"}),"\n",(0,n.jsx)(d.li,{children:'role "monitoring" protect prometheus endpoint with auth for admin or monitoring role'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-99",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"crash on sort click in Tables without default sort (data table)"}),"\n",(0,n.jsx)(d.li,{children:"DTLS parse EUI64 from device if EUI64 URN is presented instead of fail because of wrong IMEI URN"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1310---2022-02-17",children:"v1.31.0 - 2022-02-17"}),"\n",(0,n.jsx)(d.h3,{id:"added-75",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"new mbus Parser Lib Version can parse EiElectronics Smoke Detector HeadStatus content"}),"\n",(0,n.jsx)(d.li,{children:"On Panic in go-coap handler routine give Internal Server Error to client instead of killing the routine"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-100",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"sort no longer breaks on multiple change of sort direction"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-76",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'Logg "Handle CoAP request" only as Debug because it spams the log'}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1300---2022-02-08",children:"v1.30.0 - 2022-02-08"}),"\n",(0,n.jsx)(d.h3,{id:"changed-77",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Updated to Go lang 1.17.6"}),"\n",(0,n.jsx)(d.li,{children:"Updated gqlgen and some other dependency's for Go Lang 1.17 update"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1292---2022-02-07",children:"v1.29.2 - 2022-02-07"}),"\n",(0,n.jsx)(d.h3,{id:"added-76",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Show number of devices in organisation"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-78",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"CSV Imports (Keys, Hardware, Config Values) now skip empty lines in the csv file"}),"\n",(0,n.jsx)(d.li,{children:"Devices in Organisation Device List are now sorted by Last Received (descending)"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-101",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed bug that prevented admins to see the overview of devices without an organisation"}),"\n",(0,n.jsx)(d.li,{children:"CronLog issues"}),"\n",(0,n.jsx)(d.li,{children:"sort in tables never sorted descending on default sort"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1291---2022-02-02",children:"v1.29.1 - 2022-02-02"}),"\n",(0,n.jsx)(d.h3,{id:"added-77",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"API Endpoint for MeterReading Domain Model"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-102",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Link to devices Types from Admin hardware Page"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"1290---skipped-due-to-problems-with-build",children:"1.29.0 - skipped due to problems with build"}),"\n",(0,n.jsx)(d.h2,{id:"v1281---2022-01-14",children:"v1.28.1 - 2022-01-14"}),"\n",(0,n.jsx)(d.h3,{id:"added-78",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'Http Integration: Validate Token and add hint if "Bearer " needs to be removed'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-79",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"remote device Config: truncate Spaces on Import from CSV"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-103",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"even admins where permited to update global device types"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1280---2022-01-12",children:"v1.28.0 - 2022-01-12"}),"\n",(0,n.jsx)(d.h3,{id:"added-79",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"array Filter Operators for GraphQL Querys with filter added"}),"\n",(0,n.jsx)(d.li,{children:"schedule uplink button at top of device config table"}),"\n",(0,n.jsx)(d.li,{children:"REST API: Admin Endpoints for API Token Creation and Deletion"}),"\n",(0,n.jsx)(d.li,{children:"REST API: GetDeviceDownlinks"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-80",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"only admins can see admins in organisation user List"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-104",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DTLS COAP: Fixed blocked accept() on dtls Listener after connection close by Handshake timeout and use of Multiple Threads."}),"\n",(0,n.jsx)(d.li,{children:"Filters where no longer applied after table page was changed"}),"\n",(0,n.jsx)(d.li,{children:"show usefully hint instead of JS error when user opens detail page of non exiting device or device he is not allowed to inspect"}),"\n",(0,n.jsx)(d.li,{children:"DeviceType Config Properties: Display Name no longer marked as required"}),"\n",(0,n.jsx)(d.li,{children:"UpdateDeviceType bug fixed: Orgadmins cloud not update private Device Types"}),"\n",(0,n.jsx)(d.li,{children:"wrong and annoying autofocus in downlink editor."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1272---2021-12-16",children:"v1.27.2 - 2021-12-16"}),"\n",(0,n.jsx)(d.h3,{id:"added-80",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"25h caching for Firmware files"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-105",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'SensusRF Ids will no longer spam the log as "invalid mbus id"'}),"\n",(0,n.jsx)(d.li,{children:"Housekeeping: fixed logging that can lead to nil pointer dereference"}),"\n",(0,n.jsx)(d.li,{children:"wmbus Data fixed some ugly UI case with missing new line"}),"\n",(0,n.jsx)(d.li,{children:"Integration Filters with empty Device Type List displayed all Device Types in frontend"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1271---2021-12-02",children:"v1.27.1 - 2021-12-02"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-106",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Housekeeping changed wrong DB Column Types in CronLog Table"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1270---2021-12-01",children:"v1.27.0 - 2021-12-01"}),"\n",(0,n.jsx)(d.h3,{id:"added-81",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added Housekeeping for SensorData and ParsedData"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-81",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"JS Parser timeout default increased to 250ms and timeout is now configurable."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-107",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Hadware Activation: correction of initialConfig=null handling"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1261---2021-11-30",children:"v1.26.1 - 2021-11-30"}),"\n",(0,n.jsx)(d.h3,{id:"added-82",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["Undocumented REST endpoint to schedule downlinks ",(0,n.jsx)(d.code,{children:"POST /api/devices/{devId}/downlink?type=raw"})]}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1260---2021-11-30",children:"v1.26.0 - 2021-11-30"}),"\n",(0,n.jsx)(d.h3,{id:"added-83",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Support for Tekelek downlinks via TCP/IP"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1250---2021-11-15",children:"v1.25.0 - 2021-11-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-84",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Support to filter array fields from REST API e.g. devices by tags"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1240---2021-11-12",children:"v1.24.0 - 2021-11-12"}),"\n",(0,n.jsx)(d.h3,{id:"added-85",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Filter for MQTT Integrations"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-108",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Fix TTN Integration Base64 decoding"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1230---2021-11-04",children:"v1.23.0 - 2021-11-04"}),"\n",(0,n.jsx)(d.h3,{id:"added-86",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Cert registration for Lobaro Devices"}),"\n",(0,n.jsx)(d.li,{children:"MeteringData for wmbus devices"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1223---2021-10-15",children:"v1.22.3 - 2021-10-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-87",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus: Display Decrypted Raw Body on telegrams where Body can not be parsed yet"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-109",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Device Configuration CSV Import: Fixed that Header Column was also imported as value"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1220---2021-10-11",children:"v1.22.0 - 2021-10-11"}),"\n",(0,n.jsx)(d.h3,{id:"added-88",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Reschedule downlinks"}),"\n",(0,n.jsx)(d.li,{children:"Deletion of queued downlinks"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-110",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Wrong Regex prevented to add SensusRF keys with SensusRF meterId."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1210---2021-10-11",children:"v1.21.0 - 2021-10-11"}),"\n",(0,n.jsx)(d.h3,{id:"added-89",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'New Role "Device Admin" that is allowed all operations at devices of his organisation'}),"\n",(0,n.jsx)(d.li,{children:"Descriptive Name Column for Device configuration properties"}),"\n",(0,n.jsx)(d.li,{children:"Feature Toggle to configure if wmbus Parser API is public"}),"\n",(0,n.jsx)(d.li,{children:"Enabled users to change the language manually in frontend"}),"\n",(0,n.jsx)(d.li,{children:"Admins can create Downlinks with arbitrary JSON Data content."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-82",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"show more details about messages that cant be parsed (header/payload unparsable)"}),"\n",(0,n.jsx)(d.li,{children:"enhanced sftp Integration logging"}),"\n",(0,n.jsx)(d.li,{}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-111",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed some small UI details"}),"\n",(0,n.jsx)(d.li,{children:"Device -> Settings -> Parser displays the parser correctly again"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1200---2021-09-30",children:"v1.20.0 - 2021-09-30"}),"\n",(0,n.jsx)(d.h3,{id:"added-90",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus keys CSV import: hints and example file"}),"\n",(0,n.jsx)(d.li,{children:"SFTP Integration: Group By Device Tags"}),"\n",(0,n.jsx)(d.li,{children:"wmbusParser Api Tab Feature Toggle"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-112",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Use of Filter and Sort in Parsed Data Tables could lead to lose if Filters"}),"\n",(0,n.jsx)(d.li,{children:"some translation errors (DE Translation)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1195---2021-09-28",children:"v1.19.5 - 2021-09-28"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-113",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"missing german translations"}),"\n",(0,n.jsx)(d.li,{children:"Device config cancel button behaviour"}),"\n",(0,n.jsx)(d.li,{children:"API authentication for a customer specific endpoint"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1194---2021-09-24",children:"v1.19.4 - 2021-09-24"}),"\n",(0,n.jsx)(d.h3,{id:"added-91",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"translation for mouseover text on battery symbol"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-83",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"User tables now contain the list of roles given to the user"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-114",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"CSV import of wmbus AES Keys"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1193---2021-09-23",children:"v1.19.3 - 2021-09-23"}),"\n",(0,n.jsx)(d.h3,{id:"added-92",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Long header information are now displayed in wmbus detail component"}),"\n",(0,n.jsx)(d.li,{children:"feature toggle: hardware activation"}),"\n",(0,n.jsx)(d.li,{children:"header column in config value csv import is now optional by user choice"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-115",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"bugs that lead to keys missing after key import from csv"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1192---2021-09-20",children:"v1.19.2 - 2021-09-20"}),"\n",(0,n.jsx)(d.h3,{id:"changed-84",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Qundis Proprietary telegrams are now marked as such"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-116",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Data Tables now show BodyParseErrors on wmbus Detail component"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1191---2021-09-19",children:"v1.19.1 - 2021-09-19"}),"\n",(0,n.jsx)(d.h3,{id:"added-93",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:'Battery Symbol in Organisation "All" Devices overview'}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-117",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"bugs on sftp integration (front and backend)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1183---2021-09-13",children:"v1.18.3 - 2021-09-13"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-118",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed File upload in GQL (organisation Logo and so on...)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1182---2021-09-09",children:"v1.18.2 - 2021-09-09"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-119",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"organisation key store check for App and Link Layer IDs on key search"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1181---2021-09-09",children:"v1.18.1 - 2021-09-09"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-120",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Mode 7 Bug with short header fixed"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1180---2021-09-07",children:"v1.18.0 - 2021-09-07"}),"\n",(0,n.jsx)(d.h3,{id:"added-94",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Column filters for tables (text and boolean)"}),"\n",(0,n.jsx)(d.li,{children:"Admin area: Hardware Battery page (vbat table)"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-85",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"sort/filter: dots ons property names can now be protected by quotes"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-121",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wahr/falsch translations in DE where mixed up"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1174---2021-09-01",children:"v1.17.4 - 2021-09-01"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-122",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"removed broken Host/URL/Ip parsing in Sftp integration."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1173---2021-08-31",children:"v1.17.3 - 2021-08-31"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-123",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wrong port tried by sftp integration"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1172---2021-08-30",children:"v1.17.2 - 2021-08-30"}),"\n",(0,n.jsx)(d.h3,{id:"changed-86",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"added some missing translations"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-124",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"auth failure for actility"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1171---2021-08-30",children:"v1.17.1 - 2021-08-30"}),"\n",(0,n.jsx)(d.h3,{id:"changed-87",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Reworked Parser Device.getConfig"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1170---2021-08-30",children:"v1.17.0 - 2021-08-30"}),"\n",(0,n.jsx)(d.h3,{id:"added-95",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Localisation Framework added to code"}),"\n",(0,n.jsx)(d.li,{children:"German localisation added"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-88",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Old Device Config is now accessible in the Parser"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-125",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Error on update of SFTP Integration fixed"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1160---2021-08-18",children:"v1.16.0 - 2021-08-18"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"JSParser: Device Name, Address, Serial and Tags are now accessible."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1152---2021-08-18",children:"v1.15.2 - 2021-08-18"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"createMQTTIntegration fix ClientId in username"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1151---2021-08-16",children:"v1.15.1 - 2021-08-16"}),"\n",(0,n.jsx)(d.h3,{id:"added-96",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Device Config: Import Lists from CSV"}),"\n",(0,n.jsx)(d.li,{children:"Added Rest Admin Endpoints"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-89",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added more options for selectable CRONs in remote config"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1141---2021-08-03",children:"v1.14.1 - 2021-08-03"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-126",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"nil pointer dereference bug on http Integration"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1140---2021-08-02",children:"v1.14.0 - 2021-08-02"}),"\n",(0,n.jsx)(d.h3,{id:"changed-90",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Gorm update"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"added-97",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added Support for Compact Telegrams without DifVif FormatFrame"}),"\n",(0,n.jsx)(d.li,{children:"Device Bulk Edit: Devices Org can be edited to no Org."}),"\n",(0,n.jsx)(d.li,{children:"DTLS Support for NB-IoT Devices over COAP"}),"\n",(0,n.jsx)(d.li,{children:"Info Endpoint"}),"\n",(0,n.jsx)(d.li,{children:"Health Endpoint added"}),"\n",(0,n.jsx)(d.li,{children:"Tekelek devices get the suggested answer."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-127",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Error on HTTP Integration Edit without Auth."}),"\n",(0,n.jsx)(d.li,{children:"Crash on HTTP Integration with nil response from HTTP lib."}),"\n",(0,n.jsx)(d.li,{children:"Device Bulk Edit: Frontend crash when device without Org is edited."}),"\n",(0,n.jsx)(d.li,{children:"Security issue in Rest API fixed."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1132---2021-07-09",children:"v1.13.2 - 2021-07-09"}),"\n",(0,n.jsx)(d.h3,{id:"added-98",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Tekelek Device Support on TCP connection added. (Default port: 54345)"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-91",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"search for devices now considers serial"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-128",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"some drone issues"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1123---2021-07-02",children:"v1.12.3 - 2021-07-02"}),"\n",(0,n.jsx)(d.h3,{id:"change-1",children:"Change"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"dont check if dev exist for EUI assignment."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1122---2021-07-02",children:"v1.12.2 - 2021-07-02"}),"\n",(0,n.jsx)(d.h3,{id:"changed-92",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"updated Lobaro mbus Parser Lib to new Version"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-129",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"error on hardware import without org fixed"}),"\n",(0,n.jsx)(d.li,{children:"wrong visual representation for device config values of type ByteArray and value null"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v11200---2021-06-15",children:"v1.12.00 - 2021-06-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-99",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Tagging for Devices"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v11117---2021-06-14",children:"v1.11.17 - 2021-06-14"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-130",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"restart Platform on service crash (like coap service and so on)"}),"\n",(0,n.jsx)(d.li,{children:"TTN: Fix on TTN User Agent version mapping"}),"\n",(0,n.jsx)(d.li,{children:"log config paths, name and type to be loaded"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v11116---2021-05-26",children:"v1.11.16 - 2021-05-26"}),"\n",(0,n.jsx)(d.h3,{id:"added-100",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"validate Device config Params based on Data Type in DeviceType Schema"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-131",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"ByteArray Config Values of NB-IoT Devices are now displayed in Hex (and not in base64)"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-93",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"DeviceTypes can now be created by users."}),"\n",(0,n.jsx)(d.li,{children:"Enabled users to share DeviceTypes with all organisations (public/private DeviceTypes)"}),"\n",(0,n.jsx)(d.li,{children:"wmbus Telegram Field picker for Data Table Config"}),"\n",(0,n.jsx)(d.li,{children:"Table preview in Data Table Config"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v11112---2021-05-11",children:"v1.11.12 - 2021-05-11"}),"\n",(0,n.jsx)(d.h3,{id:"added-101",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"TheThingsNetwork V3 is now supported."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v11111---2021-04-26",children:"v1.11.11 - 2021-04-26"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-132",children:"fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"integrations now forward all parser outputs (not only the last)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v11110---2021-04-23",children:"v1.11.10 - 2021-04-23"}),"\n",(0,n.jsx)(d.h3,{id:"added-102",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Always decreypt PulseRf devices"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-94",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"new Time Selection UI Element"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v11109---2021-04-xx",children:"v1.11.09 - 2021-04-xx"}),"\n",(0,n.jsx)(d.h3,{id:"added-103",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"user list is now sortable by different values (default: lastLogin)"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1118---2021-04-15",children:"v1.11.8 - 2021-04-15"}),"\n",(0,n.jsx)(d.h3,{id:"added-104",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Added first version of SFTP csv export."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-95",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"display table filter by default"}),"\n",(0,n.jsx)(d.li,{children:"filter for data of last 90 days by default"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-133",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed some issues with the time filter in the Data Tab."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1116---2021-03-31",children:"v1.11.6 - 2021-03-31"}),"\n",(0,n.jsx)(d.h3,{id:"changed-96",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Tableconfig Data Tables: Values can now be configured to be part of the csv export but not to be shown in the table."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1115---2021-03-22",children:"v1.11.5 - 2021-03-22"}),"\n",(0,n.jsx)(d.h3,{id:"added-105",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Allow deletion of Properties from Device."}),"\n",(0,n.jsx)(d.li,{children:"Allow org Admins to delete device Data."}),"\n",(0,n.jsx)(d.li,{children:"Activation Page with all devices of organisation added."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-97",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"to hex parsing for byte fields at coap endpoint deactivated for further fixing"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1114---2021-03-16",children:"v1.11.4 - 2021-03-16"}),"\n",(0,n.jsx)(d.h3,{id:"added-106",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Devices which have an DevEUI Assignment connected to its address now display the EUI in ther detail Headers."}),"\n",(0,n.jsx)(d.li,{children:"COAP Messages: byte fields in payload are now converted to hex instead of base64."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-98",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"(wmbus)Key import from csv now pads to short keys with leading zeros"}),"\n",(0,n.jsx)(d.li,{children:"trim whitespaces on config values so they can no longer be added accidentally"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-134",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"corrupt cache.bin no longer crashes service on startup"}),"\n",(0,n.jsx)(d.li,{children:"org-admin are now allowed to see users in org"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1110---2021-03-03",children:"v1.11.0 - 2021-03-03"}),"\n",(0,n.jsx)(d.h3,{id:"added-107",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Frontend is now delivered by lobaro backend."}),"\n",(0,n.jsx)(d.li,{children:"Support for NB-IoT Gateways receiving Data over lorawan with DevEUI instead if IMEI as used Address"}),"\n",(0,n.jsx)(d.li,{children:"NB-IOT wmbus gateway devices will now receive lorawan messages also in the Device created with the IMEI as address"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1107---2021-02-26",children:"v1.10.7 - 2021-02-26"}),"\n",(0,n.jsx)(d.h3,{id:"changed-99",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Display Error texts instead of error mask for SensusRF"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1106---2021-02-18",children:"v1.10.6 - 2021-02-18"}),"\n",(0,n.jsx)(d.h3,{id:"added-108",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Support for Chirpstack Version: 3+ Api"}),"\n",(0,n.jsx)(d.li,{children:"Chirpstack v3+ protobuf support"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-135",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"SensusRF Padding Problem for long Serials"}),"\n",(0,n.jsx)(d.li,{children:"fixed Bug in unconfigurable DevEUI Blocks"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1102---2021-02-13",children:"v1.10.2 - 2021-02-13"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-136",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Display Meterdevice ID and Error Text for SensusRF parsing run without matching key"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1101---2021-02-12",children:"v1.10.1 - 2021-02-12"}),"\n",(0,n.jsx)(d.h3,{id:"added-109",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Registry for Lobaro (Device)-EUIs added"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-100",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Userlist search now also includes Organisation Name"}),"\n",(0,n.jsx)(d.li,{children:"Unused Firefly and PackageRoute Stores removed"}),"\n",(0,n.jsx)(d.li,{children:"Unused columns and indexes removed"}),"\n",(0,n.jsx)(d.li,{children:"Index unification over Platform instances"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-137",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"fixed Bug preventing to delete Organisations with attached mbus keys"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v1100---2021-02-08",children:"v1.10.0 - 2021-02-08"}),"\n",(0,n.jsx)(d.h3,{id:"added-110",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Integrate SensusRF parsing into wmbus API"}),"\n",(0,n.jsx)(d.li,{children:"Link parsed data with uplinks"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-101",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"wmbus Parser now also supports Base64 input"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-138",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Improved authentication role checks"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v192---2021-01-25",children:"v1.9.2 - 2021-01-25"}),"\n",(0,n.jsx)(d.h3,{id:"added-111",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Serial Numbers are now imported from hardware csv and can be seen in the platform."}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"191---2021-01-15",children:"1.9.1 - 2021-01-15"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-139",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"mqtt service startup failure"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v191---2021-01-13",children:"v1.9.1 - 2021-01-13"}),"\n",(0,n.jsx)(d.h3,{id:"added-112",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Endpoint for Loriot LoRaWAN Network Server at /api/loriot/data"}),"\n",(0,n.jsx)(d.li,{children:"Configuration for server.dataDir (Default: './data')"}),"\n",(0,n.jsx)(d.li,{children:"Branding configuration: The frontend only shows customer brand specific links, logos etc."}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-102",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Parser cache is persisted regularly (60 seconds) and on graceful shutdown"}),"\n",(0,n.jsx)(d.li,{children:"Parser cache is loaded from file on startup"}),"\n",(0,n.jsxs)(d.li,{children:["Parser cache file is located at ",(0,n.jsx)(d.code,{children:"/parser/cache.bin"})]}),"\n",(0,n.jsxs)(d.li,{children:["From ",(0,n.jsx)(d.code,{children:""})," dir only '/app' and '/org' folders are public via HTTP to avoid leaking other data files like the parser cache"]}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-140",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Server crash related to MQTT Publish Integration"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v187---2020-09-29",children:"v1.8.7 - 2020-09-29"}),"\n",(0,n.jsx)(d.h3,{id:"added-113",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"last login field for user"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-141",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Server now using CoAP port from config"}),"\n",(0,n.jsx)(d.li,{children:"Server does depend require Keycloak during startup"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v185---2020-09-08",children:"v1.8.5 - 2020-09-08"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-142",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Deduplication of CoAP messages for blockwise requests"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v184---2020-09-02",children:"v1.8.4 - 2020-09-02"}),"\n",(0,n.jsx)(d.h3,{id:"fixed-143",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Index row size for device textsearch was too big"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v183---2020-08-28",children:"v1.8.3 - 2020-08-28"}),"\n",(0,n.jsx)(d.h3,{id:"added-114",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsxs)(d.li,{children:["REST API to update device configurations: ",(0,n.jsx)(d.code,{children:"/api/devices/{devId}/config"})]}),"\n",(0,n.jsx)(d.li,{children:"REST API to fetch all parsed data of all devices inside an organisation: /api/devices/parsed-data"}),"\n",(0,n.jsxs)(d.li,{children:["HTTP Integration now supports URL Variable substitution for the device ID via ",(0,n.jsx)(d.code,{children:"{device.id}"})," and data via ",(0,n.jsx)(d.code,{children:"{data.some.value}"})]}),"\n",(0,n.jsx)(d.li,{children:"Internal API and Schema for integration input filters"}),"\n",(0,n.jsx)(d.li,{children:"BasicAuth credentials for API Tokens as alternative authorization mechanism in the REST API"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-103",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Update to latest version of mbus parser to fix description issues with some telegrams"}),"\n",(0,n.jsx)(d.li,{children:"Drop unused database tables and APIs from legacy projects"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v170---2020-06-04",children:"v1.7.0 - 2020-06-04"}),"\n",(0,n.jsx)(d.h3,{id:"added-115",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Allow sending user invitation mails with password reset link"}),"\n",(0,n.jsx)(d.li,{children:"Allow user to restore a lost password"}),"\n",(0,n.jsx)(d.li,{children:"GraphQL API: Devices can be filtered by DeviceTypeId"}),"\n",(0,n.jsx)(d.li,{children:"Verify that server.frontendUrl is set in configuration"}),"\n",(0,n.jsx)(d.li,{children:"Add TTN REST Endpoint /api/ttn/data"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-104",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Prevent spaces in device addresses"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v160---2020-04-09",children:"v1.6.0 - 2020-04-09"}),"\n",(0,n.jsx)(d.h3,{id:"added-116",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Allow org-admin to edit wmbus Keys"}),"\n",(0,n.jsx)(d.li,{children:"Allow org-admin to upload organisation logos"}),"\n",(0,n.jsxs)(d.li,{children:["Documentation for REST API endpoint ",(0,n.jsx)(d.code,{children:"/api/devices"})]}),"\n",(0,n.jsx)(d.li,{children:"Parser: Record.getReceivedAt() to access the uplink message received_at date"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"changed-105",children:"Changed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Chirpstack device synchronisation reports more details"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"removed-1",children:"Removed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Gateway entity that is no longer used"}),"\n",(0,n.jsx)(d.li,{children:"Hardcoded MQTT publishers that are no longer used"}),"\n"]}),"\n",(0,n.jsx)(d.h3,{id:"fixed-144",children:"Fixed"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Allow to remove App in device via GraphQL API"}),"\n",(0,n.jsx)(d.li,{children:"NB-IoT Data is saved for all matching devices, not just one"}),"\n",(0,n.jsx)(d.li,{children:"Downlink messages created_at was set to null after update"}),"\n",(0,n.jsx)(d.li,{children:"Allow to update config values that are not defined in Device Type"}),"\n",(0,n.jsx)(d.li,{children:"Allow org-Admin to edit wmbus Keys"}),"\n"]}),"\n",(0,n.jsx)(d.h2,{id:"v150",children:"v1.5.0"}),"\n",(0,n.jsx)(d.h3,{id:"added-117",children:"Added"}),"\n",(0,n.jsxs)(d.ul,{children:["\n",(0,n.jsx)(d.li,{children:"Synchronization of devices with Chirpstack"}),"\n"]})]})}function v(e={}){const{wrapper:d}={...(0,l.R)(),...e.components};return d?(0,n.jsx)(d,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},8453:(e,d,i)=>{i.d(d,{R:()=>r,x:()=>a});var n=i(6540);const l={},s=n.createContext(l);function r(e){const d=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(d):{...d,...e}}),[d,e])}function a(e){let d;return d=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:r(e.components),n.createElement(s.Provider,{value:d},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bb44c6b0.eadfbabe.js b/assets/js/bb44c6b0.eadfbabe.js new file mode 100644 index 00000000..30ad65b6 --- /dev/null +++ b/assets/js/bb44c6b0.eadfbabe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[2346],{1866:(A,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>t,toc:()=>l});var s=n(4848),i=n(8453);const r={sidebar_position:0,displayed_sidebar:"cloudSidebar",title:"Overview"},o="Lobaro IoT Platform",t={id:"platform/index",title:"Overview",description:"The Lobaro IoT Platform operates as a Head End System for IoT Devices. The Platform is optimized for but not limited",source:"@site/docs/platform/index.md",sourceDirName:"platform",slug:"/platform/",permalink:"/iot/platform/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"cloudSidebar",title:"Overview"},sidebar:"cloudSidebar",next:{title:"Integrations",permalink:"/iot/platform/integrations/"}},d={},l=[{value:"Features",id:"features",level:2},{value:"Overview",id:"overview",level:2}];function a(A){const e={a:"a",code:"code",h1:"h1",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...A.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h1,{id:"lobaro-iot-platform",children:"Lobaro IoT Platform"}),"\n",(0,s.jsxs)(e.p,{children:["The Lobaro IoT Platform operates as a ",(0,s.jsx)(e.strong,{children:"Head End System for IoT Devices"}),". The Platform is optimized for but not limited\nto handle Lobaro devices."]}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:["Public Lobaro instance: ",(0,s.jsx)(e.a,{href:"https://platform.lobaro.com/",children:"platform.lobaro.com"})]}),"\n",(0,s.jsxs)(e.li,{children:["For On-Premise hosting check out ",(0,s.jsx)(e.a,{href:"./license",children:"Hosting & Licensing"})]}),"\n"]}),"\n",(0,s.jsx)(e.p,{children:"The documentation will always reference the Public Lobaro instance."}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.img,{alt:"img.png",src:n(252).A+"",width:"2656",height:"1506"})}),"\n",(0,s.jsx)(e.h2,{id:"features",children:"Features"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:"Multi tenant (Organisations) with branding / white labeling"}),"\n",(0,s.jsx)(e.li,{children:"IoT Device Management"}),"\n",(0,s.jsx)(e.li,{children:"Support for all Lobaro Devices"}),"\n",(0,s.jsx)(e.li,{children:"Possibility to integrate 3rd party IoT Devices (LoRaWAN, NB-IoT, ...)"}),"\n",(0,s.jsx)(e.li,{children:"Device configuration"}),"\n",(0,s.jsx)(e.li,{children:"Firmware updates"}),"\n",(0,s.jsx)(e.li,{children:"Data parsing and persistence"}),"\n",(0,s.jsxs)(e.li,{children:["Device protocols:","\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:"LoRaWAN Network Server"}),"\n",(0,s.jsx)(e.li,{children:"CoAP"}),"\n",(0,s.jsx)(e.li,{children:"HTTP"}),"\n",(0,s.jsx)(e.li,{children:"Manufacturer specifics"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["Connect devices via:","\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:"LoRaWAN"}),"\n",(0,s.jsx)(e.li,{children:"NB-IoT"}),"\n",(0,s.jsx)(e.li,{children:"LTE-M"}),"\n",(0,s.jsx)(e.li,{children:"GSM / LTE"}),"\n",(0,s.jsx)(e.li,{children:"etc."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(e.li,{children:"APIs to access or forward data to Use-Case specific applications"}),"\n",(0,s.jsx)(e.li,{children:"Scaling to handle thousands of devices"}),"\n"]}),"\n",(0,s.jsx)(e.p,{children:"We offer free access to the platform for tests and integrations (up to 12 Month) with the purchase of any Lobaro device\nin our shared instance. In addition we offer private instance hosting or On-Premise (any Server with Root access)."}),"\n",(0,s.jsx)(e.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.img,{alt:"img.png",src:n(344).A+"",width:"921",height:"114"})}),"\n",(0,s.jsx)(e.p,{children:"You can find your organisations name next to the Logo. Admins can change their organisation by clicking the small Icon\nnext to it."}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Devices:"})," Manage all devices of your organisation."]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Data:"})," See incoming data of all your devices."]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Integrations:"})," Manage data connections to and from other applications. (See: ",(0,s.jsx)(e.a,{href:"/iot/platform/integrations/",children:"Integrations"}),")."]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Organisation:"})," Manage all organisation related data."]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Configuration:"})," Platform administration of global entities independent of the Organisation (Admins only)."]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Tools:"})," wMbus Parser and Hardware Activation."]}),"\n"]}),"\n",(0,s.jsx)(e.p,{children:"The platform shows device data received via various data sources like LoRaWAN, NB.IoT, GSM, etc."}),"\n",(0,s.jsxs)(e.p,{children:["The connection to a device in handled by a ",(0,s.jsx)(e.code,{children:"Datasource"}),". Incoming data is mapped to a matching ",(0,s.jsx)(e.code,{children:"Device"}),". Raw data is saved\nas ",(0,s.jsx)(e.code,{children:"Uplink"})," Message. The ",(0,s.jsx)(e.code,{children:"Uplink"})," Message gets processed by a ",(0,s.jsx)(e.code,{children:"Parser"}),". The result of the parser is saved as ",(0,s.jsx)(e.code,{children:"Device Data"})," used\nfor visualization inside the dashboard and in outgoing APIs."]}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.img,{alt:"img.png",src:n(5395).A+"",width:"836",height:"82"})})]})}function c(A={}){const{wrapper:e}={...(0,i.R)(),...A.components};return e?(0,s.jsx)(e,{...A,children:(0,s.jsx)(a,{...A})}):a(A)}},5395:(A,e,n)=>{n.d(e,{A:()=>s});const s="data:image/png;base64,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"},344:(A,e,n)=>{n.d(e,{A:()=>s});const s="data:image/png;base64,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"},252:(A,e,n)=>{n.d(e,{A:()=>s});const s=n.p+"assets/images/platform-frontpage-7b857da575a3432831a1aec09d6d1683.png"},8453:(A,e,n)=>{n.d(e,{R:()=>o,x:()=>t});var s=n(6540);const i={},r=s.createContext(i);function o(A){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof A?A(e):{...e,...A}}),[e,A])}function t(A){let e;return e=A.disableParentContext?"function"==typeof A.components?A.components(i):A.components||i:o(A.components),s.createElement(r.Provider,{value:e},A.children)}}}]); \ No newline at end of file diff --git a/assets/js/c9434920.1276ca96.js b/assets/js/c9434920.1276ca96.js deleted file mode 100644 index d7bea914..00000000 --- a/assets/js/c9434920.1276ca96.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[4947],{6922:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var n=e(4848),r=e(8453);const i={sidebar_position:0,displayed_sidebar:"cloudSidebar"},s="Integrations",a={id:"cloud/platform/integrations/index",title:"Integrations",description:"",source:"@site/docs/cloud/platform/integrations/index.md",sourceDirName:"cloud/platform/integrations",slug:"/cloud/platform/integrations/",permalink:"/iot/cloud/platform/integrations/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/cloud/platform/integrations/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"cloudSidebar"},sidebar:"cloudSidebar",previous:{title:"Lobaro IoT Platform",permalink:"/iot/cloud/platform/"}},c={},d=[];function l(t){const o={h1:"h1",...(0,r.R)(),...t.components};return(0,n.jsx)(o.h1,{id:"integrations",children:"Integrations"})}function u(t={}){const{wrapper:o}={...(0,r.R)(),...t.components};return o?(0,n.jsx)(o,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},8453:(t,o,e)=>{e.d(o,{R:()=>s,x:()=>a});var n=e(6540);const r={},i=n.createContext(r);function s(t){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function a(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),n.createElement(i.Provider,{value:o},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/cd2a62e8.4e618f8e.js b/assets/js/cd2a62e8.4e618f8e.js new file mode 100644 index 00000000..38d98471 --- /dev/null +++ b/assets/js/cd2a62e8.4e618f8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[590],{7992:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=n(4848),o=n(8453);const r={sidebar_position:0,displayed_sidebar:"cloudSidebar"},s="Integrations",a={id:"platform/integrations/index",title:"Integrations",description:"This page is not ready yet",source:"@site/docs/platform/integrations/index.md",sourceDirName:"platform/integrations",slug:"/platform/integrations/",permalink:"/iot/platform/integrations/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/integrations/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"cloudSidebar"},sidebar:"cloudSidebar",previous:{title:"Overview",permalink:"/iot/platform/"},next:{title:"Administration",permalink:"/iot/platform/administration/"}},d={},c=[];function l(t){const e={admonition:"admonition",h1:"h1",p:"p",...(0,o.R)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.h1,{id:"integrations",children:"Integrations"}),"\n",(0,i.jsx)(e.admonition,{title:"Work in progress",type:"warning",children:(0,i.jsx)(e.p,{children:"This page is not ready yet"})})]})}function p(t={}){const{wrapper:e}={...(0,o.R)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(l,{...t})}):l(t)}},8453:(t,e,n)=>{n.d(e,{R:()=>s,x:()=>a});var i=n(6540);const o={},r=i.createContext(o);function s(t){const e=i.useContext(r);return i.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:s(t.components),i.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/cf2baa63.286930a4.js b/assets/js/cf2baa63.286930a4.js new file mode 100644 index 00000000..436e4e2f --- /dev/null +++ b/assets/js/cf2baa63.286930a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[8243],{6023:(s,e,t)=>{t.r(e),t.d(e,{assets:()=>o,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>c,toc:()=>a});var r=t(4848),n=t(8453);const d={},i="Monitoring",c={id:"platform/administration/monitoring",title:"Monitoring",description:"admin",source:"@site/docs/platform/administration/monitoring.md",sourceDirName:"platform/administration",slug:"/platform/administration/monitoring",permalink:"/iot/platform/administration/monitoring",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/administration/monitoring.md",tags:[],version:"current",frontMatter:{},sidebar:"cloudSidebar",previous:{title:"Changelog",permalink:"/iot/platform/administration/changelog"},next:{title:"Server Certificates",permalink:"/iot/platform/administration/server-certificates"}},o={},a=[{value:"Metrics",id:"metrics",level:2},{value:"Useful Queries",id:"useful-queries",level:2}];function l(s){const e={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...s.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.h1,{id:"monitoring",children:"Monitoring"}),"\n",(0,r.jsx)(e.admonition,{title:"Required roles",type:"info",children:(0,r.jsx)(e.p,{children:"admin"})}),"\n",(0,r.jsxs)(e.p,{children:["Monitoring is realized via ",(0,r.jsx)(e.a,{href:"https://prometheus.io/",children:"Prometheus"})," and can be visualized e.g.\nwith ",(0,r.jsx)(e.a,{href:"https://grafana.com/",children:"Grafana"}),"."]}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:["Prometheus Endpoint: ",(0,r.jsx)(e.code,{children:"/metrics"})," (e.g. ",(0,r.jsx)(e.a,{href:"https://platform.lobaro.com/metrics",children:"https://platform.lobaro.com/metrics"}),")"]}),"\n",(0,r.jsxs)(e.li,{children:["Authorization: Bearer Token can be created at ",(0,r.jsx)(e.code,{children:"Configuration \u2192 Admin Tokens"})]}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"metrics",children:"Metrics"}),"\n",(0,r.jsx)(e.p,{children:"Types:"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Counter"})," is a single counter that can only go up"]}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Gauge"})," is a single value that can go up and down"]}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.strong,{children:"Histogram"})," has 3 metrics with suffix ",(0,r.jsx)(e.code,{children:"_bucket"}),", ",(0,r.jsx)(e.code,{children:"_count"})," and ",(0,r.jsx)(e.code,{children:"_sum"})]}),"\n"]}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Name"}),(0,r.jsx)(e.th,{children:"Type"}),(0,r.jsx)(e.th,{children:"Description"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"coap_request_duration_seconds"}),(0,r.jsx)(e.td,{children:"Histogram"}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"go_gc_duration"}),(0,r.jsx)(e.td,{children:"Histogram"}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"go_goroutines"}),(0,r.jsx)(e.td,{children:"Counter"}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"go_info"}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{children:"States the go release version"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsxs)(e.td,{children:["go_memstats_alloc_bytes",(0,r.jsx)("br",{}),"go_memstats_alloc_bytes_total",(0,r.jsx)("br",{}),"go_memstats_buck_hash_sys_bytes",(0,r.jsx)("br",{}),"go_memstats_frees_total",(0,r.jsx)("br",{}),"go_memstats_gc_cpu_fraction",(0,r.jsx)("br",{}),"go_memstats_gc_sys_bytes",(0,r.jsx)("br",{}),"go_memstats_heap_alloc_bytes",(0,r.jsx)("br",{}),"go_memstats_heap_idle_bytes",(0,r.jsx)("br",{}),"go_memstats_heap_inuse_bytes",(0,r.jsx)("br",{}),"go_memstats_heap_objects",(0,r.jsx)("br",{}),"go_memstats_heap_released_bytes",(0,r.jsx)("br",{}),"go_memstats_heap_sys_bytes",(0,r.jsx)("br",{}),"go_memstats_last_gc_time_seconds",(0,r.jsx)("br",{}),"go_memstats_lookups_total",(0,r.jsx)("br",{}),"go_memstats_mallocs_total",(0,r.jsx)("br",{}),"go_memstats_mcache_inuse_bytes",(0,r.jsx)("br",{}),"go_memstats_mcache_sys_bytes",(0,r.jsx)("br",{}),"go_memstats_mspan_inuse_bytes",(0,r.jsx)("br",{}),"go_memstats_mspan_sys_bytes",(0,r.jsx)("br",{}),"go_memstats_next_gc_bytes",(0,r.jsx)("br",{}),"go_memstats_other_sys_bytes",(0,r.jsx)("br",{}),"go_memstats_stack_inuse_bytes",(0,r.jsx)("br",{}),"go_memstats_stack_sys_bytes",(0,r.jsx)("br",{}),"go_memstats_sys_bytes"]}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"go_threads"}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsxs)(e.td,{children:["http_publish_errors",(0,r.jsx)("br",{}),"http_publish_successfully"]}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"mbus_apiAccessCounter"}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsxs)(e.td,{children:["mqtt_publish_errors",(0,r.jsx)("br",{}),"mqtt_publish_successfully"]}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"parser_runtime_seconds"}),(0,r.jsx)(e.td,{children:"Histogram"}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsxs)(e.td,{children:["process_cpu_seconds_total",(0,r.jsx)("br",{}),"process_max_fds",(0,r.jsx)("br",{}),"process_open_fds",(0,r.jsx)("br",{}),"process_resident_memory_bytes",(0,r.jsx)("br",{}),"process_start_time_seconds",(0,r.jsx)("br",{}),"process_virtual_memory_bytes",(0,r.jsx)("br",{}),"process_virtual_memory_max_bytes"]}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsxs)(e.td,{children:["promhttp_metric_handler_requests_in_flight",(0,r.jsx)("br",{}),"promhttp_metric_handler_requests_total"]}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsxs)(e.td,{children:["scrape_duration_seconds",(0,r.jsx)("br",{}),"scrape_samples_post_metric_relabeling",(0,r.jsx)("br",{}),"scrape_samples_scraped",(0,r.jsx)("br",{}),"scrape_series_added"]}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"up"}),(0,r.jsx)(e.td,{children:"Gauge"}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h2,{id:"useful-queries",children:"Useful Queries"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Query"}),(0,r.jsx)(e.th,{children:"Type"}),(0,r.jsx)(e.th,{children:"Description"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(graphql_request_duration_seconds_sum{job="$Instance"}[1m]) / (rate(graphql_request_duration_seconds_count{job="$Instance"}[1m]) + 0.000001) * 1000'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"GraphQL Response Time"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(graphql_resolver_duration_seconds_sum{job="$Instance"}[1m]) / (rate(graphql_resolver_duration_seconds_count{job="$Instance"}[1m]) + 0.000001) * 1000'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"GraphQL Resolver Time"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(parser_runtime_seconds_sum{job="$Instance"}[60s]) / (rate(parser_runtime_seconds_count{job="$Instance"}[60s]) + 0.0001) * 1000'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"Parser Run Time"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(mbus_apiAccessCounter{job="$Instance"}[1m]) * 60'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"MBUS API calls per minute"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(coap_request_duration_seconds_sum{job="$Instance"}[1m]) / (rate(coap_request_duration_seconds_count{job="$Instance"}[1m]) + 0.000001)'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"COAP Response Times"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(mqtt_publish_errors{job="$Instance"}[1m]) * 60'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"Integrations calls per minute"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(mqtt_publish_successfully{job="$Instance"}[1m]) * 60'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(http_publish_successfully{job="$Instance"}[1m]) * 60'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(http_publish_errors{job="$Instance"}[1m]) * 60'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'rate(coap_request_duration_seconds_count{job="$Instance"}[1m]) * 60'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"Sum COAP Calls per minute"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'go_memstats_alloc_bytes{job="$Instance"} + go_memstats_stack_inuse_bytes{job="$Instance"}'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsx)(e.td,{children:"Memory Usage: Heap + Stack"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'go_memstats_sys_bytes{job="$Instance"}'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsxs)(e.td,{children:["Memory Usage",":System"," Memory"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:(0,r.jsx)(e.code,{children:'go_memstats_alloc_bytes{job="$Instance"}'})}),(0,r.jsx)(e.td,{children:"Graph"}),(0,r.jsxs)(e.td,{children:["Memory Usage",":Heap"]})]})]})]})]})}function h(s={}){const{wrapper:e}={...(0,n.R)(),...s.components};return e?(0,r.jsx)(e,{...s,children:(0,r.jsx)(l,{...s})}):l(s)}},8453:(s,e,t)=>{t.d(e,{R:()=>i,x:()=>c});var r=t(6540);const n={},d=r.createContext(n);function i(s){const e=r.useContext(d);return r.useMemo((function(){return"function"==typeof s?s(e):{...e,...s}}),[e,s])}function c(s){let e;return e=s.disableParentContext?"function"==typeof s.components?s.components(n):s.components||n:i(s.components),r.createElement(d.Provider,{value:e},s.children)}}}]); \ No newline at end of file diff --git a/assets/js/e68c242a.803c31f1.js b/assets/js/e68c242a.803c31f1.js new file mode 100644 index 00000000..4636c589 --- /dev/null +++ b/assets/js/e68c242a.803c31f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[4888],{8195:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var r=n(4848),s=n(8453);const i={sidebar_position:1},o="Lobaro Direct+",a={id:"platform/license/direct+/index",title:"Lobaro Direct+",description:"test",source:"@site/docs/platform/license/direct+/index.md",sourceDirName:"platform/license/direct+",slug:"/platform/license/direct+/",permalink:"/iot/platform/license/direct+/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/platform/license/direct+/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"cloudSidebar",previous:{title:"Hosting & Licensing",permalink:"/iot/platform/license/"}},l={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Generate a new site",id:"generate-a-new-site",level:2},{value:"Start your site",id:"start-your-site",level:2}];function c(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"lobaro-direct",children:"Lobaro Direct+"}),"\n",(0,r.jsx)(t.p,{children:"test"}),"\n",(0,r.jsx)(t.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsxs)(t.p,{children:["Get started by ",(0,r.jsx)(t.strong,{children:"creating a new site"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Or ",(0,r.jsx)(t.strong,{children:"try Docusaurus immediately"})," with ",(0,r.jsx)(t.strong,{children:(0,r.jsx)(t.a,{href:"https://docusaurus.new",children:"docusaurus.new"})}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"what-youll-need",children:"What you'll need"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://nodejs.org/en/download/",children:"Node.js"})," version 18.0 or above:","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"When installing Node.js, you are recommended to check all checkboxes related to dependencies."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"generate-a-new-site",children:"Generate a new site"}),"\n",(0,r.jsxs)(t.p,{children:["Generate a new Docusaurus site using the ",(0,r.jsx)(t.strong,{children:"classic template"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"The classic template will automatically be added to your project after you run the command:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"npm init docusaurus@latest my-website classic\n"})}),"\n",(0,r.jsx)(t.p,{children:"You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor."}),"\n",(0,r.jsx)(t.p,{children:"The command also installs all necessary dependencies you need to run Docusaurus."}),"\n",(0,r.jsx)(t.h2,{id:"start-your-site",children:"Start your site"}),"\n",(0,r.jsx)(t.p,{children:"Run the development server:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"cd my-website\nnpm run start\n"})}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"cd"})," command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there."]}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"npm run start"})," command builds your website locally and serves it through a development server, ready for you to view at ",(0,r.jsx)(t.a,{href:"http://localhost:3000/",children:"http://localhost:3000/"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Open ",(0,r.jsx)(t.code,{children:"docs/intro.md"})," (this page) and edit some lines: the site ",(0,r.jsx)(t.strong,{children:"reloads automatically"})," and displays your changes."]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function o(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f6d78023.573a8d12.js b/assets/js/f6d78023.2854f656.js similarity index 82% rename from assets/js/f6d78023.573a8d12.js rename to assets/js/f6d78023.2854f656.js index a57393d9..727e6873 100644 --- a/assets/js/f6d78023.573a8d12.js +++ b/assets/js/f6d78023.2854f656.js @@ -1 +1 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[4545],{9536:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png 1600w,"+i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.f7e3cdc.2432.png 2432w,"+i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.205e05f.3152.png 3152w",images:[{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png",width:1600,height:969},{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.f7e3cdc.2432.png",width:2432,height:1472},{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.205e05f.3152.png",width:3152,height:1908}],src:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png",toString:function(){return i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png"},placeholder:void 0,width:1600,height:969},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAGCAYAAAD68A/GAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAqElEQVR4nEWP0YqDMBBF8/+/tijoU3xoE3Ylbl1DUpNoldCzdKD04TAMc+/cGfX3/cPt90YuRSilsG3vupHWjL9YlPtqeew7PkTWvIl43x8cx/GhFNRRqzTWGK7XC3rQWGuZpol5nokxknJG8XyK0BhD3/c0TcMwDIzjyLIspJTkDAVwnidaa7quo21b4WV6Gbz3ZNkI1FqZnJM455wMYwiEEFjvd3nqH8gU4VJFWyncAAAAAElFTkSuQmCC"}},3046:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png 1600w,"+i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.f0d41ff.2202.png 2202w",images:[{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png",width:1600,height:1068},{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.f0d41ff.2202.png",width:2202,height:1470}],src:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png",toString:function(){return i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png"},placeholder:void 0,width:1600,height:1068},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAYAAAAxrNxjAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAl0lEQVR4nFWO2woDIQxE/f/vbCnFddU1JvHCTklgHxoIOJmTieETM95HxVkqWAeIFTIWdO6/Dq/vgXQWXNRxNUJnAYtC9OnhOuRSsdYCUYeqwkpVfHbfN4gIIoJwxIjeO5jZB3tv13NOB1NKGGMgtNbcfAwrWzDTdCnF00Ot1UEzbclMS7Rv/CXGGB2y0zlnfxv4JBpo1347Cg/vyVyimgAAAABJRU5ErkJggg=="}},5117:(e,o,i)=>{"use strict";i.r(o),i.d(o,{assets:()=>l,contentTitle:()=>r,default:()=>g,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=i(4848),t=i(8453);const a={sidebar_position:0,displayed_sidebar:"configurationSidebar",title:"Overview"},r="Configuration Overview",s={id:"configuration/index",title:"Overview",description:"The device configuration allows a wide range and flexible way of internal settings adjustments for Lobaro hardware.",source:"@site/docs/configuration/index.md",sourceDirName:"configuration",slug:"/configuration/",permalink:"/iot/configuration/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"configurationSidebar",title:"Overview"},sidebar:"configurationSidebar",next:{title:"Lobaro USB Config Adapter",permalink:"/iot/configuration/usb-config-adapter"}},l={},c=[{value:"Different ways to configure",id:"different-ways-to-configure",level:2},{value:"Locally",id:"locally",level:3},{value:"Remotely",id:"remotely",level:3}];function d(e){const o={a:"a",admonition:"admonition",h1:"h1",h2:"h2",h3:"h3",p:"p",strong:"strong",...(0,t.R)(),...e.components},{Image:a}=o;return a||function(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h1,{id:"configuration-overview",children:"Configuration Overview"}),"\n",(0,n.jsx)(o.p,{children:"The device configuration allows a wide range and flexible way of internal settings adjustments for Lobaro hardware.\nThis chapter generally describes our tools, common configuration parameters and workflows that are used in the same way\nfor many\nLobaro devices to adjust the used configuration."}),"\n",(0,n.jsx)(o.admonition,{title:"This is a general doc",type:"info",children:(0,n.jsxs)(o.p,{children:["Device and firmware ",(0,n.jsx)(o.strong,{children:"specific"})," parameters are explained in the respective product documentation."]})}),"\n",(0,n.jsx)(o.h2,{id:"different-ways-to-configure",children:"Different ways to configure"}),"\n",(0,n.jsx)(o.p,{children:"There are two ways of configuring our devices in existence. On the one hand locally where you need physical access to a\ndevice and on the other hand remotely over the air. For larger rollouts only remote updates of configuration showed to\nbe a feasible way to go."}),"\n",(0,n.jsx)(o.h3,{id:"locally",children:"Locally"}),"\n",(0,n.jsxs)(o.p,{children:["Any Lobaro device configuration can be set and read out locally via a PC with the ",(0,n.jsx)(o.a,{href:"./usb-config-adapter",children:"Lobaro configuration USB\nadapter"})," and the ",(0,n.jsx)(o.a,{href:"/iot/configuration/lobaro-config-tool",children:"Lobaro Maintenance Tool"}),"."]}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool",img:i(9536),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,n.jsxs)(o.p,{children:["Some network related parameters, such as the APN of the mobile cellular network provider, ",(0,n.jsx)(o.strong,{children:"must"})," usually\nfirst be configured correctly locally before the device can get online for the first time."]}),"\n",(0,n.jsx)(o.h3,{id:"remotely",children:"Remotely"}),"\n",(0,n.jsx)(o.p,{children:"Once the device has connectivity the configuration can be changed remotely over the air using various methods, e.g. the Lobaro Cloud, MQTT or any LoRaWAN network server\nusing initiated special downlink communication:"}),"\n",(0,n.jsx)(a,{alt:"Lobaro Platform Configuration Tab",img:i(3046),style:{width:"60%",paddingTop:"10px",paddingBottom:"20px"}}),"\n",(0,n.jsx)(o.admonition,{title:"Bigger Rollouts",type:"info",children:(0,n.jsx)(o.p,{children:"For larger orders, a customer specific configuration agreed upon can\nalso be installed by Lobaro during production provisioning. This way manual reconfiguration from the firmware defaults\ncan be avoided before installing the devices in the field and over the air configuration will work out of the box."})})]})}function g(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,o,i)=>{"use strict";i.d(o,{R:()=>r,x:()=>s});var n=i(6540);const t={},a=n.createContext(t);function r(e){const o=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function s(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(a.Provider,{value:o},e.children)}}}]); \ No newline at end of file +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[4545],{9536:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png 1600w,"+i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.f7e3cdc.2432.png 2432w,"+i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.205e05f.3152.png 3152w",images:[{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png",width:1600,height:969},{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.f7e3cdc.2432.png",width:2432,height:1472},{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.205e05f.3152.png",width:3152,height:1908}],src:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png",toString:function(){return i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png"},placeholder:void 0,width:1600,height:969},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAGCAYAAAD68A/GAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAqElEQVR4nEWP0YqDMBBF8/+/tijoU3xoE3Ylbl1DUpNoldCzdKD04TAMc+/cGfX3/cPt90YuRSilsG3vupHWjL9YlPtqeew7PkTWvIl43x8cx/GhFNRRqzTWGK7XC3rQWGuZpol5nokxknJG8XyK0BhD3/c0TcMwDIzjyLIspJTkDAVwnidaa7quo21b4WV6Gbz3ZNkI1FqZnJM455wMYwiEEFjvd3nqH8gU4VJFWyncAAAAAElFTkSuQmCC"}},3046:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png 1600w,"+i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.f0d41ff.2202.png 2202w",images:[{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png",width:1600,height:1068},{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.f0d41ff.2202.png",width:2202,height:1470}],src:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png",toString:function(){return i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png"},placeholder:void 0,width:1600,height:1068},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAYAAAAxrNxjAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAl0lEQVR4nFWO2woDIQxE/f/vbCnFddU1JvHCTklgHxoIOJmTieETM95HxVkqWAeIFTIWdO6/Dq/vgXQWXNRxNUJnAYtC9OnhOuRSsdYCUYeqwkpVfHbfN4gIIoJwxIjeO5jZB3tv13NOB1NKGGMgtNbcfAwrWzDTdCnF00Ot1UEzbclMS7Rv/CXGGB2y0zlnfxv4JBpo1347Cg/vyVyimgAAAABJRU5ErkJggg=="}},5117:(e,o,i)=>{"use strict";i.r(o),i.d(o,{assets:()=>l,contentTitle:()=>r,default:()=>g,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=i(4848),t=i(8453);const a={sidebar_position:0,displayed_sidebar:"configurationSidebar",title:"Overview"},r="Configuration Overview",s={id:"configuration/index",title:"Overview",description:"The device configuration allows a wide range and flexible way of internal settings adjustments for Lobaro hardware.",source:"@site/docs/configuration/index.md",sourceDirName:"configuration",slug:"/configuration/",permalink:"/iot/configuration/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"configurationSidebar",title:"Overview"},sidebar:"configurationSidebar",next:{title:"Lobaro USB Config Adapter",permalink:"/iot/configuration/usb-config-adapter"}},l={},c=[{value:"Different ways to configure",id:"different-ways-to-configure",level:2},{value:"Locally",id:"locally",level:3},{value:"Remotely",id:"remotely",level:3}];function d(e){const o={a:"a",admonition:"admonition",h1:"h1",h2:"h2",h3:"h3",p:"p",strong:"strong",...(0,t.R)(),...e.components},{Image:a}=o;return a||function(e,o){throw new Error("Expected "+(o?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h1,{id:"configuration-overview",children:"Configuration Overview"}),"\n",(0,n.jsx)(o.p,{children:"The device configuration allows a wide range and flexible way of internal settings adjustments for Lobaro hardware.\nThis chapter generally describes our tools, common configuration parameters and workflows that are used in the same way\nfor many\nLobaro devices to adjust the used configuration."}),"\n",(0,n.jsx)(o.admonition,{title:"This is a general doc",type:"info",children:(0,n.jsxs)(o.p,{children:["Device and firmware ",(0,n.jsx)(o.strong,{children:"specific"})," parameters are explained in the respective product documentation."]})}),"\n",(0,n.jsx)(o.h2,{id:"different-ways-to-configure",children:"Different ways to configure"}),"\n",(0,n.jsx)(o.p,{children:"There are two ways of configuring our devices in existence. On the one hand locally where you need physical access to a\ndevice and on the other hand remotely over the air. For larger rollouts only remote updates of configuration showed to\nbe a feasible way to go."}),"\n",(0,n.jsx)(o.h3,{id:"locally",children:"Locally"}),"\n",(0,n.jsxs)(o.p,{children:["Any Lobaro device configuration can be set and read out locally via a PC with the ",(0,n.jsx)(o.a,{href:"./usb-config-adapter",children:"Lobaro configuration USB\nadapter"})," and the ",(0,n.jsx)(o.a,{href:"/iot/configuration/lobaro-config-tool",children:"Lobaro Maintenance Tool"}),"."]}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool",img:i(9536),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,n.jsxs)(o.p,{children:["Some network related parameters, such as the APN of the mobile cellular network provider, ",(0,n.jsx)(o.strong,{children:"must"})," usually\nfirst be configured correctly locally before the device can get online for the first time."]}),"\n",(0,n.jsx)(o.h3,{id:"remotely",children:"Remotely"}),"\n",(0,n.jsx)(o.p,{children:"Once the device has connectivity the configuration can be changed remotely over the air using various methods, e.g. the Lobaro IoT Platform, MQTT or any LoRaWAN network server\nusing initiated special downlink communication:"}),"\n",(0,n.jsx)(a,{alt:"Lobaro Platform Configuration Tab",img:i(3046),style:{width:"60%",paddingTop:"10px",paddingBottom:"20px"}}),"\n",(0,n.jsx)(o.admonition,{title:"Bigger Rollouts",type:"info",children:(0,n.jsx)(o.p,{children:"For larger orders, a customer specific configuration agreed upon can\nalso be installed by Lobaro during production provisioning. This way manual reconfiguration from the firmware defaults\ncan be avoided before installing the devices in the field and over the air configuration will work out of the box."})})]})}function g(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,o,i)=>{"use strict";i.d(o,{R:()=>r,x:()=>s});var n=i(6540);const t={},a=n.createContext(t);function r(e){const o=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function s(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(a.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.8f37bba0.js b/assets/js/main.8f37bba0.js deleted file mode 100644 index f5ff475e..00000000 --- a/assets/js/main.8f37bba0.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.8f37bba0.js.LICENSE.txt */ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[8792],{2413:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"01233d77":[()=>n.e(804).then(n.bind(n,6460)),"@site/docs/cloud/platform/index.md",6460],"01a49a4f":[()=>n.e(185).then(n.bind(n,8794)),"@site/docs/configuration/lte-network-configuration.md",8794],"055ec3b1":[()=>n.e(9233).then(n.bind(n,3306)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index.md",3306],"0b02251e":[()=>n.e(3830).then(n.t.bind(n,5570,19)),"@generated/docusaurus-plugin-content-docs/default/p/iot-6a9.json",5570],"1034e1fe":[()=>n.e(136).then(n.bind(n,8882)),"@site/docs/configuration/cron-configuration.md",8882],"12a9c313":[()=>n.e(1830).then(n.bind(n,2372)),"@site/docs/firmware/app-nrf9160-wmbus/lorawan-communication-protocol.md",2372],"13593b98":[()=>n.e(7213).then(n.bind(n,5518)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index.md",5518],17896441:[()=>Promise.all([n.e(1869),n.e(6949),n.e(8401)]).then(n.bind(n,7138)),"@theme/DocItem",7138],"1c619603":[()=>n.e(2582).then(n.bind(n,8847)),"@site/docs/products/sensor-gateways/current-loop/index.md",8847],"1d947975":[()=>n.e(5171).then(n.bind(n,4177)),"@site/docs/products/metering-gateways/wireless-mbus-g3/index.md",4177],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(6949),n.e(6061)]).then(n.bind(n,7591)),"@theme/MDXPage",7591],"21e5f94e":[()=>n.e(7820).then(n.bind(n,1325)),"@site/docs/products/sensor-gateways/level/index.md",1325],"242bce50":[()=>n.e(8238).then(n.bind(n,1407)),"@site/docs/products/metering-gateways/wireless-mbus-g2/manual/cfg.md",1407],26827644:[()=>n.e(6042).then(n.bind(n,6656)),"@site/docs/products/metering-gateways/wired-mbus-g1/index.md",6656],"27118f4d":[()=>n.e(5946).then(n.bind(n,9519)),"@site/docs/knowledge-base/wireless-mbus.md",9519],"2a77de52":[()=>n.e(6082).then(n.bind(n,8751)),"@site/docs/firmware/index.md",8751],"2fe986c2":[()=>n.e(564).then(n.bind(n,4853)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index.md",4853],"3249a05e":[()=>n.e(5588).then(n.bind(n,4138)),"@site/docs/configuration/meter-reception-filter-config.md",4138],"337e0e25":[()=>n.e(7191).then(n.bind(n,6995)),"@site/docs/cloud/direct+/index.md",6995],"393be207":[()=>n.e(4134).then(n.bind(n,633)),"@site/src/pages/markdown-page.md",633],"3be75a1f":[()=>n.e(7607).then(n.bind(n,7690)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc.md",7690],"42b10abd":[()=>n.e(5277).then(n.bind(n,8697)),"@site/docs/products/metering-gateways/wired-mbus-g1/manual/cfg.md",8697],"4ddd2498":[()=>n.e(1110).then(n.bind(n,587)),"@site/docs/configuration/lorawan-downlink-config.md",587],"5a4e9d38":[()=>n.e(7154).then(n.bind(n,7035)),"@site/docs/products/sensor-gateways/modbus/index.md",7035],"5e95c892":[()=>n.e(9647).then(n.bind(n,3124)),"@theme/DocsRoot",3124],"697ac668":[()=>n.e(1381).then(n.bind(n,1327)),"@site/docs/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index.md",1327],"6be0cd09":[()=>n.e(5792).then(n.bind(n,5434)),"@site/docs/hardware/mainboards/index.md",5434],"701ba69e":[()=>n.e(1876).then(n.bind(n,2387)),"@site/docs/products/metering-gateways/wireless-mbus-g3/manual/workflow.md",2387],"72346f2a":[()=>n.e(8034).then(n.bind(n,6507)),"@site/docs/products/metering-gateways/wired-mbus-g1/manual/index.md",6507],"74c9afa6":[()=>n.e(9010).then(n.bind(n,1204)),"@site/docs/products/metering-gateways/wireless-mbus-g2/manual/workflow.md",1204],75439747:[()=>n.e(8027).then(n.bind(n,8141)),"@site/docs/hardware/index.md",8141],"754583dd":[()=>n.e(5633).then(n.bind(n,7173)),"@site/docs/products/index.md",7173],"78ac8b3c":[()=>n.e(1010).then(n.bind(n,5009)),"@site/docs/firmware/app-nrf9160-wmbus/compatible-hardware.md",5009],"7eb7d3d5":[()=>n.e(4752).then(n.bind(n,5152)),"@site/docs/products/sensor-gateways/index.md",5152],"7ebb515f":[()=>n.e(8344).then(n.bind(n,3361)),"@site/docs/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol.md",3361],83120900:[()=>n.e(6052).then(n.bind(n,2667)),"@site/docs/hardware/extension-modules/index.md",2667],"91ae8846":[()=>n.e(189).then(n.bind(n,4355)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/index.md",4355],"963797ee":[()=>n.e(5534).then(n.bind(n,3390)),"@site/docs/cloud/index.md",3390],"9be4ba06":[()=>n.e(4900).then(n.bind(n,8e3)),"@site/docs/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index.md",8e3],a2e35eca:[()=>n.e(8592).then(n.bind(n,3356)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index.md",3356],a5750849:[()=>n.e(1148).then(n.bind(n,2640)),"@site/docs/configuration/lobaro-config-tool.md",2640],a5b914f3:[()=>n.e(7244).then(n.bind(n,2608)),"@site/docs/configuration/usb-config-adapter.md",2608],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,2881)),"@theme/DocVersionRoot",2881],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,4644)),"@theme/DocRoot",4644],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],abd6da72:[()=>n.e(3694).then(n.bind(n,1155)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index.md",1155],acb1f41f:[()=>n.e(731).then(n.bind(n,3233)),"@site/docs/products/sensor-gateways/temperature/index.md",3233],b39b0327:[()=>n.e(1617).then(n.bind(n,5470)),"@site/docs/hardware/housings/index.md",5470],b5423acd:[()=>n.e(7451).then(n.bind(n,1442)),"@site/docs/products/metering-gateways/wired-mbus-g1/manual/workflow.md",1442],bd96cf98:[()=>n.e(6588).then(n.bind(n,2979)),"@site/docs/products/metering-gateways/index.md",2979],c377a04b:[()=>n.e(3361).then(n.bind(n,1776)),"@site/docs/index.md",1776],c9434920:[()=>n.e(4947).then(n.bind(n,6922)),"@site/docs/cloud/platform/integrations/index.md",6922],cb1c94ae:[()=>n.e(6697).then(n.bind(n,1728)),"@site/docs/firmware/app-nrf9160-wmbus/configuration-parameter.md",1728],d1f62d15:[()=>n.e(7554).then(n.bind(n,659)),"@site/docs/firmware/app-nrf9160-wmbus/changelog-download.md",659],d48b783f:[()=>n.e(7143).then(n.bind(n,3969)),"@site/docs/firmware/app-nrf9160-wmbus/introduction.md",3969],d9226a6c:[()=>n.e(2400).then(n.bind(n,6530)),"@site/docs/products/metering-gateways/wireless-mbus-g2/index.md",6530],db471313:[()=>n.e(8474).then(n.bind(n,8436)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index.md",8436],dcd34b43:[()=>n.e(7022).then(n.bind(n,2374)),"@site/docs/firmware/app-hybrid-modbus/index.md",2374],dfeebc90:[()=>n.e(8442).then(n.bind(n,6175)),"@site/docs/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/index.md",6175],e091b4aa:[()=>n.e(482).then(n.bind(n,6453)),"@site/docs/knowledge-base/modbus.md",6453],e6b8ea22:[()=>n.e(7986).then(n.bind(n,3977)),"@site/docs/products/metering-gateways/wireless-mbus-g2/manual/index.md",3977],eb2b5977:[()=>n.e(8822).then(n.bind(n,7439)),"@site/docs/configuration/obis-code-configuration.md",7439],eb5375eb:[()=>n.e(727).then(n.bind(n,3200)),"@site/docs/products/metering-gateways/wireless-mbus-g3/manual/index.md",3200],f6d78023:[()=>n.e(4545).then(n.bind(n,5117)),"@site/docs/configuration/index.md",5117],fe17bb44:[()=>n.e(9444).then(n.bind(n,3290)),"@site/docs/products/metering-gateways/wireless-mbus-g3/manual/cfg.md",3290]};var s=n(4848);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(1604),c=n(3363);function d(e,t){if("*"===e)return a()({loading:l,loader:()=>n.e(2560).then(n.bind(n,2560)),modules:["@theme/NotFound"],webpack:()=>[2560],render(e,t){const n=e.default;return(0,s.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],m=(0,u.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const l=a.__props;return delete a.__props,(0,s.jsx)(c.W,{value:i,children:(0,s.jsx)(o,{...a,...l,...n})})}})}const p=[{path:"/iot/markdown-page",component:d("/iot/markdown-page","bbd"),exact:!0},{path:"/iot/",component:d("/iot/","fdf"),routes:[{path:"/iot/",component:d("/iot/","a4a"),routes:[{path:"/iot/",component:d("/iot/","19a"),routes:[{path:"/iot/cloud/",component:d("/iot/cloud/","660"),exact:!0,sidebar:"cloudSidebar"},{path:"/iot/cloud/direct+/",component:d("/iot/cloud/direct+/","3a8"),exact:!0,sidebar:"cloudSidebar"},{path:"/iot/cloud/platform/",component:d("/iot/cloud/platform/","927"),exact:!0,sidebar:"cloudSidebar"},{path:"/iot/cloud/platform/integrations/",component:d("/iot/cloud/platform/integrations/","774"),exact:!0,sidebar:"cloudSidebar"},{path:"/iot/configuration/",component:d("/iot/configuration/","11e"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/configuration/cron-configuration",component:d("/iot/configuration/cron-configuration","5ce"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/configuration/lobaro-config-tool",component:d("/iot/configuration/lobaro-config-tool","b4c"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/configuration/lorawan-downlink-config",component:d("/iot/configuration/lorawan-downlink-config","aca"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/configuration/lte-network-configuration",component:d("/iot/configuration/lte-network-configuration","fcd"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/configuration/meter-reception-filter-config",component:d("/iot/configuration/meter-reception-filter-config","281"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/configuration/obis-code-configuration",component:d("/iot/configuration/obis-code-configuration","2c6"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/configuration/usb-config-adapter",component:d("/iot/configuration/usb-config-adapter","397"),exact:!0,sidebar:"configurationSidebar"},{path:"/iot/firmware/",component:d("/iot/firmware/","54a"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/firmware/app-hybrid-modbus/",component:d("/iot/firmware/app-hybrid-modbus/","83c"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol",component:d("/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","235"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/firmware/app-nrf9160-wmbus/changelog-download",component:d("/iot/firmware/app-nrf9160-wmbus/changelog-download","827"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/firmware/app-nrf9160-wmbus/compatible-hardware",component:d("/iot/firmware/app-nrf9160-wmbus/compatible-hardware","9d9"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/firmware/app-nrf9160-wmbus/configuration-parameter",component:d("/iot/firmware/app-nrf9160-wmbus/configuration-parameter","23e"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/firmware/app-nrf9160-wmbus/introduction",component:d("/iot/firmware/app-nrf9160-wmbus/introduction","ff0"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol",component:d("/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol","502"),exact:!0,sidebar:"firmwareSidebar"},{path:"/iot/hardware/",component:d("/iot/hardware/","9ae"),exact:!0,sidebar:"hardwareSidebar"},{path:"/iot/hardware/extension-modules/",component:d("/iot/hardware/extension-modules/","e0e"),exact:!0,sidebar:"hardwareSidebar"},{path:"/iot/hardware/housings/",component:d("/iot/hardware/housings/","3d1"),exact:!0,sidebar:"hardwareSidebar"},{path:"/iot/hardware/mainboards/",component:d("/iot/hardware/mainboards/","2a3"),exact:!0,sidebar:"hardwareSidebar"},{path:"/iot/knowledge-base/modbus",component:d("/iot/knowledge-base/modbus","b9c"),exact:!0,sidebar:"knowledgeBaseSidebar"},{path:"/iot/knowledge-base/wireless-mbus",component:d("/iot/knowledge-base/wireless-mbus","a10"),exact:!0,sidebar:"knowledgeBaseSidebar"},{path:"/iot/products/",component:d("/iot/products/","eda"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/",component:d("/iot/products/metering-gateways/","99e"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wired-mbus-g1/",component:d("/iot/products/metering-gateways/wired-mbus-g1/","b23"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/",component:d("/iot/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/","485"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wired-mbus-g1/manual/",component:d("/iot/products/metering-gateways/wired-mbus-g1/manual/","179"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wired-mbus-g1/manual/cfg",component:d("/iot/products/metering-gateways/wired-mbus-g1/manual/cfg","f9d"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wired-mbus-g1/manual/workflow",component:d("/iot/products/metering-gateways/wired-mbus-g1/manual/workflow","956"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g2/",component:d("/iot/products/metering-gateways/wireless-mbus-g2/","8f9"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/",component:d("/iot/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/","9c8"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g2/manual/",component:d("/iot/products/metering-gateways/wireless-mbus-g2/manual/","a39"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g2/manual/cfg",component:d("/iot/products/metering-gateways/wireless-mbus-g2/manual/cfg","42a"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g2/manual/workflow",component:d("/iot/products/metering-gateways/wireless-mbus-g2/manual/workflow","8c9"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/","1ab"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/","b41"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/","233"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/","e2d"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/","010"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/","50b"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/","733"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/","dc3"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","495"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/","8bb"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/manual/",component:d("/iot/products/metering-gateways/wireless-mbus-g3/manual/","f22"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/manual/cfg",component:d("/iot/products/metering-gateways/wireless-mbus-g3/manual/cfg","713"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/metering-gateways/wireless-mbus-g3/manual/workflow",component:d("/iot/products/metering-gateways/wireless-mbus-g3/manual/workflow","5bf"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/sensor-gateways/",component:d("/iot/products/sensor-gateways/","b5a"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/sensor-gateways/current-loop/",component:d("/iot/products/sensor-gateways/current-loop/","f74"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/sensor-gateways/level/",component:d("/iot/products/sensor-gateways/level/","301"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/sensor-gateways/modbus/",component:d("/iot/products/sensor-gateways/modbus/","b18"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/products/sensor-gateways/temperature/",component:d("/iot/products/sensor-gateways/temperature/","f95"),exact:!0,sidebar:"productsSidebar"},{path:"/iot/",component:d("/iot/","dcd"),exact:!0,sidebar:"allDocSidebar"}]}]}]},{path:"*",component:d("*")}]},8848:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},5022:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),s=n(4784),l=n(1712);const u=[n(5300),n(4753),n(5729),n(8252),n(1132)];var c=n(2413),d=n(6347),p=n(2831),f=n(4848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(1141),h=n(7639),b=n(8180),y=n(6957),v=n(9817),w=n(2098),k=n(9503),x=n(1482),S=n(4609),E=n(1210);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,w.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.applyTrailingSlash)((0,b.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function A(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,y.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(v.be,{image:n}),(0,f.jsx)(C,{}),(0,f.jsx)(_,{}),(0,f.jsx)(E.A,{tag:x.Cy,locale:e}),(0,f.jsx)(g.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;var N=n(8848),L=n(3366),O=n(6494);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const j=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,O.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.A.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(j,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const D=I,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(D,{location:e,children:q})}function K(){return(0,f.jsx)(V.A,{children:(0,f.jsx)(L.l,{children:(0,f.jsxs)(N.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(H,{}),(0,f.jsx)(A,{}),(0,f.jsx)(U,{}),(0,f.jsx)(Y,{})]}),(0,f.jsx)(G,{})]})})})}var Q=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(1604);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(c.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),R(e))},re=Object.freeze(ne);function ae(e){let{children:t}=e;return"hash"===s.A.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const oe=Boolean(!0);if(l.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(o.vd,{children:(0,f.jsx)(ae,{children:(0,f.jsx)(K,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(oe)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};R(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},3366:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/iot/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/iot/","mainDocId":"index","docs":[{"id":"cloud/direct+/index","path":"/iot/cloud/direct+/","sidebar":"cloudSidebar"},{"id":"cloud/index","path":"/iot/cloud/","sidebar":"cloudSidebar"},{"id":"cloud/platform/index","path":"/iot/cloud/platform/","sidebar":"cloudSidebar"},{"id":"cloud/platform/integrations/index","path":"/iot/cloud/platform/integrations/","sidebar":"cloudSidebar"},{"id":"configuration/cron-configuration","path":"/iot/configuration/cron-configuration","sidebar":"configurationSidebar"},{"id":"configuration/index","path":"/iot/configuration/","sidebar":"configurationSidebar"},{"id":"configuration/lobaro-config-tool","path":"/iot/configuration/lobaro-config-tool","sidebar":"configurationSidebar"},{"id":"configuration/lorawan-downlink-config","path":"/iot/configuration/lorawan-downlink-config","sidebar":"configurationSidebar"},{"id":"configuration/lte-network-configuration","path":"/iot/configuration/lte-network-configuration","sidebar":"configurationSidebar"},{"id":"configuration/meter-reception-filter-config","path":"/iot/configuration/meter-reception-filter-config","sidebar":"configurationSidebar"},{"id":"configuration/obis-code-configuration","path":"/iot/configuration/obis-code-configuration","sidebar":"configurationSidebar"},{"id":"configuration/usb-config-adapter","path":"/iot/configuration/usb-config-adapter","sidebar":"configurationSidebar"},{"id":"firmware/app-hybrid-modbus/index","path":"/iot/firmware/app-hybrid-modbus/","sidebar":"firmwareSidebar"},{"id":"firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","path":"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol","sidebar":"firmwareSidebar"},{"id":"firmware/app-nrf9160-wmbus/changelog-download","path":"/iot/firmware/app-nrf9160-wmbus/changelog-download","sidebar":"firmwareSidebar"},{"id":"firmware/app-nrf9160-wmbus/compatible-hardware","path":"/iot/firmware/app-nrf9160-wmbus/compatible-hardware","sidebar":"firmwareSidebar"},{"id":"firmware/app-nrf9160-wmbus/configuration-parameter","path":"/iot/firmware/app-nrf9160-wmbus/configuration-parameter","sidebar":"firmwareSidebar"},{"id":"firmware/app-nrf9160-wmbus/introduction","path":"/iot/firmware/app-nrf9160-wmbus/introduction","sidebar":"firmwareSidebar"},{"id":"firmware/app-nrf9160-wmbus/lorawan-communication-protocol","path":"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol","sidebar":"firmwareSidebar"},{"id":"firmware/index","path":"/iot/firmware/","sidebar":"firmwareSidebar"},{"id":"hardware/extension-modules/index","path":"/iot/hardware/extension-modules/","sidebar":"hardwareSidebar"},{"id":"hardware/housings/index","path":"/iot/hardware/housings/","sidebar":"hardwareSidebar"},{"id":"hardware/index","path":"/iot/hardware/","sidebar":"hardwareSidebar"},{"id":"hardware/mainboards/index","path":"/iot/hardware/mainboards/","sidebar":"hardwareSidebar"},{"id":"index","path":"/iot/","sidebar":"allDocSidebar"},{"id":"knowledge-base/modbus","path":"/iot/knowledge-base/modbus","sidebar":"knowledgeBaseSidebar"},{"id":"knowledge-base/wireless-mbus","path":"/iot/knowledge-base/wireless-mbus","sidebar":"knowledgeBaseSidebar"},{"id":"products/index","path":"/iot/products/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/index","path":"/iot/products/metering-gateways/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/index","path":"/iot/products/metering-gateways/wired-mbus-g1/hardware-variants/dinrail-v1/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wired-mbus-g1/index","path":"/iot/products/metering-gateways/wired-mbus-g1/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wired-mbus-g1/manual/cfg","path":"/iot/products/metering-gateways/wired-mbus-g1/manual/cfg","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wired-mbus-g1/manual/index","path":"/iot/products/metering-gateways/wired-mbus-g1/manual/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wired-mbus-g1/manual/workflow","path":"/iot/products/metering-gateways/wired-mbus-g1/manual/workflow","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/index","path":"/iot/products/metering-gateways/wireless-mbus-g2/hardware-variants/bridge-v2/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g2/index","path":"/iot/products/metering-gateways/wireless-mbus-g2/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g2/manual/cfg","path":"/iot/products/metering-gateways/wireless-mbus-g2/manual/cfg","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g2/manual/index","path":"/iot/products/metering-gateways/wireless-mbus-g2/manual/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g2/manual/workflow","path":"/iot/products/metering-gateways/wireless-mbus-g2/manual/workflow","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/concentrator-v1/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/dinrail-v1/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/bridge-v2/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/gw-v2/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/discontinued/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v3/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/desc","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/gw-v4/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/hardware-variants/sun-v1/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/manual/cfg","path":"/iot/products/metering-gateways/wireless-mbus-g3/manual/cfg","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/manual/index","path":"/iot/products/metering-gateways/wireless-mbus-g3/manual/","sidebar":"productsSidebar"},{"id":"products/metering-gateways/wireless-mbus-g3/manual/workflow","path":"/iot/products/metering-gateways/wireless-mbus-g3/manual/workflow","sidebar":"productsSidebar"},{"id":"products/sensor-gateways/current-loop/index","path":"/iot/products/sensor-gateways/current-loop/","sidebar":"productsSidebar"},{"id":"products/sensor-gateways/index","path":"/iot/products/sensor-gateways/","sidebar":"productsSidebar"},{"id":"products/sensor-gateways/level/index","path":"/iot/products/sensor-gateways/level/","sidebar":"productsSidebar"},{"id":"products/sensor-gateways/modbus/index","path":"/iot/products/sensor-gateways/modbus/","sidebar":"productsSidebar"},{"id":"products/sensor-gateways/temperature/index","path":"/iot/products/sensor-gateways/temperature/","sidebar":"productsSidebar"}],"draftIds":["knowledge-base/playground","firmware/app-nrf91-hybrid/index","firmware/app-nrf91-origin/index"],"sidebars":{"htmlSidebar":{},"allDocSidebar":{"link":{"path":"/iot/","label":"index"}},"configurationSidebar":{"link":{"path":"/iot/configuration/","label":"configuration/index"}},"productsSidebar":{"link":{"path":"/iot/products/","label":"products/index"}},"firmwareSidebar":{"link":{"path":"/iot/firmware/","label":"firmware/index"}},"hardwareSidebar":{"link":{"path":"/iot/hardware/","label":"hardware/index"}},"cloudSidebar":{"link":{"path":"/iot/cloud/","label":"cloud/index"}},"knowledgeBaseSidebar":{"link":{"path":"/iot/knowledge-base/wireless-mbus","label":"knowledge-base/wireless-mbus"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(2654);const l=JSON.parse('{"docusaurusVersion":"3.4.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.4.0"},"docusaurus-plugin-image-zoom":{"type":"package","name":"docusaurus-plugin-image-zoom","version":"2.0.0"},"docusaurus-plugin-ideal-image":{"type":"package","name":"@docusaurus/plugin-ideal-image","version":"3.4.0"}}}');var u=n(4848);const c={siteConfig:a.A,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},3832:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(6540),a=n(1712),o=n(1141),i=n(4609),s=n(3844),l=n(3363),u=n(4848);function c(e){let{error:t,tryAgain:n}=e;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,u.jsx)(l.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)(p,{children:(0,u.jsxs)(g,{fallback:()=>(0,u.jsx)(c,{error:t,tryAgain:n}),children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(s.A,{children:(0,u.jsx)(c,{error:t,tryAgain:n})})]})})}const m=e=>(0,u.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},1712:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},1141:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},4783:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),a=n(4625),o=n(4609),i=n(7639),s=n(877),l=n(1712),u=n(7344),c=n(8180),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:v}=(0,i.A)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,c.hH)(),E=(0,u.A)(),_=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>_.current));const C=p||f;const A=(0,s.A)(C),T=C?.replace("pathname://","");let N=void 0!==T?(L=T,b&&(e=>e.startsWith("/"))(L)?S(L):L):void 0;var L;"hash"===x&&N?.startsWith("./")&&(N=N?.slice(1)),N&&A&&(N=(0,o.applyTrailingSlash)(N,{trailingSlash:w,baseUrl:k}));const O=(0,r.useRef)(!1),P=n?a.k2:a.N_,j=l.A.canUseIntersectionObserver,R=(0,r.useRef)(),I=()=>{O.current||null==N||(window.docusaurus.preload(N),O.current=!0)};(0,r.useEffect)((()=>(!j&&A&&null!=N&&window.docusaurus.prefetch(N),()=>{j&&R.current&&R.current.disconnect()})),[R,N,j,A]);const D=N?.startsWith("#")??!1,M=!y.target||"_self"===y.target,F=!N||!A||!M;return h||!D&&F||E.collectLink(N),y.id&&E.collectAnchor(y.id),F?(0,d.jsx)("a",{ref:_,href:N,...C&&!A&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,d.jsx)(P,{...y,onMouseEnter:I,onTouchStart:I,innerRef:e=>{_.current=e,j&&e&&A&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=N&&window.docusaurus.prefetch(N))}))})),R.current.observe(e))},to:N,...n&&{isActive:g,activeClassName:m}})}const f=r.forwardRef(p)},9175:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},3230:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>l});var r=n(6540),a=n(4848);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(s({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},4598:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},877:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},8180:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>s,hH:()=>i});var r=n(6540),a=n(7639),o=n(877);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,s=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:a=!1,absolute:i=!1}={},router:s}=e;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===s)return r.startsWith("/")?`.${r}`:`./${r}`;if(a)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const l=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+l:l}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:s}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},7344:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},7639:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3366);function o(){return(0,r.useContext)(a.o)}},1062:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(8848);function o(){return(0,r.useContext)(a.o)}},6494:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(1712).A.canUseDOM?r.useLayoutEffect:r.useEffect},1604:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?`${a}.${o}`:o;r(i)?e(i,s):t[s]=i}))}(e),t}},3363:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},4721:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>p,Gy:()=>c,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>f});var r=n(6347),a=n(7639),o=n(4598);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=function(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>{try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return s(t)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return l(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},5729:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},4753:(e,t,n)=>{"use strict";n.r(t);var r=n(1765),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.A,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(1617)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},5225:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(4164),a=n(3230),o=n(6957),i=n(4783),s=n(7344);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(4848);function c(e){let{as:t,id:n,...c}=e;const d=(0,s.A)(),{navbar:{hideOnScroll:p}}=(0,o.p)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const f=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.A)("anchor",p?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},716:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(4848);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},3844:(e,t,n)=>{"use strict";n.d(t,{A:()=>ft});var r=n(6540),a=n(4164),o=n(3832),i=n(9817),s=n(6347),l=n(3230),u=n(4067),c=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,l.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(8630),b=n(9503);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(g,{className:y.skipToContent})}var w=n(6957),k=n(2);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.A)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:A.announcementBarPlaceholder}),(0,c.jsx)(C,{className:A.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:A.announcementBarClose})]})}var N=n(1938),L=n(4245);var O=n(4799),P=n(763);const j=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,N.M)(),t=(0,P.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,O.ZC)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(j.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(j);if(!e)throw new O.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.YL)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=D();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(7710),z=n(1062);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function H(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.A)(),s=(0,l.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.A)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,a.A)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,a.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const V=r.memo(H),W={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,F.G)();return r?null:(0,c.jsx)(V,{className:t,buttonClassName:"dark"===n?W.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var q=n(20);function Y(){return(0,c.jsx)(q.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,N.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,l.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(Y,{}),(0,c.jsx)(G,{className:"margin-right--md"}),(0,c.jsx)(K,{})]})}var Z=n(4783),X=n(8180),J=n(877);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(716);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...u}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.A)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,m&&(0,c.jsx)(te.A,{...s&&{width:12,height:12}})]})};return a?(0,c.jsx)(Z.A,{href:l?f:a,...u,...g}):(0,c.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.A)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(4549),se=n(260),le=n(7639);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,se.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const l=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,c.jsxs)("div",{ref:l,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.A)("navbar__link",o),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:s.children??s.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...l}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,le.A)(),{pathname:t}=(0,s.zy)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.A)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,c.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var me=n(2098);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";var be=n(9175);const ye={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.A)(n,ye.navbarSearchContainer),children:t})}var we=n(4721),ke=n(5215);var xe=n(2780);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,le.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,s.zy)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,l.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(be.A,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.A)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.QB)(t,r),s=o?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>s||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ke.Vd)(r)[0],i=t??o.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,s.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...o],h=(0,ke.Vd)(n)[0],b=t&&g.length>1?(0,l.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,y=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:b,to:y,items:g,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ee[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function Ce(){const e=(0,N.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(l.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.p)().navbar.items.length,t=D();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function Ne(){const e=(0,N.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(M,{header:(0,c.jsx)(Q,{}),primaryMenu:(0,c.jsx)(Ce,{}),secondaryMenu:(0,c.jsx)(Te,{})}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Oe(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.p)(),i=(0,N.M)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,L.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:s,"aria-label":(0,l.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!d&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Oe,{onClick:i.toggle}),(0,c.jsx)(Ne,{})]})}var je=n(4609);const Re={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function Ie(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(l.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function De(e){let{error:t}=e;const n=(0,je.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Re.errorBoundaryError,children:n})}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function ze(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,N.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,l.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(ze,{})})}const $e={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(Me,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(_e,{...e})},t)))})}function He(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function Ve(){const e=(0,N.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(He,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Be,{}),(0,c.jsx)(Y,{}),(0,c.jsx)(Ue,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{items:r}),(0,c.jsx)(G,{className:$e.colorModeToggle}),!a&&(0,c.jsx)(ve,{children:(0,c.jsx)(be.A,{})})]})})}function We(){return(0,c.jsx)(Pe,{children:(0,c.jsx)(Ve,{})})}function Ge(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,s=(0,X.Ay)(n),l=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Z.A,{className:"footer__link-item",...r?{href:o?l:r}:{to:s},...i,children:[a,r&&!(0,J.A)(r)&&(0,c.jsx)(te.A,{})]})}function qe(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(Ge,{item:t})},t.href??t.to)}function Ye(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(qe,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(Ye,{column:e},t)))})}function Qe(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(Ge,{item:t})}function Xe(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(Ze,{item:e}),t.length!==n+1&&(0,c.jsx)(Qe,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(Ke,{columns:t}):(0,c.jsx)(Xe,{links:t})}var et=n(975);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(et.A,{className:(0,a.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,c.jsx)(nt,{logo:t})}):(0,c.jsx)(nt,{logo:t})}function at(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function ot(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(ot,{style:a,links:n&&n.length>0&&(0,c.jsx)(Je,{links:n}),logo:r&&(0,c.jsx)(rt,{logo:r}),copyright:t&&(0,c.jsx)(at,{copyright:t})})}const st=r.memo(it),lt=(0,O.fM)([F.a,k.o,L.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,c.jsx)(P.y_,{children:(0,c.jsx)(N.e,{children:(0,c.jsx)(R,{children:t})})})}]);function ut(e){let{children:t}=e;return(0,c.jsx)(lt,{children:t})}var ct=n(5225);function dt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(ct.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(l.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Ie,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(De,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_z2l0"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.J)(),(0,c.jsxs)(ut,{children:[(0,c.jsx)(i.be,{title:s,description:l}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(We,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(h.G.wrapper.main,pt.mainWrapper,r),children:(0,c.jsx)(o.A,{fallback:e=>(0,c.jsx)(dt,{...e}),children:t})}),!n&&(0,c.jsx)(st,{})]})}},20:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(4783),a=n(8180),o=n(7639),i=n(6957),s=n(975),l=n(4848);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Ay)(t.src),dark:(0,a.Ay)(t.srcDark||t.src)},i=(0,l.jsx)(s.A,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:s}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,a.Ay)(s?.href||"/"),m=n?"":t,g=s?.alt??m;return(0,l.jsxs)(r.A,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(u,{logo:s,alt:g,imageClassName:c}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},1210:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(1141),a=n(4848);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},975:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),a=n(4164),o=n(1062),i=n(7710);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(4848);function u(e){let{className:t,children:n}=e;const u=(0,o.A)(),{colorMode:c}=(0,i.G)();return(0,l.jsx)(l.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.A)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,l.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},4549:(e,t,n)=>{"use strict";n.d(t,{N:()=>b,u:()=>u});var r=n(6540),a=n(1712),o=n(6494),i=n(6350),s=n(4848);const l="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.A.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:o}),(0,s.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:l,children:a})}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[l,u]=(0,r.useState)(t);return(0,o.A)((()=>{t||i(!0)}),[t]),(0,o.A)((()=>{a&&u(t)}),[a,t]),a?(0,s.jsx)(g,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,s.jsx)(r,{...n})}},2:(e,t,n)=>{"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(6540),a=n(1062),o=n(9900),i=n(4799),s=n(6957),l=n(4848);const u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},7710:(e,t,n)=>{"use strict";n.d(t,{G:()=>b,a:()=>h});var r=n(6540),a=n(1712),o=n(4799),i=n(9900),s=n(6957),l=n(4848);const u=r.createContext(void 0),c="theme",d=(0,i.Wf)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.p)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,l.jsx)(u.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(u);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2780:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>b,g1:()=>v});var r=n(6540),a=n(4721),o=n(4598),i=n(6957),s=n(5215),l=n(4799),u=n(9900),c=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,c.jsx)(m.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.C5?(0,c.jsx)(h,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function y(){const e=(0,r.useContext)(m);if(!e)throw new l.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.W);const t=(0,a.ht)(e),[n,i]=y(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},403:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,t:()=>u});var r=n(6540),a=n(4799),o=n(4848);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(s);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},3403:(e,t,n)=>{"use strict";n.d(t,{n:()=>s,r:()=>l});var r=n(6540),a=n(4799),o=n(4848);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},1938:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(6540),a=n(763),o=n(2216),i=n(2814),s=n(6957),l=n(4799),u=n(4848);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,s.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[l,u]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(l)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:l})),[e,n,c,l])}function p(e){let{children:t}=e;const n=d();return(0,u.jsx)(c.Provider,{value:n,children:t})}function f(){const e=r.useContext(c);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},763:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>l,y_:()=>s});var r=n(6540),a=n(4799),o=n(4848);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,s]=o,l=(0,a.Be)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9503:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},2216:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(6540),a=n(1712);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,s]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){s(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},8630:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},6350:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},5215:(e,t,n)=>{"use strict";n.d(t,{B5:()=>E,C5:()=>p,Nr:()=>f,OF:()=>w,QB:()=>S,Vd:()=>k,Y:()=>y,fW:()=>x,w8:()=>h});var r=n(6540),a=n(6347),o=n(2831),i=n(4721),s=n(2780),l=n(3403),u=n(403),c=n(5167),d=n(260);const p=!!i.Gy;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.ys)(e,t),g=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||g(e.items,t))}function b(e,t){switch(e.type){case"category":return h(e,t)||e.items.some((e=>b(e,t)));case"link":return!e.unlisted||h(e,t);default:return!0}}function y(e,t){return(0,r.useMemo)((()=>e.filter((e=>b(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.ys)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.ys)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,s.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)((()=>(0,c.s)([t,n,a].filter(Boolean))),[t,n,a])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.s)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,a.zy)(),r=(0,l.r)(),i=t.routes,s=i.find((e=>(0,a.B6)(n.pathname,e)));if(!s)return null;const u=s.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.v)(i),sidebarName:u,sidebarItems:c}}},2814:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>l});var r=n(6540),a=n(6347),o=n(4799);function i(e){!function(e){const t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){const t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function l(e){return s((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},5167:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{X:()=>r,s:()=>a})},9817:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(6540),a=n(4164),o=n(1141),i=n(3363);function s(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(8180),u=n(7639);var c=n(4848);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const s=function(e){const{siteConfig:t}=(0,u.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.hH)(),p=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.A,{children:[t&&(0,c.jsx)("title",{children:s}),t&&(0,c.jsx)("meta",{property:"og:title",content:s}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,a.A)(i,t);return(0,c.jsxs)(p.Provider,{value:s,children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("html",{className:s})}),n]})}function m(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,a.A)(r,o),children:t})}},4799:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>s,_q:()=>i,dV:()=>l,fM:()=>c});var r=n(6540),a=n(6494),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,a.A)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},260:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(6540),a=n(2413),o=n(7639);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.A,baseUrl:e})),[e])}},4245:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>c,a_:()=>m,gk:()=>g});var r=n(6540),a=n(1712),o=n(1062),i=n(6494),s=n(4799),l=n(4848);const u=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(u.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(u);if(null==e)throw new s.dV("ScrollControllerProvider");return e}const p=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(p()),o=(0,s._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function m(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.A)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function g(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},1482:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>a});n(7639);const r="default";function a(e,t){return`docs-${e}-${t}`}},9900:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>c,Dv:()=>d});var r=n(6540);const a=JSON.parse('{"N":"localStorage","M":""}'),o=a.N;function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function s(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const u={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){const n=`${e}${a.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const r=s(t?.persistence);return null===r?u:{get:()=>{try{return r.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=r.getItem(n);r.setItem(n,e),i({key:n,oldValue:t,newValue:e,storage:r})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=r.getItem(n);r.removeItem(n),i({key:n,oldValue:e,newValue:null,storage:r})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?u:c(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},2098:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(7639),a=n(6347),o=n(4609);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.A)(),{pathname:l}=(0,a.zy)(),u=(0,o.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),c=s===i?e:e.replace(`/${s}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},4067:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(4799);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6957:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(7639);function a(){return(0,r.A)().siteConfig.themeConfig}},4356:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(835);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),s="/"===i||i===r?i:(l=i,n?a(l):o(l));var l;return e.replace(i,s)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o},8274:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},4609:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(4356);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return a.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return a.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return a.removeTrailingSlash}});var o=n(835);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return o.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return o.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return o.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return o.removePrefix}});var i=n(8274);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},835:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1132:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var r=n(4784),a=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},o=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{}).target,t=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(b.container)if(b.container instanceof Object)t=(e=a({},e,b.container)).width-e.left-e.right-2*b.margin,n=e.height-e.top-e.bottom-2*b.margin;else{var r=(i(b.container)?b.container:document.querySelector(b.container)).getBoundingClientRect(),o=r.width,l=r.height,u=r.left,c=r.top;e=a({},e,{width:o,height:l,left:u,top:c})}t=t||e.width-2*b.margin,n=n||e.height-2*b.margin;var d=y.zoomedHd||y.original,p=s(d)?t:d.naturalWidth||t,f=s(d)?n:d.naturalHeight||n,m=d.getBoundingClientRect(),g=m.top,h=m.left,v=m.width,w=m.height,k=Math.min(Math.max(v,p),t)/v,x=Math.min(Math.max(w,f),n)/w,S=Math.min(k,x),E="scale("+S+") translate3d("+((t-v)/2-h+b.margin+e.left)/S+"px, "+((n-w)/2-g+b.margin+e.top)/S+"px, 0)";y.zoomed.style.transform=E,y.zoomedHd&&(y.zoomedHd.style.transform=E)};return new r((function(n){if(e&&-1===f.indexOf(e))n(w);else{if(y.zoomed)n(w);else{if(e)y.original=e;else{if(!(f.length>0))return void n(w);var r=f;y.original=r[0]}if(y.original.dispatchEvent(u("medium-zoom:open",{detail:{zoom:w}})),h=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,g=!0,y.zoomed=function(e){var t=e.getBoundingClientRect(),n=t.top,r=t.left,a=t.width,o=t.height,i=e.cloneNode(),s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,l=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return i.removeAttribute("id"),i.style.position="absolute",i.style.top=n+s+"px",i.style.left=r+l+"px",i.style.width=a+"px",i.style.height=o+"px",i.style.transform="",i}(y.original),document.body.appendChild(v),b.template){var a=i(b.template)?b.template:document.querySelector(b.template);y.template=document.createElement("div"),y.template.appendChild(a.content.cloneNode(!0)),document.body.appendChild(y.template)}if(y.original.parentElement&&"PICTURE"===y.original.parentElement.tagName&&y.original.currentSrc&&(y.zoomed.src=y.original.currentSrc),document.body.appendChild(y.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),y.original.classList.add("medium-zoom-image--hidden"),y.zoomed.classList.add("medium-zoom-image--opened"),y.zoomed.addEventListener("click",d),y.zoomed.addEventListener("transitionend",(function e(){g=!1,y.zoomed.removeEventListener("transitionend",e),y.original.dispatchEvent(u("medium-zoom:opened",{detail:{zoom:w}})),n(w)})),y.original.getAttribute("data-zoom-src")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("srcset"),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading"),y.zoomedHd.src=y.zoomed.getAttribute("data-zoom-src"),y.zoomedHd.onerror=function(){clearInterval(o),console.warn("Unable to reach the zoom image target "+y.zoomedHd.src),y.zoomedHd=null,t()};var o=setInterval((function(){y.zoomedHd.complete&&(clearInterval(o),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",d),document.body.appendChild(y.zoomedHd),t())}),10)}else if(y.original.hasAttribute("srcset")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading");var s=y.zoomedHd.addEventListener("load",(function(){y.zoomedHd.removeEventListener("load",s),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",d),document.body.appendChild(y.zoomedHd),t()}))}else t()}}}))},d=function(){return new r((function(e){if(!g&&y.original){g=!0,document.body.classList.remove("medium-zoom--opened"),y.zoomed.style.transform="",y.zoomedHd&&(y.zoomedHd.style.transform=""),y.template&&(y.template.style.transition="opacity 150ms",y.template.style.opacity=0),y.original.dispatchEvent(u("medium-zoom:close",{detail:{zoom:w}})),y.zoomed.addEventListener("transitionend",(function t(){y.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(y.zoomed),y.zoomedHd&&document.body.removeChild(y.zoomedHd),document.body.removeChild(v),y.zoomed.classList.remove("medium-zoom-image--opened"),y.template&&document.body.removeChild(y.template),g=!1,y.zoomed.removeEventListener("transitionend",t),y.original.dispatchEvent(u("medium-zoom:closed",{detail:{zoom:w}})),y.original=null,y.zoomed=null,y.zoomedHd=null,y.template=null,e(w)}))}else e(w)}))},p=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).target;return y.original?d():c({target:e})},f=[],m=[],g=!1,h=0,b=n,y={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?b=t:(t||"string"==typeof t)&&o(t);var v=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t}((b=a({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},b)).background);document.addEventListener("click",(function(e){var t=e.target;t!==v?-1!==f.indexOf(t)&&p({target:t}):d()})),document.addEventListener("keyup",(function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||d()})),document.addEventListener("scroll",(function(){if(!g&&y.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(h-e)>b.scrollOffset&&setTimeout(d,150)}})),window.addEventListener("resize",d);var w={open:c,close:d,toggle:p,update:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(v.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=a({},b.container,e.container)),e.template){var n=i(e.template)?e.template:document.querySelector(e.template);t.template=n}return b=a({},b,t),f.forEach((function(e){e.dispatchEvent(u("medium-zoom:update",{detail:{zoom:w}}))})),w},clone:function(){return e(a({},b,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}))},attach:o,detach:function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,l(t))}),[]):f;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(u("medium-zoom:detach",{detail:{zoom:w}}))})),f=f.filter((function(e){return-1===r.indexOf(e)})),w},on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),m.push({type:"medium-zoom:"+e,listener:t,options:n}),w},off:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),m=m.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),w},getOptions:function(){return b},getImages:function(){return f},getZoomedImage:function(){return y.original}};return w},{themeConfig:d}=r.A;function p(e){var t,n;return document.querySelector('html[data-theme="dark"]')?(null===(t=e.background)||void 0===t?void 0:t.dark)||"rgb(50, 50, 50)":(null===(n=e.background)||void 0===n?void 0:n.light)||"rgb(255, 255, 255)"}const f=function(){if("undefined"==typeof window)return null;let e;const{zoom:t}=d,{selector:n=".markdown img",config:r={}}=t||{};if(!t)return null;r.background=p(t);var a=new MutationObserver((function(){e&&e.update({background:p(t)})}));const o=document.querySelector("html");return a.observe(o,{attributes:!0,attributeFilter:["data-theme"]}),setTimeout((()=>{e&&e.detach(),e=c(n,r)}),1e3),{onRouteUpdate(){setTimeout((()=>{e&&e.detach(),e=c(n,r)}),1e3)}}}()},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>C,yJ:()=>f,sC:()=>T,AO:()=>p});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(1561);function l(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var s=l(t),g=l(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,s],c=0;(l=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},5300:(e,t,n)=>{"use strict";n.r(t)},8252:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(u,i(e,c,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5302:(e,t,n)=>{var r=n(4634);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return s(o(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,s="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var m=e[i],g=n[2],h=n[3],b=n[4],y=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,_=b||y;r.push({name:h||o++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+l(E)+"]+?"})}}return i{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=o.length);l++){var u=s[l];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),y=[];g&&y.push.apply(y,i([g])),y.push(h),b&&y.push.apply(y,i([b])),"string"==typeof u?s.splice.apply(s,[l,1].concat(y)):u.content=y}}else u.content&&i(u.content)}return s}(n.tokens)}}}})}(Prism)},1617:(e,t,n)=>{var r={"./prism-bash":7022,"./prism-json":2514};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=1617},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),a=n(9982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n