diff --git a/404.html b/404.html index 4a8b7fbe..974de69a 100644 --- a/404.html +++ b/404.html @@ -4,8 +4,8 @@ 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.

diff --git a/assets/images/ideal-img/3F-result-in-ascii.40566be.600.png b/assets/images/ideal-img/3F-result-in-ascii.40566be.600.png deleted file mode 100644 index 537e64b9..00000000 Binary files a/assets/images/ideal-img/3F-result-in-ascii.40566be.600.png and /dev/null differ diff --git a/assets/images/ideal-img/3F-result-in-ascii.8f086ec.300.png b/assets/images/ideal-img/3F-result-in-ascii.8f086ec.300.png deleted file mode 100644 index 7a5202a7..00000000 Binary files a/assets/images/ideal-img/3F-result-in-ascii.8f086ec.300.png and /dev/null differ diff --git a/assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.0d17aeb.300.jpg b/assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.0d17aeb.300.jpg deleted file mode 100644 index 78cca108..00000000 Binary files a/assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.0d17aeb.300.jpg and /dev/null differ diff --git a/assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.7d4f4c8.600.jpg b/assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.7d4f4c8.600.jpg deleted file mode 100644 index a91c7efc..00000000 Binary files a/assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.7d4f4c8.600.jpg and /dev/null differ diff --git a/assets/images/ideal-img/Downlink-TTN-get-fw.208579d.600.png b/assets/images/ideal-img/Downlink-TTN-get-fw.208579d.600.png deleted file mode 100644 index 1ffb1d0c..00000000 Binary files a/assets/images/ideal-img/Downlink-TTN-get-fw.208579d.600.png and /dev/null differ diff --git a/assets/images/ideal-img/Downlink-TTN-get-fw.2856aac.300.png b/assets/images/ideal-img/Downlink-TTN-get-fw.2856aac.300.png deleted file mode 100644 index a5e7b259..00000000 Binary files a/assets/images/ideal-img/Downlink-TTN-get-fw.2856aac.300.png and /dev/null differ diff --git a/assets/images/ideal-img/Hybrid-Connectivity-highRes.5657b49.300.png b/assets/images/ideal-img/Hybrid-Connectivity-highRes.5657b49.300.png deleted file mode 100644 index f9e653d1..00000000 Binary files a/assets/images/ideal-img/Hybrid-Connectivity-highRes.5657b49.300.png and /dev/null differ diff --git a/assets/images/ideal-img/Hybrid-Connectivity-highRes.59c994d.600.png b/assets/images/ideal-img/Hybrid-Connectivity-highRes.59c994d.600.png deleted file mode 100644 index 81c82bfe..00000000 Binary files a/assets/images/ideal-img/Hybrid-Connectivity-highRes.59c994d.600.png and /dev/null differ diff --git a/assets/images/ideal-img/Hybrid-Connectivity-highRes.5c8d911.900.png b/assets/images/ideal-img/Hybrid-Connectivity-highRes.5c8d911.900.png deleted file mode 100644 index 37fea3a6..00000000 Binary files a/assets/images/ideal-img/Hybrid-Connectivity-highRes.5c8d911.900.png and /dev/null differ diff --git a/assets/images/ideal-img/IMG_0368.0bfd19c.2432.jpg b/assets/images/ideal-img/IMG_0368.0bfd19c.2432.jpg new file mode 100644 index 00000000..eb066677 Binary files /dev/null and b/assets/images/ideal-img/IMG_0368.0bfd19c.2432.jpg differ diff --git a/assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg b/assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg new file mode 100644 index 00000000..2fb17064 Binary files /dev/null and b/assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg differ diff --git a/assets/images/ideal-img/IMG_0368.498cdc6.4032.jpg b/assets/images/ideal-img/IMG_0368.498cdc6.4032.jpg new file mode 100644 index 00000000..64cdf47a Binary files /dev/null and b/assets/images/ideal-img/IMG_0368.498cdc6.4032.jpg differ diff --git a/assets/images/ideal-img/IMG_0368.5016473.600.jpg b/assets/images/ideal-img/IMG_0368.5016473.600.jpg deleted file mode 100644 index 6b649b1f..00000000 Binary files a/assets/images/ideal-img/IMG_0368.5016473.600.jpg and /dev/null differ diff --git a/assets/images/ideal-img/IMG_0368.5b636ae.1200.jpg b/assets/images/ideal-img/IMG_0368.5b636ae.1200.jpg deleted file mode 100644 index 266ddcf6..00000000 Binary files a/assets/images/ideal-img/IMG_0368.5b636ae.1200.jpg and /dev/null differ diff --git a/assets/images/ideal-img/IMG_0368.65bcf77.900.jpg b/assets/images/ideal-img/IMG_0368.65bcf77.900.jpg deleted file mode 100644 index 3bc1837c..00000000 Binary files a/assets/images/ideal-img/IMG_0368.65bcf77.900.jpg and /dev/null differ diff --git a/assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg b/assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg deleted file mode 100644 index 6022cbfd..00000000 Binary files a/assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg and /dev/null differ diff --git a/assets/images/ideal-img/IMG_0368.c3f2dfd.3264.jpg b/assets/images/ideal-img/IMG_0368.c3f2dfd.3264.jpg new file mode 100644 index 00000000..5df23b9f Binary files /dev/null and b/assets/images/ideal-img/IMG_0368.c3f2dfd.3264.jpg differ diff --git a/assets/images/ideal-img/Lobaro-Config-in-Log.205e05f.3152.png b/assets/images/ideal-img/Lobaro-Config-in-Log.205e05f.3152.png new file mode 100644 index 00000000..7f8a1d28 Binary files /dev/null and b/assets/images/ideal-img/Lobaro-Config-in-Log.205e05f.3152.png differ diff --git a/assets/images/ideal-img/Lobaro-Config-in-Log.2d179d4.300.png b/assets/images/ideal-img/Lobaro-Config-in-Log.2d179d4.300.png deleted file mode 100644 index aab9aa61..00000000 Binary files a/assets/images/ideal-img/Lobaro-Config-in-Log.2d179d4.300.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png b/assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png new file mode 100644 index 00000000..c83c6f88 Binary files /dev/null and b/assets/images/ideal-img/Lobaro-Config-in-Log.c00b17c.1600.png differ diff --git a/assets/images/ideal-img/Lobaro-Config-in-Log.c94c9bf.900.png b/assets/images/ideal-img/Lobaro-Config-in-Log.c94c9bf.900.png deleted file mode 100644 index 3ce13ea3..00000000 Binary files a/assets/images/ideal-img/Lobaro-Config-in-Log.c94c9bf.900.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-Config-in-Log.cc600dd.600.png b/assets/images/ideal-img/Lobaro-Config-in-Log.cc600dd.600.png deleted file mode 100644 index 11c11dc5..00000000 Binary files a/assets/images/ideal-img/Lobaro-Config-in-Log.cc600dd.600.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-Config-in-Log.f7e3cdc.2432.png b/assets/images/ideal-img/Lobaro-Config-in-Log.f7e3cdc.2432.png new file mode 100644 index 00000000..8b1672f6 Binary files /dev/null and b/assets/images/ideal-img/Lobaro-Config-in-Log.f7e3cdc.2432.png differ diff --git a/assets/images/ideal-img/Lobaro-Config-in-Log.faaf604.1200.png b/assets/images/ideal-img/Lobaro-Config-in-Log.faaf604.1200.png deleted file mode 100644 index 9593ed5c..00000000 Binary files a/assets/images/ideal-img/Lobaro-Config-in-Log.faaf604.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0380da5.300.jpg b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0380da5.300.jpg deleted file mode 100644 index fa42f24b..00000000 Binary files a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0380da5.300.jpg and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0b8f4f0.900.jpg b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0b8f4f0.900.jpg deleted file mode 100644 index 39fefe9b..00000000 Binary files a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0b8f4f0.900.jpg and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.164d51e.1200.jpg b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.164d51e.1200.jpg deleted file mode 100644 index 112fdaa2..00000000 Binary files a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.164d51e.1200.jpg and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.800dc32.1600.jpg b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.800dc32.1600.jpg new file mode 100644 index 00000000..05b289cd Binary files /dev/null and b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.800dc32.1600.jpg differ diff --git a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.961f5b7.1885.jpg b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.961f5b7.1885.jpg new file mode 100644 index 00000000..1d6e26c5 Binary files /dev/null and b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.961f5b7.1885.jpg differ diff --git a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.dac8c66.600.jpg b/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.dac8c66.600.jpg deleted file mode 100644 index cff82d79..00000000 Binary files a/assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.dac8c66.600.jpg and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-Platform-wmbus.02a0665.600.png b/assets/images/ideal-img/Lobaro-Platform-wmbus.02a0665.600.png deleted file mode 100644 index 8d9fbbd6..00000000 Binary files a/assets/images/ideal-img/Lobaro-Platform-wmbus.02a0665.600.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-Platform-wmbus.1938ddd.2432.png b/assets/images/ideal-img/Lobaro-Platform-wmbus.1938ddd.2432.png new file mode 100644 index 00000000..143daba5 Binary files /dev/null and b/assets/images/ideal-img/Lobaro-Platform-wmbus.1938ddd.2432.png differ diff --git a/assets/images/ideal-img/Lobaro-Platform-wmbus.23f0a4a.900.png b/assets/images/ideal-img/Lobaro-Platform-wmbus.23f0a4a.900.png deleted file mode 100644 index 418dc61d..00000000 Binary files a/assets/images/ideal-img/Lobaro-Platform-wmbus.23f0a4a.900.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-Platform-wmbus.2d6a1ca.1600.png b/assets/images/ideal-img/Lobaro-Platform-wmbus.2d6a1ca.1600.png new file mode 100644 index 00000000..6db8cff9 Binary files /dev/null and b/assets/images/ideal-img/Lobaro-Platform-wmbus.2d6a1ca.1600.png differ diff --git a/assets/images/ideal-img/Lobaro-Platform-wmbus.3859f56.1200.png b/assets/images/ideal-img/Lobaro-Platform-wmbus.3859f56.1200.png deleted file mode 100644 index 364dba7c..00000000 Binary files a/assets/images/ideal-img/Lobaro-Platform-wmbus.3859f56.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro-Platform-wmbus.981fe03.2656.png b/assets/images/ideal-img/Lobaro-Platform-wmbus.981fe03.2656.png new file mode 100644 index 00000000..d75dbb36 Binary files /dev/null and b/assets/images/ideal-img/Lobaro-Platform-wmbus.981fe03.2656.png differ diff --git a/assets/images/ideal-img/Lobaro-Platform-wmbus.9905fb5.300.png b/assets/images/ideal-img/Lobaro-Platform-wmbus.9905fb5.300.png deleted file mode 100644 index 553399aa..00000000 Binary files a/assets/images/ideal-img/Lobaro-Platform-wmbus.9905fb5.300.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.18a3bd5.900.png b/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.18a3bd5.900.png deleted file mode 100644 index 8a443363..00000000 Binary files a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.18a3bd5.900.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.699e2d7.1200.png b/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.699e2d7.1200.png deleted file mode 100644 index fbe727ba..00000000 Binary files a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.699e2d7.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.c09dea3.600.png b/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.c09dea3.600.png deleted file mode 100644 index 8f921844..00000000 Binary files a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.c09dea3.600.png and /dev/null differ diff --git a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d276502.1224.png b/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d276502.1224.png new file mode 100644 index 00000000..4cec538a Binary files /dev/null and b/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d276502.1224.png differ diff --git a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d6a9d01.300.png b/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d6a9d01.300.png deleted file mode 100644 index 1bb12a63..00000000 Binary files a/assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d6a9d01.300.png and /dev/null differ diff --git a/assets/images/ideal-img/adapter1low.f34a141.300.jpg b/assets/images/ideal-img/adapter1low.f34a141.300.jpg deleted file mode 100644 index 90517df3..00000000 Binary files a/assets/images/ideal-img/adapter1low.f34a141.300.jpg and /dev/null differ diff --git a/assets/images/ideal-img/config-adapter-schematic.0152809.600.png b/assets/images/ideal-img/config-adapter-schematic.0152809.600.png deleted file mode 100644 index 23300fcf..00000000 Binary files a/assets/images/ideal-img/config-adapter-schematic.0152809.600.png and /dev/null differ diff --git a/assets/images/ideal-img/config-adapter-schematic.320582c.1399.png b/assets/images/ideal-img/config-adapter-schematic.320582c.1399.png new file mode 100644 index 00000000..f8cc5cd4 Binary files /dev/null and b/assets/images/ideal-img/config-adapter-schematic.320582c.1399.png differ diff --git a/assets/images/ideal-img/config-adapter-schematic.413f5f7.300.png b/assets/images/ideal-img/config-adapter-schematic.413f5f7.300.png deleted file mode 100644 index 8da431c2..00000000 Binary files a/assets/images/ideal-img/config-adapter-schematic.413f5f7.300.png and /dev/null differ diff --git a/assets/images/ideal-img/config-adapter-schematic.58af7f3.900.png b/assets/images/ideal-img/config-adapter-schematic.58af7f3.900.png deleted file mode 100644 index 81c2ece1..00000000 Binary files a/assets/images/ideal-img/config-adapter-schematic.58af7f3.900.png and /dev/null differ diff --git a/assets/images/ideal-img/config-adapter-schematic.e65cd5e.1200.png b/assets/images/ideal-img/config-adapter-schematic.e65cd5e.1200.png deleted file mode 100644 index f3a15974..00000000 Binary files a/assets/images/ideal-img/config-adapter-schematic.e65cd5e.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/configuration-example-lobaro-platform.35ae3a7.300.png b/assets/images/ideal-img/configuration-example-lobaro-platform.35ae3a7.300.png deleted file mode 100644 index 452a55e6..00000000 Binary files a/assets/images/ideal-img/configuration-example-lobaro-platform.35ae3a7.300.png and /dev/null differ diff --git a/assets/images/ideal-img/configuration-example-lobaro-platform.446b0a4.1200.png b/assets/images/ideal-img/configuration-example-lobaro-platform.446b0a4.1200.png deleted file mode 100644 index 0d33bb76..00000000 Binary files a/assets/images/ideal-img/configuration-example-lobaro-platform.446b0a4.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/configuration-example-lobaro-platform.46f51b5.600.png b/assets/images/ideal-img/configuration-example-lobaro-platform.46f51b5.600.png deleted file mode 100644 index 2208d9e3..00000000 Binary files a/assets/images/ideal-img/configuration-example-lobaro-platform.46f51b5.600.png and /dev/null differ diff --git a/assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png b/assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png new file mode 100644 index 00000000..cc0a0747 Binary files /dev/null and b/assets/images/ideal-img/configuration-example-lobaro-platform.92f33a7.1600.png differ diff --git a/assets/images/ideal-img/configuration-example-lobaro-platform.b3f9a4a.900.png b/assets/images/ideal-img/configuration-example-lobaro-platform.b3f9a4a.900.png deleted file mode 100644 index 549ae4eb..00000000 Binary files a/assets/images/ideal-img/configuration-example-lobaro-platform.b3f9a4a.900.png and /dev/null differ diff --git a/assets/images/ideal-img/configuration-example-lobaro-platform.f0d41ff.2202.png b/assets/images/ideal-img/configuration-example-lobaro-platform.f0d41ff.2202.png new file mode 100644 index 00000000..f2eecec4 Binary files /dev/null and b/assets/images/ideal-img/configuration-example-lobaro-platform.f0d41ff.2202.png differ diff --git a/assets/images/ideal-img/lorawan-downlink-3F-answer.25fff62.600.png b/assets/images/ideal-img/lorawan-downlink-3F-answer.25fff62.600.png deleted file mode 100644 index d2fd8590..00000000 Binary files a/assets/images/ideal-img/lorawan-downlink-3F-answer.25fff62.600.png and /dev/null differ diff --git a/assets/images/ideal-img/lorawan-downlink-3F-answer.29cb7ea.900.png b/assets/images/ideal-img/lorawan-downlink-3F-answer.29cb7ea.900.png deleted file mode 100644 index 49439072..00000000 Binary files a/assets/images/ideal-img/lorawan-downlink-3F-answer.29cb7ea.900.png and /dev/null differ diff --git a/assets/images/ideal-img/lorawan-downlink-3F-answer.31d1046.1200.png b/assets/images/ideal-img/lorawan-downlink-3F-answer.31d1046.1200.png deleted file mode 100644 index 82990327..00000000 Binary files a/assets/images/ideal-img/lorawan-downlink-3F-answer.31d1046.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/lorawan-downlink-3F-answer.4bc9c29.1378.png b/assets/images/ideal-img/lorawan-downlink-3F-answer.4bc9c29.1378.png new file mode 100644 index 00000000..39a7b569 Binary files /dev/null and b/assets/images/ideal-img/lorawan-downlink-3F-answer.4bc9c29.1378.png differ diff --git a/assets/images/ideal-img/lorawan-downlink-3F-answer.89a212a.300.png b/assets/images/ideal-img/lorawan-downlink-3F-answer.89a212a.300.png deleted file mode 100644 index 14be83de..00000000 Binary files a/assets/images/ideal-img/lorawan-downlink-3F-answer.89a212a.300.png and /dev/null differ diff --git a/assets/images/ideal-img/lorawan-downlink-3F-downlink.13ce5f6.300.png b/assets/images/ideal-img/lorawan-downlink-3F-downlink.13ce5f6.300.png deleted file mode 100644 index f04e49cd..00000000 Binary files a/assets/images/ideal-img/lorawan-downlink-3F-downlink.13ce5f6.300.png and /dev/null differ diff --git a/assets/images/ideal-img/lorawan-downlink-3F-downlink.ac16a73.600.png b/assets/images/ideal-img/lorawan-downlink-3F-downlink.ac16a73.600.png deleted file mode 100644 index aa2a1bbf..00000000 Binary files a/assets/images/ideal-img/lorawan-downlink-3F-downlink.ac16a73.600.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-flash.6eb2cd7.600.png b/assets/images/ideal-img/tool-config-flash.6eb2cd7.600.png deleted file mode 100644 index 6d9c872d..00000000 Binary files a/assets/images/ideal-img/tool-config-flash.6eb2cd7.600.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-flash.9a69a9b.300.png b/assets/images/ideal-img/tool-config-flash.9a69a9b.300.png deleted file mode 100644 index 058fc554..00000000 Binary files a/assets/images/ideal-img/tool-config-flash.9a69a9b.300.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-flash.c404633.1200.png b/assets/images/ideal-img/tool-config-flash.c404633.1200.png deleted file mode 100644 index 68cc6d84..00000000 Binary files a/assets/images/ideal-img/tool-config-flash.c404633.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-flash.d81da13.900.png b/assets/images/ideal-img/tool-config-flash.d81da13.900.png deleted file mode 100644 index b24aa445..00000000 Binary files a/assets/images/ideal-img/tool-config-flash.d81da13.900.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-flash.ea677cb.1228.png b/assets/images/ideal-img/tool-config-flash.ea677cb.1228.png new file mode 100644 index 00000000..7134f5ec Binary files /dev/null and b/assets/images/ideal-img/tool-config-flash.ea677cb.1228.png differ diff --git a/assets/images/ideal-img/tool-config-loaded.4114a82.600.png b/assets/images/ideal-img/tool-config-loaded.4114a82.600.png deleted file mode 100644 index 46ff455a..00000000 Binary files a/assets/images/ideal-img/tool-config-loaded.4114a82.600.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-loaded.a03c7c0.1200.png b/assets/images/ideal-img/tool-config-loaded.a03c7c0.1200.png deleted file mode 100644 index 9e585dd4..00000000 Binary files a/assets/images/ideal-img/tool-config-loaded.a03c7c0.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-loaded.aa13a16.900.png b/assets/images/ideal-img/tool-config-loaded.aa13a16.900.png deleted file mode 100644 index 9ccc374b..00000000 Binary files a/assets/images/ideal-img/tool-config-loaded.aa13a16.900.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-loaded.c0dac26.300.png b/assets/images/ideal-img/tool-config-loaded.c0dac26.300.png deleted file mode 100644 index f0a5167f..00000000 Binary files a/assets/images/ideal-img/tool-config-loaded.c0dac26.300.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-loaded.ecd8f96.1248.png b/assets/images/ideal-img/tool-config-loaded.ecd8f96.1248.png new file mode 100644 index 00000000..38082b79 Binary files /dev/null and b/assets/images/ideal-img/tool-config-loaded.ecd8f96.1248.png differ diff --git a/assets/images/ideal-img/tool-config-logs.06701a1.900.png b/assets/images/ideal-img/tool-config-logs.06701a1.900.png deleted file mode 100644 index 37c97def..00000000 Binary files a/assets/images/ideal-img/tool-config-logs.06701a1.900.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-logs.1fd3d4d.1200.png b/assets/images/ideal-img/tool-config-logs.1fd3d4d.1200.png deleted file mode 100644 index b815e8bc..00000000 Binary files a/assets/images/ideal-img/tool-config-logs.1fd3d4d.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-logs.405ab33.1458.png b/assets/images/ideal-img/tool-config-logs.405ab33.1458.png new file mode 100644 index 00000000..ff0ce148 Binary files /dev/null and b/assets/images/ideal-img/tool-config-logs.405ab33.1458.png differ diff --git a/assets/images/ideal-img/tool-config-logs.af58ae6.600.png b/assets/images/ideal-img/tool-config-logs.af58ae6.600.png deleted file mode 100644 index 1b8aa498..00000000 Binary files a/assets/images/ideal-img/tool-config-logs.af58ae6.600.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-config-logs.e732294.300.png b/assets/images/ideal-img/tool-config-logs.e732294.300.png deleted file mode 100644 index e64e93ff..00000000 Binary files a/assets/images/ideal-img/tool-config-logs.e732294.300.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-connect-auto.478ac37.1200.png b/assets/images/ideal-img/tool-connect-auto.478ac37.1200.png deleted file mode 100644 index 647ffad1..00000000 Binary files a/assets/images/ideal-img/tool-connect-auto.478ac37.1200.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-connect-auto.8e919af.600.png b/assets/images/ideal-img/tool-connect-auto.8e919af.600.png deleted file mode 100644 index 005dfbf6..00000000 Binary files a/assets/images/ideal-img/tool-connect-auto.8e919af.600.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-connect-auto.9baaf14.900.png b/assets/images/ideal-img/tool-connect-auto.9baaf14.900.png deleted file mode 100644 index 04d5818d..00000000 Binary files a/assets/images/ideal-img/tool-connect-auto.9baaf14.900.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-connect-auto.bec75f4.1224.png b/assets/images/ideal-img/tool-connect-auto.bec75f4.1224.png new file mode 100644 index 00000000..834d76d1 Binary files /dev/null and b/assets/images/ideal-img/tool-connect-auto.bec75f4.1224.png differ diff --git a/assets/images/ideal-img/tool-connect-auto.e6e9dcb.300.png b/assets/images/ideal-img/tool-connect-auto.e6e9dcb.300.png deleted file mode 100644 index 895b4b2d..00000000 Binary files a/assets/images/ideal-img/tool-connect-auto.e6e9dcb.300.png and /dev/null differ diff --git a/assets/images/ideal-img/tool-show-logfiles.3584076.300.png b/assets/images/ideal-img/tool-show-logfiles.3584076.300.png deleted file mode 100644 index 16bb88d2..00000000 Binary files a/assets/images/ideal-img/tool-show-logfiles.3584076.300.png and /dev/null differ diff --git a/assets/images/ideal-img/ttn-downlink.6f8f05b.600.png b/assets/images/ideal-img/ttn-downlink.6f8f05b.600.png deleted file mode 100644 index f378cdfc..00000000 Binary files a/assets/images/ideal-img/ttn-downlink.6f8f05b.600.png and /dev/null differ diff --git a/assets/images/ideal-img/ttn-downlink.7f4d85d.900.png b/assets/images/ideal-img/ttn-downlink.7f4d85d.900.png deleted file mode 100644 index 7823730b..00000000 Binary files a/assets/images/ideal-img/ttn-downlink.7f4d85d.900.png and /dev/null differ diff --git a/assets/images/ideal-img/ttn-downlink.bd44598.300.png b/assets/images/ideal-img/ttn-downlink.bd44598.300.png deleted file mode 100644 index 25d422d5..00000000 Binary files a/assets/images/ideal-img/ttn-downlink.bd44598.300.png and /dev/null differ diff --git a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.29c352d.1600.jpg b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.29c352d.1600.jpg new file mode 100644 index 00000000..f0c86327 Binary files /dev/null and b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.29c352d.1600.jpg differ diff --git a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.4bfae49.600.jpg b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.4bfae49.600.jpg deleted file mode 100644 index 26975a22..00000000 Binary files a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.4bfae49.600.jpg and /dev/null differ diff --git a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.6388cb0.900.jpg b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.6388cb0.900.jpg deleted file mode 100644 index 9b0b6097..00000000 Binary files a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.6388cb0.900.jpg and /dev/null differ diff --git a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.c2ef6a1.1200.jpg b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.c2ef6a1.1200.jpg deleted file mode 100644 index aba1161e..00000000 Binary files a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.c2ef6a1.1200.jpg and /dev/null differ diff --git a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cf2dfc6.1761.jpg b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cf2dfc6.1761.jpg new file mode 100644 index 00000000..73bf886e Binary files /dev/null and b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cf2dfc6.1761.jpg differ diff --git a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cfbd48e.300.jpg b/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cfbd48e.300.jpg deleted file mode 100644 index 53f3abb0..00000000 Binary files a/assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cfbd48e.300.jpg and /dev/null differ diff --git a/assets/js/01233d77.3c26db8f.js b/assets/js/01233d77.3c26db8f.js new file mode 100644 index 00000000..e9b36858 --- /dev/null +++ b/assets/js/01233d77.3c26db8f.js @@ -0,0 +1 @@ +"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/01233d77.a4933008.js b/assets/js/01233d77.a4933008.js deleted file mode 100644 index 48467418..00000000 --- a/assets/js/01233d77.a4933008.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:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var r=n(4848),o=n(8453);const s={sidebar_position:1},a="Lobaro IoT Platform",i={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+/"}},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:()=>a,x:()=>i});var r=n(6540);const o={},s=r.createContext(o);function a(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(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 new file mode 100644 index 00000000..9e0a6c04 --- /dev/null +++ b/assets/js/0b02251e.10f23387.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 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.edfd920f.js b/assets/js/0b02251e.edfd920f.js deleted file mode 100644 index 585a10f3..00000000 --- a/assets/js/0b02251e.edfd920f.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":"link","label":"Lobaro IoT Platform","href":"/iot/cloud/platform/","docId":"cloud/platform/index","unlisted":false}],"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":"link","label":"Lobaro IoT Platform","href":"/iot/cloud/platform/","docId":"cloud/platform/index","unlisted":false}],"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"},"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/4ddd2498.32ea86e2.js b/assets/js/4ddd2498.32ea86e2.js new file mode 100644 index 00000000..bffce694 --- /dev/null +++ b/assets/js/4ddd2498.32ea86e2.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[1110],{7366:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/3F-result-in-ascii.c89288d.619.png 619w",images:[{path:i.p+"assets/images/ideal-img/3F-result-in-ascii.c89288d.619.png",width:619,height:648}],src:i.p+"assets/images/ideal-img/3F-result-in-ascii.c89288d.619.png",toString:function(){return i.p+"assets/images/ideal-img/3F-result-in-ascii.c89288d.619.png"},placeholder:void 0,width:619,height:648},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABDUlEQVR4nCXOzU/CMBiA8f7/B4/eTSQSNHLQSDwoJhrR3fTAh4DuA9aObv0eHeu71qDJL8/5QUIqIRQXSiptdK20aZqDc9C2znuPKEkYzRhNJcNaEC2I4ljyXHJca4rI9qvAsWS5NdRILKrUGmrNztalYgkaj0fnF73BVX81j1S5YGTKixkvjmXFFJHtIksWaTwn2zUv04omvMok24gqE+UPsjUH8G3rjjsOALoQQvA+hNBYgWpTAjhwhw7aDlzX/Wu972zNkKHJge+sxtBQsHSvsJH5HyyrGN1/3vSi3kv0FL29TibPRb7cq43miRGZLNfo9vHsdHhyN+w/DK9Hl4PVx3tF4wKvd+SbkuUv4kcPHFiK110AAAAASUVORK5CYII="}},8207:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.b7f06e1.882.png 882w",images:[{path:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.b7f06e1.882.png",width:882,height:660}],src:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.b7f06e1.882.png",toString:function(){return i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.b7f06e1.882.png"},placeholder:void 0,width:882,height:660},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAIAAAC+zks0AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAcUlEQVR4nG2MMQ7CMBAE/f9v0fAMilAgpAT7Ysu+27tFcYEAZTTdSJNIam35du8vcQYAdwcQESSTmW7PteXKM5KaSd1V1d1P8iili9h8xuQnN9nrfpwj/p3znEcTNfQBA789ctna9bI8ljUCZgrYR5JvSz7Nn8r84TIAAAAASUVORK5CYII="}},2571:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.4bc9c29.1378.png 1378w",images:[{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.4bc9c29.1378.png",width:1378,height:31}],src:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.4bc9c29.1378.png",toString:function(){return i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.4bc9c29.1378.png"},placeholder:void 0,width:1378,height:31},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAABCAIAAABol6gpAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAKklEQVR4nAEfAOD/APLy8vDw8Pb29vLx8fH09O3Z2ea3t/Du7vHy8vPz86+eG6M4AoFrAAAAAElFTkSuQmCC"}},4513:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.80f3eb1.634.png 634w",images:[{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.80f3eb1.634.png",width:634,height:45}],src:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.80f3eb1.634.png",toString:function(){return i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.80f3eb1.634.png"},placeholder:void 0,width:634,height:45},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAABCAIAAABol6gpAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAHklEQVR4nGP4+vXrly9fPsPAz58/ISLfvn379OkTALwKHKViCz9TAAAAAElFTkSuQmCC"}},9834:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/ttn-downlink.307b73d.1081.png 1081w",images:[{path:i.p+"assets/images/ideal-img/ttn-downlink.307b73d.1081.png",width:1081,height:370}],src:i.p+"assets/images/ideal-img/ttn-downlink.307b73d.1081.png",toString:function(){return i.p+"assets/images/ideal-img/ttn-downlink.307b73d.1081.png"},placeholder:void 0,width:1081,height:370},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAYAAACqPZ51AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAS0lEQVR4nEXLUQqAMAwD0N3/lB5AUBHWpNsaaUEtPPKRtO3nJZCKiDLnFEmttT7urtZ7ryIHY4zK9F4+O6kGUAbIzAoMAn7ZbfehB1MfdZx0etnTAAAAAElFTkSuQmCC"}},587:(e,n,i)=>{"use strict";i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});var t=i(4848),o=i(8453);const a={sidebar_position:3,displayed_sidebar:"configurationSidebar",title:"LoRaWAN Downlink Config"},s="LoRaWAN Downlink Config",r={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",source:"@site/docs/configuration/lorawan-downlink-config.md",sourceDirName:"configuration",slug:"/configuration/lorawan-downlink-config",permalink:"/iot/configuration/lorawan-downlink-config",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/lorawan-downlink-config.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,displayed_sidebar:"configurationSidebar",title:"LoRaWAN Downlink Config"},sidebar:"configurationSidebar",previous:{title:"MBUS Reception Filtering",permalink:"/iot/configuration/meter-reception-filter-config"},next:{title:"CRON Configuration",permalink:"/iot/configuration/cron-configuration"}},d={},l=[{value:"Protocol Description",id:"protocol-description",level:2},{value:"Downlink Commands (Port 128)",id:"downlink-commands-port-128",level:3},{value:"?",id:"",level:4},{value:"g<name>",id:"gname",level:4},{value:"r<name> / r*",id:"rname--r",level:4},{value:"s<name>=<value>",id:"snamevalue",level:4},{value:"a<name>=<value>",id:"anamevalue",level:4},{value:"b",id:"b",level:4},{value:"w or wFORCE",id:"w-or-wforce",level:4},{value:"Examples",id:"examples",level:2},{value:"Changing device configuration",id:"changing-device-configuration",level:3},{value:"Downlink on TTN",id:"downlink-on-ttn",level:4},{value:"Getting the firmware version",id:"getting-the-firmware-version",level:3},{value:"Downlink on TTN",id:"downlink-on-ttn-1",level:4},{value:"Uplink on TTN",id:"uplink-on-ttn",level:4},{value:"Configure a device via script",id:"configure-a-device-via-script",level:3},{value:"Example configuration command to be send",id:"example-configuration-command-to-be-send",level:4},{value:"Curl Script for TTN",id:"curl-script-for-ttn",level:4},{value:"Chirpstack V3",id:"chirpstack-v3",level:4},{value:"Chirpstack V4",id:"chirpstack-v4",level:4}];function c(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components},{Image:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"lorawan-downlink-config",children:"LoRaWAN Downlink Config"}),"\n",(0,t.jsxs)(n.p,{children:["This article describes the technical details how to remotely configure Lobaro devices that are using ",(0,t.jsx)(n.strong,{children:"LoRaWAN"})," as\nupload technology."]}),"\n",(0,t.jsx)(n.p,{children:"IoT devices are often installed at places that are difficult to reach. If you need to change the settings of such a\ndevice it is often not easily possible to get physical access to attach a config adapter."}),"\n",(0,t.jsx)(n.p,{children:"Many of our devices support LoRaWAN remote configuration that allows you to change the configuration of the device by\nsending downlink messages."}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsx)(n.p,{children:"If you are using cellular IoT (NB-IoT, LTE-M) as communication technology any configuration updates are done in a\ndifferent way."})}),"\n",(0,t.jsx)(n.h2,{id:"protocol-description",children:"Protocol Description"}),"\n",(0,t.jsxs)(n.p,{children:["Lobaro LoRaWAN devices receive remote configuration commands as Downlinks on port 128. Responses to those commands will\nbe sent as Uplinks on ",(0,t.jsx)(n.code,{children:"Port 128"})," (and 129-131 for long responses). ",(0,t.jsx)(n.strong,{children:"The remote commands and their responses are all\nencoded in ASCII"}),", to make it easier for humans to use them. The ASCII string must be converted to hex or Base64\npayload bytes, depending on the used LoRaWAN network server."]}),"\n",(0,t.jsxs)(n.p,{children:["The first byte of a Downlink message on ",(0,t.jsx)(n.code,{children:"Port 128"})," contains a single character that identifies the command you want to\nsend. Some commands take a parameter following the command char."]}),"\n",(0,t.jsx)(n.p,{children:"The responses to a command start with the same character as the command followed by an optional parameter. If a command\nis unknown, or it fails for some reason, an error response is sent via Uplink that contains with a ! followed by a\nreadable error message."}),"\n",(0,t.jsx)(n.p,{children:"Changing configuration does nothing until you save the changes and reboot the device. The device has a safety feature\nthat prevents configurations that make the device unusable. A new configuration is tested in the first run after\nrebooting. Only after the device reaches a stable state will the configuration be adopted and used permanently. If a\nproblem occurs the device will restore its last stable connection and reboot. If the device uses OTAA (which we\nrecommend) the device will only adopt the new configuration only after a join request is accepted, to make sure the\nLoRaWAN parameters are correct. After a few failed attempts it will restore the previous configuration. This can take up\nto about 10 minutes."}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"Downlinks should only be used to a limited extent depending on the infrastructure. In the free version of TTN, the Fair\nuse policy says, that no more than 10 downlinks should be made. You also have to observe the regulations within the\nLimit of the duty cycle limitation. That is why downlinks are only to be carried out with caution and when absolutely\nnecessary. The number of possible characters that can be sent is limited by the respective spreading factor (With a SF\nof 12 only 51 characters)."})}),"\n",(0,t.jsx)(n.h3,{id:"downlink-commands-port-128",children:"Downlink Commands (Port 128)"}),"\n",(0,t.jsxs)(n.p,{children:["Configurations are normally communicated as downlinks and uplinks (responses) on ",(0,t.jsx)(n.code,{children:"Port 128"}),". For longer responses, that\ndon't can be send as single uplink on ",(0,t.jsx)(n.code,{children:"Port 128"}),", the ",(0,t.jsx)(n.code,{children:"Ports 129-131"})," are used. The first response part is sent\non ",(0,t.jsx)(n.code,{children:"Port 129"}),", the middle parts (if exist) on ",(0,t.jsx)(n.code,{children:"Port 130"})," and the last part on ",(0,t.jsx)(n.code,{children:"Port 131"}),". A stateful parser can\nconcatenate long responses based on Port and FCnt."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Char"}),(0,t.jsx)(n.th,{children:"Command"}),(0,t.jsx)(n.th,{children:"Parameter"}),(0,t.jsx)(n.th,{children:"HEX"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"?"}),(0,t.jsx)(n.td,{children:"Request firmware and version"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"None "})}),(0,t.jsx)(n.td,{children:"3F"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"a"}),(0,t.jsx)(n.td,{children:"Append to config parameter val"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"= "})}),(0,t.jsx)(n.td,{children:"61"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"b"}),(0,t.jsx)(n.td,{children:"Reboot device without saving"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"None "})}),(0,t.jsx)(n.td,{children:"62"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"g"}),(0,t.jsx)(n.td,{children:"Get config parameter value"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"Name of parameter"})}),(0,t.jsx)(n.td,{children:"67"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"r"}),(0,t.jsx)(n.td,{children:"Reset config parameter value"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"Name of parameter"})}),(0,t.jsx)(n.td,{children:"72"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"s"}),(0,t.jsx)(n.td,{children:"Set config parameter value"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"= "})}),(0,t.jsx)(n.td,{children:"73"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"S"}),(0,t.jsx)(n.td,{children:"Set config parameter value & Save and reboot"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"= "})}),(0,t.jsx)(n.td,{children:"53"}),(0,t.jsx)(n.td,{children:"Not supported on all devices"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"w"}),(0,t.jsx)(n.td,{children:"Save config and reboot device"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"None "})}),(0,t.jsx)(n.td,{children:"77"}),(0,t.jsx)(n.td,{})]})]})]}),"\n",(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"Depending on the firmware version not all commands might be supported on all devices.\nPlease refer to the manual of your product for more details."})}),"\n",(0,t.jsx)(n.h4,{id:"",children:(0,t.jsx)(n.code,{children:"?"})}),"\n",(0,t.jsx)(n.p,{children:"Request firmware and version. This command triggers the device to send what firmware it is running and in which version.\nThis can be used to test if the remote configuration is working."}),"\n",(0,t.jsx)(n.h4,{id:"gname",children:(0,t.jsx)(n.code,{children:"g"})}),"\n",(0,t.jsxs)(n.p,{children:["Get the value of the config parameter ",(0,t.jsx)(n.code,{children:""}),". This command makes the device sent a response\ncontaining ",(0,t.jsx)(n.code,{children:"="})," as\nparameter giving you the current value of a configuration parameter."]}),"\n",(0,t.jsx)(n.h4,{id:"rname--r",children:(0,t.jsx)(n.code,{children:"r / r*"})}),"\n",(0,t.jsxs)(n.p,{children:["Reset config parameter ",(0,t.jsx)(n.code,{children:""})," to its default value. As a confirmation the device sends a response\ncontaining ",(0,t.jsx)(n.code,{children:"="}),", reporting the new value of the parameter.Sending the special value * will reset all config\nparameters."]}),"\n",(0,t.jsx)(n.h4,{id:"snamevalue",children:(0,t.jsx)(n.code,{children:"s="})}),"\n",(0,t.jsxs)(n.p,{children:["Set config parameter ",(0,t.jsx)(n.code,{children:""})," to ",(0,t.jsx)(n.code,{children:""}),". Sets the parameter to the value given in the parameter. As a confirmation it\nsends a response containing ",(0,t.jsx)(n.code,{children:"="}),", reporting the new value of the parameter."]}),"\n",(0,t.jsx)(n.h4,{id:"anamevalue",children:(0,t.jsx)(n.code,{children:"a="})}),"\n",(0,t.jsxs)(n.p,{children:["Append ",(0,t.jsx)(n.code,{children:""})," to the config parameter ",(0,t.jsx)(n.code,{children:""}),". This command appends the value given to the current value of the\nparameter. This is intended to allow setting values that are too long for a single Downlink message. As a confirmation\nit sends the length of the config parameter's value after the appending. Append works for config parameters of type\nstring."]}),"\n",(0,t.jsx)(n.h4,{id:"b",children:(0,t.jsx)(n.code,{children:"b"})}),"\n",(0,t.jsx)(n.p,{children:"Reboot device without saving. This command restarts the device. Any changes too the config that have been committed\nbefore will be lost! This command does not send a Response."}),"\n",(0,t.jsx)(n.h4,{id:"w-or-wforce",children:(0,t.jsx)(n.code,{children:"w or wFORCE"})}),"\n",(0,t.jsx)(n.p,{children:"Save config and reboot device. This command saves all configuration changes to a temporarily configuration and restarts\nthe device. Only if the device boots successfully and reaches normal operation mode is the new configuration made\npermanent. If any fatal configuration error occurs or if the LoRaWAN OTAA Join does not succeed, the previous\nconfiguration will be restored and the device restarted again. This command does not send a Response.If you add the\nspecial argument FORCE to the command, the configuration will be made permanent without testing the configuration."}),"\n",(0,t.jsxs)(n.admonition,{type:"danger",children:[(0,t.jsxs)(n.p,{children:["Using ",(0,t.jsx)(n.strong,{children:"wFORCE"})," can leave your device useless and unreachable!"]}),(0,t.jsxs)(n.p,{children:["Do not use ",(0,t.jsx)(n.strong,{children:"wFORCE"})," unless you have a very good reason. If the device is set to an invalid configuration it will no\nlonger\nbe reachable by the Network Server. From such a state it can only be recovered with physical access and a config\nadapter. It will also most likely drain the battery quickly."]})]}),"\n",(0,t.jsxs)(n.admonition,{type:"warning",children:[(0,t.jsxs)(n.p,{children:["For commands ",(0,t.jsx)(n.code,{children:"s"}),", ",(0,t.jsx)(n.code,{children:"S"})," and ",(0,t.jsx)(n.code,{children:"a"})," make sure the number of characters to send matches with the possibilities your devices\nspreading factor:"]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"SF 7 = 242 bytes max. LoRaWAN downlink payload"}),"\n",(0,t.jsx)(n.li,{children:"SF 12 = 51 bytes max. LoRaWAN downlink payload"}),"\n"]}),(0,t.jsx)(n.p,{children:"Consider splitting bigger configuration changed in multiple smaller downlinks."})]}),"\n",(0,t.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,t.jsx)(n.h3,{id:"changing-device-configuration",children:"Changing device configuration"}),"\n",(0,t.jsx)(n.p,{children:"The following is a short example of how you can update two configuration values remotely (that includes rebooting the\ndevice)."}),"\n",(0,t.jsx)(n.p,{children:"Most LoRaWAN devices (all that are running in Class A, which are by fast the most) can only be reached when they contact\nthe network. Network Servers (like The Things Network) provide a mechanism to enqueue messages for a specific device.\nThe messages will be sent as downlink the next time that device contacts the network. Normally, multiple messages can be\nenqueued and will all be transmitted as soon as possible. Please be advised that the gateways communicating with your\ndevice must respect their duty cycle, so there is a very limited amount of downlinks that can be sent for a given time (\ndownlinks are expensive)."}),"\n",(0,t.jsx)(n.p,{children:"For this example we want to set Time Synchronization to sync the internal clock every 10 days, and we want to deactivate\nAdaptive Date Rate (ADR). These are both LoRaWAN configuration parameters that are present on most devices (find details\nunder LoRaWAN Configuration), but you can of course also change parameters specific to your device, e.g. Modbus\nconfiguration or wMBus configuration, with this feature."}),"\n",(0,t.jsx)(n.p,{children:"We will need to send three commands:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"s"}),"TimeSync=10","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"set time synchronization to 10 day interval"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"s"}),"ADR=false","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"disable adaptive data rate"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"w"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"write changes to device configuration and reboot"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["The actual s-commands will of course differ for your case, but the w command at the end ",(0,t.jsx)(n.strong,{children:"must"})," always be the same."]}),"\n",(0,t.jsx)(n.p,{children:"After sending the final command, the device will reboot and try the new configuration. If the boot process and the\nconnection to the network are successful, the device will make the changes permanent. If there is a problem (if you\naccidentally set an invalid value, e.g. sADR=flase or if you changed your AppKey to wrong value and your OTAA fails),\nthe device will revert to the previous configuration."}),"\n",(0,t.jsx)(n.h4,{id:"downlink-on-ttn",children:"Downlink on TTN"}),"\n",(0,t.jsx)(n.p,{children:"How you sent your downlinks depends on the LoRaWAN Network Server you use to connect your devices. You will most likely\nneed to convert the commands (that are all ASCII) to some different representation, e.g. Hex or Base64."}),"\n",(0,t.jsx)(n.p,{children:'In The Things Network you find the downlink panel on the "Device Overview" page for each device, directly below the\npanel that shows you OTAA/ABP information (DevEUI, AppKey, ...). It is shown in the following screenshot.'}),"\n",(0,t.jsx)(a,{alt:"TTN LoRaWAN downlink configuration",img:i(9834),style:{width:"60%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsxs)(n.p,{children:["You will have to encode the commands in hex. In the screenshot you see ",(0,t.jsx)(n.code,{children:"73 54 69 6d 65 53 79 6e 63 3d 31 30"})," as the\nmessage to send; that is the hex representation of ",(0,t.jsx)(n.code,{children:"sTimeSync=10"}),". The Port used for remote configuration for our\ndevices\nis 128. When you enter multiple messages to send, be sure to set the correct scheduling (last). The preselected replace\nwill overwrite your previously enqueued messages."]}),"\n",(0,t.jsx)(n.h3,{id:"getting-the-firmware-version",children:"Getting the firmware version"}),"\n",(0,t.jsxs)(n.p,{children:['For this example the "Request firmware and version" ',(0,t.jsx)(n.code,{children:"?"})," (0x3F) command has to used. We use TTN as network server."]}),"\n",(0,t.jsx)(n.h4,{id:"downlink-on-ttn-1",children:"Downlink on TTN"}),"\n",(0,t.jsx)(a,{alt:"TTN LoRaWAN downlink get firmware version",img:i(8207),style:{width:"50%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(n.p,{children:"Will result in:"}),"\n",(0,t.jsx)(a,{alt:"TTN LoRaWAN downlink get firmware version",img:i(4513),style:{width:"50%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(n.h4,{id:"uplink-on-ttn",children:"Uplink on TTN"}),"\n",(0,t.jsx)(n.p,{children:"The device answers with this uplink:"}),"\n",(0,t.jsx)(a,{alt:"TTN LoRaWAN uplink get firmware version",img:i(2571),style:{width:"95%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsxs)(n.p,{children:["This response can be converted to ASCII again, e.g. using\nany ",(0,t.jsx)(n.a,{href:"https://www.rapidtables.com/convert/number/hex-to-ascii.html",children:"online converter"}),":"]}),"\n",(0,t.jsx)(a,{alt:"TTN LoRaWAN uplink to ascii conversion get firmware version",img:i(7366),style:{width:"30%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsxs)(n.p,{children:["The result is: ",(0,t.jsx)(n.code,{children:"?app-hybrid-modbus v0.4.0+battery"})]}),"\n",(0,t.jsx)(n.h3,{id:"configure-a-device-via-script",children:"Configure a device via script"}),"\n",(0,t.jsx)(n.h4,{id:"example-configuration-command-to-be-send",children:"Example configuration command to be send"}),"\n",(0,t.jsxs)(n.p,{children:["Example command (ASCII encoding):",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.code,{children:"SMbCmd=0 0/10 * * * *:R,9600,8N1:010300160002,010300260002,fa0400050001"})]}),"\n",(0,t.jsxs)(n.admonition,{type:"warning",children:[(0,t.jsxs)(n.p,{children:["For commands ",(0,t.jsx)(n.code,{children:"s"}),", ",(0,t.jsx)(n.code,{children:"S"})," and ",(0,t.jsx)(n.code,{children:"a"})," make sure the number of characters to send matches with the possibilities your devices\nspreading factor:"]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"SF 7 = 242 bytes max. LoRaWAN downlink payload"}),"\n",(0,t.jsx)(n.li,{children:"SF 12 = 51 bytes max. LoRaWAN downlink payload"}),"\n"]}),(0,t.jsx)(n.p,{children:"Consider splitting bigger configuration changed in multiple smaller downlinks."})]}),"\n",(0,t.jsxs)(n.p,{children:["Example command (Base64 encoding):",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.code,{children:"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE="})]}),"\n",(0,t.jsx)(n.h4,{id:"curl-script-for-ttn",children:"Curl Script for TTN"}),"\n",(0,t.jsx)(n.p,{children:"Curl script to be used with TTN:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"curl --location \\ --header 'Authorization: Bearer NNSXS.XJAZK3VF3YBMXX_API_KEY_KR2HFG6ABXXXXXX.CP4WZUOXXXXXXXB5WW4UUSMNXRLUJ7LVO2U' \\\n--header 'Content-Type: application/json' \\\n--header 'User-Agent: my-integration/my-integration-version' \\\n--request POST \\ --data '{\"downlinks\":[{ \"frm_payload\":\n\"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE=\",\n\"f_port\":128 }] }' \\\n'https://eu1.cloud.thethings.network/api/v3/as/applications/your-ttn-applicationID/devices/eui-your_TTN_end_deviceID/down/push'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["See also: ",(0,t.jsx)(n.a,{href:"https://www.thethingsindustries.com/docs/integrations/webhooks/scheduling-downlinks/",children:"https://www.thethingsindustries.com/docs/integrations/webhooks/scheduling-downlinks/"})]}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsx)(n.p,{children:"You should use your own data for the API KEY, your-ttn-applicationID and your your_TTN_end_deviceID"})}),"\n",(0,t.jsx)(n.h4,{id:"chirpstack-v3",children:"Chirpstack V3"}),"\n",(0,t.jsx)(n.p,{children:"Curl script to be used with Chirpstack V3:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"curl -X POST --header 'Content-Type: application/json'\n--header 'Accept: application/json'\n--header 'Grpc-Metadata-Authorization:\nBearer xxxxxxxxx_API_KEY_xxxxxxx' -d\n'{ \"deviceQueueItem\": { \"confirmed\": false, \"data\":\n\"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE=\",\n\"fPort\": 128\n } }'\n'http://192.198.0.101:8080/api/devices/ChirpStack_DevEUI/queue'\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsx)(n.p,{children:"You should use your own data for the API KEY, your Chirpstack_IP_Adress and your your_ChirpStack_DevEUI"})}),"\n",(0,t.jsx)(n.h4,{id:"chirpstack-v4",children:"Chirpstack V4"}),"\n",(0,t.jsx)(n.p,{children:'The actual API has now switched from the Swagger API with UI to gRPC integration, but for compatibility and transition\nreasons the chirpstack-rest-api can be installed as an additional component. However, experience has shown that there\nare changes that need to be considered. "deviceQueueItem" became ""queueItem" and by default the API can now be reached\non port 8090 and no longer 8080.'}),"\n",(0,t.jsx)(n.p,{children:"Curl script to be used with Chirpstack V4:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"curl -X POST --header 'Content-Type: application/json'\n--header 'Accept: application/json'\n--header 'Grpc-Metadata-Authorization:\nBearer xxxxxxxxx_API_KEY_xxxxxxx' -d\n'{ \"queueItem\": { \"confirmed\": false, \"data\":\n\"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE=\",\n\"fPort\": 128\n } }'\n'http://192.198.0.101:8090/api/devices/ChirpStack_DevEUI/queue'\n"})})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{"use strict";i.d(n,{R:()=>s,x:()=>r});var t=i(6540);const o={},a=t.createContext(o);function s(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4ddd2498.fecd1867.js b/assets/js/4ddd2498.fecd1867.js deleted file mode 100644 index 8e4d8ef5..00000000 --- a/assets/js/4ddd2498.fecd1867.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[1110],{7366:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/3F-result-in-ascii.8f086ec.300.png 300w,"+i.p+"assets/images/ideal-img/3F-result-in-ascii.40566be.600.png 600w,"+i.p+"assets/images/ideal-img/3F-result-in-ascii.c89288d.619.png 619w",images:[{path:i.p+"assets/images/ideal-img/3F-result-in-ascii.8f086ec.300.png",width:300,height:314},{path:i.p+"assets/images/ideal-img/3F-result-in-ascii.40566be.600.png",width:600,height:628},{path:i.p+"assets/images/ideal-img/3F-result-in-ascii.c89288d.619.png",width:619,height:648}],src:i.p+"assets/images/ideal-img/3F-result-in-ascii.8f086ec.300.png",toString:function(){return i.p+"assets/images/ideal-img/3F-result-in-ascii.8f086ec.300.png"},placeholder:void 0,width:300,height:314},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABDUlEQVR4nCXOzU/CMBiA8f7/B4/eTSQSNHLQSDwoJhrR3fTAh4DuA9aObv0eHeu71qDJL8/5QUIqIRQXSiptdK20aZqDc9C2znuPKEkYzRhNJcNaEC2I4ljyXHJca4rI9qvAsWS5NdRILKrUGmrNztalYgkaj0fnF73BVX81j1S5YGTKixkvjmXFFJHtIksWaTwn2zUv04omvMok24gqE+UPsjUH8G3rjjsOALoQQvA+hNBYgWpTAjhwhw7aDlzX/Wu972zNkKHJge+sxtBQsHSvsJH5HyyrGN1/3vSi3kv0FL29TibPRb7cq43miRGZLNfo9vHsdHhyN+w/DK9Hl4PVx3tF4wKvd+SbkuUv4kcPHFiK110AAAAASUVORK5CYII="}},8207:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.2856aac.300.png 300w,"+i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.208579d.600.png 600w,"+i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.b7f06e1.882.png 882w",images:[{path:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.2856aac.300.png",width:300,height:224},{path:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.208579d.600.png",width:600,height:449},{path:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.b7f06e1.882.png",width:882,height:660}],src:i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.2856aac.300.png",toString:function(){return i.p+"assets/images/ideal-img/Downlink-TTN-get-fw.2856aac.300.png"},placeholder:void 0,width:300,height:224},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAIAAAC+zks0AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAcUlEQVR4nG2MMQ7CMBAE/f9v0fAMilAgpAT7Ysu+27tFcYEAZTTdSJNIam35du8vcQYAdwcQESSTmW7PteXKM5KaSd1V1d1P8iili9h8xuQnN9nrfpwj/p3znEcTNfQBA789ctna9bI8ljUCZgrYR5JvSz7Nn8r84TIAAAAASUVORK5CYII="}},2571:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.89a212a.300.png 300w,"+i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.25fff62.600.png 600w,"+i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.29cb7ea.900.png 900w,"+i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.31d1046.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.89a212a.300.png",width:300,height:7},{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.25fff62.600.png",width:600,height:13},{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.29cb7ea.900.png",width:900,height:20},{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.31d1046.1200.png",width:1200,height:27}],src:i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.89a212a.300.png",toString:function(){return i.p+"assets/images/ideal-img/lorawan-downlink-3F-answer.89a212a.300.png"},placeholder:void 0,width:300,height:7},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAABCAIAAABol6gpAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAKklEQVR4nAEfAOD/APLy8vDw8Pb29vLx8fH09O3Z2ea3t/Du7vHy8vPz86+eG6M4AoFrAAAAAElFTkSuQmCC"}},4513:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.13ce5f6.300.png 300w,"+i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.ac16a73.600.png 600w,"+i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.80f3eb1.634.png 634w",images:[{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.13ce5f6.300.png",width:300,height:21},{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.ac16a73.600.png",width:600,height:43},{path:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.80f3eb1.634.png",width:634,height:45}],src:i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.13ce5f6.300.png",toString:function(){return i.p+"assets/images/ideal-img/lorawan-downlink-3F-downlink.13ce5f6.300.png"},placeholder:void 0,width:300,height:21},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAABCAIAAABol6gpAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAHklEQVR4nGP4+vXrly9fPsPAz58/ISLfvn379OkTALwKHKViCz9TAAAAAElFTkSuQmCC"}},9834:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/ttn-downlink.bd44598.300.png 300w,"+i.p+"assets/images/ideal-img/ttn-downlink.6f8f05b.600.png 600w,"+i.p+"assets/images/ideal-img/ttn-downlink.7f4d85d.900.png 900w,"+i.p+"assets/images/ideal-img/ttn-downlink.307b73d.1081.png 1081w",images:[{path:i.p+"assets/images/ideal-img/ttn-downlink.bd44598.300.png",width:300,height:103},{path:i.p+"assets/images/ideal-img/ttn-downlink.6f8f05b.600.png",width:600,height:205},{path:i.p+"assets/images/ideal-img/ttn-downlink.7f4d85d.900.png",width:900,height:308},{path:i.p+"assets/images/ideal-img/ttn-downlink.307b73d.1081.png",width:1081,height:370}],src:i.p+"assets/images/ideal-img/ttn-downlink.bd44598.300.png",toString:function(){return i.p+"assets/images/ideal-img/ttn-downlink.bd44598.300.png"},placeholder:void 0,width:300,height:103},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAYAAACqPZ51AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAS0lEQVR4nEXLUQqAMAwD0N3/lB5AUBHWpNsaaUEtPPKRtO3nJZCKiDLnFEmttT7urtZ7ryIHY4zK9F4+O6kGUAbIzAoMAn7ZbfehB1MfdZx0etnTAAAAAElFTkSuQmCC"}},587:(e,n,i)=>{"use strict";i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>l});var t=i(4848),a=i(8453);const s={sidebar_position:3,displayed_sidebar:"configurationSidebar",title:"LoRaWAN Downlink Config"},o="LoRaWAN Downlink Config",r={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",source:"@site/docs/configuration/lorawan-downlink-config.md",sourceDirName:"configuration",slug:"/configuration/lorawan-downlink-config",permalink:"/iot/configuration/lorawan-downlink-config",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/lorawan-downlink-config.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3,displayed_sidebar:"configurationSidebar",title:"LoRaWAN Downlink Config"},sidebar:"configurationSidebar",previous:{title:"MBUS Reception Filtering",permalink:"/iot/configuration/meter-reception-filter-config"},next:{title:"CRON Configuration",permalink:"/iot/configuration/cron-configuration"}},d={},l=[{value:"Protocol Description",id:"protocol-description",level:2},{value:"Downlink Commands (Port 128)",id:"downlink-commands-port-128",level:3},{value:"?",id:"",level:4},{value:"g<name>",id:"gname",level:4},{value:"r<name> / r*",id:"rname--r",level:4},{value:"s<name>=<value>",id:"snamevalue",level:4},{value:"a<name>=<value>",id:"anamevalue",level:4},{value:"b",id:"b",level:4},{value:"w or wFORCE",id:"w-or-wforce",level:4},{value:"Examples",id:"examples",level:2},{value:"Changing device configuration",id:"changing-device-configuration",level:3},{value:"Downlink on TTN",id:"downlink-on-ttn",level:4},{value:"Getting the firmware version",id:"getting-the-firmware-version",level:3},{value:"Downlink on TTN",id:"downlink-on-ttn-1",level:4},{value:"Uplink on TTN",id:"uplink-on-ttn",level:4},{value:"Configure a device via script",id:"configure-a-device-via-script",level:3},{value:"Example configuration command to be send",id:"example-configuration-command-to-be-send",level:4},{value:"Curl Script for TTN",id:"curl-script-for-ttn",level:4},{value:"Chirpstack V3",id:"chirpstack-v3",level:4},{value:"Chirpstack V4",id:"chirpstack-v4",level:4}];function c(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components},{Image:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"lorawan-downlink-config",children:"LoRaWAN Downlink Config"}),"\n",(0,t.jsxs)(n.p,{children:["This article describes the technical details how to remotely configure Lobaro devices that are using ",(0,t.jsx)(n.strong,{children:"LoRaWAN"})," as\nupload technology."]}),"\n",(0,t.jsx)(n.p,{children:"IoT devices are often installed at places that are difficult to reach. If you need to change the settings of such a\ndevice it is often not easily possible to get physical access to attach a config adapter."}),"\n",(0,t.jsx)(n.p,{children:"Many of our devices support LoRaWAN remote configuration that allows you to change the configuration of the device by\nsending downlink messages."}),"\n",(0,t.jsx)(n.admonition,{type:"note",children:(0,t.jsx)(n.p,{children:"If you are using cellular IoT (NB-IoT, LTE-M) as communication technology any configuration updates are done in a\ndifferent way."})}),"\n",(0,t.jsx)(n.h2,{id:"protocol-description",children:"Protocol Description"}),"\n",(0,t.jsxs)(n.p,{children:["Lobaro LoRaWAN devices receive remote configuration commands as Downlinks on port 128. Responses to those commands will\nbe sent as Uplinks on ",(0,t.jsx)(n.code,{children:"Port 128"})," (and 129-131 for long responses). ",(0,t.jsx)(n.strong,{children:"The remote commands and their responses are all\nencoded in ASCII"}),", to make it easier for humans to use them. The ASCII string must be converted to hex or Base64\npayload bytes, depending on the used LoRaWAN network server."]}),"\n",(0,t.jsxs)(n.p,{children:["The first byte of a Downlink message on ",(0,t.jsx)(n.code,{children:"Port 128"})," contains a single character that identifies the command you want to\nsend. Some commands take a parameter following the command char."]}),"\n",(0,t.jsx)(n.p,{children:"The responses to a command start with the same character as the command followed by an optional parameter. If a command\nis unknown, or it fails for some reason, an error response is sent via Uplink that contains with a ! followed by a\nreadable error message."}),"\n",(0,t.jsx)(n.p,{children:"Changing configuration does nothing until you save the changes and reboot the device. The device has a safety feature\nthat prevents configurations that make the device unusable. A new configuration is tested in the first run after\nrebooting. Only after the device reaches a stable state will the configuration be adopted and used permanently. If a\nproblem occurs the device will restore its last stable connection and reboot. If the device uses OTAA (which we\nrecommend) the device will only adopt the new configuration only after a join request is accepted, to make sure the\nLoRaWAN parameters are correct. After a few failed attempts it will restore the previous configuration. This can take up\nto about 10 minutes."}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"Downlinks should only be used to a limited extent depending on the infrastructure. In the free version of TTN, the Fair\nuse policy says, that no more than 10 downlinks should be made. You also have to observe the regulations within the\nLimit of the duty cycle limitation. That is why downlinks are only to be carried out with caution and when absolutely\nnecessary. The number of possible characters that can be sent is limited by the respective spreading factor (With a SF\nof 12 only 51 characters)."})}),"\n",(0,t.jsx)(n.h3,{id:"downlink-commands-port-128",children:"Downlink Commands (Port 128)"}),"\n",(0,t.jsxs)(n.p,{children:["Configurations are normally communicated as downlinks and uplinks (responses) on ",(0,t.jsx)(n.code,{children:"Port 128"}),". For longer responses, that\ndon't can be send as single uplink on ",(0,t.jsx)(n.code,{children:"Port 128"}),", the ",(0,t.jsx)(n.code,{children:"Ports 129-131"})," are used. The first response part is sent\non ",(0,t.jsx)(n.code,{children:"Port 129"}),", the middle parts (if exist) on ",(0,t.jsx)(n.code,{children:"Port 130"})," and the last part on ",(0,t.jsx)(n.code,{children:"Port 131"}),". A stateful parser can\nconcatenate long responses based on Port and FCnt."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Char"}),(0,t.jsx)(n.th,{children:"Command"}),(0,t.jsx)(n.th,{children:"Parameter"}),(0,t.jsx)(n.th,{children:"HEX"}),(0,t.jsx)(n.th,{children:"Info"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"?"}),(0,t.jsx)(n.td,{children:"Request firmware and version"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"None "})}),(0,t.jsx)(n.td,{children:"3F"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"a"}),(0,t.jsx)(n.td,{children:"Append to config parameter val"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"= "})}),(0,t.jsx)(n.td,{children:"61"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"b"}),(0,t.jsx)(n.td,{children:"Reboot device without saving"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"None "})}),(0,t.jsx)(n.td,{children:"62"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"g"}),(0,t.jsx)(n.td,{children:"Get config parameter value"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"Name of parameter"})}),(0,t.jsx)(n.td,{children:"67"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"r"}),(0,t.jsx)(n.td,{children:"Reset config parameter value"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"Name of parameter"})}),(0,t.jsx)(n.td,{children:"72"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"s"}),(0,t.jsx)(n.td,{children:"Set config parameter value"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"= "})}),(0,t.jsx)(n.td,{children:"73"}),(0,t.jsx)(n.td,{})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"S"}),(0,t.jsx)(n.td,{children:"Set config parameter value & Save and reboot"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"= "})}),(0,t.jsx)(n.td,{children:"53"}),(0,t.jsx)(n.td,{children:"Not supported on all devices"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"w"}),(0,t.jsx)(n.td,{children:"Save config and reboot device"}),(0,t.jsx)(n.td,{children:(0,t.jsx)(n.code,{children:"None "})}),(0,t.jsx)(n.td,{children:"77"}),(0,t.jsx)(n.td,{})]})]})]}),"\n",(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"Depending on the firmware version not all commands might be supported on all devices.\nPlease refer to the manual of your product for more details."})}),"\n",(0,t.jsx)(n.h4,{id:"",children:(0,t.jsx)(n.code,{children:"?"})}),"\n",(0,t.jsx)(n.p,{children:"Request firmware and version. This command triggers the device to send what firmware it is running and in which version.\nThis can be used to test if the remote configuration is working."}),"\n",(0,t.jsx)(n.h4,{id:"gname",children:(0,t.jsx)(n.code,{children:"g"})}),"\n",(0,t.jsxs)(n.p,{children:["Get the value of the config parameter ",(0,t.jsx)(n.code,{children:""}),". This command makes the device sent a response\ncontaining ",(0,t.jsx)(n.code,{children:"="})," as\nparameter giving you the current value of a configuration parameter."]}),"\n",(0,t.jsx)(n.h4,{id:"rname--r",children:(0,t.jsx)(n.code,{children:"r / r*"})}),"\n",(0,t.jsxs)(n.p,{children:["Reset config parameter ",(0,t.jsx)(n.code,{children:""})," to its default value. As a confirmation the device sends a response\ncontaining ",(0,t.jsx)(n.code,{children:"="}),", reporting the new value of the parameter.Sending the special value * will reset all config\nparameters."]}),"\n",(0,t.jsx)(n.h4,{id:"snamevalue",children:(0,t.jsx)(n.code,{children:"s="})}),"\n",(0,t.jsxs)(n.p,{children:["Set config parameter ",(0,t.jsx)(n.code,{children:""})," to ",(0,t.jsx)(n.code,{children:""}),". Sets the parameter to the value given in the parameter. As a confirmation it\nsends a response containing ",(0,t.jsx)(n.code,{children:"="}),", reporting the new value of the parameter."]}),"\n",(0,t.jsx)(n.h4,{id:"anamevalue",children:(0,t.jsx)(n.code,{children:"a="})}),"\n",(0,t.jsxs)(n.p,{children:["Append ",(0,t.jsx)(n.code,{children:""})," to the config parameter ",(0,t.jsx)(n.code,{children:""}),". This command appends the value given to the current value of the\nparameter. This is intended to allow setting values that are too long for a single Downlink message. As a confirmation\nit sends the length of the config parameter's value after the appending. Append works for config parameters of type\nstring."]}),"\n",(0,t.jsx)(n.h4,{id:"b",children:(0,t.jsx)(n.code,{children:"b"})}),"\n",(0,t.jsx)(n.p,{children:"Reboot device without saving. This command restarts the device. Any changes too the config that have been committed\nbefore will be lost! This command does not send a Response."}),"\n",(0,t.jsx)(n.h4,{id:"w-or-wforce",children:(0,t.jsx)(n.code,{children:"w or wFORCE"})}),"\n",(0,t.jsx)(n.p,{children:"Save config and reboot device. This command saves all configuration changes to a temporarily configuration and restarts\nthe device. Only if the device boots successfully and reaches normal operation mode is the new configuration made\npermanent. If any fatal configuration error occurs or if the LoRaWAN OTAA Join does not succeed, the previous\nconfiguration will be restored and the device restarted again. This command does not send a Response.If you add the\nspecial argument FORCE to the command, the configuration will be made permanent without testing the configuration."}),"\n",(0,t.jsxs)(n.admonition,{type:"danger",children:[(0,t.jsxs)(n.p,{children:["Using ",(0,t.jsx)(n.strong,{children:"wFORCE"})," can leave your device useless and unreachable!"]}),(0,t.jsxs)(n.p,{children:["Do not use ",(0,t.jsx)(n.strong,{children:"wFORCE"})," unless you have a very good reason. If the device is set to an invalid configuration it will no\nlonger\nbe reachable by the Network Server. From such a state it can only be recovered with physical access and a config\nadapter. It will also most likely drain the battery quickly."]})]}),"\n",(0,t.jsxs)(n.admonition,{type:"warning",children:[(0,t.jsxs)(n.p,{children:["For commands ",(0,t.jsx)(n.code,{children:"s"}),", ",(0,t.jsx)(n.code,{children:"S"})," and ",(0,t.jsx)(n.code,{children:"a"})," make sure the number of characters to send matches with the possibilities your devices\nspreading factor:"]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"SF 7 = 242 bytes max. LoRaWAN downlink payload"}),"\n",(0,t.jsx)(n.li,{children:"SF 12 = 51 bytes max. LoRaWAN downlink payload"}),"\n"]}),(0,t.jsx)(n.p,{children:"Consider splitting bigger configuration changed in multiple smaller downlinks."})]}),"\n",(0,t.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,t.jsx)(n.h3,{id:"changing-device-configuration",children:"Changing device configuration"}),"\n",(0,t.jsx)(n.p,{children:"The following is a short example of how you can update two configuration values remotely (that includes rebooting the\ndevice)."}),"\n",(0,t.jsx)(n.p,{children:"Most LoRaWAN devices (all that are running in Class A, which are by fast the most) can only be reached when they contact\nthe network. Network Servers (like The Things Network) provide a mechanism to enqueue messages for a specific device.\nThe messages will be sent as downlink the next time that device contacts the network. Normally, multiple messages can be\nenqueued and will all be transmitted as soon as possible. Please be advised that the gateways communicating with your\ndevice must respect their duty cycle, so there is a very limited amount of downlinks that can be sent for a given time (\ndownlinks are expensive)."}),"\n",(0,t.jsx)(n.p,{children:"For this example we want to set Time Synchronization to sync the internal clock every 10 days, and we want to deactivate\nAdaptive Date Rate (ADR). These are both LoRaWAN configuration parameters that are present on most devices (find details\nunder LoRaWAN Configuration), but you can of course also change parameters specific to your device, e.g. Modbus\nconfiguration or wMBus configuration, with this feature."}),"\n",(0,t.jsx)(n.p,{children:"We will need to send three commands:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"s"}),"TimeSync=10","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"set time synchronization to 10 day interval"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"s"}),"ADR=false","\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"disable adaptive data rate"}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"w"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"write changes to device configuration and reboot"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["The actual s-commands will of course differ for your case, but the w command at the end ",(0,t.jsx)(n.strong,{children:"must"})," always be the same."]}),"\n",(0,t.jsx)(n.p,{children:"After sending the final command, the device will reboot and try the new configuration. If the boot process and the\nconnection to the network are successful, the device will make the changes permanent. If there is a problem (if you\naccidentally set an invalid value, e.g. sADR=flase or if you changed your AppKey to wrong value and your OTAA fails),\nthe device will revert to the previous configuration."}),"\n",(0,t.jsx)(n.h4,{id:"downlink-on-ttn",children:"Downlink on TTN"}),"\n",(0,t.jsx)(n.p,{children:"How you sent your downlinks depends on the LoRaWAN Network Server you use to connect your devices. You will most likely\nneed to convert the commands (that are all ASCII) to some different representation, e.g. Hex or Base64."}),"\n",(0,t.jsx)(n.p,{children:'In The Things Network you find the downlink panel on the "Device Overview" page for each device, directly below the\npanel that shows you OTAA/ABP information (DevEUI, AppKey, ...). It is shown in the following screenshot.'}),"\n",(0,t.jsx)(s,{alt:"TTN LoRaWAN downlink configuration",img:i(9834),style:{width:"60%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsxs)(n.p,{children:["You will have to encode the commands in hex. In the screenshot you see ",(0,t.jsx)(n.code,{children:"73 54 69 6d 65 53 79 6e 63 3d 31 30"})," as the\nmessage to send; that is the hex representation of ",(0,t.jsx)(n.code,{children:"sTimeSync=10"}),". The Port used for remote configuration for our\ndevices\nis 128. When you enter multiple messages to send, be sure to set the correct scheduling (last). The preselected replace\nwill overwrite your previously enqueued messages."]}),"\n",(0,t.jsx)(n.h3,{id:"getting-the-firmware-version",children:"Getting the firmware version"}),"\n",(0,t.jsxs)(n.p,{children:['For this example the "Request firmware and version" ',(0,t.jsx)(n.code,{children:"?"})," (0x3F) command has to used. We use TTN as network server."]}),"\n",(0,t.jsx)(n.h4,{id:"downlink-on-ttn-1",children:"Downlink on TTN"}),"\n",(0,t.jsx)(s,{alt:"TTN LoRaWAN downlink get firmware version",img:i(8207),style:{width:"50%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(n.p,{children:"Will result in:"}),"\n",(0,t.jsx)(s,{alt:"TTN LoRaWAN downlink get firmware version",img:i(4513),style:{width:"50%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(n.h4,{id:"uplink-on-ttn",children:"Uplink on TTN"}),"\n",(0,t.jsx)(n.p,{children:"The device answers with this uplink:"}),"\n",(0,t.jsx)(s,{alt:"TTN LoRaWAN uplink get firmware version",img:i(2571),style:{width:"95%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsxs)(n.p,{children:["This response can be converted to ASCII again, e.g. using\nany ",(0,t.jsx)(n.a,{href:"https://www.rapidtables.com/convert/number/hex-to-ascii.html",children:"online converter"}),":"]}),"\n",(0,t.jsx)(s,{alt:"TTN LoRaWAN uplink to ascii conversion get firmware version",img:i(7366),style:{width:"30%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsxs)(n.p,{children:["The result is: ",(0,t.jsx)(n.code,{children:"?app-hybrid-modbus v0.4.0+battery"})]}),"\n",(0,t.jsx)(n.h3,{id:"configure-a-device-via-script",children:"Configure a device via script"}),"\n",(0,t.jsx)(n.h4,{id:"example-configuration-command-to-be-send",children:"Example configuration command to be send"}),"\n",(0,t.jsxs)(n.p,{children:["Example command (ASCII encoding):",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.code,{children:"SMbCmd=0 0/10 * * * *:R,9600,8N1:010300160002,010300260002,fa0400050001"})]}),"\n",(0,t.jsxs)(n.admonition,{type:"warning",children:[(0,t.jsxs)(n.p,{children:["For commands ",(0,t.jsx)(n.code,{children:"s"}),", ",(0,t.jsx)(n.code,{children:"S"})," and ",(0,t.jsx)(n.code,{children:"a"})," make sure the number of characters to send matches with the possibilities your devices\nspreading factor:"]}),(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"SF 7 = 242 bytes max. LoRaWAN downlink payload"}),"\n",(0,t.jsx)(n.li,{children:"SF 12 = 51 bytes max. LoRaWAN downlink payload"}),"\n"]}),(0,t.jsx)(n.p,{children:"Consider splitting bigger configuration changed in multiple smaller downlinks."})]}),"\n",(0,t.jsxs)(n.p,{children:["Example command (Base64 encoding):",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.code,{children:"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE="})]}),"\n",(0,t.jsx)(n.h4,{id:"curl-script-for-ttn",children:"Curl Script for TTN"}),"\n",(0,t.jsx)(n.p,{children:"Curl script to be used with TTN:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"curl --location \\ --header 'Authorization: Bearer NNSXS.XJAZK3VF3YBMXX_API_KEY_KR2HFG6ABXXXXXX.CP4WZUOXXXXXXXB5WW4UUSMNXRLUJ7LVO2U' \\\n--header 'Content-Type: application/json' \\\n--header 'User-Agent: my-integration/my-integration-version' \\\n--request POST \\ --data '{\"downlinks\":[{ \"frm_payload\":\n\"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE=\",\n\"f_port\":128 }] }' \\\n'https://eu1.cloud.thethings.network/api/v3/as/applications/your-ttn-applicationID/devices/eui-your_TTN_end_deviceID/down/push'\n"})}),"\n",(0,t.jsxs)(n.p,{children:["See also: ",(0,t.jsx)(n.a,{href:"https://www.thethingsindustries.com/docs/integrations/webhooks/scheduling-downlinks/",children:"https://www.thethingsindustries.com/docs/integrations/webhooks/scheduling-downlinks/"})]}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsx)(n.p,{children:"You should use your own data for the API KEY, your-ttn-applicationID and your your_TTN_end_deviceID"})}),"\n",(0,t.jsx)(n.h4,{id:"chirpstack-v3",children:"Chirpstack V3"}),"\n",(0,t.jsx)(n.p,{children:"Curl script to be used with Chirpstack V3:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"curl -X POST --header 'Content-Type: application/json'\n--header 'Accept: application/json'\n--header 'Grpc-Metadata-Authorization:\nBearer xxxxxxxxx_API_KEY_xxxxxxx' -d\n'{ \"deviceQueueItem\": { \"confirmed\": false, \"data\":\n\"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE=\",\n\"fPort\": 128\n } }'\n'http://192.198.0.101:8080/api/devices/ChirpStack_DevEUI/queue'\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"tip",children:(0,t.jsx)(n.p,{children:"You should use your own data for the API KEY, your Chirpstack_IP_Adress and your your_ChirpStack_DevEUI"})}),"\n",(0,t.jsx)(n.h4,{id:"chirpstack-v4",children:"Chirpstack V4"}),"\n",(0,t.jsx)(n.p,{children:'The actual API has now switched from the Swagger API with UI to gRPC integration, but for compatibility and transition\nreasons the chirpstack-rest-api can be installed as an additional component. However, experience has shown that there\nare changes that need to be considered. "deviceQueueItem" became ""queueItem" and by default the API can now be reached\non port 8090 and no longer 8080.'}),"\n",(0,t.jsx)(n.p,{children:"Curl script to be used with Chirpstack V4:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"curl -X POST --header 'Content-Type: application/json'\n--header 'Accept: application/json'\n--header 'Grpc-Metadata-Authorization:\nBearer xxxxxxxxx_API_KEY_xxxxxxx' -d\n'{ \"queueItem\": { \"confirmed\": false, \"data\":\n\"U01iQ21kPTAgMC8xMCAqICogKiAqOlIsOTYwMCw4TjE6MDEwMzAwMTYwMDAyLDAxMDMwMDI2MDAwMixmYTA0MDAwNTAwMDE=\",\n\"fPort\": 128\n } }'\n'http://192.198.0.101:8090/api/devices/ChirpStack_DevEUI/queue'\n"})})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,n,i)=>{"use strict";i.d(n,{R:()=>o,x:()=>r});var t=i(6540);const a={},s=t.createContext(a);function o(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7ebb515f.4e6c68df.js b/assets/js/7ebb515f.4e6c68df.js deleted file mode 100644 index 884f9315..00000000 --- a/assets/js/7ebb515f.4e6c68df.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[8344],{4980:(o,e,t)=>{o.exports={src:{srcSet:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.9905fb5.300.png 300w,"+t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.02a0665.600.png 600w,"+t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.23f0a4a.900.png 900w,"+t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.3859f56.1200.png 1200w",images:[{path:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.9905fb5.300.png",width:300,height:211},{path:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.02a0665.600.png",width:600,height:421},{path:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.23f0a4a.900.png",width:900,height:632},{path:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.3859f56.1200.png",width:1200,height:842}],src:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.9905fb5.300.png",toString:function(){return t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.9905fb5.300.png"},placeholder:void 0,width:300,height:211},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAYAAAAxrNxjAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAkklEQVR4nE2Nxw7DMAxD/f/f2Uu80nhI8ghYyIGDHgitR8p8joDDn7hSQa6EygKSBpaGbyXERCgkMFdmSO/ovWPMifu+Mecj7Z95whAxiAXSBK01jDFeKaBVQ8wZI7z3S7VW5JxBRBARMDNKKWtnFLDWwjm3DimldVBQDdrrzoQQFrTBnbDBN1HB/XonqNT0D/4AA6EOcJ07bQYAAAAASUVORK5CYII="}},3361:(o,e,t)=>{"use strict";t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>n,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>m});var a=t(4848),r=t(8453);const i={sidebar_position:6,displayed_sidebar:"firmwareSidebar",title:"Cellular IoT Communication"},n="Cellular IoT Communication",s={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",source:"@site/docs/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol.md",sourceDirName:"firmware/app-nrf9160-wmbus",slug:"/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol",permalink:"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6,displayed_sidebar:"firmwareSidebar",title:"Cellular IoT Communication"},sidebar:"firmwareSidebar",previous:{title:"LoRaWAN Communication",permalink:"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol"},next:{title:"Compatible Hardware",permalink:"/iot/firmware/app-nrf9160-wmbus/compatible-hardware"}},l={},m=[];function c(o){const e={a:"a",admonition:"admonition",code:"code",h1:"h1",p:"p",strong:"strong",...(0,r.R)(),...o.components},{Image:i}=e;return i||function(o,e){throw new Error("Expected "+(e?"component":"object")+" `"+o+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e.h1,{id:"cellular-iot-communication",children:"Cellular IoT Communication"}),"\n",(0,a.jsxs)(e.p,{children:["This page describes the possible uplink and downlink message contents when using NB-IoT or LTE-M (cellular IoT) as\ntechnology to communicate with the Lobaro IoT Platform, e.g. the\nfirmware ",(0,a.jsx)(e.code,{children:"WAN"})," ",(0,a.jsx)(e.a,{href:"/iot/firmware/app-nrf9160-wmbus/configuration-parameter#general",children:"parameter"}),"\nmust be configured to ",(0,a.jsx)(e.code,{children:"lte"}),"."]}),"\n",(0,a.jsx)(i,{alt:"Lobaro Platform",img:t(4980),style:{width:"60%",paddingTop:"0px",paddingBottom:"8px"}}),"\n",(0,a.jsx)(e.p,{children:"Parsed and optionally decrypted Wireless M-BUS data can be viewed and further processed in the Lobaro IoT platform.\nThird party systems can be connected\nto retrieve any wireless M-BUS data and status information using the different available platform integrations. This\nmakes an easy data forwarding\ne.g. using MQTT, HTTP-Push or the REST interfaces possible without in-depth knowledge of the underlying actual\ncommunication of the platform with this firmware. Lobaro uses an optimized low power protocol for communication between\nthis firmware based products and our platform."}),"\n",(0,a.jsx)(e.admonition,{title:"SaaS instance Lobaro Platform",type:"tip",children:(0,a.jsxs)(e.p,{children:["The SaaS instance is available at ",(0,a.jsx)(e.a,{href:"https://platform.lobaro.com/",children:"platform.lobaro.com"}),". It's free for testing purposes.\nContact Lobaro to get access."]})}),"\n",(0,a.jsxs)(e.admonition,{title:"Lobaro platform is mandatory for this firmware",type:"info",children:[(0,a.jsx)(e.p,{children:"For this firmware the Lobaro IoT platform is mandatory. The low power protocol details to and from the products based on\nthis\nfirmware unfortunately will not be disclosed."}),(0,a.jsxs)(e.p,{children:["Other products have options for additional communication endpoints, e.g. a direct ",(0,a.jsx)(e.strong,{children:"MQTT"}),"\nintegration. These products are based on ",(0,a.jsx)(e.strong,{children:"different"})," firmware and marketed differently. Please refer to the product\ncatalogue and/or\ncontact Lobaro for available products with (Lobaro) platform free cellular IoT communication options."]})]})]})}function d(o={}){const{wrapper:e}={...(0,r.R)(),...o.components};return e?(0,a.jsx)(e,{...o,children:(0,a.jsx)(c,{...o})}):c(o)}},8453:(o,e,t)=>{"use strict";t.d(e,{R:()=>n,x:()=>s});var a=t(6540);const r={},i=a.createContext(r);function n(o){const e=a.useContext(i);return a.useMemo((function(){return"function"==typeof o?o(e):{...e,...o}}),[e,o])}function s(o){let e;return e=o.disableParentContext?"function"==typeof o.components?o.components(r):o.components||r:n(o.components),a.createElement(i.Provider,{value:e},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/7ebb515f.f7a5af62.js b/assets/js/7ebb515f.f7a5af62.js new file mode 100644 index 00000000..d40360c2 --- /dev/null +++ b/assets/js/7ebb515f.f7a5af62.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[8344],{4980:(o,e,t)=>{o.exports={src:{srcSet:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.2d6a1ca.1600.png 1600w,"+t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.1938ddd.2432.png 2432w,"+t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.981fe03.2656.png 2656w",images:[{path:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.2d6a1ca.1600.png",width:1600,height:1123},{path:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.1938ddd.2432.png",width:2432,height:1707},{path:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.981fe03.2656.png",width:2656,height:1864}],src:t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.2d6a1ca.1600.png",toString:function(){return t.p+"assets/images/ideal-img/Lobaro-Platform-wmbus.2d6a1ca.1600.png"},placeholder:void 0,width:1600,height:1123},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAYAAAAxrNxjAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAkklEQVR4nE2Nxw7DMAxD/f/f2Uu80nhI8ghYyIGDHgitR8p8joDDn7hSQa6EygKSBpaGbyXERCgkMFdmSO/ovWPMifu+Mecj7Z95whAxiAXSBK01jDFeKaBVQ8wZI7z3S7VW5JxBRBARMDNKKWtnFLDWwjm3DimldVBQDdrrzoQQFrTBnbDBN1HB/XonqNT0D/4AA6EOcJ07bQYAAAAASUVORK5CYII="}},3361:(o,e,t)=>{"use strict";t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>n,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>m});var a=t(4848),r=t(8453);const i={sidebar_position:6,displayed_sidebar:"firmwareSidebar",title:"Cellular IoT Communication"},n="Cellular IoT Communication",s={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",source:"@site/docs/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol.md",sourceDirName:"firmware/app-nrf9160-wmbus",slug:"/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol",permalink:"/iot/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/firmware/app-nrf9160-wmbus/cellular-iot-communication-protocol.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6,displayed_sidebar:"firmwareSidebar",title:"Cellular IoT Communication"},sidebar:"firmwareSidebar",previous:{title:"LoRaWAN Communication",permalink:"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol"},next:{title:"Compatible Hardware",permalink:"/iot/firmware/app-nrf9160-wmbus/compatible-hardware"}},l={},m=[];function c(o){const e={a:"a",admonition:"admonition",code:"code",h1:"h1",p:"p",strong:"strong",...(0,r.R)(),...o.components},{Image:i}=e;return i||function(o,e){throw new Error("Expected "+(e?"component":"object")+" `"+o+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e.h1,{id:"cellular-iot-communication",children:"Cellular IoT Communication"}),"\n",(0,a.jsxs)(e.p,{children:["This page describes the possible uplink and downlink message contents when using NB-IoT or LTE-M (cellular IoT) as\ntechnology to communicate with the Lobaro IoT Platform, e.g. the\nfirmware ",(0,a.jsx)(e.code,{children:"WAN"})," ",(0,a.jsx)(e.a,{href:"/iot/firmware/app-nrf9160-wmbus/configuration-parameter#general",children:"parameter"}),"\nmust be configured to ",(0,a.jsx)(e.code,{children:"lte"}),"."]}),"\n",(0,a.jsx)(i,{alt:"Lobaro Platform",img:t(4980),style:{width:"60%",paddingTop:"0px",paddingBottom:"8px"}}),"\n",(0,a.jsx)(e.p,{children:"Parsed and optionally decrypted Wireless M-BUS data can be viewed and further processed in the Lobaro IoT platform.\nThird party systems can be connected\nto retrieve any wireless M-BUS data and status information using the different available platform integrations. This\nmakes an easy data forwarding\ne.g. using MQTT, HTTP-Push or the REST interfaces possible without in-depth knowledge of the underlying actual\ncommunication of the platform with this firmware. Lobaro uses an optimized low power protocol for communication between\nthis firmware based products and our platform."}),"\n",(0,a.jsx)(e.admonition,{title:"SaaS instance Lobaro Platform",type:"tip",children:(0,a.jsxs)(e.p,{children:["The SaaS instance is available at ",(0,a.jsx)(e.a,{href:"https://platform.lobaro.com/",children:"platform.lobaro.com"}),". It's free for testing purposes.\nContact Lobaro to get access."]})}),"\n",(0,a.jsxs)(e.admonition,{title:"Lobaro platform is mandatory for this firmware",type:"info",children:[(0,a.jsx)(e.p,{children:"For this firmware the Lobaro IoT platform is mandatory. The low power protocol details to and from the products based on\nthis\nfirmware unfortunately will not be disclosed."}),(0,a.jsxs)(e.p,{children:["Other products have options for additional communication endpoints, e.g. a direct ",(0,a.jsx)(e.strong,{children:"MQTT"}),"\nintegration. These products are based on ",(0,a.jsx)(e.strong,{children:"different"})," firmware and marketed differently. Please refer to the product\ncatalogue and/or\ncontact Lobaro for available products with (Lobaro) platform free cellular IoT communication options."]})]})]})}function d(o={}){const{wrapper:e}={...(0,r.R)(),...o.components};return e?(0,a.jsx)(e,{...o,children:(0,a.jsx)(c,{...o})}):c(o)}},8453:(o,e,t)=>{"use strict";t.d(e,{R:()=>n,x:()=>s});var a=t(6540);const r={},i=a.createContext(r);function n(o){const e=a.useContext(i);return a.useMemo((function(){return"function"==typeof o?o(e):{...e,...o}}),[e,o])}function s(o){let e;return e=o.disableParentContext?"function"==typeof o.components?o.components(r):o.components||r:n(o.components),a.createElement(i.Provider,{value:e},o.children)}}}]); \ No newline at end of file diff --git a/assets/js/963797ee.9310c1c8.js b/assets/js/963797ee.9310c1c8.js deleted file mode 100644 index 07993009..00000000 --- a/assets/js/963797ee.9310c1c8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[5534],{3390:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var o=n(4848),t=n(8453);const r={sidebar_position:0,displayed_sidebar:"cloudSidebar",title:"Overview"},s="Lobaro IoT Platform",l={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+/"}},a={},c=[{value:"Features",id:"features",level:2}];function d(e){const i={h1:"h1",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.h1,{id:"lobaro-iot-platform",children:"Lobaro IoT Platform"}),"\n",(0,o.jsxs)(i.p,{children:["The Lobaro IoT Platform operates as a ",(0,o.jsx)(i.strong,{children:"Head End System for IoT Devices"}),". The Platform is optimized for but not limited\nto handle Lobaro devices."]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsx)(i.li,{children:"Public Lobaro instance: platform.lobaro.com"}),"\n",(0,o.jsx)(i.li,{children:"For On-Premise hosting check out Hosting & Licensing"}),"\n"]}),"\n",(0,o.jsx)(i.p,{children:"The documentation will always reference the Public Lobaro instance."}),"\n",(0,o.jsx)(i.p,{children:(0,o.jsx)(i.img,{alt:"img.png",src:n(5072).A+"",width:"2656",height:"1506"})}),"\n",(0,o.jsx)(i.h2,{id:"features",children:"Features"}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsx)(i.li,{children:"Multi tenant (Organisations) with branding / white labeling"}),"\n",(0,o.jsx)(i.li,{children:"IoT Device Management"}),"\n",(0,o.jsx)(i.li,{children:"Support for all Lobaro Devices"}),"\n",(0,o.jsx)(i.li,{children:"Possibility to integrate 3rd party IoT Devices (LoRaWAN, NB-IoT, ...)"}),"\n",(0,o.jsx)(i.li,{children:"Device configuration"}),"\n",(0,o.jsx)(i.li,{children:"Firmware updates"}),"\n",(0,o.jsx)(i.li,{children:"Data parsing and persistence"}),"\n",(0,o.jsxs)(i.li,{children:["Device protocols:","\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsx)(i.li,{children:"LoRaWAN Network Server"}),"\n",(0,o.jsx)(i.li,{children:"CoAP"}),"\n",(0,o.jsx)(i.li,{children:"HTTP"}),"\n",(0,o.jsx)(i.li,{children:"Manufacturer specifics"}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(i.li,{children:["Connect devices via:","\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsx)(i.li,{children:"LoRaWAN"}),"\n",(0,o.jsx)(i.li,{children:"NB-IoT"}),"\n",(0,o.jsx)(i.li,{children:"LTE-M"}),"\n",(0,o.jsx)(i.li,{children:"GSM / LTE"}),"\n",(0,o.jsx)(i.li,{children:"etc."}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(i.li,{children:"APIs to access or forward data to Use-Case specific applications"}),"\n"]})]})}function h(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,o.jsx)(i,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},5072:(e,i,n)=>{n.d(i,{A:()=>o});const o=n.p+"assets/images/platform-frontpage-7b857da575a3432831a1aec09d6d1683.png"},8453:(e,i,n)=>{n.d(i,{R:()=>s,x:()=>l});var o=n(6540);const t={},r=o.createContext(t);function s(e){const i=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),o.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/963797ee.dc35e217.js b/assets/js/963797ee.dc35e217.js new file mode 100644 index 00000000..2f74f41c --- /dev/null +++ b/assets/js/963797ee.dc35e217.js @@ -0,0 +1 @@ +"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/a5750849.4ff9d88c.js b/assets/js/a5750849.4ff9d88c.js new file mode 100644 index 00000000..de7eb682 --- /dev/null +++ b/assets/js/a5750849.4ff9d88c.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[1148],{5095:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d276502.1224.png 1224w",images:[{path:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d276502.1224.png",width:1224,height:730}],src:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d276502.1224.png",toString:function(){return i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d276502.1224.png"},placeholder:void 0,width:1224,height:730},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAGCAIAAAB1kpiRAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgklEQVR4nC2MQQ7CMAwE8/8HwoEi7kW0SZTG9q6doCDmNHOZdOacSzZVACDhvgSUdtX3nuq+15KP2i6RXks/PqYipi3n8nyksm3a2iWq9OP1Ou83cl0IwJmMHhEiMiIM4BjuPuckqaoJZu7svUfEiJjjD0kzS4ABZqbu68cf7uQq+wK1c63N5QE9AAAAAABJRU5ErkJggg=="}},7768:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-config-flash.ea677cb.1228.png 1228w",images:[{path:i.p+"assets/images/ideal-img/tool-config-flash.ea677cb.1228.png",width:1228,height:605}],src:i.p+"assets/images/ideal-img/tool-config-flash.ea677cb.1228.png",toString:function(){return i.p+"assets/images/ideal-img/tool-config-flash.ea677cb.1228.png"},placeholder:void 0,width:1228,height:605},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgElEQVR4nG3JUQqCQBhF4dl/EASllUKtooeIIGgPtQIfzTSb/446J5AgAi983Ifjrpczp+OBzXpJnqXsd/kozxKybUK6WpDMZ9GpbQkSQ4xMLUp0RYEr7zeaR0VZv6ie1ahparx/j8w8FgxnZgxxwJshGfp+CPqR4STR991/mPABrsC4zAIkdt8AAAAASUVORK5CYII="}},2019:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-config-loaded.ecd8f96.1248.png 1248w",images:[{path:i.p+"assets/images/ideal-img/tool-config-loaded.ecd8f96.1248.png",width:1248,height:643}],src:i.p+"assets/images/ideal-img/tool-config-loaded.ecd8f96.1248.png",toString:function(){return i.p+"assets/images/ideal-img/tool-config-loaded.ecd8f96.1248.png"},placeholder:void 0,width:1248,height:643},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAArklEQVR4nB2KwUoDQRBE55+j4q6yCIkHf2Bv6tEf8KYgcT0mUSEEwXUOih4lGNLuzHTPC5mCRz2Kcpc3V7TXLcfjivr8hObirFBNaqpxzUFzyNHpKLupf+HBv3LXPzP9XPLYL+je5zzt/WvF/duMrrvFSf9B2mwRSViG9P3D4D0l2UrZZo0T2RJjZAgDakoy5T8MJNWyS4zEv19cCAHVhIhgOWNm5ZD3rkqIEUuJHXKrsKwTcDxUAAAAAElFTkSuQmCC"}},6001:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-config-logs.405ab33.1458.png 1458w",images:[{path:i.p+"assets/images/ideal-img/tool-config-logs.405ab33.1458.png",width:1458,height:1002}],src:i.p+"assets/images/ideal-img/tool-config-logs.405ab33.1458.png",toString:function(){return i.p+"assets/images/ideal-img/tool-config-logs.405ab33.1458.png"},placeholder:void 0,width:1458,height:1002},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAYAAAAxrNxjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVR4nGWOu07EMAAE/d8UILhAwnEtDaKmgW86KYnz1In4lTh2yCBMhVhptMVOseLj/Y3Xl2fy+1uORcbp+MDpKeexyCjyO7LDDYfrq13E2bFtG/u+s/M/XzESxgGhzmdW7/mcFJM2KG3QRmOdwznLPDuW4BEhRrYYaaRESklVVanbtk1M04Q1BhFDYF09UtbUdZ3Esixpmoau635FZxExBha/pKHve4ZhQCmFtRZjTOofRAgr3i8MreQyjmitmdO/v3wDWVgAL2Yh6GYAAAAASUVORK5CYII="}},553:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-connect-auto.bec75f4.1224.png 1224w",images:[{path:i.p+"assets/images/ideal-img/tool-connect-auto.bec75f4.1224.png",width:1224,height:605}],src:i.p+"assets/images/ideal-img/tool-connect-auto.bec75f4.1224.png",toString:function(){return i.p+"assets/images/ideal-img/tool-connect-auto.bec75f4.1224.png"},placeholder:void 0,width:1224,height:605},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVR4nD2NywpBURhG90OT+yUPYaBOyfuIgQxESQYGctrnwn/hLB1ksPpaa/KFxTwhmU0Z9luMBm0m496H2vvdJp12g26nUYXqKajcKYocM8Hd8Kfjpqg7ZYzEw56wWq7JzjtimlKoE09H0u0GVUFq7iWSZ4Tr5YLlN0wfqBlSFkgWMVNM5btuhOr1ooJv+MX6+u8/3nV9s9SCuj06AAAAAElFTkSuQmCC"}},4084:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-show-logfiles.7348375.321.png 321w",images:[{path:i.p+"assets/images/ideal-img/tool-show-logfiles.7348375.321.png",width:321,height:95}],src:i.p+"assets/images/ideal-img/tool-show-logfiles.7348375.321.png",toString:function(){return i.p+"assets/images/ideal-img/tool-show-logfiles.7348375.321.png"},placeholder:void 0,width:321,height:95},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAIAAAAlXwkiAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAW0lEQVR4nB3CQQpAUBQF0L82K5AFWIip/ZgoE2NF5lYg+aLeu+++LzNxOsEAty//BkAVIgaoSCAQ9T4knZouf7DHuSjHLF+qGkAgaXT3RLqnm6pb169NG4fJyBfVF0/moQP9/AAAAABJRU5ErkJggg=="}},2640:(e,o,i)=>{"use strict";i.r(o),i.d(o,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var n=i(4848),t=i(8453);const a={sidebar_position:2,displayed_sidebar:"configurationSidebar",title:"Lobaro Config Tool"},s="Lobaro Config Tool",r={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",source:"@site/docs/configuration/lobaro-config-tool.md",sourceDirName:"configuration",slug:"/configuration/lobaro-config-tool",permalink:"/iot/configuration/lobaro-config-tool",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/lobaro-config-tool.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,displayed_sidebar:"configurationSidebar",title:"Lobaro Config Tool"},sidebar:"configurationSidebar",previous:{title:"Lobaro USB Config Adapter",permalink:"/iot/configuration/usb-config-adapter"},next:{title:"MBUS Reception Filtering",permalink:"/iot/configuration/meter-reception-filter-config"}},l={},c=[{value:"Download",id:"download",level:2},{value:"System Requirements",id:"system-requirements",level:2},{value:"Operating systems",id:"operating-systems",level:3},{value:"Default UART config",id:"default-uart-config",level:3},{value:"Installation",id:"installation",level:2},{value:"Windows",id:"windows",level:3},{value:"macOS / Linux",id:"macos--linux",level:3},{value:"Connection Setup",id:"connection-setup",level:2},{value:"Device Configuration",id:"device-configuration",level:2},{value:"Device Uart Logging",id:"device-uart-logging",level:2},{value:"Restarting",id:"restarting",level:3},{value:"Log-Files",id:"log-files",level:3},{value:"Sending to the device",id:"sending-to-the-device",level:3},{value:"Log parsing",id:"log-parsing",level:3},{value:"Device Firmwareupdate",id:"device-firmwareupdate",level:2},{value:"Getting the firmware",id:"getting-the-firmware",level:3},{value:"Installing new firmware",id:"installing-new-firmware",level:3}];function d(e){const o={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(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:"lobaro-config-tool",children:"Lobaro Config Tool"}),"\n",(0,n.jsxs)(o.p,{children:["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\n",(0,n.jsx)(o.a,{href:"/iot/configuration/usb-config-adapter",children:"USB configuration adapter"}),". It's available as free ",(0,n.jsx)(o.a,{href:"#download",children:"download"})," for all common\noperating systems."]}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool",img:i(5095),style:{width:"60%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,n.jsx)(o.h2,{id:"download",children:"Download"}),"\n",(0,n.jsxs)(o.p,{children:["See: ",(0,n.jsx)(o.a,{href:"https://github.com/lobaro/flash-tool-release/releases",children:"https://github.com/lobaro/flash-tool-release/releases"})]}),"\n",(0,n.jsx)(o.admonition,{title:"Select correct Download for your OS",type:"tip",children:(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsxs)(o.li,{children:["Windows: ",(0,n.jsx)(o.code,{children:"...windows_x86_64.zip"})]}),"\n",(0,n.jsxs)(o.li,{children:["Linux: ",(0,n.jsx)(o.code,{children:"...linux_x86_64.zip"})]}),"\n",(0,n.jsxs)(o.li,{children:["macOS (ARM): ",(0,n.jsx)(o.code,{children:"...mac_arm64.zip"})]}),"\n",(0,n.jsxs)(o.li,{children:["macOS (INTEL): ",(0,n.jsx)(o.code,{children:"...mac_x86_64.zip"})]}),"\n"]})}),"\n",(0,n.jsx)(o.h2,{id:"system-requirements",children:"System Requirements"}),"\n",(0,n.jsx)(o.p,{children:"The tools runs as local webserver and the user frontend is accessed using a standard browser."}),"\n",(0,n.jsx)(o.h3,{id:"operating-systems",children:"Operating systems"}),"\n",(0,n.jsx)(o.p,{children:"The tools is available for the following operating systems:"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsx)(o.li,{children:"macOS"}),"\n",(0,n.jsx)(o.li,{children:"Windows 7/10/11"}),"\n",(0,n.jsx)(o.li,{children:"Linux"}),"\n"]}),"\n",(0,n.jsx)(o.h3,{id:"default-uart-config",children:"Default UART config"}),"\n",(0,n.jsx)(o.p,{children:"The default uart configuration is:"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsx)(o.li,{children:"115200 Baud"}),"\n",(0,n.jsx)(o.li,{children:"8 data bits"}),"\n",(0,n.jsx)(o.li,{children:"Even parity"}),"\n",(0,n.jsx)(o.li,{children:"1 stop bot"}),"\n"]}),"\n",(0,n.jsxs)(o.p,{children:["This UART configuration is used by ",(0,n.jsx)(o.strong,{children:"all Lobaro devices"}),' on the "Config" port.']}),"\n",(0,n.jsx)(o.h2,{id:"installation",children:"Installation"}),"\n",(0,n.jsx)(o.h3,{id:"windows",children:"Windows"}),"\n",(0,n.jsx)(o.p,{children:'After downloading unzip and simply start the "lobaro-tool.exe" with double click.'}),"\n",(0,n.jsx)(o.admonition,{type:"info",children:(0,n.jsx)(o.p,{children:"Windows might show up a security warning and ask you to proceed anyway. This behavior is normal."})}),"\n",(0,n.jsx)(o.h3,{id:"macos--linux",children:"macOS / Linux"}),"\n",(0,n.jsx)(o.p,{children:'After downloading and unzip the "lobaro-tool" file, e.g. to a directory "lobaro" in your home path. Then make the tool\nfile executable:'}),"\n",(0,n.jsx)(o.pre,{children:(0,n.jsx)(o.code,{className:'language-bash"',children:"cd ~/lobaro\nchmod +x lobaro-tool\n./lobaro-tool\n"})}),"\n",(0,n.jsx)(o.h2,{id:"connection-setup",children:"Connection Setup"}),"\n",(0,n.jsxs)(o.p,{children:["Connect your Lobaro Device using the ",(0,n.jsx)(o.a,{href:"/iot/configuration/usb-config-adapter",children:"Lobaro Config Adapter"})," to the USB-port of your computer."]}),"\n",(0,n.jsx)(o.p,{children:"When your device is successfully attached to your computer, you can build a connection with the Lobaro Maintenance Tool."}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(553),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,n.jsxs)(o.p,{children:["Under Hardware Connection select ",(0,n.jsx)(o.em,{children:"auto"})," and click ",(0,n.jsx)(o.em,{children:"Connect"}),", as seen in the screenshot above. If you know to which port\nthe\ndevice is connected to your computer (either COM or ttyUSB), you can alternatively select it explicitly instead of using\nauto."]}),"\n",(0,n.jsx)(o.h2,{id:"device-configuration",children:"Device Configuration"}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(2019),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,n.jsxs)(o.p,{children:["When you are connected to a Lobaro Device, you can use the Tab named ",(0,n.jsx)(o.strong,{children:"CONFIGURATION"})," to read and change the\nconfiguration\nparameters of the Device. You can read out the current configuration from the device by pressing the Reload Config\nbutton (reading takes a few seconds)."]}),"\n",(0,n.jsxs)(o.admonition,{title:"Automatic device reboot",type:"warning",children:[(0,n.jsx)(o.p,{children:"Every time you use one of the buttons Reload Config. Write to Device, or Restore Default, the connected device will be\nrebooted! Also keep in mind that the operations triggered by pressing the buttons include communication with the device\nover a serial bus and they will take a few seconds."}),(0,n.jsx)(o.p,{children:"To avoid errors, please do not press those buttons repeatedly!"})]}),"\n",(0,n.jsxs)(o.p,{children:["When the configuration is read, you can alter the parameters by clicking on the pencil icon on the right. Values that\nyou changed will printed in bold font. When you have adjusted all values you want to change, you ",(0,n.jsx)(o.strong,{children:"must"})," press\n",(0,n.jsx)(o.em,{children:"Write to Device"})," to actually change anything in the device internal memory! Writing the values will also reboot the\ndevice."]}),"\n",(0,n.jsxs)(o.p,{children:["The Button ",(0,n.jsx)(o.em,{children:"Restore Default"})," will reset all config parameters of the connected Device to their internal default values.\nThe device will reboot, and the listed values of the configuration in the Lobaro Maintenance Tool well be updated."]}),"\n",(0,n.jsx)(o.admonition,{title:"Always reload the config before changing it!",type:"danger",children:(0,n.jsxs)(o.p,{children:["When you are working with multiple devices, make sure that your always press Reload Config after attaching a new device\nbefore you start updating values. If you fail to do so, you might accidentally transfer values from the previously\nattached device to the newly connected. This is especially a problem when working with LoRaWAN sensors, as you will copy\nthe DevEUI from one device to the other! This can be reverted by using the ",(0,n.jsx)(o.em,{children:"Restore Default"})," functionality."]})}),"\n",(0,n.jsxs)(o.p,{children:["You can watch the rebooting of the Device and check the altered configuration parameters by locking in the ",(0,n.jsx)(o.strong,{children:"LOGS"})," Tab."]}),"\n",(0,n.jsx)(o.h2,{id:"device-uart-logging",children:"Device Uart Logging"}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(6001),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,n.jsx)(o.p,{children:"All of our Devices provide extensive logging information over the CONFIG port. When you are connected to a Device in the\nLobaro Maintenance Tool, you can read the log messages in the LOGS Tab. This feature is helpful if you try to find out\nthe cause of problems you experience. You can also find out a lot of information about your Device, for example you can\nfind the parameters used to connect your LoRaWAN Devices to your Network Server (DevEUI, AppKey, etc.)."}),"\n",(0,n.jsx)(o.p,{children:"All messages are displayed in the big text area, each line is prefixed by the time it is received (using the clock of\nyour computer). You can use Clear Log to start again with an empty text area. The cleared messages will still be\navailable through the log files that the tool creates."}),"\n",(0,n.jsx)(o.p,{children:"When starting, our devices print out their current configuration parameter values. Most Devices also have a power on\ntest, that checks if attached sensors can be read successfully. Any Problems that the Device detects will be printed to\nthe log."}),"\n",(0,n.jsx)(o.h3,{id:"restarting",children:"Restarting"}),"\n",(0,n.jsx)(o.p,{children:"The LOGS Tab also contains a button Run (reset). This button triggers a reboot of the attached device. This can be\nuseful when you start working with your device or if you try to fix issues with connected sensors."}),"\n",(0,n.jsx)(o.h3,{id:"log-files",children:"Log-Files"}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(4084),style:{width:"25%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,n.jsxs)(o.p,{children:["The logs are also written to files on your computer. Every time you start the Lobaro Maintenance Tool, a new log file is\ncreated. When you press the button ",(0,n.jsx)(o.strong,{children:"Show Log Files"})," in the upper right location of the tool, a file browser is opened\nat the location where log files are kept."]}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsxs)(o.li,{children:["Windows: ",(0,n.jsx)(o.code,{children:"%homepath%\\.lobaro\\logs"})]}),"\n",(0,n.jsxs)(o.li,{children:["Linux / Mac: ",(0,n.jsx)(o.code,{children:"~/.lobaro/logs"})]}),"\n",(0,n.jsxs)(o.li,{children:["File Name: ",(0,n.jsx)(o.code,{children:"-uart-log.txt"})]}),"\n"]}),"\n",(0,n.jsx)(o.h3,{id:"sending-to-the-device",children:"Sending to the device"}),"\n",(0,n.jsx)(o.p,{children:"Below the text area is an input field Send via UART. Text entered here (and confirmed with Enter) will be sent to the\nconnected Device via UART. Some of our Devices use this feature, for example the LoRaWAN Modbus Bridge for its\ninteractive Dialog Mode."}),"\n",(0,n.jsx)(o.h3,{id:"log-parsing",children:"Log parsing"}),"\n",(0,n.jsx)(o.p,{children:"If you need to parse the log messages of one of our Devices with your own tools, you can connect to it without the\nMaintenance Tool by using any serial UART reader. You can find the UART parameters above. Take care on the additional\ncontrol lines (DTR, RTS) to have the right state to keep the device run the firmware."}),"\n",(0,n.jsx)(o.h2,{id:"device-firmwareupdate",children:"Device Firmwareupdate"}),"\n",(0,n.jsx)(o.p,{children:"Our devices are shipped ready to use with firmware installed on them, so normally you do not need to install firmware\nyourself. However, over time we sometimes add new features to our devices or fix bugs that come up over time. If you\nwant to use those improvements for devices all ready shipped to you, you can update the firmware yourself."}),"\n",(0,n.jsx)(o.p,{children:"This page describes how you install firmware on devices that you have physical access to. This can be done for most of\nour devices, those using LoRaWAN and those using NB-IoT/LTE-M."}),"\n",(0,n.jsxs)(o.p,{children:["Our NB-IoT/LTE-M devices also support installing firmware over the air, without physical access. Check the ",(0,n.jsx)(o.a,{href:"/cloud",children:"platform\ndocumentation"})," for details."]}),"\n",(0,n.jsx)(o.h3,{id:"getting-the-firmware",children:"Getting the firmware"}),"\n",(0,n.jsx)(o.p,{children:"You will need the Firmware you want to install to your device as a file on your computer."}),"\n",(0,n.jsxs)(o.p,{children:["You can get the latest firmware files from this documentation on the firmware subpage for your specific Lobaro product.\nThe files are\nin a format called Hex and are therefore also called Hex-File. The filename always starts with app- and contains the\nversion number as well as a short description of its function and the hardware it is used for. So, for example,\n",(0,n.jsx)(o.code,{children:"app-nrf9160-wmbus-TZ2-0.3.1-mcuboot-slot0.hex"})," contains firmware for our wMBus-Gateway on NB-IoT-Hardware (nrf9160) in\nversion 0.3.1."]}),"\n",(0,n.jsx)(o.h3,{id:"installing-new-firmware",children:"Installing new firmware"}),"\n",(0,n.jsx)(a,{alt:"Lobaro Configuration Tool - Flash new firmware",img:i(7768),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,n.jsxs)(o.p,{children:["Make sure your Device is successfully attached to your computer and the Maintenance Tool is connected, as described\nabove. In the Tab ",(0,n.jsx)(o.strong,{children:"FIRMWARE"})," you can select the Firmware file you want to install using the button ",(0,n.jsx)(o.em,{children:"Select Hex File"}),".\nThis\nwill open a file selection dialog, where you can select the hex-file with the Firmware you want to install to your\nDevice. To start installing you need to press ",(0,n.jsx)(o.em,{children:"Flash Hex File"}),". The upload will take several seconds; progress will be\ndisplayed by the blue progress bar. It turns green on successful completion. You can verify the installation succeeded\nand your Device is now running the correct version by checking the ",(0,n.jsx)(o.strong,{children:"LOGS"})," Tab."]}),"\n",(0,n.jsx)(o.p,{children:"You should also take a look at the Configuration Parameters. When an update adds new features, there might be new\nConfiguration Parameters to set, or some existing Parameters might work differently. Check the Firmware's Changelog to\nsee what changed between versions and what you have to look out for, for your individual Firmware update."})]})}function h(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:()=>s,x:()=>r});var n=i(6540);const t={},a=n.createContext(t);function s(e){const o=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(a.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a5750849.d2285087.js b/assets/js/a5750849.d2285087.js deleted file mode 100644 index 7d9c34ad..00000000 --- a/assets/js/a5750849.d2285087.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[1148],{5095:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d6a9d01.300.png 300w,"+i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.c09dea3.600.png 600w,"+i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.18a3bd5.900.png 900w,"+i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.699e2d7.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d6a9d01.300.png",width:300,height:179},{path:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.c09dea3.600.png",width:600,height:358},{path:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.18a3bd5.900.png",width:900,height:537},{path:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.699e2d7.1200.png",width:1200,height:716}],src:i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d6a9d01.300.png",toString:function(){return i.p+"assets/images/ideal-img/Lobaro_Tool_ConfigFeature.d6a9d01.300.png"},placeholder:void 0,width:300,height:179},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAGCAIAAAB1kpiRAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgklEQVR4nC2MQQ7CMAwE8/8HwoEi7kW0SZTG9q6doCDmNHOZdOacSzZVACDhvgSUdtX3nuq+15KP2i6RXks/PqYipi3n8nyksm3a2iWq9OP1Ou83cl0IwJmMHhEiMiIM4BjuPuckqaoJZu7svUfEiJjjD0kzS4ABZqbu68cf7uQq+wK1c63N5QE9AAAAAABJRU5ErkJggg=="}},7768:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-config-flash.9a69a9b.300.png 300w,"+i.p+"assets/images/ideal-img/tool-config-flash.6eb2cd7.600.png 600w,"+i.p+"assets/images/ideal-img/tool-config-flash.d81da13.900.png 900w,"+i.p+"assets/images/ideal-img/tool-config-flash.c404633.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/tool-config-flash.9a69a9b.300.png",width:300,height:148},{path:i.p+"assets/images/ideal-img/tool-config-flash.6eb2cd7.600.png",width:600,height:296},{path:i.p+"assets/images/ideal-img/tool-config-flash.d81da13.900.png",width:900,height:443},{path:i.p+"assets/images/ideal-img/tool-config-flash.c404633.1200.png",width:1200,height:591}],src:i.p+"assets/images/ideal-img/tool-config-flash.9a69a9b.300.png",toString:function(){return i.p+"assets/images/ideal-img/tool-config-flash.9a69a9b.300.png"},placeholder:void 0,width:300,height:148},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgElEQVR4nG3JUQqCQBhF4dl/EASllUKtooeIIGgPtQIfzTSb/446J5AgAi983Ifjrpczp+OBzXpJnqXsd/kozxKybUK6WpDMZ9GpbQkSQ4xMLUp0RYEr7zeaR0VZv6ie1ahparx/j8w8FgxnZgxxwJshGfp+CPqR4STR991/mPABrsC4zAIkdt8AAAAASUVORK5CYII="}},2019:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-config-loaded.c0dac26.300.png 300w,"+i.p+"assets/images/ideal-img/tool-config-loaded.4114a82.600.png 600w,"+i.p+"assets/images/ideal-img/tool-config-loaded.aa13a16.900.png 900w,"+i.p+"assets/images/ideal-img/tool-config-loaded.a03c7c0.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/tool-config-loaded.c0dac26.300.png",width:300,height:155},{path:i.p+"assets/images/ideal-img/tool-config-loaded.4114a82.600.png",width:600,height:309},{path:i.p+"assets/images/ideal-img/tool-config-loaded.aa13a16.900.png",width:900,height:464},{path:i.p+"assets/images/ideal-img/tool-config-loaded.a03c7c0.1200.png",width:1200,height:618}],src:i.p+"assets/images/ideal-img/tool-config-loaded.c0dac26.300.png",toString:function(){return i.p+"assets/images/ideal-img/tool-config-loaded.c0dac26.300.png"},placeholder:void 0,width:300,height:155},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAArklEQVR4nB2KwUoDQRBE55+j4q6yCIkHf2Bv6tEf8KYgcT0mUSEEwXUOih4lGNLuzHTPC5mCRz2Kcpc3V7TXLcfjivr8hObirFBNaqpxzUFzyNHpKLupf+HBv3LXPzP9XPLYL+je5zzt/WvF/duMrrvFSf9B2mwRSViG9P3D4D0l2UrZZo0T2RJjZAgDakoy5T8MJNWyS4zEv19cCAHVhIhgOWNm5ZD3rkqIEUuJHXKrsKwTcDxUAAAAAElFTkSuQmCC"}},6001:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-config-logs.e732294.300.png 300w,"+i.p+"assets/images/ideal-img/tool-config-logs.af58ae6.600.png 600w,"+i.p+"assets/images/ideal-img/tool-config-logs.06701a1.900.png 900w,"+i.p+"assets/images/ideal-img/tool-config-logs.1fd3d4d.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/tool-config-logs.e732294.300.png",width:300,height:206},{path:i.p+"assets/images/ideal-img/tool-config-logs.af58ae6.600.png",width:600,height:412},{path:i.p+"assets/images/ideal-img/tool-config-logs.06701a1.900.png",width:900,height:619},{path:i.p+"assets/images/ideal-img/tool-config-logs.1fd3d4d.1200.png",width:1200,height:825}],src:i.p+"assets/images/ideal-img/tool-config-logs.e732294.300.png",toString:function(){return i.p+"assets/images/ideal-img/tool-config-logs.e732294.300.png"},placeholder:void 0,width:300,height:206},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAHCAYAAAAxrNxjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVR4nGWOu07EMAAE/d8UILhAwnEtDaKmgW86KYnz1In4lTh2yCBMhVhptMVOseLj/Y3Xl2fy+1uORcbp+MDpKeexyCjyO7LDDYfrq13E2bFtG/u+s/M/XzESxgGhzmdW7/mcFJM2KG3QRmOdwznLPDuW4BEhRrYYaaRESklVVanbtk1M04Q1BhFDYF09UtbUdZ3Esixpmoau635FZxExBha/pKHve4ZhQCmFtRZjTOofRAgr3i8MreQyjmitmdO/v3wDWVgAL2Yh6GYAAAAASUVORK5CYII="}},553:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-connect-auto.e6e9dcb.300.png 300w,"+i.p+"assets/images/ideal-img/tool-connect-auto.8e919af.600.png 600w,"+i.p+"assets/images/ideal-img/tool-connect-auto.9baaf14.900.png 900w,"+i.p+"assets/images/ideal-img/tool-connect-auto.478ac37.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/tool-connect-auto.e6e9dcb.300.png",width:300,height:148},{path:i.p+"assets/images/ideal-img/tool-connect-auto.8e919af.600.png",width:600,height:297},{path:i.p+"assets/images/ideal-img/tool-connect-auto.9baaf14.900.png",width:900,height:445},{path:i.p+"assets/images/ideal-img/tool-connect-auto.478ac37.1200.png",width:1200,height:593}],src:i.p+"assets/images/ideal-img/tool-connect-auto.e6e9dcb.300.png",toString:function(){return i.p+"assets/images/ideal-img/tool-connect-auto.e6e9dcb.300.png"},placeholder:void 0,width:300,height:148},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVR4nD2NywpBURhG90OT+yUPYaBOyfuIgQxESQYGctrnwn/hLB1ksPpaa/KFxTwhmU0Z9luMBm0m496H2vvdJp12g26nUYXqKajcKYocM8Hd8Kfjpqg7ZYzEw56wWq7JzjtimlKoE09H0u0GVUFq7iWSZ4Tr5YLlN0wfqBlSFkgWMVNM5btuhOr1ooJv+MX6+u8/3nV9s9SCuj06AAAAAElFTkSuQmCC"}},4084:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/tool-show-logfiles.3584076.300.png 300w,"+i.p+"assets/images/ideal-img/tool-show-logfiles.7348375.321.png 321w",images:[{path:i.p+"assets/images/ideal-img/tool-show-logfiles.3584076.300.png",width:300,height:89},{path:i.p+"assets/images/ideal-img/tool-show-logfiles.7348375.321.png",width:321,height:95}],src:i.p+"assets/images/ideal-img/tool-show-logfiles.3584076.300.png",toString:function(){return i.p+"assets/images/ideal-img/tool-show-logfiles.3584076.300.png"},placeholder:void 0,width:300,height:89},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAIAAAAlXwkiAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAW0lEQVR4nB3CQQpAUBQF0L82K5AFWIip/ZgoE2NF5lYg+aLeu+++LzNxOsEAty//BkAVIgaoSCAQ9T4knZouf7DHuSjHLF+qGkAgaXT3RLqnm6pb169NG4fJyBfVF0/moQP9/AAAAABJRU5ErkJggg=="}},2640:(e,o,i)=>{"use strict";i.r(o),i.d(o,{assets:()=>l,contentTitle:()=>s,default:()=>g,frontMatter:()=>a,metadata:()=>r,toc:()=>d});var t=i(4848),n=i(8453);const a={sidebar_position:2,displayed_sidebar:"configurationSidebar",title:"Lobaro Config Tool"},s="Lobaro Config Tool",r={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",source:"@site/docs/configuration/lobaro-config-tool.md",sourceDirName:"configuration",slug:"/configuration/lobaro-config-tool",permalink:"/iot/configuration/lobaro-config-tool",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/lobaro-config-tool.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2,displayed_sidebar:"configurationSidebar",title:"Lobaro Config Tool"},sidebar:"configurationSidebar",previous:{title:"Lobaro USB Config Adapter",permalink:"/iot/configuration/usb-config-adapter"},next:{title:"MBUS Reception Filtering",permalink:"/iot/configuration/meter-reception-filter-config"}},l={},d=[{value:"Download",id:"download",level:2},{value:"System Requirements",id:"system-requirements",level:2},{value:"Operating systems",id:"operating-systems",level:3},{value:"Default UART config",id:"default-uart-config",level:3},{value:"Installation",id:"installation",level:2},{value:"Windows",id:"windows",level:3},{value:"macOS / Linux",id:"macos--linux",level:3},{value:"Connection Setup",id:"connection-setup",level:2},{value:"Device Configuration",id:"device-configuration",level:2},{value:"Device Uart Logging",id:"device-uart-logging",level:2},{value:"Restarting",id:"restarting",level:3},{value:"Log-Files",id:"log-files",level:3},{value:"Sending to the device",id:"sending-to-the-device",level:3},{value:"Log parsing",id:"log-parsing",level:3},{value:"Device Firmwareupdate",id:"device-firmwareupdate",level:2},{value:"Getting the firmware",id:"getting-the-firmware",level:3},{value:"Installing new firmware",id:"installing-new-firmware",level:3}];function c(e){const o={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,n.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h1,{id:"lobaro-config-tool",children:"Lobaro Config Tool"}),"\n",(0,t.jsxs)(o.p,{children:["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\n",(0,t.jsx)(o.a,{href:"/iot/configuration/usb-config-adapter",children:"USB configuration adapter"}),". It's available as free ",(0,t.jsx)(o.a,{href:"#download",children:"download"})," for all common\noperating systems."]}),"\n",(0,t.jsx)(a,{alt:"Lobaro Configuration Tool",img:i(5095),style:{width:"60%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(o.h2,{id:"download",children:"Download"}),"\n",(0,t.jsxs)(o.p,{children:["See: ",(0,t.jsx)(o.a,{href:"https://github.com/lobaro/flash-tool-release/releases",children:"https://github.com/lobaro/flash-tool-release/releases"})]}),"\n",(0,t.jsx)(o.admonition,{title:"Select correct Download for your OS",type:"tip",children:(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsxs)(o.li,{children:["Windows: ",(0,t.jsx)(o.code,{children:"...windows_x86_64.zip"})]}),"\n",(0,t.jsxs)(o.li,{children:["Linux: ",(0,t.jsx)(o.code,{children:"...linux_x86_64.zip"})]}),"\n",(0,t.jsxs)(o.li,{children:["macOS (ARM): ",(0,t.jsx)(o.code,{children:"...mac_arm64.zip"})]}),"\n",(0,t.jsxs)(o.li,{children:["macOS (INTEL): ",(0,t.jsx)(o.code,{children:"...mac_x86_64.zip"})]}),"\n"]})}),"\n",(0,t.jsx)(o.h2,{id:"system-requirements",children:"System Requirements"}),"\n",(0,t.jsx)(o.p,{children:"The tools runs as local webserver and the user frontend is accessed using a standard browser."}),"\n",(0,t.jsx)(o.h3,{id:"operating-systems",children:"Operating systems"}),"\n",(0,t.jsx)(o.p,{children:"The tools is available for the following operating systems:"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"macOS"}),"\n",(0,t.jsx)(o.li,{children:"Windows 7/10/11"}),"\n",(0,t.jsx)(o.li,{children:"Linux"}),"\n"]}),"\n",(0,t.jsx)(o.h3,{id:"default-uart-config",children:"Default UART config"}),"\n",(0,t.jsx)(o.p,{children:"The default uart configuration is:"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"115200 Baud"}),"\n",(0,t.jsx)(o.li,{children:"8 data bits"}),"\n",(0,t.jsx)(o.li,{children:"Even parity"}),"\n",(0,t.jsx)(o.li,{children:"1 stop bot"}),"\n"]}),"\n",(0,t.jsxs)(o.p,{children:["This UART configuration is used by ",(0,t.jsx)(o.strong,{children:"all Lobaro devices"}),' on the "Config" port.']}),"\n",(0,t.jsx)(o.h2,{id:"installation",children:"Installation"}),"\n",(0,t.jsx)(o.h3,{id:"windows",children:"Windows"}),"\n",(0,t.jsx)(o.p,{children:'After downloading unzip and simply start the "lobaro-tool.exe" with double click.'}),"\n",(0,t.jsx)(o.admonition,{type:"info",children:(0,t.jsx)(o.p,{children:"Windows might show up a security warning and ask you to proceed anyway. This behavior is normal."})}),"\n",(0,t.jsx)(o.h3,{id:"macos--linux",children:"macOS / Linux"}),"\n",(0,t.jsx)(o.p,{children:'After downloading and unzip the "lobaro-tool" file, e.g. to a directory "lobaro" in your home path. Then make the tool\nfile executable:'}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:'language-bash"',children:"cd ~/lobaro\nchmod +x lobaro-tool\n./lobaro-tool\n"})}),"\n",(0,t.jsx)(o.h2,{id:"connection-setup",children:"Connection Setup"}),"\n",(0,t.jsxs)(o.p,{children:["Connect your Lobaro Device using the ",(0,t.jsx)(o.a,{href:"/iot/configuration/usb-config-adapter",children:"Lobaro Config Adapter"})," to the USB-port of your computer."]}),"\n",(0,t.jsx)(o.p,{children:"When your device is successfully attached to your computer, you can build a connection with the Lobaro Maintenance Tool."}),"\n",(0,t.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(553),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,t.jsxs)(o.p,{children:["Under Hardware Connection select ",(0,t.jsx)(o.em,{children:"auto"})," and click ",(0,t.jsx)(o.em,{children:"Connect"}),", as seen in the screenshot above. If you know to which port\nthe\ndevice is connected to your computer (either COM or ttyUSB), you can alternatively select it explicitly instead of using\nauto."]}),"\n",(0,t.jsx)(o.h2,{id:"device-configuration",children:"Device Configuration"}),"\n",(0,t.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(2019),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,t.jsxs)(o.p,{children:["When you are connected to a Lobaro Device, you can use the Tab named ",(0,t.jsx)(o.strong,{children:"CONFIGURATION"})," to read and change the\nconfiguration\nparameters of the Device. You can read out the current configuration from the device by pressing the Reload Config\nbutton (reading takes a few seconds)."]}),"\n",(0,t.jsxs)(o.admonition,{title:"Automatic device reboot",type:"warning",children:[(0,t.jsx)(o.p,{children:"Every time you use one of the buttons Reload Config. Write to Device, or Restore Default, the connected device will be\nrebooted! Also keep in mind that the operations triggered by pressing the buttons include communication with the device\nover a serial bus and they will take a few seconds."}),(0,t.jsx)(o.p,{children:"To avoid errors, please do not press those buttons repeatedly!"})]}),"\n",(0,t.jsxs)(o.p,{children:["When the configuration is read, you can alter the parameters by clicking on the pencil icon on the right. Values that\nyou changed will printed in bold font. When you have adjusted all values you want to change, you ",(0,t.jsx)(o.strong,{children:"must"})," press\n",(0,t.jsx)(o.em,{children:"Write to Device"})," to actually change anything in the device internal memory! Writing the values will also reboot the\ndevice."]}),"\n",(0,t.jsxs)(o.p,{children:["The Button ",(0,t.jsx)(o.em,{children:"Restore Default"})," will reset all config parameters of the connected Device to their internal default values.\nThe device will reboot, and the listed values of the configuration in the Lobaro Maintenance Tool well be updated."]}),"\n",(0,t.jsx)(o.admonition,{title:"Always reload the config before changing it!",type:"danger",children:(0,t.jsxs)(o.p,{children:["When you are working with multiple devices, make sure that your always press Reload Config after attaching a new device\nbefore you start updating values. If you fail to do so, you might accidentally transfer values from the previously\nattached device to the newly connected. This is especially a problem when working with LoRaWAN sensors, as you will copy\nthe DevEUI from one device to the other! This can be reverted by using the ",(0,t.jsx)(o.em,{children:"Restore Default"})," functionality."]})}),"\n",(0,t.jsxs)(o.p,{children:["You can watch the rebooting of the Device and check the altered configuration parameters by locking in the ",(0,t.jsx)(o.strong,{children:"LOGS"})," Tab."]}),"\n",(0,t.jsx)(o.h2,{id:"device-uart-logging",children:"Device Uart Logging"}),"\n",(0,t.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(6001),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,t.jsx)(o.p,{children:"All of our Devices provide extensive logging information over the CONFIG port. When you are connected to a Device in the\nLobaro Maintenance Tool, you can read the log messages in the LOGS Tab. This feature is helpful if you try to find out\nthe cause of problems you experience. You can also find out a lot of information about your Device, for example you can\nfind the parameters used to connect your LoRaWAN Devices to your Network Server (DevEUI, AppKey, etc.)."}),"\n",(0,t.jsx)(o.p,{children:"All messages are displayed in the big text area, each line is prefixed by the time it is received (using the clock of\nyour computer). You can use Clear Log to start again with an empty text area. The cleared messages will still be\navailable through the log files that the tool creates."}),"\n",(0,t.jsx)(o.p,{children:"When starting, our devices print out their current configuration parameter values. Most Devices also have a power on\ntest, that checks if attached sensors can be read successfully. Any Problems that the Device detects will be printed to\nthe log."}),"\n",(0,t.jsx)(o.h3,{id:"restarting",children:"Restarting"}),"\n",(0,t.jsx)(o.p,{children:"The LOGS Tab also contains a button Run (reset). This button triggers a reboot of the attached device. This can be\nuseful when you start working with your device or if you try to fix issues with connected sensors."}),"\n",(0,t.jsx)(o.h3,{id:"log-files",children:"Log-Files"}),"\n",(0,t.jsx)(a,{alt:"Lobaro Configuration Tool - Automatic Connection",img:i(4084),style:{width:"25%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,t.jsxs)(o.p,{children:["The logs are also written to files on your computer. Every time you start the Lobaro Maintenance Tool, a new log file is\ncreated. When you press the button ",(0,t.jsx)(o.strong,{children:"Show Log Files"})," in the upper right location of the tool, a file browser is opened\nat the location where log files are kept."]}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsxs)(o.li,{children:["Windows: ",(0,t.jsx)(o.code,{children:"%homepath%\\.lobaro\\logs"})]}),"\n",(0,t.jsxs)(o.li,{children:["Linux / Mac: ",(0,t.jsx)(o.code,{children:"~/.lobaro/logs"})]}),"\n",(0,t.jsxs)(o.li,{children:["File Name: ",(0,t.jsx)(o.code,{children:"-uart-log.txt"})]}),"\n"]}),"\n",(0,t.jsx)(o.h3,{id:"sending-to-the-device",children:"Sending to the device"}),"\n",(0,t.jsx)(o.p,{children:"Below the text area is an input field Send via UART. Text entered here (and confirmed with Enter) will be sent to the\nconnected Device via UART. Some of our Devices use this feature, for example the LoRaWAN Modbus Bridge for its\ninteractive Dialog Mode."}),"\n",(0,t.jsx)(o.h3,{id:"log-parsing",children:"Log parsing"}),"\n",(0,t.jsx)(o.p,{children:"If you need to parse the log messages of one of our Devices with your own tools, you can connect to it without the\nMaintenance Tool by using any serial UART reader. You can find the UART parameters above. Take care on the additional\ncontrol lines (DTR, RTS) to have the right state to keep the device run the firmware."}),"\n",(0,t.jsx)(o.h2,{id:"device-firmwareupdate",children:"Device Firmwareupdate"}),"\n",(0,t.jsx)(o.p,{children:"Our devices are shipped ready to use with firmware installed on them, so normally you do not need to install firmware\nyourself. However, over time we sometimes add new features to our devices or fix bugs that come up over time. If you\nwant to use those improvements for devices all ready shipped to you, you can update the firmware yourself."}),"\n",(0,t.jsx)(o.p,{children:"This page describes how you install firmware on devices that you have physical access to. This can be done for most of\nour devices, those using LoRaWAN and those using NB-IoT/LTE-M."}),"\n",(0,t.jsxs)(o.p,{children:["Our NB-IoT/LTE-M devices also support installing firmware over the air, without physical access. Check the ",(0,t.jsx)(o.a,{href:"/cloud",children:"platform\ndocumentation"})," for details."]}),"\n",(0,t.jsx)(o.h3,{id:"getting-the-firmware",children:"Getting the firmware"}),"\n",(0,t.jsx)(o.p,{children:"You will need the Firmware you want to install to your device as a file on your computer."}),"\n",(0,t.jsxs)(o.p,{children:["You can get the latest firmware files from this documentation on the firmware subpage for your specific Lobaro product.\nThe files are\nin a format called Hex and are therefore also called Hex-File. The filename always starts with app- and contains the\nversion number as well as a short description of its function and the hardware it is used for. So, for example,\n",(0,t.jsx)(o.code,{children:"app-nrf9160-wmbus-TZ2-0.3.1-mcuboot-slot0.hex"})," contains firmware for our wMBus-Gateway on NB-IoT-Hardware (nrf9160) in\nversion 0.3.1."]}),"\n",(0,t.jsx)(o.h3,{id:"installing-new-firmware",children:"Installing new firmware"}),"\n",(0,t.jsx)(a,{alt:"Lobaro Configuration Tool - Flash new firmware",img:i(7768),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,t.jsxs)(o.p,{children:["Make sure your Device is successfully attached to your computer and the Maintenance Tool is connected, as described\nabove. In the Tab ",(0,t.jsx)(o.strong,{children:"FIRMWARE"})," you can select the Firmware file you want to install using the button ",(0,t.jsx)(o.em,{children:"Select Hex File"}),".\nThis\nwill open a file selection dialog, where you can select the hex-file with the Firmware you want to install to your\nDevice. To start installing you need to press ",(0,t.jsx)(o.em,{children:"Flash Hex File"}),". The upload will take several seconds; progress will be\ndisplayed by the blue progress bar. It turns green on successful completion. You can verify the installation succeeded\nand your Device is now running the correct version by checking the ",(0,t.jsx)(o.strong,{children:"LOGS"})," Tab."]}),"\n",(0,t.jsx)(o.p,{children:"You should also take a look at the Configuration Parameters. When an update adds new features, there might be new\nConfiguration Parameters to set, or some existing Parameters might work differently. Check the Firmware's Changelog to\nsee what changed between versions and what you have to look out for, for your individual Firmware update."})]})}function g(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,o,i)=>{"use strict";i.d(o,{R:()=>s,x:()=>r});var t=i(6540);const n={},a=t.createContext(n);function s(e){const o=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),t.createElement(a.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a5b914f3.420cdf37.js b/assets/js/a5b914f3.420cdf37.js new file mode 100644 index 00000000..6fbf5bbc --- /dev/null +++ b/assets/js/a5b914f3.420cdf37.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[7244],{8045:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.baf7698.800.jpg 800w",images:[{path:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.baf7698.800.jpg",width:800,height:800}],src:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.baf7698.800.jpg",toString:function(){return i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.baf7698.800.jpg"},placeholder:void 0,width:800,height:800},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAKAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAYH/8QAIBAAAgEEAQUAAAAAAAAAAAAAAQIDAAQFESESFDFCUf/EABQBAQAAAAAAAAAAAAAAAAAAAAH/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDcs2mSGQyLxQX/AHiuJba6VtQRQqqkrrq5JIcEFdkt8AIs7aRpraKVlKM6Bip9SR4omWRJHskkVXU3A2GGweCafSH/2Q=="}},4962:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.800dc32.1600.jpg 1600w,"+i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.961f5b7.1885.jpg 1885w",images:[{path:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.800dc32.1600.jpg",width:1600,height:187},{path:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.961f5b7.1885.jpg",width:1885,height:220}],src:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.800dc32.1600.jpg",toString:function(){return i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.800dc32.1600.jpg"},placeholder:void 0,width:1600,height:187},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAABAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAQH/8QAHRAAAQIHAAAAAAAAAAAAAAAAAAECBgcyNnFysv/EABQBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAAUH/2gAMAwEAAhEDEQA/AJ5v3DEWicNM5fW7IA3BH//Z"}},9356:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/adapter1low.9350fd9.469.jpg 469w",images:[{path:i.p+"assets/images/ideal-img/adapter1low.9350fd9.469.jpg",width:469,height:395}],src:i.p+"assets/images/ideal-img/adapter1low.9350fd9.469.jpg",toString:function(){return i.p+"assets/images/ideal-img/adapter1low.9350fd9.469.jpg"},placeholder:void 0,width:469,height:395},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAIAAoDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAhEAACAQMDBQAAAAAAAAAAAAABAgUAAwQGERQSEzFBwf/EABUBAQEAAAAAAAAAAAAAAAAAAAAC/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQACEf/aAAwDAQACEQMRAD8Ar+LES+oJuUlcaS42LynxBjtuens3GQuCD5O2/wAqkW1K21VmLEAAk+6UpykyCt//2Q=="}},3938:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/config-adapter-schematic.320582c.1399.png 1399w",images:[{path:i.p+"assets/images/ideal-img/config-adapter-schematic.320582c.1399.png",width:1399,height:525}],src:i.p+"assets/images/ideal-img/config-adapter-schematic.320582c.1399.png",toString:function(){return i.p+"assets/images/ideal-img/config-adapter-schematic.320582c.1399.png"},placeholder:void 0,width:1399,height:525},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAECAYAAAC3OK7NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAdklEQVR4nDWNSwoCMRAFc/9jufQQggyioCTOdD7dk6RLHPEtiqI2LwCMObDeWdOCbHf6mDh+9P/CF85kVyPnSN5u2L4j7wW1zCoJrU9C7x3VSkwRkQsiJ6o1HtczrcTDsyRCKwXVRtWG6UazF+6ONWGO37U7fADQ+5tBzCyAbwAAAABJRU5ErkJggg=="}},2608:(e,o,i)=>{"use strict";i.r(o),i.d(o,{assets:()=>s,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>A,toc:()=>d});var t=i(4848),n=i(8453);const a={sidebar_position:1,displayed_sidebar:"configurationSidebar",title:"Lobaro USB Config Adapter"},r="Lobaro USB Config Adapter",A={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:",source:"@site/docs/configuration/usb-config-adapter.md",sourceDirName:"configuration",slug:"/configuration/usb-config-adapter",permalink:"/iot/configuration/usb-config-adapter",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/usb-config-adapter.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,displayed_sidebar:"configurationSidebar",title:"Lobaro USB Config Adapter"},sidebar:"configurationSidebar",previous:{title:"Overview",permalink:"/iot/configuration/"},next:{title:"Lobaro Config Tool",permalink:"/iot/configuration/lobaro-config-tool"}},s={},d=[{value:"Adapter V1",id:"adapter-v1",level:2},{value:"Order-Code",id:"order-code",level:3},{value:"Installation",id:"installation",level:3},{value:"Physical connection",id:"physical-connection",level:3},{value:"Schematic",id:"schematic",level:3},{value:"Connector Type",id:"connector-type",level:3},{value:"Control Lines",id:"control-lines",level:3},{value:"DTR control line",id:"dtr-control-line",level:4},{value:"RTS control line",id:"rts-control-line",level:4},{value:"Adapter V2",id:"adapter-v2",level:2}];function l(e){const o={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h1,{id:"lobaro-usb-config-adapter",children:"Lobaro USB Config Adapter"}),"\n",(0,t.jsx)(o.p,{children:"The Lobaro USB configuration adapters connects the configuration serial uart of our devices to a PC. It is used for:"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Sensor initial configuration, e.g. network parameters like LTE APN point"}),"\n",(0,t.jsx)(o.li,{children:"Viewing firmware log/debug diagnostic output"}),"\n",(0,t.jsx)(o.li,{children:"Firmware updates"}),"\n",(0,t.jsx)(o.li,{children:"Powering some of our devices (Boot and Reset must be disconnected to use as USB power supply)"}),"\n",(0,t.jsxs)(o.li,{children:["using our free ",(0,t.jsx)(o.a,{href:"/iot/configuration/lobaro-config-tool",children:"Lobaro Maintenance Tool"})," PC software."]}),"\n"]}),"\n",(0,t.jsx)(o.h2,{id:"adapter-v1",children:"Adapter V1"}),"\n",(0,t.jsx)(a,{alt:"Lobaro USB Configuration Adapter V1",img:i(8045),style:{width:"30%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(o.h3,{id:"order-code",children:"Order-Code"}),"\n",(0,t.jsxs)(o.p,{children:["The configuration adapter including a 1 m USB cable can be ordered using its article number: ",(0,t.jsx)(o.code,{children:"#8000005"}),"."]}),"\n",(0,t.jsx)(o.h3,{id:"installation",children:"Installation"}),"\n",(0,t.jsxs)(o.p,{children:["The CP2102 uart serial USB driver ",(0,t.jsx)(o.strong,{children:"must"})," be installed, it can be\ndownloaded at\nthe ",(0,t.jsx)(o.a,{href:"https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads",children:"Silicon Labs Homepage"}),"."]}),"\n",(0,t.jsx)(o.admonition,{title:"Download",type:"tip",children:(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"CP210x_Universal_Windows_Driver.zip for Windows 11+"}),"\n",(0,t.jsx)(o.li,{children:"CP210x Windows Drivers v6.7.6 for Windows 10 and earlier"}),"\n"]})}),"\n",(0,t.jsx)(o.h3,{id:"physical-connection",children:"Physical connection"}),"\n",(0,t.jsx)(a,{alt:"Connection example lobaro usb configuration adaptr",img:i(9356),style:{width:"40%",paddingTop:"10px",paddingBottom:"20px"}}),"\n",(0,t.jsx)(o.p,{children:"Connect your Lobaro Device to the USB-port of your computer using the Lobaro Config Adapter. The 6-pin connector must be\nplugged into the white rectangular socket on the device that is labeled with the word CONFIG. The location of the socket\nis dependent on the specific device and hardware version you are trying to attach. See the hardware specific product\ndescription for the individual connector location."}),"\n",(0,t.jsx)(o.admonition,{title:"Device power supply over USB",type:"note",children:(0,t.jsx)(o.p,{children:"Some devices can be powered by the 3.3V the config adapter can provide out of the USB Port. Other devices, mostly the\nNB-IoT/LTE-M enabled cellular IoT boards or the need their normal power supply connected as well. If in doubt, just make\nsure you have the device powered!"})}),"\n",(0,t.jsx)(o.h3,{id:"schematic",children:"Schematic"}),"\n",(0,t.jsx)(a,{alt:"Schematic Lobaro USB Configuration Adapter V1",img:i(3938),style:{width:"100%",paddingTop:"10px",paddingBottom:"20px"}}),"\n",(0,t.jsx)(o.h3,{id:"connector-type",children:"Connector Type"}),"\n",(0,t.jsxs)(o.p,{children:["The USB adapter uses a six-wire ",(0,t.jsx)(o.a,{href:"https://www.jst-mfg.com/product/index.php?series=287",children:"JST-ZH series connector"})," for\nattaching to Lobaro hardware at the config connector."]}),"\n",(0,t.jsx)(a,{alt:"Lobaro USB Configuration Adapter V1",img:i(4962),style:{width:"90%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(o.h3,{id:"control-lines",children:"Control Lines"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Boot0 of Lobaro sensors is connected to DTR line of the PC uart"}),"\n",(0,t.jsx)(o.li,{children:"Reset (active low) of Lobaro sensors is connected to RTS line of the PC uart"}),"\n"]}),"\n",(0,t.jsx)(o.admonition,{type:"info",children:(0,t.jsx)(o.p,{children:"Normally the handling of these uart control lines is done automatically by the Lobaro PC tool. When using an alternative\nuart terminal tool make sure you setup the RTS and DTR lines correctly or simply cut the DTR/RTS wires from\nthe USB adapter if the reset and/or bootloader control lines are not needed and you simply want to look at the devices\nlog output."})}),"\n",(0,t.jsx)(o.h4,{id:"dtr-control-line",children:"DTR control line"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Low / true => Run Firmware after Reset (Default since BOOT0 has internal pull-down)"}),"\n",(0,t.jsx)(o.li,{children:"High / false => Run Bootloader after Reset"}),"\n"]}),"\n",(0,t.jsx)(o.h4,{id:"rts-control-line",children:"RTS control line"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"High / false => Run Firmware / Bootloader (Default since RESET has internal pull-up)"}),"\n",(0,t.jsx)(o.li,{children:"Low / true => Chip in RESET mode (not running)"}),"\n"]}),"\n",(0,t.jsx)(o.h2,{id:"adapter-v2",children:"Adapter V2"}),"\n",(0,t.jsx)(o.admonition,{type:"note",children:(0,t.jsx)(o.p,{children:"The usb adapter in version 2 will be available latest end of 2024."})})]})}function c(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},8453:(e,o,i)=>{"use strict";i.d(o,{R:()=>r,x:()=>A});var t=i(6540);const n={},a=t.createContext(n);function r(e){const o=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function A(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),t.createElement(a.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a5b914f3.cf6aaa1b.js b/assets/js/a5b914f3.cf6aaa1b.js deleted file mode 100644 index 98ff544b..00000000 --- a/assets/js/a5b914f3.cf6aaa1b.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[7244],{8045:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.0d17aeb.300.jpg 300w,"+i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.7d4f4c8.600.jpg 600w,"+i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.baf7698.800.jpg 800w",images:[{path:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.0d17aeb.300.jpg",width:300,height:300},{path:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.7d4f4c8.600.jpg",width:600,height:600},{path:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.baf7698.800.jpg",width:800,height:800}],src:i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.0d17aeb.300.jpg",toString:function(){return i.p+"assets/images/ideal-img/8000005_Lobaro_Configuration Adapter.0d17aeb.300.jpg"},placeholder:void 0,width:300,height:300},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAKAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAYH/8QAIBAAAgEEAQUAAAAAAAAAAAAAAQIDAAQFESESFDFCUf/EABQBAQAAAAAAAAAAAAAAAAAAAAH/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDcs2mSGQyLxQX/AHiuJba6VtQRQqqkrrq5JIcEFdkt8AIs7aRpraKVlKM6Bip9SR4omWRJHskkVXU3A2GGweCafSH/2Q=="}},4962:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0380da5.300.jpg 300w,"+i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.dac8c66.600.jpg 600w,"+i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0b8f4f0.900.jpg 900w,"+i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.164d51e.1200.jpg 1200w",images:[{path:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0380da5.300.jpg",width:300,height:35},{path:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.dac8c66.600.jpg",width:600,height:70},{path:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0b8f4f0.900.jpg",width:900,height:105},{path:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.164d51e.1200.jpg",width:1200,height:140}],src:i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0380da5.300.jpg",toString:function(){return i.p+"assets/images/ideal-img/Lobaro-KonfigAdapter-Anot.0380da5.300.jpg"},placeholder:void 0,width:300,height:35},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAABAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAQH/8QAHRAAAQIHAAAAAAAAAAAAAAAAAAECBgcyNnFysv/EABQBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAAUH/2gAMAwEAAhEDEQA/AJ5v3DEWicNM5fW7IA3BH//Z"}},9356:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/adapter1low.f34a141.300.jpg 300w,"+i.p+"assets/images/ideal-img/adapter1low.9350fd9.469.jpg 469w",images:[{path:i.p+"assets/images/ideal-img/adapter1low.f34a141.300.jpg",width:300,height:253},{path:i.p+"assets/images/ideal-img/adapter1low.9350fd9.469.jpg",width:469,height:395}],src:i.p+"assets/images/ideal-img/adapter1low.f34a141.300.jpg",toString:function(){return i.p+"assets/images/ideal-img/adapter1low.f34a141.300.jpg"},placeholder:void 0,width:300,height:253},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAIAAoDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAhEAACAQMDBQAAAAAAAAAAAAABAgUAAwQGERQSEzFBwf/EABUBAQEAAAAAAAAAAAAAAAAAAAAC/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQACEf/aAAwDAQACEQMRAD8Ar+LES+oJuUlcaS42LynxBjtuens3GQuCD5O2/wAqkW1K21VmLEAAk+6UpykyCt//2Q=="}},3938:(e,o,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/config-adapter-schematic.413f5f7.300.png 300w,"+i.p+"assets/images/ideal-img/config-adapter-schematic.0152809.600.png 600w,"+i.p+"assets/images/ideal-img/config-adapter-schematic.58af7f3.900.png 900w,"+i.p+"assets/images/ideal-img/config-adapter-schematic.e65cd5e.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/config-adapter-schematic.413f5f7.300.png",width:300,height:113},{path:i.p+"assets/images/ideal-img/config-adapter-schematic.0152809.600.png",width:600,height:225},{path:i.p+"assets/images/ideal-img/config-adapter-schematic.58af7f3.900.png",width:900,height:338},{path:i.p+"assets/images/ideal-img/config-adapter-schematic.e65cd5e.1200.png",width:1200,height:450}],src:i.p+"assets/images/ideal-img/config-adapter-schematic.413f5f7.300.png",toString:function(){return i.p+"assets/images/ideal-img/config-adapter-schematic.413f5f7.300.png"},placeholder:void 0,width:300,height:113},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAECAYAAAC3OK7NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAdklEQVR4nDWNSwoCMRAFc/9jufQQggyioCTOdD7dk6RLHPEtiqI2LwCMObDeWdOCbHf6mDh+9P/CF85kVyPnSN5u2L4j7wW1zCoJrU9C7x3VSkwRkQsiJ6o1HtczrcTDsyRCKwXVRtWG6UazF+6ONWGO37U7fADQ+5tBzCyAbwAAAABJRU5ErkJggg=="}},2608:(e,o,i)=>{"use strict";i.r(o),i.d(o,{assets:()=>A,contentTitle:()=>r,default:()=>l,frontMatter:()=>n,metadata:()=>s,toc:()=>d});var t=i(4848),a=i(8453);const n={sidebar_position:1,displayed_sidebar:"configurationSidebar",title:"Lobaro USB Config Adapter"},r="Lobaro USB Config Adapter",s={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:",source:"@site/docs/configuration/usb-config-adapter.md",sourceDirName:"configuration",slug:"/configuration/usb-config-adapter",permalink:"/iot/configuration/usb-config-adapter",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/configuration/usb-config-adapter.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,displayed_sidebar:"configurationSidebar",title:"Lobaro USB Config Adapter"},sidebar:"configurationSidebar",previous:{title:"Overview",permalink:"/iot/configuration/"},next:{title:"Lobaro Config Tool",permalink:"/iot/configuration/lobaro-config-tool"}},A={},d=[{value:"Adapter V1",id:"adapter-v1",level:2},{value:"Order-Code",id:"order-code",level:3},{value:"Installation",id:"installation",level:3},{value:"Physical connection",id:"physical-connection",level:3},{value:"Schematic",id:"schematic",level:3},{value:"Connector Type",id:"connector-type",level:3},{value:"Control Lines",id:"control-lines",level:3},{value:"DTR control line",id:"dtr-control-line",level:4},{value:"RTS control line",id:"rts-control-line",level:4},{value:"Adapter V2",id:"adapter-v2",level:2}];function g(e){const o={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components},{Image:n}=o;return n||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,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h1,{id:"lobaro-usb-config-adapter",children:"Lobaro USB Config Adapter"}),"\n",(0,t.jsx)(o.p,{children:"The Lobaro USB configuration adapters connects the configuration serial uart of our devices to a PC. It is used for:"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Sensor initial configuration, e.g. network parameters like LTE APN point"}),"\n",(0,t.jsx)(o.li,{children:"Viewing firmware log/debug diagnostic output"}),"\n",(0,t.jsx)(o.li,{children:"Firmware updates"}),"\n",(0,t.jsx)(o.li,{children:"Powering some of our devices (Boot and Reset must be disconnected to use as USB power supply)"}),"\n",(0,t.jsxs)(o.li,{children:["using our free ",(0,t.jsx)(o.a,{href:"/iot/configuration/lobaro-config-tool",children:"Lobaro Maintenance Tool"})," PC software."]}),"\n"]}),"\n",(0,t.jsx)(o.h2,{id:"adapter-v1",children:"Adapter V1"}),"\n",(0,t.jsx)(n,{alt:"Lobaro USB Configuration Adapter V1",img:i(8045),style:{width:"30%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(o.h3,{id:"order-code",children:"Order-Code"}),"\n",(0,t.jsxs)(o.p,{children:["The configuration adapter including a 1 m USB cable can be ordered using its article number: ",(0,t.jsx)(o.code,{children:"#8000005"}),"."]}),"\n",(0,t.jsx)(o.h3,{id:"installation",children:"Installation"}),"\n",(0,t.jsxs)(o.p,{children:["The CP2102 uart serial USB driver ",(0,t.jsx)(o.strong,{children:"must"})," be installed, it can be\ndownloaded at\nthe ",(0,t.jsx)(o.a,{href:"https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads",children:"Silicon Labs Homepage"}),"."]}),"\n",(0,t.jsx)(o.admonition,{title:"Download",type:"tip",children:(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"CP210x_Universal_Windows_Driver.zip for Windows 11+"}),"\n",(0,t.jsx)(o.li,{children:"CP210x Windows Drivers v6.7.6 for Windows 10 and earlier"}),"\n"]})}),"\n",(0,t.jsx)(o.h3,{id:"physical-connection",children:"Physical connection"}),"\n",(0,t.jsx)(n,{alt:"Connection example lobaro usb configuration adaptr",img:i(9356),style:{width:"40%",paddingTop:"10px",paddingBottom:"20px"}}),"\n",(0,t.jsx)(o.p,{children:"Connect your Lobaro Device to the USB-port of your computer using the Lobaro Config Adapter. The 6-pin connector must be\nplugged into the white rectangular socket on the device that is labeled with the word CONFIG. The location of the socket\nis dependent on the specific device and hardware version you are trying to attach. See the hardware specific product\ndescription for the individual connector location."}),"\n",(0,t.jsx)(o.admonition,{title:"Device power supply over USB",type:"note",children:(0,t.jsx)(o.p,{children:"Some devices can be powered by the 3.3V the config adapter can provide out of the USB Port. Other devices, mostly the\nNB-IoT/LTE-M enabled cellular IoT boards or the need their normal power supply connected as well. If in doubt, just make\nsure you have the device powered!"})}),"\n",(0,t.jsx)(o.h3,{id:"schematic",children:"Schematic"}),"\n",(0,t.jsx)(n,{alt:"Schematic Lobaro USB Configuration Adapter V1",img:i(3938),style:{width:"100%",paddingTop:"10px",paddingBottom:"20px"}}),"\n",(0,t.jsx)(o.h3,{id:"connector-type",children:"Connector Type"}),"\n",(0,t.jsxs)(o.p,{children:["The USB adapter uses a six-wire ",(0,t.jsx)(o.a,{href:"https://www.jst-mfg.com/product/index.php?series=287",children:"JST-ZH series connector"})," for\nattaching to Lobaro hardware at the config connector."]}),"\n",(0,t.jsx)(n,{alt:"Lobaro USB Configuration Adapter V1",img:i(4962),style:{width:"90%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,t.jsx)(o.h3,{id:"control-lines",children:"Control Lines"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Boot0 of Lobaro sensors is connected to DTR line of the PC uart"}),"\n",(0,t.jsx)(o.li,{children:"Reset (active low) of Lobaro sensors is connected to RTS line of the PC uart"}),"\n"]}),"\n",(0,t.jsx)(o.admonition,{type:"info",children:(0,t.jsx)(o.p,{children:"Normally the handling of these uart control lines is done automatically by the Lobaro PC tool. When using an alternative\nuart terminal tool make sure you setup the RTS and DTR lines correctly or simply cut the DTR/RTS wires from\nthe USB adapter if the reset and/or bootloader control lines are not needed and you simply want to look at the devices\nlog output."})}),"\n",(0,t.jsx)(o.h4,{id:"dtr-control-line",children:"DTR control line"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"Low / true => Run Firmware after Reset (Default since BOOT0 has internal pull-down)"}),"\n",(0,t.jsx)(o.li,{children:"High / false => Run Bootloader after Reset"}),"\n"]}),"\n",(0,t.jsx)(o.h4,{id:"rts-control-line",children:"RTS control line"}),"\n",(0,t.jsxs)(o.ul,{children:["\n",(0,t.jsx)(o.li,{children:"High / false => Run Firmware / Bootloader (Default since RESET has internal pull-up)"}),"\n",(0,t.jsx)(o.li,{children:"Low / true => Chip in RESET mode (not running)"}),"\n"]}),"\n",(0,t.jsx)(o.h2,{id:"adapter-v2",children:"Adapter V2"}),"\n",(0,t.jsx)(o.admonition,{type:"note",children:(0,t.jsx)(o.p,{children:"The usb adapter in version 2 will be available latest end of 2024."})})]})}function l(e={}){const{wrapper:o}={...(0,a.R)(),...e.components};return o?(0,t.jsx)(o,{...e,children:(0,t.jsx)(g,{...e})}):g(e)}},8453:(e,o,i)=>{"use strict";i.d(o,{R:()=>r,x:()=>s});var t=i(6540);const a={},n=t.createContext(a);function r(e){const o=t.useContext(n);return t.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(a):e.components||a:r(e.components),t.createElement(n.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b39b0327.f6c27586.js b/assets/js/b39b0327.f6c27586.js deleted file mode 100644 index c0526c06..00000000 --- a/assets/js/b39b0327.f6c27586.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[1617],{363:(e,s,t)=>{e.exports={src:{srcSet:t.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg 300w,"+t.p+"assets/images/ideal-img/IMG_0368.5016473.600.jpg 600w,"+t.p+"assets/images/ideal-img/IMG_0368.65bcf77.900.jpg 900w,"+t.p+"assets/images/ideal-img/IMG_0368.5b636ae.1200.jpg 1200w",images:[{path:t.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg",width:300,height:225},{path:t.p+"assets/images/ideal-img/IMG_0368.5016473.600.jpg",width:600,height:450},{path:t.p+"assets/images/ideal-img/IMG_0368.65bcf77.900.jpg",width:900,height:675},{path:t.p+"assets/images/ideal-img/IMG_0368.5b636ae.1200.jpg",width:1200,height:900}],src:t.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg",toString:function(){return t.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg"},placeholder:void 0,width:300,height:225},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAHAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAIRAAAQQCAQUBAAAAAAAAAAAAAQIEBREAAzEGEyFSYdH/xAAUAQEAAAAAAAAAAAAAAAAAAAAE/8QAGREAAgMBAAAAAAAAAAAAAAAAAAECESEi/9oADAMBAAIRAxEAPwC8rOy8b10xZ62zNzEuWxG4LUQrUoGzsBqyQKAFefnOaC5mPC1DvHn0P5jGAfWioqsP/9k="}},5470:(e,s,t)=>{"use strict";t.r(s),t.d(s,{assets:()=>r,contentTitle:()=>a,default:()=>c,frontMatter:()=>A,metadata:()=>n,toc:()=>g});var i=t(4848),o=t(8453);const A={sidebar_position:1},a="Device Housings",n={id:"hardware/housings/index",title:"Device Housings",description:"",source:"@site/docs/hardware/housings/index.md",sourceDirName:"hardware/housings",slug:"/hardware/housings/",permalink:"/iot/hardware/housings/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/hardware/housings/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"hardwareSidebar",previous:{title:"Extension Modules",permalink:"/iot/hardware/extension-modules/"}},r={},g=[];function d(e){const s={h1:"h1",...(0,o.R)(),...e.components},{Image:A}=s;return A||function(e,s){throw new Error("Expected "+(s?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h1,{id:"device-housings",children:"Device Housings"}),"\n",(0,i.jsx)(A,{alt:"a Housing",img:t(363),style:{width:"57%"}})]})}function c(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,s,t)=>{"use strict";t.d(s,{R:()=>a,x:()=>n});var i=t(6540);const o={},A=i.createContext(o);function a(e){const s=i.useContext(A);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function n(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(A.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b39b0327.fa2d082b.js b/assets/js/b39b0327.fa2d082b.js new file mode 100644 index 00000000..93d0ad59 --- /dev/null +++ b/assets/js/b39b0327.fa2d082b.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[1617],{363:(e,s,t)=>{e.exports={src:{srcSet:t.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg 1600w,"+t.p+"assets/images/ideal-img/IMG_0368.0bfd19c.2432.jpg 2432w,"+t.p+"assets/images/ideal-img/IMG_0368.c3f2dfd.3264.jpg 3264w,"+t.p+"assets/images/ideal-img/IMG_0368.498cdc6.4032.jpg 4032w",images:[{path:t.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg",width:1600,height:1200},{path:t.p+"assets/images/ideal-img/IMG_0368.0bfd19c.2432.jpg",width:2432,height:1824},{path:t.p+"assets/images/ideal-img/IMG_0368.c3f2dfd.3264.jpg",width:3264,height:2448},{path:t.p+"assets/images/ideal-img/IMG_0368.498cdc6.4032.jpg",width:4032,height:3024}],src:t.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg",toString:function(){return t.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg"},placeholder:void 0,width:1600,height:1200},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAHAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAIRAAAQQCAQUBAAAAAAAAAAAAAQIEBREAAzEGEyFSYdH/xAAUAQEAAAAAAAAAAAAAAAAAAAAE/8QAGREAAgMBAAAAAAAAAAAAAAAAAAECESEi/9oADAMBAAIRAxEAPwC8rOy8b10xZ62zNzEuWxG4LUQrUoGzsBqyQKAFefnOaC5mPC1DvHn0P5jGAfWioqsP/9k="}},5470:(e,s,t)=>{"use strict";t.r(s),t.d(s,{assets:()=>r,contentTitle:()=>a,default:()=>c,frontMatter:()=>A,metadata:()=>n,toc:()=>g});var i=t(4848),o=t(8453);const A={sidebar_position:1},a="Device Housings",n={id:"hardware/housings/index",title:"Device Housings",description:"",source:"@site/docs/hardware/housings/index.md",sourceDirName:"hardware/housings",slug:"/hardware/housings/",permalink:"/iot/hardware/housings/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/hardware/housings/index.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"hardwareSidebar",previous:{title:"Extension Modules",permalink:"/iot/hardware/extension-modules/"}},r={},g=[];function d(e){const s={h1:"h1",...(0,o.R)(),...e.components},{Image:A}=s;return A||function(e,s){throw new Error("Expected "+(s?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h1,{id:"device-housings",children:"Device Housings"}),"\n",(0,i.jsx)(A,{alt:"a Housing",img:t(363),style:{width:"57%"}})]})}function c(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,s,t)=>{"use strict";t.d(s,{R:()=>a,x:()=>n});var i=t(6540);const o={},A=i.createContext(o);function a(e){const s=i.useContext(A);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function n(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(A.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c377a04b.4a22559b.js b/assets/js/c377a04b.4a22559b.js new file mode 100644 index 00000000..b1b67c0a --- /dev/null +++ b/assets/js/c377a04b.4a22559b.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[3361],{1889:(e,t,s)=>{e.exports={src:{srcSet:s.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg 1600w,"+s.p+"assets/images/ideal-img/IMG_0368.0bfd19c.2432.jpg 2432w,"+s.p+"assets/images/ideal-img/IMG_0368.c3f2dfd.3264.jpg 3264w,"+s.p+"assets/images/ideal-img/IMG_0368.498cdc6.4032.jpg 4032w",images:[{path:s.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg",width:1600,height:1200},{path:s.p+"assets/images/ideal-img/IMG_0368.0bfd19c.2432.jpg",width:2432,height:1824},{path:s.p+"assets/images/ideal-img/IMG_0368.c3f2dfd.3264.jpg",width:3264,height:2448},{path:s.p+"assets/images/ideal-img/IMG_0368.498cdc6.4032.jpg",width:4032,height:3024}],src:s.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg",toString:function(){return s.p+"assets/images/ideal-img/IMG_0368.43aa5b5.1600.jpg"},placeholder:void 0,width:1600,height:1200},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAHAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAIRAAAQQCAQUBAAAAAAAAAAAAAQIEBREAAzEGEyFSYdH/xAAUAQEAAAAAAAAAAAAAAAAAAAAE/8QAGREAAgMBAAAAAAAAAAAAAAAAAAECESEi/9oADAMBAAIRAxEAPwC8rOy8b10xZ62zNzEuWxG4LUQrUoGzsBqyQKAFefnOaC5mPC1DvHn0P5jGAfWioqsP/9k="}},1776:(e,t,s)=>{"use strict";s.r(t),s.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>l,frontMatter:()=>n,metadata:()=>A,toc:()=>c});var i=s(4848),a=s(8453);const n={sidebar_position:0},o="Lobaro Documentation",A={id:"index",title:"Lobaro Documentation",description:"This new documentation center is currently work in progress",source:"@site/docs/index.md",sourceDirName:".",slug:"/",permalink:"/iot/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"allDocSidebar",next:{title:"Overview",permalink:"/iot/products/"}},r={},c=[];function d(e){const t={admonition:"admonition",h1:"h1",input:"input",li:"li",p:"p",ul:"ul",...(0,a.R)(),...e.components},{Image:n,TabItem:o,Tabs:A}=t;return n||p("Image",!0),o||p("TabItem",!0),A||p("Tabs",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"lobaro-documentation",children:"Lobaro Documentation"}),"\n",(0,i.jsx)(t.admonition,{type:"info",children:(0,i.jsx)(t.p,{children:"This new documentation center is currently work in progress"})}),"\n",(0,i.jsx)(n,{img:s(1889),style:{width:"50%",alt:"Girl in a jacket"}}),"\n",(0,i.jsxs)(t.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","ddd"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n"]}),"\n",(0,i.jsxs)(A,{children:[(0,i.jsx)(o,{value:"apple",label:"Apple",default:!0,children:(0,i.jsx)(t.p,{children:"This is an apple \ud83c\udf4e"})}),(0,i.jsx)(o,{value:"orange",label:"Orange",children:(0,i.jsx)(t.p,{children:"This is an orange \ud83c\udf4a"})}),(0,i.jsx)(o,{value:"banana",label:"Banana",children:(0,i.jsx)(t.p,{children:"This is a banana \ud83c\udf4c"})})]})]})}function l(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}function p(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},8453:(e,t,s)=>{"use strict";s.d(t,{R:()=>o,x:()=>A});var i=s(6540);const a={},n=i.createContext(a);function o(e){const t=i.useContext(n);return i.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(a):e.components||a:o(e.components),i.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c377a04b.a1e591b1.js b/assets/js/c377a04b.a1e591b1.js deleted file mode 100644 index a0e494eb..00000000 --- a/assets/js/c377a04b.a1e591b1.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[3361],{1889:(e,t,s)=>{e.exports={src:{srcSet:s.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg 300w,"+s.p+"assets/images/ideal-img/IMG_0368.5016473.600.jpg 600w,"+s.p+"assets/images/ideal-img/IMG_0368.65bcf77.900.jpg 900w,"+s.p+"assets/images/ideal-img/IMG_0368.5b636ae.1200.jpg 1200w",images:[{path:s.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg",width:300,height:225},{path:s.p+"assets/images/ideal-img/IMG_0368.5016473.600.jpg",width:600,height:450},{path:s.p+"assets/images/ideal-img/IMG_0368.65bcf77.900.jpg",width:900,height:675},{path:s.p+"assets/images/ideal-img/IMG_0368.5b636ae.1200.jpg",width:1200,height:900}],src:s.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg",toString:function(){return s.p+"assets/images/ideal-img/IMG_0368.6a14d0f.300.jpg"},placeholder:void 0,width:300,height:225},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAHAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAIRAAAQQCAQUBAAAAAAAAAAAAAQIEBREAAzEGEyFSYdH/xAAUAQEAAAAAAAAAAAAAAAAAAAAE/8QAGREAAgMBAAAAAAAAAAAAAAAAAAECESEi/9oADAMBAAIRAxEAPwC8rOy8b10xZ62zNzEuWxG4LUQrUoGzsBqyQKAFefnOaC5mPC1DvHn0P5jGAfWioqsP/9k="}},1776:(e,t,s)=>{"use strict";s.r(t),s.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>d,frontMatter:()=>n,metadata:()=>A,toc:()=>l});var i=s(4848),a=s(8453);const n={sidebar_position:0},o="Lobaro Documentation",A={id:"index",title:"Lobaro Documentation",description:"This new documentation center is currently work in progress",source:"@site/docs/index.md",sourceDirName:".",slug:"/",permalink:"/iot/",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"allDocSidebar",next:{title:"Overview",permalink:"/iot/products/"}},r={},l=[];function c(e){const t={admonition:"admonition",h1:"h1",input:"input",li:"li",p:"p",ul:"ul",...(0,a.R)(),...e.components},{Image:n,TabItem:o,Tabs:A}=t;return n||p("Image",!0),o||p("TabItem",!0),A||p("Tabs",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"lobaro-documentation",children:"Lobaro Documentation"}),"\n",(0,i.jsx)(t.admonition,{type:"info",children:(0,i.jsx)(t.p,{children:"This new documentation center is currently work in progress"})}),"\n",(0,i.jsx)(n,{img:s(1889),style:{width:"50%",alt:"Girl in a jacket"}}),"\n",(0,i.jsxs)(t.ul,{className:"contains-task-list",children:["\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","ddd"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n",(0,i.jsxs)(t.li,{className:"task-list-item",children:[(0,i.jsx)(t.input,{type:"checkbox",disabled:!0})," ","d"]}),"\n"]}),"\n",(0,i.jsxs)(A,{children:[(0,i.jsx)(o,{value:"apple",label:"Apple",default:!0,children:(0,i.jsx)(t.p,{children:"This is an apple \ud83c\udf4e"})}),(0,i.jsx)(o,{value:"orange",label:"Orange",children:(0,i.jsx)(t.p,{children:"This is an orange \ud83c\udf4a"})}),(0,i.jsx)(o,{value:"banana",label:"Banana",children:(0,i.jsx)(t.p,{children:"This is a banana \ud83c\udf4c"})})]})]})}function d(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}function p(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},8453:(e,t,s)=>{"use strict";s.d(t,{R:()=>o,x:()=>A});var i=s(6540);const a={},n=i.createContext(a);function o(e){const t=i.useContext(n);return i.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(a):e.components||a:o(e.components),i.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c9434920.1276ca96.js b/assets/js/c9434920.1276ca96.js new file mode 100644 index 00000000..d7bea914 --- /dev/null +++ b/assets/js/c9434920.1276ca96.js @@ -0,0 +1 @@ +"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/cb1c94ae.15253cf2.js b/assets/js/cb1c94ae.15253cf2.js deleted file mode 100644 index 08aa47fb..00000000 --- a/assets/js/cb1c94ae.15253cf2.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[6697],{2921:(e,t,n)=>{e.exports={src:{srcSet:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.5657b49.300.png 300w,"+n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.59c994d.600.png 600w,"+n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.5c8d911.900.png 900w,"+n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.a71ede1.1108.png 1108w",images:[{path:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.5657b49.300.png",width:300,height:86},{path:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.59c994d.600.png",width:600,height:171},{path:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.5c8d911.900.png",width:900,height:257},{path:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.a71ede1.1108.png",width:1108,height:316}],src:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.5657b49.300.png",toString:function(){return n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.5657b49.300.png"},placeholder:void 0,width:300,height:86},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAYAAACqPZ51AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAdUlEQVR4nDXDuwrCMABA0fz/h4gEHBTsKFUQBKsRN62IivRBk9QYstg2Vxw8cEThLKVpGEnJcjYl7HdY71HnK/n9ydFFcvdBSLVinKUkhw2n2wX8m0dRMVmsSbeKedmR2Q7RDwN9jGhjqOqaRmv0b/sihMDfF5ftbOzIpZURAAAAAElFTkSuQmCC"}},1728:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>d,metadata:()=>s,toc:()=>o});var i=n(4848),l=n(8453);const d={sidebar_position:1,displayed_sidebar:"firmwareSidebar",title:"Configuration Parameter"},r="Configuration",s={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",source:"@site/docs/firmware/app-nrf9160-wmbus/configuration-parameter.md",sourceDirName:"firmware/app-nrf9160-wmbus",slug:"/firmware/app-nrf9160-wmbus/configuration-parameter",permalink:"/iot/firmware/app-nrf9160-wmbus/configuration-parameter",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/firmware/app-nrf9160-wmbus/configuration-parameter.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,displayed_sidebar:"firmwareSidebar",title:"Configuration Parameter"},sidebar:"firmwareSidebar",previous:{title:"Introduction",permalink:"/iot/firmware/app-nrf9160-wmbus/introduction"},next:{title:"LoRaWAN Communication",permalink:"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol"}},c={},o=[{value:"Firmware Configuration Parameter",id:"firmware-configuration-parameter",level:2},{value:"General",id:"general",level:3},{value:"WAN",id:"wan",level:4},{value:"Limitations in LoRaWAN vs. NB-IoT / LTE-M",id:"limitations-in-lorawan-vs-nb-iot--lte-m",level:4},{value:"Meter Scanning",id:"meter-scanning",level:3},{value:"listenCron",id:"listencron",level:4},{value:"cmodeDurSec smodeDurSec xmodeDurSec umodeDurSec",id:"durations",level:4},{value:"devFilter ciFilter mFilter typFilter",id:"filter",level:4},{value:"maxTelegrams",id:"maxtelegrams",level:4},{value:"LTE Connection",id:"lteconnection",level:3},{value:"Host",id:"platformhost",level:4},{value:"APN Operator Band",id:"lteparam",level:4},{value:"UseNbiot UseLtem",id:"ltenet",level:4},{value:"UdpHost UdpPort",id:"plainUdp",level:4},{value:"LoRaWAN Connection",id:"lorawanparams",level:3},{value:"PayloadFormat",id:"payloadformat",level:4},{value:"Special",id:"special",level:3}];function a(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components},{Image:d}=t;return d||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"configuration",children:"Configuration"}),"\n",(0,i.jsx)(t.p,{children:"On this page all common configuration parameters of the firmware are presented. Usually the internal defaults work\nquite well to get the device up and running."}),"\n",(0,i.jsx)(t.admonition,{title:"Customer specific configuration",type:"note",children:(0,i.jsx)(t.p,{children:"For larger orders Lobaro can apply a custom customer specific configuration for all parameter before\ndelivery."})}),"\n",(0,i.jsx)(t.h2,{id:"firmware-configuration-parameter",children:"Firmware Configuration Parameter"}),"\n",(0,i.jsx)(t.admonition,{title:"Product specific parameters possible",type:"info",children:(0,i.jsx)(t.p,{children:"The described configuration parameters are common for all products running this firmware. Nevertheless some products may\nadd additional parameters or alter the here described parameters, e.g. some allow additional values to be set. In any\ncase the documentation of the specific product takes precedence over this general description and should\nalso be read with care."})}),"\n",(0,i.jsx)(t.h3,{id:"general",children:"General"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{style:{textAlign:"center"},children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE / LoRaWAN Selection"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#wan",children:(0,i.jsx)(t.code,{children:"WAN"})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"lte"})," or ",(0,i.jsx)(t.code,{children:"lorawan"})]}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"lte"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Days Without Connectivity Until Device Reset"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"LostReboot "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any, e.g. ",(0,i.jsx)(t.code,{children:"3"})]}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"5"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"wan",children:(0,i.jsx)(t.code,{children:"WAN"})}),"\n",(0,i.jsx)(t.p,{children:"LPWAN technology used for connection and data communication with the backend server. This can be either cellular LTE (\nNB-IoT, LTE-M) or LoRaWAN."}),"\n",(0,i.jsx)(d,{alt:"Lobaro Hybrid Connectivity LoRaWAN, NB-IoT, LTE-M",img:n(2921),style:{width:"40%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"lte"}),": use either cellular NB-IoT or LTE-M"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"lorawan"}),": use LoRaWAN with OTAA (over the air activation)"]}),"\n"]}),"\n",(0,i.jsx)(t.h4,{id:"limitations-in-lorawan-vs-nb-iot--lte-m",children:"Limitations in LoRaWAN vs. NB-IoT / LTE-M"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["LoRaWAN Uplinks and Downlinks are limited to 52-222 Bytes depending on the Spreading Factor (Connection Quality).","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Uplink with (longer) wMBUS Telegrams might be split over multiple LoRaWAN Messages."}),"\n",(0,i.jsx)(t.li,{children:"Uplinks of many wMBUS telegrams might take a long period of time due to duty-cycle limitations of LoRaWAN."}),"\n",(0,i.jsx)(t.li,{children:"Downlinks with big configuration values (e.g. long whitelist) must be split over multiple Downlinks which might be\ndifficult to implement."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["Limited amount of meta-data:","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Less information in status telegram, due to reduced uplink channel capacity."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"meter-scanning",children:"Meter Scanning"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsxs)(t.th,{children:["Default",(0,i.jsx)("div",{style:{width:"120px"}})]})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS Listen Cron [UTC+0]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#listencron",children:(0,i.jsx)(t.code,{children:"listenCron "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["Any ",(0,i.jsx)(t.a,{href:"/iot/configuration/cron-configuration",children:"CRON"})," String"]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0 0 12 * * *"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS C1/T1 Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"cmodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect C1/T1",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"300"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS S1 Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"smodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect S1",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Sensus RF Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"xmodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect X-Mode",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"M\xfcller-Funk Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"umodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect U-Mode",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS ID Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"devFilter"})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"88009035,13456035"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS Type Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"typFilter "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"08,07"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS M-Field Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"mFilter "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{})," ",(0,i.jsx)(t.code,{children:"DME,ITW,SEN,QDS"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS CI-Field Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"ciFilter"})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"8a,72"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS Telegram Upload Limit"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#maxtelegrams",children:(0,i.jsx)(t.code,{children:"maxTelegrams"})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any number of max. Telegrams",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = no limit."]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"listencron",children:(0,i.jsx)(t.code,{children:"listenCron"})}),"\n",(0,i.jsx)(t.p,{children:"The listen cron defines when the device wakes up to receive the enabled wireless M-BUS and other radio protocols. Each\nlisten period is followed by uploading the data over the configured WAN technology. A reasonable interval strongly\ndepends on the\nproducts power supply (battery vs. external powered) and the application demand of new metering data. Typical values\nrange from every 15 minutes to 14\ndays between consecutive readouts."}),"\n",(0,i.jsx)(t.admonition,{title:"in depth description",type:"tip",children:(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/iot/configuration/cron-configuration",children:"Read more"})," about CRON parameterization."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"durations",children:[(0,i.jsx)(t.code,{children:"cmodeDurSec"})," ",(0,i.jsx)(t.code,{children:"smodeDurSec"})," ",(0,i.jsx)(t.code,{children:"xmodeDurSec"})," ",(0,i.jsx)(t.code,{children:"umodeDurSec"})]}),"\n",(0,i.jsxs)(t.p,{children:["Duration in seconds, e.g. ",(0,i.jsx)(t.code,{children:"300"})," (5 minutes), to collect metering data in corresponding wireless protocol. All listening\nperiods are executed one after the other for the duration defined. Afterwards all collected meter telegrams will be\ntransmitted using the configured ",(0,i.jsx)(t.code,{children:"WAN"})," technology."]}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"filter",children:[(0,i.jsx)(t.code,{children:"devFilter"})," ",(0,i.jsx)(t.code,{children:"ciFilter"})," ",(0,i.jsx)(t.code,{children:"mFilter"})," ",(0,i.jsx)(t.code,{children:"typFilter"})]}),"\n",(0,i.jsx)(t.p,{children:"Filter meters to be be collected and uploaded by wireless M-BUS related fields."}),"\n",(0,i.jsx)(t.admonition,{title:"in depth description",type:"tip",children:(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/iot/configuration/meter-reception-filter-config",children:"Read more"})," about telegram filter parameterization."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsx)(t.h4,{id:"maxtelegrams",children:(0,i.jsx)(t.code,{children:"maxTelegrams"})}),"\n",(0,i.jsx)(t.p,{children:"Set hard limit on how many telegrams will be collected and uploaded. The firmware will stop collection, once this number\nhas been collected, regardless of the passed time. Can be used save battery / data volume, should the device be in an\narea with a large number of meters."}),"\n",(0,i.jsx)(t.h3,{id:"lteconnection",children:"LTE Connection"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE Lobaro Platform Host"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#platformhost",children:(0,i.jsx)(t.code,{children:"Host "})})}),(0,i.jsx)(t.td,{children:"IP / URL"}),(0,i.jsx)(t.td,{children:"List of various Endpoints"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"coaps://platform.lobaro.com"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE MCC+MNC Code"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#lteparam",children:(0,i.jsx)(t.code,{children:"Operator "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["e.g. ",(0,i.jsx)(t.code,{children:"26201"})," (Dt. Telekom)"]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE Band"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#lteparam",children:(0,i.jsx)(t.code,{children:"Band "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"3"})," or ",(0,i.jsx)(t.code,{children:"8,20"})," or ",(0,i.jsx)(t.code,{children:"3,8,20"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"3,8,20"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE APN"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#lteparam",children:(0,i.jsx)(t.code,{children:"APN "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"any APN"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"*"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE NB-IoT on/off"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#ltenet",children:(0,i.jsx)(t.code,{children:"UseNbiot "})})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"true"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE M1 on/off"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#ltenet",children:(0,i.jsx)(t.code,{children:"UseLtem "})})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"true"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE SIM Pin"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"PIN "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["4 digits pin, e.g. ",(0,i.jsx)(t.code,{children:"1234"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE DNS Servers used"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"DNS "})}),(0,i.jsx)(t.td,{children:"IP"}),(0,i.jsx)(t.td,{children:"List of DNS server IPs"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"9.9.9.9,1.1.1.1 "})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Plain UDP Host"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#plainUdp",children:(0,i.jsx)(t.code,{children:"UdpHost "})})}),(0,i.jsx)(t.td,{children:"IP"}),(0,i.jsxs)(t.td,{children:["any, e.g ",(0,i.jsx)(t.code,{children:"94.130.20.37"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Plain UDP Port"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#plainUdp",children:(0,i.jsx)(t.code,{children:"UdpPort "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["any, e.g ",(0,i.jsx)(t.code,{children:"3333"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"platformhost",children:(0,i.jsx)(t.code,{children:"Host"})}),"\n",(0,i.jsxs)(t.p,{children:["Hostname or IP of the Lobaro Platform instance ",(0,i.jsx)(t.strong,{children:"CoAP endpoint"})," to which the gateway communicates using UDP."]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Using DTLS: ",(0,i.jsx)(t.code,{children:"coaps://platform.lobaro.com"})]}),"\n",(0,i.jsxs)(t.li,{children:["No DTLS: ",(0,i.jsx)(t.code,{children:"coap://platform.lobaro.com"})]}),"\n",(0,i.jsxs)(t.li,{children:["Plain IP: ",(0,i.jsx)(t.code,{children:"94.130.20.37"})," (platform.lobaro.com)"]}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{title:"Host with fallback",type:"tip",children:(0,i.jsxs)(t.p,{children:["It's also possible to configure a list of URLs to implement a fallback mechanism. This is particulary helpful for\ncombining DTLS and non DTLS connection attempts: ",(0,i.jsx)(t.code,{children:"coaps://platform.lobaro.com,coap://platform.lobaro.com "})]})}),"\n",(0,i.jsx)(t.admonition,{title:"Alternative endpoints",type:"info",children:(0,i.jsxs)(t.p,{children:["For this firmware the Lobaro IoT platform is mandatory. Other products may have options for additional endpoints, e.g.\ndirect ",(0,i.jsx)(t.strong,{children:"MQTT"})," communication.\nPlease refer to the product specific documentation and/or contact Lobaro for details on this topic."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"lteparam",children:[(0,i.jsx)(t.code,{children:"APN"})," ",(0,i.jsx)(t.code,{children:"Operator"})," ",(0,i.jsx)(t.code,{children:"Band"})]}),"\n",(0,i.jsxs)(t.p,{children:["Basic params to configure the NB-IoT or LTE-M connection. These parameters must be set in accordance to the SIM card and\nnetwork provider used. Usually the defaults for these parameters work quite well since they allow the modem to select\nand join the network\nusing information on the SIM-card. Nevertheless, if known, the ",(0,i.jsx)(t.code,{children:"APN"})," should be configured."]}),"\n",(0,i.jsx)(t.admonition,{title:"in depth description",type:"tip",children:(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/iot/configuration/lte-network-configuration",children:"Read more"})," about LTE network configuration parameters."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"ltenet",children:[(0,i.jsx)(t.code,{children:"UseNbiot"})," ",(0,i.jsx)(t.code,{children:"UseLtem"})]}),"\n",(0,i.jsxs)(t.p,{children:["The modem supports both NB-IoT and LTE-M technologies. Usually both are enabled and the cellular modem automatically\ndecides\nwith network type it should use at a specific location in the field. By setting one parameter to ",(0,i.jsx)(t.code,{children:"false"})," you can insist\non\nusing the other technology. At least one parameter must stay enabled, e.g. set to ",(0,i.jsx)(t.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["On older nRF91 modem firmware (MFW < ",(0,i.jsx)(t.code,{children:"1.3.0"}),") only one of this parameter can be enabled at a time, trying to set both\nto ",(0,i.jsx)(t.code,{children:"true"}),"\nwill\nresult in selecting just NB-IoT."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"plainUdp",children:[(0,i.jsx)(t.code,{children:"UdpHost"})," ",(0,i.jsx)(t.code,{children:"UdpPort"})]}),"\n",(0,i.jsx)(t.p,{children:"Instead of sending the metering data to the lobaro platform these data can alternatively send to an external UDP socket.\nThis is helpful if you don't want your metering data on any external server but want to control your gateways using the\nLobaro Platform."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"UdpHost"}),": Separate IP to upload plain telegrams via UDP","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"[not set]"})," = upload to Lobaro IoT Platform using Host parameter address"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"UdpPort"}),": Separate Port to upload plain telegrams via UDP","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"only used when UdpHost is set"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.admonition,{type:"info",children:[(0,i.jsx)(t.p,{children:"Even the metering data is send to an external server the firmware normally still needs a connection a Lobaro Platform\ninstance for sending status information or performing remote configuration / firmware updates."}),(0,i.jsx)(t.p,{children:"If needed contact Lobaro for possible options to handle all communication without our platform, e.g. using direct MQTT\nto an external broker."})]}),"\n",(0,i.jsx)(t.h3,{id:"lorawanparams",children:"LoRaWAN Connection"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN DevEUI"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"DevEUI "})}),(0,i.jsx)(t.td,{children:"byte[8]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"Device EUI64"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN AppEUI / JoinEUI (1.1)"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"JoinEUI "})}),(0,i.jsx)(t.td,{children:"byte[8]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"random"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN AppKey"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"AppKey "})}),(0,i.jsx)(t.td,{children:"byte[16]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"random"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN NwkKey (1.1)"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"NwkKey "})}),(0,i.jsx)(t.td,{children:"byte[16]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"random"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN Days between Timesync"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"TimeSync "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"3"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN Payload Format"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#payloadformat",children:(0,i.jsx)(t.code,{children:"PayloadFormat"})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"0"}),", ",(0,i.jsx)(t.code,{children:"1"}),", ",(0,i.jsx)(t.code,{children:"2"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN use OTAA"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"OTAA "})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"true"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN Random TX Delay [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"RndDelay "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"10"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"payloadformat",children:(0,i.jsx)(t.code,{children:"PayloadFormat"})}),"\n",(0,i.jsx)(t.p,{children:"Used encoding of the LoRaWAN uplink payload packets."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"0"})," = Encoding in ports"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"1"})," = prefix bytes and time"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"2"})," = prefix bytes, time, and rssi"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"special",children:"Special"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{style:{textAlign:"center"},children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Verbose UART Log"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"verbose "})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"false"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Addon RAM configuration"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"extRam "})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"Lobaro Internal"}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"[not set]"})})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,l.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,t,n)=>{"use strict";n.d(t,{R:()=>r,x:()=>s});var i=n(6540);const l={},d=i.createContext(l);function r(e){const t=i.useContext(d);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:r(e.components),i.createElement(d.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cb1c94ae.671c3d67.js b/assets/js/cb1c94ae.671c3d67.js new file mode 100644 index 00000000..ac0f65c5 --- /dev/null +++ b/assets/js/cb1c94ae.671c3d67.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[6697],{2921:(e,t,n)=>{e.exports={src:{srcSet:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.a71ede1.1108.png 1108w",images:[{path:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.a71ede1.1108.png",width:1108,height:316}],src:n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.a71ede1.1108.png",toString:function(){return n.p+"assets/images/ideal-img/Hybrid-Connectivity-highRes.a71ede1.1108.png"},placeholder:void 0,width:1108,height:316},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAADCAYAAACqPZ51AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAdUlEQVR4nDXDuwrCMABA0fz/h4gEHBTsKFUQBKsRN62IivRBk9QYstg2Vxw8cEThLKVpGEnJcjYl7HdY71HnK/n9ydFFcvdBSLVinKUkhw2n2wX8m0dRMVmsSbeKedmR2Q7RDwN9jGhjqOqaRmv0b/sihMDfF5ftbOzIpZURAAAAAElFTkSuQmCC"}},1728:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>o});var i=n(4848),l=n(8453);const r={sidebar_position:1,displayed_sidebar:"firmwareSidebar",title:"Configuration Parameter"},d="Configuration",s={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",source:"@site/docs/firmware/app-nrf9160-wmbus/configuration-parameter.md",sourceDirName:"firmware/app-nrf9160-wmbus",slug:"/firmware/app-nrf9160-wmbus/configuration-parameter",permalink:"/iot/firmware/app-nrf9160-wmbus/configuration-parameter",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/firmware/app-nrf9160-wmbus/configuration-parameter.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,displayed_sidebar:"firmwareSidebar",title:"Configuration Parameter"},sidebar:"firmwareSidebar",previous:{title:"Introduction",permalink:"/iot/firmware/app-nrf9160-wmbus/introduction"},next:{title:"LoRaWAN Communication",permalink:"/iot/firmware/app-nrf9160-wmbus/lorawan-communication-protocol"}},c={},o=[{value:"Firmware Configuration Parameter",id:"firmware-configuration-parameter",level:2},{value:"General",id:"general",level:3},{value:"WAN",id:"wan",level:4},{value:"Limitations in LoRaWAN vs. NB-IoT / LTE-M",id:"limitations-in-lorawan-vs-nb-iot--lte-m",level:4},{value:"Meter Scanning",id:"meter-scanning",level:3},{value:"listenCron",id:"listencron",level:4},{value:"cmodeDurSec smodeDurSec xmodeDurSec umodeDurSec",id:"durations",level:4},{value:"devFilter ciFilter mFilter typFilter",id:"filter",level:4},{value:"maxTelegrams",id:"maxtelegrams",level:4},{value:"LTE Connection",id:"lteconnection",level:3},{value:"Host",id:"platformhost",level:4},{value:"APN Operator Band",id:"lteparam",level:4},{value:"UseNbiot UseLtem",id:"ltenet",level:4},{value:"UdpHost UdpPort",id:"plainUdp",level:4},{value:"LoRaWAN Connection",id:"lorawanparams",level:3},{value:"PayloadFormat",id:"payloadformat",level:4},{value:"Special",id:"special",level:3}];function a(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",hr:"hr",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components},{Image:r}=t;return r||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"configuration",children:"Configuration"}),"\n",(0,i.jsx)(t.p,{children:"On this page all common configuration parameters of the firmware are presented. Usually the internal defaults work\nquite well to get the device up and running."}),"\n",(0,i.jsx)(t.admonition,{title:"Customer specific configuration",type:"note",children:(0,i.jsx)(t.p,{children:"For larger orders Lobaro can apply a custom customer specific configuration for all parameter before\ndelivery."})}),"\n",(0,i.jsx)(t.h2,{id:"firmware-configuration-parameter",children:"Firmware Configuration Parameter"}),"\n",(0,i.jsx)(t.admonition,{title:"Product specific parameters possible",type:"info",children:(0,i.jsx)(t.p,{children:"The described configuration parameters are common for all products running this firmware. Nevertheless some products may\nadd additional parameters or alter the here described parameters, e.g. some allow additional values to be set. In any\ncase the documentation of the specific product takes precedence over this general description and should\nalso be read with care."})}),"\n",(0,i.jsx)(t.h3,{id:"general",children:"General"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{style:{textAlign:"center"},children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE / LoRaWAN Selection"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#wan",children:(0,i.jsx)(t.code,{children:"WAN"})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"lte"})," or ",(0,i.jsx)(t.code,{children:"lorawan"})]}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"lte"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Days Without Connectivity Until Device Reset"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"LostReboot "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any, e.g. ",(0,i.jsx)(t.code,{children:"3"})]}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"5"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"wan",children:(0,i.jsx)(t.code,{children:"WAN"})}),"\n",(0,i.jsx)(t.p,{children:"LPWAN technology used for connection and data communication with the backend server. This can be either cellular LTE (\nNB-IoT, LTE-M) or LoRaWAN."}),"\n",(0,i.jsx)(r,{alt:"Lobaro Hybrid Connectivity LoRaWAN, NB-IoT, LTE-M",img:n(2921),style:{width:"40%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"lte"}),": use either cellular NB-IoT or LTE-M"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"lorawan"}),": use LoRaWAN with OTAA (over the air activation)"]}),"\n"]}),"\n",(0,i.jsx)(t.h4,{id:"limitations-in-lorawan-vs-nb-iot--lte-m",children:"Limitations in LoRaWAN vs. NB-IoT / LTE-M"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["LoRaWAN Uplinks and Downlinks are limited to 52-222 Bytes depending on the Spreading Factor (Connection Quality).","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Uplink with (longer) wMBUS Telegrams might be split over multiple LoRaWAN Messages."}),"\n",(0,i.jsx)(t.li,{children:"Uplinks of many wMBUS telegrams might take a long period of time due to duty-cycle limitations of LoRaWAN."}),"\n",(0,i.jsx)(t.li,{children:"Downlinks with big configuration values (e.g. long whitelist) must be split over multiple Downlinks which might be\ndifficult to implement."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["Limited amount of meta-data:","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Less information in status telegram, due to reduced uplink channel capacity."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"meter-scanning",children:"Meter Scanning"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsxs)(t.th,{children:["Default",(0,i.jsx)("div",{style:{width:"120px"}})]})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS Listen Cron [UTC+0]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#listencron",children:(0,i.jsx)(t.code,{children:"listenCron "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["Any ",(0,i.jsx)(t.a,{href:"/iot/configuration/cron-configuration",children:"CRON"})," String"]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0 0 12 * * *"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS C1/T1 Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"cmodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect C1/T1",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"300"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS S1 Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"smodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect S1",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Sensus RF Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"xmodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect X-Mode",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"M\xfcller-Funk Listen Duration [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#durations",children:(0,i.jsx)(t.code,{children:"umodeDurSec "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any second value",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = Do not collect U-Mode",(0,i.jsx)("br",{}),"Max Value=",(0,i.jsx)(t.code,{children:"36000"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS ID Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"devFilter"})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"88009035,13456035"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS Type Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"typFilter "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"08,07"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS M-Field Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"mFilter "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{})," ",(0,i.jsx)(t.code,{children:"DME,ITW,SEN,QDS"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS CI-Field Filter List"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#filter",children:(0,i.jsx)(t.code,{children:"ciFilter"})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsxs)(t.td,{children:["List, e.g.",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"8a,72"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"WMBUS Telegram Upload Limit"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#maxtelegrams",children:(0,i.jsx)(t.code,{children:"maxTelegrams"})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["Any number of max. Telegrams",(0,i.jsx)("br",{}),(0,i.jsx)(t.code,{children:"0"})," = no limit."]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"listencron",children:(0,i.jsx)(t.code,{children:"listenCron"})}),"\n",(0,i.jsx)(t.p,{children:"The listen cron defines when the device wakes up to receive the enabled wireless M-BUS and other radio protocols. Each\nlisten period is followed by uploading the data over the configured WAN technology. A reasonable interval strongly\ndepends on the\nproducts power supply (battery vs. external powered) and the application demand of new metering data. Typical values\nrange from every 15 minutes to 14\ndays between consecutive readouts."}),"\n",(0,i.jsx)(t.admonition,{title:"in depth description",type:"tip",children:(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/iot/configuration/cron-configuration",children:"Read more"})," about CRON parameterization."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"durations",children:[(0,i.jsx)(t.code,{children:"cmodeDurSec"})," ",(0,i.jsx)(t.code,{children:"smodeDurSec"})," ",(0,i.jsx)(t.code,{children:"xmodeDurSec"})," ",(0,i.jsx)(t.code,{children:"umodeDurSec"})]}),"\n",(0,i.jsxs)(t.p,{children:["Duration in seconds, e.g. ",(0,i.jsx)(t.code,{children:"300"})," (5 minutes), to collect metering data in corresponding wireless protocol. All listening\nperiods are executed one after the other for the duration defined. Afterwards all collected meter telegrams will be\ntransmitted using the configured ",(0,i.jsx)(t.code,{children:"WAN"})," technology."]}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"filter",children:[(0,i.jsx)(t.code,{children:"devFilter"})," ",(0,i.jsx)(t.code,{children:"ciFilter"})," ",(0,i.jsx)(t.code,{children:"mFilter"})," ",(0,i.jsx)(t.code,{children:"typFilter"})]}),"\n",(0,i.jsx)(t.p,{children:"Filter meters to be be collected and uploaded by wireless M-BUS related fields."}),"\n",(0,i.jsx)(t.admonition,{title:"in depth description",type:"tip",children:(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/iot/configuration/meter-reception-filter-config",children:"Read more"})," about telegram filter parameterization."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsx)(t.h4,{id:"maxtelegrams",children:(0,i.jsx)(t.code,{children:"maxTelegrams"})}),"\n",(0,i.jsx)(t.p,{children:"Set hard limit on how many telegrams will be collected and uploaded. The firmware will stop collection, once this number\nhas been collected, regardless of the passed time. Can be used save battery / data volume, should the device be in an\narea with a large number of meters."}),"\n",(0,i.jsx)(t.h3,{id:"lteconnection",children:"LTE Connection"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE Lobaro Platform Host"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#platformhost",children:(0,i.jsx)(t.code,{children:"Host "})})}),(0,i.jsx)(t.td,{children:"IP / URL"}),(0,i.jsx)(t.td,{children:"List of various Endpoints"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"coaps://platform.lobaro.com"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE MCC+MNC Code"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#lteparam",children:(0,i.jsx)(t.code,{children:"Operator "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["e.g. ",(0,i.jsx)(t.code,{children:"26201"})," (Dt. Telekom)"]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE Band"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#lteparam",children:(0,i.jsx)(t.code,{children:"Band "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"3"})," or ",(0,i.jsx)(t.code,{children:"8,20"})," or ",(0,i.jsx)(t.code,{children:"3,8,20"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"3,8,20"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE APN"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#lteparam",children:(0,i.jsx)(t.code,{children:"APN "})})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"any APN"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"*"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE NB-IoT on/off"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#ltenet",children:(0,i.jsx)(t.code,{children:"UseNbiot "})})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"true"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE M1 on/off"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#ltenet",children:(0,i.jsx)(t.code,{children:"UseLtem "})})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"true"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE SIM Pin"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"PIN "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["4 digits pin, e.g. ",(0,i.jsx)(t.code,{children:"1234"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LTE DNS Servers used"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"DNS "})}),(0,i.jsx)(t.td,{children:"IP"}),(0,i.jsx)(t.td,{children:"List of DNS server IPs"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"9.9.9.9,1.1.1.1 "})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Plain UDP Host"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#plainUdp",children:(0,i.jsx)(t.code,{children:"UdpHost "})})}),(0,i.jsx)(t.td,{children:"IP"}),(0,i.jsxs)(t.td,{children:["any, e.g ",(0,i.jsx)(t.code,{children:"94.130.20.37"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Plain UDP Port"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#plainUdp",children:(0,i.jsx)(t.code,{children:"UdpPort "})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:["any, e.g ",(0,i.jsx)(t.code,{children:"3333"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"[not set]"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"platformhost",children:(0,i.jsx)(t.code,{children:"Host"})}),"\n",(0,i.jsxs)(t.p,{children:["Hostname or IP of the Lobaro Platform instance ",(0,i.jsx)(t.strong,{children:"CoAP endpoint"})," to which the gateway communicates using UDP."]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Using DTLS: ",(0,i.jsx)(t.code,{children:"coaps://platform.lobaro.com"})]}),"\n",(0,i.jsxs)(t.li,{children:["No DTLS: ",(0,i.jsx)(t.code,{children:"coap://platform.lobaro.com"})]}),"\n",(0,i.jsxs)(t.li,{children:["Plain IP: ",(0,i.jsx)(t.code,{children:"94.130.20.37"})," (platform.lobaro.com)"]}),"\n"]}),"\n",(0,i.jsx)(t.admonition,{title:"Host with fallback",type:"tip",children:(0,i.jsxs)(t.p,{children:["It's also possible to configure a list of URLs to implement a fallback mechanism. This is particulary helpful for\ncombining DTLS and non DTLS connection attempts: ",(0,i.jsx)(t.code,{children:"coaps://platform.lobaro.com,coap://platform.lobaro.com "})]})}),"\n",(0,i.jsx)(t.admonition,{title:"Alternative endpoints",type:"info",children:(0,i.jsxs)(t.p,{children:["For this firmware the Lobaro IoT platform is mandatory. Other products may have options for additional endpoints, e.g.\ndirect ",(0,i.jsx)(t.strong,{children:"MQTT"})," communication.\nPlease refer to the product specific documentation and/or contact Lobaro for details on this topic."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"lteparam",children:[(0,i.jsx)(t.code,{children:"APN"})," ",(0,i.jsx)(t.code,{children:"Operator"})," ",(0,i.jsx)(t.code,{children:"Band"})]}),"\n",(0,i.jsxs)(t.p,{children:["Basic params to configure the NB-IoT or LTE-M connection. These parameters must be set in accordance to the SIM card and\nnetwork provider used. Usually the defaults for these parameters work quite well since they allow the modem to select\nand join the network\nusing information on the SIM-card. Nevertheless, if known, the ",(0,i.jsx)(t.code,{children:"APN"})," should be configured."]}),"\n",(0,i.jsx)(t.admonition,{title:"in depth description",type:"tip",children:(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.a,{href:"/iot/configuration/lte-network-configuration",children:"Read more"})," about LTE network configuration parameters."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"ltenet",children:[(0,i.jsx)(t.code,{children:"UseNbiot"})," ",(0,i.jsx)(t.code,{children:"UseLtem"})]}),"\n",(0,i.jsxs)(t.p,{children:["The modem supports both NB-IoT and LTE-M technologies. Usually both are enabled and the cellular modem automatically\ndecides\nwith network type it should use at a specific location in the field. By setting one parameter to ",(0,i.jsx)(t.code,{children:"false"})," you can insist\non\nusing the other technology. At least one parameter must stay enabled, e.g. set to ",(0,i.jsx)(t.code,{children:"true"}),"."]}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsxs)(t.p,{children:["On older nRF91 modem firmware (MFW < ",(0,i.jsx)(t.code,{children:"1.3.0"}),") only one of this parameter can be enabled at a time, trying to set both\nto ",(0,i.jsx)(t.code,{children:"true"}),"\nwill\nresult in selecting just NB-IoT."]})}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsxs)(t.h4,{id:"plainUdp",children:[(0,i.jsx)(t.code,{children:"UdpHost"})," ",(0,i.jsx)(t.code,{children:"UdpPort"})]}),"\n",(0,i.jsx)(t.p,{children:"Instead of sending the metering data to the lobaro platform these data can alternatively send to an external UDP socket.\nThis is helpful if you don't want your metering data on any external server but want to control your gateways using the\nLobaro Platform."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"UdpHost"}),": Separate IP to upload plain telegrams via UDP","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"[not set]"})," = upload to Lobaro IoT Platform using Host parameter address"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"UdpPort"}),": Separate Port to upload plain telegrams via UDP","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"only used when UdpHost is set"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.admonition,{type:"info",children:[(0,i.jsx)(t.p,{children:"Even the metering data is send to an external server the firmware normally still needs a connection a Lobaro Platform\ninstance for sending status information or performing remote configuration / firmware updates."}),(0,i.jsx)(t.p,{children:"If needed contact Lobaro for possible options to handle all communication without our platform, e.g. using direct MQTT\nto an external broker."})]}),"\n",(0,i.jsx)(t.h3,{id:"lorawanparams",children:"LoRaWAN Connection"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN DevEUI"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"DevEUI "})}),(0,i.jsx)(t.td,{children:"byte[8]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"Device EUI64"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN AppEUI / JoinEUI (1.1)"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"JoinEUI "})}),(0,i.jsx)(t.td,{children:"byte[8]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"random"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN AppKey"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"AppKey "})}),(0,i.jsx)(t.td,{children:"byte[16]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"random"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN NwkKey (1.1)"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"NwkKey "})}),(0,i.jsx)(t.td,{children:"byte[16]"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"random"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN Days between Timesync"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"TimeSync "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"3"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN Payload Format"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)("a",{href:"#payloadformat",children:(0,i.jsx)(t.code,{children:"PayloadFormat"})})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"0"}),", ",(0,i.jsx)(t.code,{children:"1"}),", ",(0,i.jsx)(t.code,{children:"2"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"0"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN use OTAA"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"OTAA "})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"true"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"LoRaWAN Random TX Delay [s]"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"RndDelay "})}),(0,i.jsx)(t.td,{children:"Number"}),(0,i.jsx)(t.td,{children:"any"}),(0,i.jsx)(t.td,{children:(0,i.jsx)(t.code,{children:"10"})})]})]})]}),"\n",(0,i.jsx)(t.h4,{id:"payloadformat",children:(0,i.jsx)(t.code,{children:"PayloadFormat"})}),"\n",(0,i.jsx)(t.p,{children:"Used encoding of the LoRaWAN uplink payload packets."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"0"})," = Encoding in ports"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"1"})," = prefix bytes and time"]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"2"})," = prefix bytes, time, and rssi"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"special",children:"Special"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Description"}),(0,i.jsx)(t.th,{style:{textAlign:"left"},children:"Key"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Possible Values"}),(0,i.jsx)(t.th,{style:{textAlign:"center"},children:"Default"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Verbose UART Log"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"verbose "})}),(0,i.jsx)(t.td,{children:"Bool"}),(0,i.jsxs)(t.td,{children:[(0,i.jsx)(t.code,{children:"true"})," or ",(0,i.jsx)(t.code,{children:"false"})]}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"false"})})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{style:{textAlign:"left"},children:"Addon RAM configuration"}),(0,i.jsx)(t.td,{style:{textAlign:"left"},children:(0,i.jsx)(t.code,{children:"extRam "})}),(0,i.jsx)(t.td,{children:"String"}),(0,i.jsx)(t.td,{children:"Lobaro Internal"}),(0,i.jsx)(t.td,{style:{textAlign:"center"},children:(0,i.jsx)(t.code,{children:"[not set]"})})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,l.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},8453:(e,t,n)=>{"use strict";n.d(t,{R:()=>d,x:()=>s});var i=n(6540);const l={},r=i.createContext(l);function d(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:d(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d48b783f.75a55343.js b/assets/js/d48b783f.75a55343.js deleted file mode 100644 index 6a5193b4..00000000 --- a/assets/js/d48b783f.75a55343.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[7143],{2092:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg 271w",images:[{path:i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg",width:271,height:97}],src:i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg",toString:function(){return i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg"},placeholder:void 0,width:271,height:97},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAEAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIH/8QAHxAAAgEEAgMAAAAAAAAAAAAAAQMCAAQFESEiMWGR/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAT/xAAXEQADAQAAAAAAAAAAAAAAAAAAAREh/9oADAMBAAIRAxEAPwDcMxhF2IS+2vL5bZyLCYt12IO/A9n7UnJ5BBKYXrTFfQGQjI6HHJI5NKVZKtB//9k="}},3654:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cfbd48e.300.jpg 300w,"+i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.4bfae49.600.jpg 600w,"+i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.6388cb0.900.jpg 900w,"+i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.c2ef6a1.1200.jpg 1200w",images:[{path:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cfbd48e.300.jpg",width:300,height:157},{path:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.4bfae49.600.jpg",width:600,height:314},{path:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.6388cb0.900.jpg",width:900,height:471},{path:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.c2ef6a1.1200.jpg",width:1200,height:628}],src:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cfbd48e.300.jpg",toString:function(){return i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cfbd48e.300.jpg"},placeholder:void 0,width:300,height:157},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAFAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAUH/8QAHhAAAgEEAwEAAAAAAAAAAAAAAQIDAAQFEQYhURP/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/EABgRAAIDAAAAAAAAAAAAAAAAAAABAiEx/9oADAMBAAIRAxEAPwDaOExPa23IrhZWYfV5Sje6brfm6rYvKNc4y0naCMNLCjkAnolQfaUqzpsLD//Z"}},7087:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/pdf.5694bab.32.png 32w",images:[{path:i.p+"assets/images/ideal-img/pdf.5694bab.32.png",width:32,height:32}],src:i.p+"assets/images/ideal-img/pdf.5694bab.32.png",toString:function(){return i.p+"assets/images/ideal-img/pdf.5694bab.32.png"},placeholder:void 0,width:32,height:32},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAACXBIWXMAAAsSAAALEgHS3X78AAABP0lEQVR4nE3NsUsCcRQH8B+t7f0RRUtTs1MQBIGEcULY1laTQ0UgNBSEJOF5Z2eZmCQRWEND6pDDUdFQVC5SYwoFyan3+909/cbvoq7f8vh93+e9xxhjjILTISe+feEkdk4cba8ojNSpE10+xsjwuOyDsSFZWV9PVgFgABAsC+h2+/JPevIdjI2x38czenkAwHKJc0NzeSHnWoAtcX9z48yHadXbaAEkCjkII4WOECQznjUqPjR+YOfGJB5bBY+tQURXCLcmeDH/D+azVXx+gNajRPVnOQOn/kSwbfCDdNWH+2pFNu9qNbo2TZyXSnhpNLzTPT3pw15GK8tQO8rxrXjcDSqKe//wyD14qJf/INTEpQxFq0l2q4n22ysG7S9vI9TdKx9OBUZFaGYRC3MKIqEwliJhmp9VSGaByQmJvgHSpvp4oAQ9ewAAAABJRU5ErkJggg=="}},3969:(e,n,i)=>{"use strict";i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>d});var r=i(4848),s=i(8453);const a={sidebar_position:0,displayed_sidebar:"firmwareSidebar",title:"Introduction"},o="app-nrf9160-wmbus",t={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",source:"@site/docs/firmware/app-nrf9160-wmbus/introduction.md",sourceDirName:"firmware/app-nrf9160-wmbus",slug:"/firmware/app-nrf9160-wmbus/introduction",permalink:"/iot/firmware/app-nrf9160-wmbus/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/firmware/app-nrf9160-wmbus/introduction.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"firmwareSidebar",title:"Introduction"},sidebar:"firmwareSidebar",previous:{title:"Overview",permalink:"/iot/firmware/"},next:{title:"Configuration Parameter",permalink:"/iot/firmware/app-nrf9160-wmbus/configuration-parameter"}},l={},d=[{value:"Firmware Introduction",id:"firmware-introduction",level:2},{value:"Compatible Metering Protocols",id:"compatible-metering-protocols",level:2},{value:"Wireless M-BUS S1, C1 or T1",id:"wireless-m-bus-s1-c1-or-t1",level:3},{value:"Sensus RF Bubble UP",id:"sensus-rf-bubble-up",level:3},{value:"ME-Funk",id:"me-funk",level:3},{value:"Working Principle",id:"working-principle",level:2},{value:"CRON based Scans",id:"cron-based-scans",level:3},{value:"Daily Status Message",id:"daily-status-message",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components},{Image:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"app-nrf9160-wmbus",children:"app-nrf9160-wmbus"}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the Lobaro wireless M-Bus gateway firmware, called ",(0,r.jsx)(n.code,{children:"app-nrf9160-wmbus"}),", which is executable on\ndifferent hardware variants which are in turn used to build different products. Nevertheless, this common description is\nvalid for all products independently which hardware it actually runs on."]}),"\n",(0,r.jsx)(n.h2,{id:"firmware-introduction",children:"Firmware Introduction"}),"\n",(0,r.jsx)(a,{alt:"Lobaro wireless M-BUS Gateway firmware",img:i(3654),style:{width:"80%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,r.jsx)(n.p,{children:"The Lobaro wireless M-Bus gateways collect consumption values from up to 650(*) commercially available water\nmeters, heat\nmeters, heat cost allocators or similar with 868 MHz wireless M-Bus radio interface, Sensus RF Bubble Up or M\xfcller Funk\nand forward them encrypted via NB-IoT or LTE-M cellular radio or alternatively LoRaWAN networks for further processing\non the Internet."}),"\n",(0,r.jsx)(n.p,{children:"Additionally, the gateway hardware may be equipped with a sensor addon board which can provide additional sensor\nmeasurement values beside the collected metering data. If an addon is present depends on the actual product running this\nfirmware."}),"\n",(0,r.jsx)(n.p,{children:"Forwarded meter values are transmitted, optionally additionally encrypted via DTLS, to a shared or private instance of\nthe Lobaro IoT platform and can be viewed there or downloaded as a CSV file. Alternatively, standardised APIs such as\nMQTT, HTTP Push, SFTP or a REST interface are available to connect downstream systems or platforms easily and securely.\nWhen using LoRaWAN, the Lobaro Platform is optional. When using NB-IoT or LTE-M, on the other hand, it is mandatory.\nThis requirement is explained in the Lobaro IoT Platform FAQ."}),"\n",(0,r.jsx)(n.p,{children:"Thanks to the new NB-IoT mobile radio, optimised for sensor data, remote reading even works in places such as basements\nwhere smartphones have poor or no reception."}),"\n",(0,r.jsx)(n.p,{children:"(*) based on average telegram size 75 Bytes. On request, the capacity for meter telegrams can be increased to up to\n2,500 by means of an additional built-in memory."}),"\n",(0,r.jsx)(n.h2,{id:"compatible-metering-protocols",children:"Compatible Metering Protocols"}),"\n",(0,r.jsx)(a,{alt:"Lobaro wireless M-BUS Gateway firmware",img:i(2092),style:{width:"20%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,r.jsx)(n.h3,{id:"wireless-m-bus-s1-c1-or-t1",children:"Wireless M-BUS S1, C1 or T1"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Unidirectional 868 MHz modes following DIN EN 13757-4."}),"\n",(0,r.jsx)(n.li,{children:"Open metering specification (OMS, Annex O): PHY_A - 868 MHz (uplink only)"}),"\n",(0,r.jsx)(n.li,{children:"Qundis AMR"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"sensus-rf-bubble-up",children:"Sensus RF Bubble UP"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Manufacturer specific radio protocol for 868 MHz (Xylem Inc.)."}),"\n",(0,r.jsx)(n.li,{children:"Unidirectional bubble up mode is supported."}),"\n",(0,r.jsx)(n.li,{children:"\u26a0\ufe0f Decoding of Sensus RF telegrams needs the Lobaro telegram parser and unfortunately can't be disclosed."}),"\n"]}),"\n",(0,r.jsx)("table",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("td",{children:(0,r.jsx)(a,{alt:"PDF Download",img:i(7087),style:{width:"32px"}})}),(0,r.jsx)("td",{children:(0,r.jsx)("a",{target:"\\_blank",href:i(2562).A,children:"Sensus RF Brochure"})})]})}),"\n",(0,r.jsx)(n.h3,{id:"me-funk",children:"ME-Funk"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:['A.k.a. "M\xfcller Funk" - Manufacturer specific radio protocol for 868\nMHz (',(0,r.jsx)(n.a,{href:"https://www.mue-line.de/allgemeine-informationen/",children:"M\xfcller-electronic GmbH"}),")."]}),"\n",(0,r.jsx)(n.li,{children:"\u26a0\ufe0f Decoding of ME-Funk telegrams needs the Lobaro telegram parser and unfortunately can't be disclosed."}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.admonition,{type:"info",children:[(0,r.jsx)(n.p,{children:"433 MHz variants are available on products equipped with the additional 433 MHz hardware addon for the following\nspecifications:"}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Wireless M-Bus, Open metering specification (OMS, Annex O): PHY_B - 433 MHz (uplink only)"}),"\n",(0,r.jsx)(n.li,{children:"Sensus RF Bubble UP 433 MHz - Manufacturer specific (Xylem Inc.) radio protocol"}),"\n"]})]}),"\n",(0,r.jsx)(n.h2,{id:"working-principle",children:"Working Principle"}),"\n",(0,r.jsx)(n.p,{children:"The firmware remains in power-saving mode while not active most of the time. It leaves the low power sleep mode in the\nfollowing situations:"}),"\n",(0,r.jsx)(n.h3,{id:"cron-based-scans",children:"CRON based Scans"}),"\n",(0,r.jsxs)(n.p,{children:["The firmware is configured by its ",(0,r.jsx)(n.code,{children:"listenCron"})," configuration parameter to wake up at regular intervals to collect / scan\nfor\nmetering\ntelegrams over its 868 MHz wireless interface. The following sequence of operations is executed on each cron triggering:"]}),"\n",(0,r.jsx)(n.admonition,{title:"CRON configuration parameter",type:"tip",children:(0,r.jsxs)(n.p,{children:[(0,r.jsxs)(n.a,{href:"/iot/configuration/cron-configuration",children:["Click here to learn more about ",(0,r.jsx)(n.strong,{children:"cron configuration"})," parameters"]}),"."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Wait in deep sleep low power mode for ",(0,r.jsx)(n.code,{children:"listenCron"})," to trigger"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect metering data in all enabled wireless modes sequentially","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Collect C1-Mode and T1-Mode telegrams (wMBUS) in parallel for ",(0,r.jsx)(n.code,{children:"cmodeDurSec"})," seconds (if not 0)"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect S1-Mode telegrams (wMBUS) for ",(0,r.jsx)(n.code,{children:"smodeDurSec"})," seconds (if not 0)"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect X-Mode telegrams (Sensus RF) for ",(0,r.jsx)(n.code,{children:"xmodeDurSec"})," seconds (if not 0)"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect U-Mode telegrams (M\xfcller Funk) for ",(0,r.jsx)(n.code,{children:"umodeDurSec"})," seconds (if not 0)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Optional: Perform sensor measurement using the optional hardware addon (only if any sensor addon installed)"}),"\n",(0,r.jsxs)(n.li,{children:["Upload all stored data via NB-IoT / LTE-CatM1 or LoRaWAN (depends on ",(0,r.jsx)(n.code,{children:"WAN"})," configuration)","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Upload all collected metering telegrams, status and sensor data"}),"\n",(0,r.jsxs)(n.li,{children:["When the upload fails the upload is retried every 24h after daily status or until the next ",(0,r.jsx)(n.code,{children:"listenCron"})," triggers."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Sleep till next ",(0,r.jsx)(n.code,{children:"listenCron"})," triggers or status message upload."]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"This sequence also will be executed one after any device startup oder manual reset."})}),"\n",(0,r.jsx)(n.admonition,{title:"Raw telegrams",type:"note",children:(0,r.jsxs)(n.p,{children:['All meter telegrams are received "as is", e.g. encrypted or plain over the air. Only the always readable telegram header\ninformation is parsed for internal filtering and deduplication. Parsing and decryption of such raw metering data happens\nin the backend, e.g. in\nthe Lobaro head end system or any other connected system. Lobaro offers a standalone ',(0,r.jsx)(n.a,{href:"https://www.mbus.org",children:"REST API (www.mbus.org)"}),"\nfor raw (wireless) M-BUS telegrams parsing which can be licensed."]})}),"\n",(0,r.jsx)(n.h3,{id:"daily-status-message",children:"Daily Status Message"}),"\n",(0,r.jsx)(n.p,{children:"Once a day the firmware sends a status message. This allows for reaching the device, e.g. for changing the\nconfiguration, at least once a day independent of the configured regular scan interval (see above). This status message\ncontains information on many vital parameters of the gateway."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Upload status telegram normally at midnight ",(0,r.jsx)(n.strong,{children:"0:00h (UTC+0)"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Solar-powered hardware variants: noon ",(0,r.jsx)(n.strong,{children:"12:00h (UTC+0)"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Upload remaining telegrams in memory, if any failures happened during previous attempts."}),"\n",(0,r.jsxs)(n.li,{children:["Sleep till next ",(0,r.jsx)(n.code,{children:"listenCron"})," or next days status telegram."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},2562:(e,n,i)=>{"use strict";i.d(n,{A:()=>r});const r=i.p+"assets/files/en---sensusrf-brochure-59b7f198b43913b0d70122d43e7dfb36.pdf"},8453:(e,n,i)=>{"use strict";i.d(n,{R:()=>o,x:()=>t});var r=i(6540);const s={},a=r.createContext(s);function o(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d48b783f.78fbe6fd.js b/assets/js/d48b783f.78fbe6fd.js new file mode 100644 index 00000000..a77a1c9c --- /dev/null +++ b/assets/js/d48b783f.78fbe6fd.js @@ -0,0 +1 @@ +(self.webpackChunklobaro_docs=self.webpackChunklobaro_docs||[]).push([[7143],{2092:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg 271w",images:[{path:i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg",width:271,height:97}],src:i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg",toString:function(){return i.p+"assets/images/ideal-img/MBusWirelessLogo.c0cdf50.271.jpg"},placeholder:void 0,width:271,height:97},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAEAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIH/8QAHxAAAgEEAgMAAAAAAAAAAAAAAQMCAAQFESEiMWGR/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAT/xAAXEQADAQAAAAAAAAAAAAAAAAAAAREh/9oADAMBAAIRAxEAPwDcMxhF2IS+2vL5bZyLCYt12IO/A9n7UnJ5BBKYXrTFfQGQjI6HHJI5NKVZKtB//9k="}},3654:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.29c352d.1600.jpg 1600w,"+i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cf2dfc6.1761.jpg 1761w",images:[{path:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.29c352d.1600.jpg",width:1600,height:838},{path:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.cf2dfc6.1761.jpg",width:1761,height:922}],src:i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.29c352d.1600.jpg",toString:function(){return i.p+"assets/images/ideal-img/wmbus-gateway-bridge-lora-nb-iot.29c352d.1600.jpg"},placeholder:void 0,width:1600,height:838},preSrc:"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAFAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAUH/8QAHhAAAgEEAwEAAAAAAAAAAAAAAQIDAAQFEQYhURP/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/EABgRAAIDAAAAAAAAAAAAAAAAAAABAiEx/9oADAMBAAIRAxEAPwDaOExPa23IrhZWYfV5Sje6brfm6rYvKNc4y0naCMNLCjkAnolQfaUqzpsLD//Z"}},7087:(e,n,i)=>{e.exports={src:{srcSet:i.p+"assets/images/ideal-img/pdf.5694bab.32.png 32w",images:[{path:i.p+"assets/images/ideal-img/pdf.5694bab.32.png",width:32,height:32}],src:i.p+"assets/images/ideal-img/pdf.5694bab.32.png",toString:function(){return i.p+"assets/images/ideal-img/pdf.5694bab.32.png"},placeholder:void 0,width:32,height:32},preSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAACXBIWXMAAAsSAAALEgHS3X78AAABP0lEQVR4nE3NsUsCcRQH8B+t7f0RRUtTs1MQBIGEcULY1laTQ0UgNBSEJOF5Z2eZmCQRWEND6pDDUdFQVC5SYwoFyan3+909/cbvoq7f8vh93+e9xxhjjILTISe+feEkdk4cba8ojNSpE10+xsjwuOyDsSFZWV9PVgFgABAsC+h2+/JPevIdjI2x38czenkAwHKJc0NzeSHnWoAtcX9z48yHadXbaAEkCjkII4WOECQznjUqPjR+YOfGJB5bBY+tQURXCLcmeDH/D+azVXx+gNajRPVnOQOn/kSwbfCDdNWH+2pFNu9qNbo2TZyXSnhpNLzTPT3pw15GK8tQO8rxrXjcDSqKe//wyD14qJf/INTEpQxFq0l2q4n22ysG7S9vI9TdKx9OBUZFaGYRC3MKIqEwliJhmp9VSGaByQmJvgHSpvp4oAQ9ewAAAABJRU5ErkJggg=="}},3969:(e,n,i)=>{"use strict";i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>A,frontMatter:()=>a,metadata:()=>t,toc:()=>d});var r=i(4848),s=i(8453);const a={sidebar_position:0,displayed_sidebar:"firmwareSidebar",title:"Introduction"},o="app-nrf9160-wmbus",t={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",source:"@site/docs/firmware/app-nrf9160-wmbus/introduction.md",sourceDirName:"firmware/app-nrf9160-wmbus",slug:"/firmware/app-nrf9160-wmbus/introduction",permalink:"/iot/firmware/app-nrf9160-wmbus/introduction",draft:!1,unlisted:!1,editUrl:"https://github.com/lobaro/iot/tree/master/docs/firmware/app-nrf9160-wmbus/introduction.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_position:0,displayed_sidebar:"firmwareSidebar",title:"Introduction"},sidebar:"firmwareSidebar",previous:{title:"Overview",permalink:"/iot/firmware/"},next:{title:"Configuration Parameter",permalink:"/iot/firmware/app-nrf9160-wmbus/configuration-parameter"}},l={},d=[{value:"Firmware Introduction",id:"firmware-introduction",level:2},{value:"Compatible Metering Protocols",id:"compatible-metering-protocols",level:2},{value:"Wireless M-BUS S1, C1 or T1",id:"wireless-m-bus-s1-c1-or-t1",level:3},{value:"Sensus RF Bubble UP",id:"sensus-rf-bubble-up",level:3},{value:"ME-Funk",id:"me-funk",level:3},{value:"Working Principle",id:"working-principle",level:2},{value:"CRON based Scans",id:"cron-based-scans",level:3},{value:"Daily Status Message",id:"daily-status-message",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components},{Image:a}=n;return a||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Image",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"app-nrf9160-wmbus",children:"app-nrf9160-wmbus"}),"\n",(0,r.jsxs)(n.p,{children:["This page describes the Lobaro wireless M-Bus gateway firmware, called ",(0,r.jsx)(n.code,{children:"app-nrf9160-wmbus"}),", which is executable on\ndifferent hardware variants which are in turn used to build different products. Nevertheless, this common description is\nvalid for all products independently which hardware it actually runs on."]}),"\n",(0,r.jsx)(n.h2,{id:"firmware-introduction",children:"Firmware Introduction"}),"\n",(0,r.jsx)(a,{alt:"Lobaro wireless M-BUS Gateway firmware",img:i(3654),style:{width:"80%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,r.jsx)(n.p,{children:"The Lobaro wireless M-Bus gateways collect consumption values from up to 650(*) commercially available water\nmeters, heat\nmeters, heat cost allocators or similar with 868 MHz wireless M-Bus radio interface, Sensus RF Bubble Up or M\xfcller Funk\nand forward them encrypted via NB-IoT or LTE-M cellular radio or alternatively LoRaWAN networks for further processing\non the Internet."}),"\n",(0,r.jsx)(n.p,{children:"Additionally, the gateway hardware may be equipped with a sensor addon board which can provide additional sensor\nmeasurement values beside the collected metering data. If an addon is present depends on the actual product running this\nfirmware."}),"\n",(0,r.jsx)(n.p,{children:"Forwarded meter values are transmitted, optionally additionally encrypted via DTLS, to a shared or private instance of\nthe Lobaro IoT platform and can be viewed there or downloaded as a CSV file. Alternatively, standardised APIs such as\nMQTT, HTTP Push, SFTP or a REST interface are available to connect downstream systems or platforms easily and securely.\nWhen using LoRaWAN, the Lobaro Platform is optional. When using NB-IoT or LTE-M, on the other hand, it is mandatory.\nThis requirement is explained in the Lobaro IoT Platform FAQ."}),"\n",(0,r.jsx)(n.p,{children:"Thanks to the new NB-IoT mobile radio, optimised for sensor data, remote reading even works in places such as basements\nwhere smartphones have poor or no reception."}),"\n",(0,r.jsx)(n.p,{children:"(*) based on average telegram size 75 Bytes. On request, the capacity for meter telegrams can be increased to up to\n2,500 by means of an additional built-in memory."}),"\n",(0,r.jsx)(n.h2,{id:"compatible-metering-protocols",children:"Compatible Metering Protocols"}),"\n",(0,r.jsx)(a,{alt:"Lobaro wireless M-BUS Gateway firmware",img:i(2092),style:{width:"20%",paddingTop:"5px",paddingBottom:"5px"}}),"\n",(0,r.jsx)(n.h3,{id:"wireless-m-bus-s1-c1-or-t1",children:"Wireless M-BUS S1, C1 or T1"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Unidirectional 868 MHz modes following DIN EN 13757-4."}),"\n",(0,r.jsx)(n.li,{children:"Open metering specification (OMS, Annex O): PHY_A - 868 MHz (uplink only)"}),"\n",(0,r.jsx)(n.li,{children:"Qundis AMR"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"sensus-rf-bubble-up",children:"Sensus RF Bubble UP"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Manufacturer specific radio protocol for 868 MHz (Xylem Inc.)."}),"\n",(0,r.jsx)(n.li,{children:"Unidirectional bubble up mode is supported."}),"\n",(0,r.jsx)(n.li,{children:"\u26a0\ufe0f Decoding of Sensus RF telegrams needs the Lobaro telegram parser and unfortunately can't be disclosed."}),"\n"]}),"\n",(0,r.jsx)("table",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("td",{children:(0,r.jsx)(a,{alt:"PDF Download",img:i(7087),style:{width:"32px"}})}),(0,r.jsx)("td",{children:(0,r.jsx)("a",{target:"\\_blank",href:i(2562).A,children:"Sensus RF Brochure"})})]})}),"\n",(0,r.jsx)(n.h3,{id:"me-funk",children:"ME-Funk"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:['A.k.a. "M\xfcller Funk" - Manufacturer specific radio protocol for 868\nMHz (',(0,r.jsx)(n.a,{href:"https://www.mue-line.de/allgemeine-informationen/",children:"M\xfcller-electronic GmbH"}),")."]}),"\n",(0,r.jsx)(n.li,{children:"\u26a0\ufe0f Decoding of ME-Funk telegrams needs the Lobaro telegram parser and unfortunately can't be disclosed."}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.admonition,{type:"info",children:[(0,r.jsx)(n.p,{children:"433 MHz variants are available on products equipped with the additional 433 MHz hardware addon for the following\nspecifications:"}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Wireless M-Bus, Open metering specification (OMS, Annex O): PHY_B - 433 MHz (uplink only)"}),"\n",(0,r.jsx)(n.li,{children:"Sensus RF Bubble UP 433 MHz - Manufacturer specific (Xylem Inc.) radio protocol"}),"\n"]})]}),"\n",(0,r.jsx)(n.h2,{id:"working-principle",children:"Working Principle"}),"\n",(0,r.jsx)(n.p,{children:"The firmware remains in power-saving mode while not active most of the time. It leaves the low power sleep mode in the\nfollowing situations:"}),"\n",(0,r.jsx)(n.h3,{id:"cron-based-scans",children:"CRON based Scans"}),"\n",(0,r.jsxs)(n.p,{children:["The firmware is configured by its ",(0,r.jsx)(n.code,{children:"listenCron"})," configuration parameter to wake up at regular intervals to collect / scan\nfor\nmetering\ntelegrams over its 868 MHz wireless interface. The following sequence of operations is executed on each cron triggering:"]}),"\n",(0,r.jsx)(n.admonition,{title:"CRON configuration parameter",type:"tip",children:(0,r.jsxs)(n.p,{children:[(0,r.jsxs)(n.a,{href:"/iot/configuration/cron-configuration",children:["Click here to learn more about ",(0,r.jsx)(n.strong,{children:"cron configuration"})," parameters"]}),"."]})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Wait in deep sleep low power mode for ",(0,r.jsx)(n.code,{children:"listenCron"})," to trigger"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect metering data in all enabled wireless modes sequentially","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Collect C1-Mode and T1-Mode telegrams (wMBUS) in parallel for ",(0,r.jsx)(n.code,{children:"cmodeDurSec"})," seconds (if not 0)"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect S1-Mode telegrams (wMBUS) for ",(0,r.jsx)(n.code,{children:"smodeDurSec"})," seconds (if not 0)"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect X-Mode telegrams (Sensus RF) for ",(0,r.jsx)(n.code,{children:"xmodeDurSec"})," seconds (if not 0)"]}),"\n",(0,r.jsxs)(n.li,{children:["Collect U-Mode telegrams (M\xfcller Funk) for ",(0,r.jsx)(n.code,{children:"umodeDurSec"})," seconds (if not 0)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Optional: Perform sensor measurement using the optional hardware addon (only if any sensor addon installed)"}),"\n",(0,r.jsxs)(n.li,{children:["Upload all stored data via NB-IoT / LTE-CatM1 or LoRaWAN (depends on ",(0,r.jsx)(n.code,{children:"WAN"})," configuration)","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Upload all collected metering telegrams, status and sensor data"}),"\n",(0,r.jsxs)(n.li,{children:["When the upload fails the upload is retried every 24h after daily status or until the next ",(0,r.jsx)(n.code,{children:"listenCron"})," triggers."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Sleep till next ",(0,r.jsx)(n.code,{children:"listenCron"})," triggers or status message upload."]}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"This sequence also will be executed one after any device startup oder manual reset."})}),"\n",(0,r.jsx)(n.admonition,{title:"Raw telegrams",type:"note",children:(0,r.jsxs)(n.p,{children:['All meter telegrams are received "as is", e.g. encrypted or plain over the air. Only the always readable telegram header\ninformation is parsed for internal filtering and deduplication. Parsing and decryption of such raw metering data happens\nin the backend, e.g. in\nthe Lobaro head end system or any other connected system. Lobaro offers a standalone ',(0,r.jsx)(n.a,{href:"https://www.mbus.org",children:"REST API (www.mbus.org)"}),"\nfor raw (wireless) M-BUS telegrams parsing which can be licensed."]})}),"\n",(0,r.jsx)(n.h3,{id:"daily-status-message",children:"Daily Status Message"}),"\n",(0,r.jsx)(n.p,{children:"Once a day the firmware sends a status message. This allows for reaching the device, e.g. for changing the\nconfiguration, at least once a day independent of the configured regular scan interval (see above). This status message\ncontains information on many vital parameters of the gateway."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Upload status telegram normally at midnight ",(0,r.jsx)(n.strong,{children:"0:00h (UTC+0)"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Solar-powered hardware variants: noon ",(0,r.jsx)(n.strong,{children:"12:00h (UTC+0)"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Upload remaining telegrams in memory, if any failures happened during previous attempts."}),"\n",(0,r.jsxs)(n.li,{children:["Sleep till next ",(0,r.jsx)(n.code,{children:"listenCron"})," or next days status telegram."]}),"\n"]})]})}function A(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},2562:(e,n,i)=>{"use strict";i.d(n,{A:()=>r});const r=i.p+"assets/files/en---sensusrf-brochure-59b7f198b43913b0d70122d43e7dfb36.pdf"},8453:(e,n,i)=>{"use strict";i.d(n,{R:()=>o,x:()=>t});var r=i(6540);const s={},a=r.createContext(s);function o(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f6d78023.573a8d12.js b/assets/js/f6d78023.573a8d12.js new file mode 100644 index 00000000..a57393d9 --- /dev/null +++ b/assets/js/f6d78023.573a8d12.js @@ -0,0 +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 diff --git a/assets/js/f6d78023.f3e86e88.js b/assets/js/f6d78023.f3e86e88.js deleted file mode 100644 index ec9e98e6..00000000 --- a/assets/js/f6d78023.f3e86e88.js +++ /dev/null @@ -1 +0,0 @@ -(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.2d179d4.300.png 300w,"+i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.cc600dd.600.png 600w,"+i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c94c9bf.900.png 900w,"+i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.faaf604.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.2d179d4.300.png",width:300,height:182},{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.cc600dd.600.png",width:600,height:363},{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.c94c9bf.900.png",width:900,height:545},{path:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.faaf604.1200.png",width:1200,height:726}],src:i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.2d179d4.300.png",toString:function(){return i.p+"assets/images/ideal-img/Lobaro-Config-in-Log.2d179d4.300.png"},placeholder:void 0,width:300,height:182},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.35ae3a7.300.png 300w,"+i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.46f51b5.600.png 600w,"+i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.b3f9a4a.900.png 900w,"+i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.446b0a4.1200.png 1200w",images:[{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.35ae3a7.300.png",width:300,height:200},{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.46f51b5.600.png",width:600,height:401},{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.b3f9a4a.900.png",width:900,height:601},{path:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.446b0a4.1200.png",width:1200,height:801}],src:i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.35ae3a7.300.png",toString:function(){return i.p+"assets/images/ideal-img/configuration-example-lobaro-platform.35ae3a7.300.png"},placeholder:void 0,width:300,height:200},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:()=>c,frontMatter:()=>t,metadata:()=>s,toc:()=>g});var a=i(4848),n=i(8453);const t={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={},g=[{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,n.R)(),...e.components},{Image:t}=o;return t||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,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.h1,{id:"configuration-overview",children:"Configuration Overview"}),"\n",(0,a.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,a.jsx)(o.admonition,{title:"This is a general doc",type:"info",children:(0,a.jsxs)(o.p,{children:["Device and firmware ",(0,a.jsx)(o.strong,{children:"specific"})," parameters are explained in the respective product documentation."]})}),"\n",(0,a.jsx)(o.h2,{id:"different-ways-to-configure",children:"Different ways to configure"}),"\n",(0,a.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,a.jsx)(o.h3,{id:"locally",children:"Locally"}),"\n",(0,a.jsxs)(o.p,{children:["Any Lobaro device configuration can be set and read out locally via a PC with the ",(0,a.jsx)(o.a,{href:"./usb-config-adapter",children:"Lobaro configuration USB\nadapter"})," and the ",(0,a.jsx)(o.a,{href:"/iot/configuration/lobaro-config-tool",children:"Lobaro Maintenance Tool"}),"."]}),"\n",(0,a.jsx)(t,{alt:"Lobaro Configuration Tool",img:i(9536),style:{width:"60%",paddingTop:"10px",paddingBottom:"10px"}}),"\n",(0,a.jsxs)(o.p,{children:["Some network related parameters, such as the APN of the mobile cellular network provider, ",(0,a.jsx)(o.strong,{children:"must"})," usually\nfirst be configured correctly locally before the device can get online for the first time."]}),"\n",(0,a.jsx)(o.h3,{id:"remotely",children:"Remotely"}),"\n",(0,a.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,a.jsx)(t,{alt:"Lobaro Platform Configuration Tab",img:i(3046),style:{width:"60%",paddingTop:"10px",paddingBottom:"20px"}}),"\n",(0,a.jsx)(o.admonition,{title:"Bigger Rollouts",type:"info",children:(0,a.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 c(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,a.jsx)(o,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},8453:(e,o,i)=>{"use strict";i.d(o,{R:()=>r,x:()=>s});var a=i(6540);const n={},t=a.createContext(n);function r(e){const o=a.useContext(t);return a.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(n):e.components||n:r(e.components),a.createElement(t.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.1e71f8ba.js b/assets/js/main.1e71f8ba.js deleted file mode 100644 index 64320bcc..00000000 --- a/assets/js/main.1e71f8ba.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.1e71f8ba.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],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/","0a6"),routes:[{path:"/iot/",component:d("/iot/","6b2"),routes:[{path:"/iot/",component:d("/iot/","491"),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/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":"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