[{"data":1,"prerenderedAt":1275},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Ftdf-viewers":488,"\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Ftdf-viewers-surround":1270},[4,326,444,470],{"title":5,"path":6,"stem":7,"children":8,"page":191},"Docs","\u002Fdocs","1.docs",[9,32,62,116,138,192,262,268,292],{"title":10,"path":11,"stem":12,"children":13,"icon":15},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[14,16,20,24,28],{"title":10,"path":11,"stem":12,"icon":15},"i-lucide-house",{"title":17,"path":18,"stem":19},"Register a User","\u002Fdocs\u002Fgetting-started\u002Fregister-a-user","1.docs\u002F1.getting-started\u002F2.register-a-user",{"title":21,"path":22,"stem":23},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","1.docs\u002F1.getting-started\u002F3.platform-overview",{"title":25,"path":26,"stem":27},"Create an Organisation","\u002Fdocs\u002Fgetting-started\u002Fcreate-an-organisation","1.docs\u002F1.getting-started\u002F4.create-an-organisation",{"title":29,"path":30,"stem":31},"Quickstarts","\u002Fdocs\u002Fgetting-started\u002Fquickstarts","1.docs\u002F1.getting-started\u002F5.quickstarts",{"title":33,"path":34,"stem":35,"children":36},"Organisation Administration","\u002Fdocs\u002Finfuse-cloud","1.docs\u002F2.infuse-cloud\u002F1.index",[37,38,42,46,50,54,58],{"title":33,"path":34,"stem":35},{"title":39,"path":40,"stem":41},"Create or Switch Organisations","\u002Fdocs\u002Finfuse-cloud\u002Fcreate-or-switch-organisations","1.docs\u002F2.infuse-cloud\u002F2.create-or-switch-organisations",{"title":43,"path":44,"stem":45},"Organisation Profile","\u002Fdocs\u002Finfuse-cloud\u002Forganisation-profile","1.docs\u002F2.infuse-cloud\u002F3.organisation-profile",{"title":47,"path":48,"stem":49},"Members and Invitations","\u002Fdocs\u002Finfuse-cloud\u002Fmembers-and-invitations","1.docs\u002F2.infuse-cloud\u002F4.members-and-invitations",{"title":51,"path":52,"stem":53},"Member Roles","\u002Fdocs\u002Finfuse-cloud\u002Fmember-roles","1.docs\u002F2.infuse-cloud\u002F5.member-roles",{"title":55,"path":56,"stem":57},"API Access","\u002Fdocs\u002Finfuse-cloud\u002Fapi-access","1.docs\u002F2.infuse-cloud\u002F6.api-access",{"title":59,"path":60,"stem":61},"Webhooks","\u002Fdocs\u002Finfuse-cloud\u002Fwebhooks","1.docs\u002F2.infuse-cloud\u002F7.webhooks",{"title":63,"path":64,"stem":65,"children":66},"Infuse-IoT Cloud","\u002Fdocs\u002Finfuse-iot-cloud","1.docs\u002F3.infuse-iot-cloud\u002F1.index",[67,68,72,76,80,84,88,92,96,100,104,108,112],{"title":63,"path":64,"stem":65},{"title":69,"path":70,"stem":71},"Provisioning","\u002Fdocs\u002Finfuse-iot-cloud\u002Fprovisioning","1.docs\u002F3.infuse-iot-cloud\u002F10.provisioning",{"title":73,"path":74,"stem":75},"Connectivity","\u002Fdocs\u002Finfuse-iot-cloud\u002Fconnectivity","1.docs\u002F3.infuse-iot-cloud\u002F11.connectivity",{"title":77,"path":78,"stem":79},"Definitions","\u002Fdocs\u002Finfuse-iot-cloud\u002Fdefinitions","1.docs\u002F3.infuse-iot-cloud\u002F12.definitions",{"title":81,"path":82,"stem":83},"Telemetry","\u002Fdocs\u002Finfuse-iot-cloud\u002Ftelemetry","1.docs\u002F3.infuse-iot-cloud\u002F13.telemetry",{"title":85,"path":86,"stem":87},"Console","\u002Fdocs\u002Finfuse-iot-cloud\u002Fconsole","1.docs\u002F3.infuse-iot-cloud\u002F2.console",{"title":89,"path":90,"stem":91},"Concepts","\u002Fdocs\u002Finfuse-iot-cloud\u002Fconcepts","1.docs\u002F3.infuse-iot-cloud\u002F3.concepts",{"title":93,"path":94,"stem":95},"Boards","\u002Fdocs\u002Finfuse-iot-cloud\u002Fboards","1.docs\u002F3.infuse-iot-cloud\u002F4.boards",{"title":97,"path":98,"stem":99},"Networks","\u002Fdocs\u002Finfuse-iot-cloud\u002Fnetworks","1.docs\u002F3.infuse-iot-cloud\u002F5.networks",{"title":101,"path":102,"stem":103},"Devices","\u002Fdocs\u002Finfuse-iot-cloud\u002Fdevices","1.docs\u002F3.infuse-iot-cloud\u002F6.devices",{"title":105,"path":106,"stem":107},"Device Configuration","\u002Fdocs\u002Finfuse-iot-cloud\u002Fdevice-configuration","1.docs\u002F3.infuse-iot-cloud\u002F7.device-configuration",{"title":109,"path":110,"stem":111},"Applications and Releases","\u002Fdocs\u002Finfuse-iot-cloud\u002Fapplications-and-releases","1.docs\u002F3.infuse-iot-cloud\u002F8.applications-and-releases",{"title":113,"path":114,"stem":115},"Commands","\u002Fdocs\u002Finfuse-iot-cloud\u002Fcommands","1.docs\u002F3.infuse-iot-cloud\u002F9.commands",{"title":117,"path":118,"stem":119,"children":120},"Infuse-DB","\u002Fdocs\u002Finfuse-db","1.docs\u002F4.infuse-db\u002F1.index",[121,122,126,130,134],{"title":117,"path":118,"stem":119},{"title":123,"path":124,"stem":125},"Datasets","\u002Fdocs\u002Finfuse-db\u002Fdatasets","1.docs\u002F4.infuse-db\u002F2.datasets",{"title":127,"path":128,"stem":129},"Ingestion","\u002Fdocs\u002Finfuse-db\u002Fingestion","1.docs\u002F4.infuse-db\u002F3.ingestion",{"title":131,"path":132,"stem":133},"Querying","\u002Fdocs\u002Finfuse-db\u002Fquerying","1.docs\u002F4.infuse-db\u002F4.querying",{"title":135,"path":136,"stem":137},"Retention","\u002Fdocs\u002Finfuse-db\u002Fretention","1.docs\u002F4.infuse-db\u002F5.retention",{"title":139,"path":140,"stem":141,"children":142},"Embedded Tools","\u002Fdocs\u002Finfuse-iot-sdk","1.docs\u002F4.infuse-iot-sdk\u002F1.index",[143,144,148],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147},"Infuse-IoT SDK","\u002Fdocs\u002Finfuse-iot-sdk\u002Fsdk-reference","1.docs\u002F4.infuse-iot-sdk\u002F2.sdk-reference",{"title":149,"path":150,"stem":151,"children":152,"page":191},"Python Tools","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools",[153,156,159,163,167,171,175,179,183,187],{"title":149,"path":154,"stem":155},"\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fpython-tools","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F01.python-tools",{"title":113,"path":157,"stem":158},"\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fcommands","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F02.commands",{"title":160,"path":161,"stem":162},"Credential Management","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fcredentials","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F03.credentials",{"title":164,"path":165,"stem":166},"Gateways","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fgateways","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F04.gateways",{"title":168,"path":169,"stem":170},"Infuse-IoT Cloud support","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fcloud","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F05.cloud",{"title":172,"path":173,"stem":174},"Provision Hardware","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fhardware-provisioning","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F06.hardware-provisioning",{"title":176,"path":177,"stem":178},"TDF Viewers","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Ftdf-viewers","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F07.tdf-viewers",{"title":180,"path":181,"stem":182},"RPC Runners","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Frpc-runner","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F08.rpc-runner",{"title":184,"path":185,"stem":186},"Over-the-Air Upgrades","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fota-upgrades","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F09.ota-upgrades",{"title":188,"path":189,"stem":190},"Bluetooth Log Viewer","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fble-log-viewer","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F10.ble-log-viewer",false,{"title":193,"path":194,"stem":195,"children":196},"Infuse-Marketplace","\u002Fdocs\u002Fmarketplace","1.docs\u002F5.marketplace\u002F1.index",[197,198,202,206,232],{"title":193,"path":194,"stem":195},{"title":199,"path":200,"stem":201},"Infuse-Marketplace Instances","\u002Fdocs\u002Fmarketplace\u002Finstances","1.docs\u002F5.marketplace\u002F2.instances",{"title":203,"path":204,"stem":205},"Infuse-Marketplace Roles","\u002Fdocs\u002Fmarketplace\u002Froles","1.docs\u002F5.marketplace\u002F3.roles",{"title":207,"path":208,"stem":209,"children":210},"Infuse-Marketplace Developers","\u002Fdocs\u002Fmarketplace\u002Fdevelopers","1.docs\u002F5.marketplace\u002Fdevelopers\u002F1.index",[211,212,216,220,224,228],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215},"Create an App or Algorithm","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fcreate-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F2.create-product",{"title":217,"path":218,"stem":219},"Upload Assets","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fupload-assets","1.docs\u002F5.marketplace\u002Fdevelopers\u002F3.upload-assets",{"title":221,"path":222,"stem":223},"Releases and Versions","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Freleases-and-versions","1.docs\u002F5.marketplace\u002Fdevelopers\u002F4.releases-and-versions",{"title":225,"path":226,"stem":227},"Pricing","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpricing","1.docs\u002F5.marketplace\u002Fdevelopers\u002F5.pricing",{"title":229,"path":230,"stem":231},"Publish an App or Algorithm","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpublish-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F6.publish-product",{"title":233,"path":234,"stem":235,"children":236},"Infuse-Marketplace Providers","\u002Fdocs\u002Fmarketplace\u002Fproviders","1.docs\u002F5.marketplace\u002Fproviders\u002F1.index",[237,238,242,246,250,254,258],{"title":233,"path":234,"stem":235},{"title":239,"path":240,"stem":241},"Discover Apps and Algorithms","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fdiscover-products","1.docs\u002F5.marketplace\u002Fproviders\u002F2.discover-products",{"title":243,"path":244,"stem":245},"Create and Manage Listings","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcreate-listings","1.docs\u002F5.marketplace\u002Fproviders\u002F3.create-listings",{"title":247,"path":248,"stem":249},"Build a Storefront","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fbuild-a-storefront","1.docs\u002F5.marketplace\u002Fproviders\u002F4.build-a-storefront",{"title":251,"path":252,"stem":253},"Checkout Flow","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcheckout-flow","1.docs\u002F5.marketplace\u002Fproviders\u002F5.checkout-flow",{"title":255,"path":256,"stem":257},"Purchases","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fpurchases","1.docs\u002F5.marketplace\u002Fproviders\u002F6.purchases",{"title":259,"path":260,"stem":261},"Install Purchased Apps and Algorithms","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Finstall-purchased-products","1.docs\u002F5.marketplace\u002Fproviders\u002F7.install-purchased-products",{"title":263,"path":264,"stem":265,"children":266},"Infuse-Analytics","\u002Fdocs\u002Finfuse-analytics","1.docs\u002F6.infuse-analytics\u002F1.index",[267],{"title":263,"path":264,"stem":265},{"title":89,"path":269,"stem":270,"children":271},"\u002Fdocs\u002Fconcepts","1.docs\u002F7.concepts\u002F1.index",[272,273,277,281,284,288],{"title":89,"path":269,"stem":270},{"title":274,"path":275,"stem":276},"Organisations","\u002Fdocs\u002Fconcepts\u002Forganisations","1.docs\u002F7.concepts\u002F2.organisations",{"title":278,"path":279,"stem":280},"Products","\u002Fdocs\u002Fconcepts\u002Fproducts","1.docs\u002F7.concepts\u002F3.products",{"title":101,"path":282,"stem":283},"\u002Fdocs\u002Fconcepts\u002Fdevices","1.docs\u002F7.concepts\u002F5.devices",{"title":285,"path":286,"stem":287},"Entitlements","\u002Fdocs\u002Fconcepts\u002Fentitlements","1.docs\u002F7.concepts\u002F6.entitlements",{"title":289,"path":290,"stem":291},"Infuse-Marketplace Model","\u002Fdocs\u002Fconcepts\u002Fmarketplace-model","1.docs\u002F7.concepts\u002F7.marketplace-model",{"title":293,"path":294,"stem":295,"children":296},"IAM and Access","\u002Fdocs\u002Fiam-and-access","1.docs\u002F8.iam-and-access\u002F1.index",[297,298,302,306,310,314,318,322],{"title":293,"path":294,"stem":295},{"title":299,"path":300,"stem":301},"Users, Groups, and Roles","\u002Fdocs\u002Fiam-and-access\u002Fusers-groups-and-roles","1.docs\u002F8.iam-and-access\u002F2.users-groups-and-roles",{"title":303,"path":304,"stem":305},"Permissions and Resource Limits","\u002Fdocs\u002Fiam-and-access\u002Fpermissions","1.docs\u002F8.iam-and-access\u002F3.permissions",{"title":307,"path":308,"stem":309},"Service Accounts","\u002Fdocs\u002Fiam-and-access\u002Fservice-accounts","1.docs\u002F8.iam-and-access\u002F4.service-accounts",{"title":311,"path":312,"stem":313},"API Keys","\u002Fdocs\u002Fiam-and-access\u002Fapi-tokens","1.docs\u002F8.iam-and-access\u002F5.api-tokens",{"title":315,"path":316,"stem":317},"Token Exchange","\u002Fdocs\u002Fiam-and-access\u002Ftoken-exchange","1.docs\u002F8.iam-and-access\u002F6.token-exchange",{"title":319,"path":320,"stem":321},"Rotate and Revoke Credentials","\u002Fdocs\u002Fiam-and-access\u002Frotate-and-revoke-credentials","1.docs\u002F8.iam-and-access\u002F7.rotate-and-revoke-credentials",{"title":323,"path":324,"stem":325},"Troubleshooting Auth","\u002Fdocs\u002Fiam-and-access\u002Ftroubleshooting-auth","1.docs\u002F8.iam-and-access\u002F8.troubleshooting-auth",{"title":327,"path":328,"stem":329,"children":330},"Guides","\u002Fguides","2.guides\u002F1.index",[331,332,342,352,424,434],{"title":327,"path":328,"stem":329},{"title":333,"path":334,"stem":335,"children":336},"Access Guides","\u002Fguides\u002Faccess","2.guides\u002Faccess\u002F1.index",[337,338],{"title":333,"path":334,"stem":335},{"title":339,"path":340,"stem":341},"Create an API Key","\u002Fguides\u002Faccess\u002Fcreate-an-api-token","2.guides\u002Faccess\u002F2.create-an-api-token",{"title":343,"path":344,"stem":345,"children":346},"Data Guides","\u002Fguides\u002Fdata","2.guides\u002Fdata\u002F1.index",[347,348],{"title":343,"path":344,"stem":345},{"title":349,"path":350,"stem":351},"Stream IoT Data to Infuse-DB","\u002Fguides\u002Fdata\u002Fstream-iot-data-to-infuse-db","2.guides\u002Fdata\u002F2.stream-iot-data-to-infuse-db",{"title":353,"path":354,"stem":355,"children":356},"Embedded SDK Guides","\u002Fguides\u002Fembedded-iot","2.guides\u002Fembedded-iot\u002F1.index",[357,358,362,384,394],{"title":353,"path":354,"stem":355},{"title":359,"path":360,"stem":361},"Python Tools Setup & Install","\u002Fguides\u002Fembedded-iot\u002Fpython-setup-install","2.guides\u002Fembedded-iot\u002F2.python-setup-install",{"title":363,"path":364,"stem":365,"children":366},"Creating Embedded Algorithms","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F1.index",[367,368,372,376,380],{"title":363,"path":364,"stem":365},{"title":369,"path":370,"stem":371},"Data collection","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdata-collection","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F2.data-collection",{"title":373,"path":374,"stem":375},"Dataset Creation","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdataset-creation","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F3.dataset-creation",{"title":377,"path":378,"stem":379},"Training Models","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Ftraining-models","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F4.training-models",{"title":381,"path":382,"stem":383},"Deploying Models","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdeploy","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F5.deploy",{"title":385,"path":386,"stem":387,"children":388},"Hardware Guides","\u002Fguides\u002Fembedded-iot\u002Fhardware","2.guides\u002Fembedded-iot\u002Fhardware\u002F1.index",[389,390],{"title":385,"path":386,"stem":387},{"title":391,"path":392,"stem":393},"nRF54L15 Tag","\u002Fguides\u002Fembedded-iot\u002Fhardware\u002Fnrf54l15-tag","2.guides\u002Fembedded-iot\u002Fhardware\u002F2.nrf54l15-tag",{"title":395,"path":396,"stem":397,"children":398},"How To's","\u002Fguides\u002Fembedded-iot\u002Fhow-tos","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F1.index",[399,400,404,408,412,416,420],{"title":395,"path":396,"stem":397},{"title":401,"path":402,"stem":403},"Device Provisioning","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fprovision-a-tag","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F01.provision-a-tag",{"title":405,"path":406,"stem":407},"Setup and Flash a gateway","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fflash-a-gateway","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F02.flash-a-gateway",{"title":409,"path":410,"stem":411},"Connecting to a gateway","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fconnect-gateway","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F03.connect-gateway",{"title":413,"path":414,"stem":415},"How to physically connect a device","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fdevice-logs","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F03.device-logs",{"title":417,"path":418,"stem":419},"Configuring the default network","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fconfigure-network","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F04.configure-network",{"title":421,"path":422,"stem":423},"Device's Infuse ID","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Ftag-infuse-id","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F05.tag-infuse-id",{"title":425,"path":426,"stem":427,"children":428},"IoT Guides","\u002Fguides\u002Fiot","2.guides\u002Fiot\u002F1.index",[429,430],{"title":425,"path":426,"stem":427},{"title":431,"path":432,"stem":433},"Connect an IoT Device","\u002Fguides\u002Fiot\u002Fconnect-a-device","2.guides\u002Fiot\u002F2.connect-a-device",{"title":435,"path":436,"stem":437,"children":438},"Infuse-Marketplace Guides","\u002Fguides\u002Fmarketplace","2.guides\u002Fmarketplace\u002F1.index",[439,440],{"title":435,"path":436,"stem":437},{"title":441,"path":442,"stem":443},"Build an Infuse-Marketplace Storefront","\u002Fguides\u002Fmarketplace\u002Fbuild-a-storefront","2.guides\u002Fmarketplace\u002F2.build-a-storefront",{"title":445,"path":446,"stem":447,"children":448},"API Reference","\u002Fapi-reference","3.api-reference\u002F1.index",[449,450,454,458,462,466],{"title":445,"path":446,"stem":447},{"title":451,"path":452,"stem":453},"Admin API","\u002Fapi-reference\u002Fcloud","3.api-reference\u002F2.cloud",{"title":455,"path":456,"stem":457},"Infuse-Marketplace API","\u002Fapi-reference\u002Fmarketplace","3.api-reference\u002F3.marketplace",{"title":459,"path":460,"stem":461},"IAM API","\u002Fapi-reference\u002Fiam","3.api-reference\u002F4.iam",{"title":463,"path":464,"stem":465},"Infuse-IoT Cloud API","\u002Fapi-reference\u002Fiot","3.api-reference\u002F5.iot",{"title":467,"path":468,"stem":469},"Infuse-DB API","\u002Fapi-reference\u002Fdb","3.api-reference\u002F6.db",{"title":471,"path":472,"stem":473,"children":474},"Resources","\u002Fresources","4.resources\u002F1.index",[475,476,480,484],{"title":471,"path":472,"stem":473},{"title":477,"path":478,"stem":479},"SDKs","\u002Fresources\u002Fsdks","4.resources\u002F2.sdks",{"title":481,"path":482,"stem":483},"OpenAPI Specs","\u002Fresources\u002Fopenapi-specs","4.resources\u002F3.openapi-specs",{"title":485,"path":486,"stem":487},"Examples","\u002Fresources\u002Fexamples","4.resources\u002F4.examples",{"id":489,"title":176,"body":490,"description":1264,"extension":1265,"links":1266,"meta":1267,"navigation":966,"path":177,"seo":1268,"stem":178,"__hash__":1269},"docs\u002F1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F07.tdf-viewers.md",{"type":491,"value":492,"toc":1259},"minimark",[493,505,518,528,533,542,565,579,582,585,588,591,603,606,945,948,1189,1192,1195,1203,1218,1223,1255],[494,495,496,497,504],"p",{},"Three separate tools are available to view and record local\n",[498,499,503],"a",{"href":500,"rel":501},"https:\u002F\u002Fdocs.dev.infuse-iot.com\u002Flatest\u002Fembedded\u002Fapp_features\u002Ftdf.html#tdf-api",[502],"nofollow","Tagged Data Format"," (TDF) packets:",[506,507,508,512,515],"ul",{},[509,510,511],"li",{},"TDF Localhost",[509,513,514],{},"TDF List",[509,516,517],{},"TDF CSV",[519,520,521],"note",{},[494,522,523,524,527],{},"TDF tools all require a running instance of a ",[498,525,164],{"href":526},"gateways"," bridge to supply data.",[529,530,532],"h2",{"id":531},"tdf-localhost","TDF localhost",[494,534,535,536,541],{},"The localhost tool records the latest values of TDF packets from each devices and displays them in a table form through\na local web browser. The table view is built on top of ",[498,537,540],{"href":538,"rel":539},"https:\u002F\u002Ftabulator.info\u002F",[502],"Tabulator",",\nproviding rich filtering capabilities.",[543,544,549],"pre",{"className":545,"code":546,"language":547,"meta":548,"style":548},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","infuse localhost\n","bash","",[550,551,552],"code",{"__ignoreMap":548},[553,554,557,561],"span",{"class":555,"line":556},"line",1,[553,558,560],{"class":559},"sBMFI","infuse",[553,562,564],{"class":563},"sfazB"," localhost\n",[494,566,567,568],{},"After running the web server, the interractive web page can be opened in a web browser like below:\n",[569,570],"img",{"alt":571,"decoding":572,"format":573,"height":574,"loading":575,"sizes":576,"src":577,"width":578},"Example infuse localhost webpage display","async","webp",702,"lazy","xs:100vw sm:100vw md:100vw lg:768px","\u002Fimages\u002Ftdf-viewers\u002Flocalhost.png",1883,[494,580,581],{},"By default all observed devices are displayed which at times can be overwhelming.\nFiltering options can be shown using the button in the top left corner.\nVisible devices can be filtered based on if they've send a specific TDFs, their network IDs or application IDs.",[494,583,584],{},"The table can also be frozen using the \"Pause Updating\" checkbox to prevent the table shifting and moving around.\nThis is useful because frequent refreshes will typically reset text selection which disrupts copying selections.",[529,586,514],{"id":587},"tdf-list",[494,589,590],{},"The TDF list tool simply prints received TDFs to the terminal with formatting.",[543,592,594],{"className":545,"code":593,"language":547,"meta":548,"style":548},"infuse tdf_list\n",[550,595,596],{"__ignoreMap":548},[553,597,598,600],{"class":555,"line":556},[553,599,560],{"class":559},[553,601,602],{"class":563}," tdf_list\n",[494,604,605],{},"It will print out TDFs one-by-one as they're received.",[543,607,609],{"className":545,"code":608,"language":547,"meta":548,"style":548},"Infuse ID: 00000000000003ea\nInterface: BT_ADV\n  Address: fd:7f:a6:fa:76:c3 (random)\n     RSSI: -56 dBm\n-----------------------  -------------------------  -----------------  --------------  -----\n2025-03-09 23:55:57.680  ANNOUNCE                   application        0xebe10001\n                                                    version.major      1\n                                                    version.minor      1\n                                                    version.revision   11\n                                                    version.build_num  0xe91313a1\n                                                    kv_crc             0xaf3cc14a\n                                                    blocks             20248669\n                                                    uptime             1604665\n                                                    reboots            3\n                                                    flags              0x01\n2025-03-09 23:55:57.680  ACC_4G                     sample.x           -16\n                                                    sample.y           242\n                                                    sample.z           8283\n2025-03-09 23:55:57.680  LTE_CONN_STATUS            cell.mcc           505\n                                                    cell.mnc           1\n                                                    cell.eci           147045644\n                                                    cell.tac           28714\n                                                    earfcn             9410\n                                                    status             5\n                                                    tech               7\n                                                    rsrp               -127            dBm\n                                                    rsrq               -5              dB\n2025-03-09 23:55:57.680  BLUETOOTH_DATA_THROUGHPUT  address.type       0\n                                                    address.val        0x60fcf10031da\n                                                    throughput         323             B\u002Fsec\n...\n",[550,610,611,622,631,644,656,674,693,702,710,719,728,737,746,755,764,773,789,798,807,823,832,841,850,859,868,877,889,901,917,926,938],{"__ignoreMap":548},[553,612,613,616,619],{"class":555,"line":556},[553,614,615],{"class":559},"Infuse",[553,617,618],{"class":563}," ID:",[553,620,621],{"class":563}," 00000000000003ea\n",[553,623,625,628],{"class":555,"line":624},2,[553,626,627],{"class":559},"Interface:",[553,629,630],{"class":563}," BT_ADV\n",[553,632,634,637,640],{"class":555,"line":633},3,[553,635,636],{"class":559},"  Address:",[553,638,639],{"class":563}," fd:7f:a6:fa:76:c3",[553,641,643],{"class":642},"sTEyZ"," (random)\n",[553,645,647,650,653],{"class":555,"line":646},4,[553,648,649],{"class":559},"     RSSI:",[553,651,652],{"class":563}," -56",[553,654,655],{"class":563}," dBm\n",[553,657,659,662,665,668,671],{"class":555,"line":658},5,[553,660,661],{"class":559},"-----------------------",[553,663,664],{"class":563},"  -------------------------",[553,666,667],{"class":563},"  -----------------",[553,669,670],{"class":563},"  --------------",[553,672,673],{"class":563},"  -----\n",[553,675,677,680,683,686,689],{"class":555,"line":676},6,[553,678,679],{"class":559},"2025-03-09",[553,681,682],{"class":563}," 23:55:57.680",[553,684,685],{"class":563},"  ANNOUNCE",[553,687,688],{"class":563},"                   application",[553,690,692],{"class":691},"sbssI","        0xebe10001\n",[553,694,696,699],{"class":555,"line":695},7,[553,697,698],{"class":559},"                                                    version.major",[553,700,701],{"class":691},"      1\n",[553,703,705,708],{"class":555,"line":704},8,[553,706,707],{"class":559},"                                                    version.minor",[553,709,701],{"class":691},[553,711,713,716],{"class":555,"line":712},9,[553,714,715],{"class":559},"                                                    version.revision",[553,717,718],{"class":691},"   11\n",[553,720,722,725],{"class":555,"line":721},10,[553,723,724],{"class":559},"                                                    version.build_num",[553,726,727],{"class":691},"  0xe91313a1\n",[553,729,731,734],{"class":555,"line":730},11,[553,732,733],{"class":559},"                                                    kv_crc",[553,735,736],{"class":691},"             0xaf3cc14a\n",[553,738,740,743],{"class":555,"line":739},12,[553,741,742],{"class":559},"                                                    blocks",[553,744,745],{"class":691},"             20248669\n",[553,747,749,752],{"class":555,"line":748},13,[553,750,751],{"class":559},"                                                    uptime",[553,753,754],{"class":691},"             1604665\n",[553,756,758,761],{"class":555,"line":757},14,[553,759,760],{"class":559},"                                                    reboots",[553,762,763],{"class":691},"            3\n",[553,765,767,770],{"class":555,"line":766},15,[553,768,769],{"class":559},"                                                    flags",[553,771,772],{"class":691},"              0x01\n",[553,774,776,778,780,783,786],{"class":555,"line":775},16,[553,777,679],{"class":559},[553,779,682],{"class":563},[553,781,782],{"class":563},"  ACC_4G",[553,784,785],{"class":563},"                     sample.x",[553,787,788],{"class":563},"           -16\n",[553,790,792,795],{"class":555,"line":791},17,[553,793,794],{"class":559},"                                                    sample.y",[553,796,797],{"class":691},"           242\n",[553,799,801,804],{"class":555,"line":800},18,[553,802,803],{"class":559},"                                                    sample.z",[553,805,806],{"class":691},"           8283\n",[553,808,810,812,814,817,820],{"class":555,"line":809},19,[553,811,679],{"class":559},[553,813,682],{"class":563},[553,815,816],{"class":563},"  LTE_CONN_STATUS",[553,818,819],{"class":563},"            cell.mcc",[553,821,822],{"class":691},"           505\n",[553,824,826,829],{"class":555,"line":825},20,[553,827,828],{"class":559},"                                                    cell.mnc",[553,830,831],{"class":691},"           1\n",[553,833,835,838],{"class":555,"line":834},21,[553,836,837],{"class":559},"                                                    cell.eci",[553,839,840],{"class":691},"           147045644\n",[553,842,844,847],{"class":555,"line":843},22,[553,845,846],{"class":559},"                                                    cell.tac",[553,848,849],{"class":691},"           28714\n",[553,851,853,856],{"class":555,"line":852},23,[553,854,855],{"class":559},"                                                    earfcn",[553,857,858],{"class":691},"             9410\n",[553,860,862,865],{"class":555,"line":861},24,[553,863,864],{"class":559},"                                                    status",[553,866,867],{"class":691},"             5\n",[553,869,871,874],{"class":555,"line":870},25,[553,872,873],{"class":559},"                                                    tech",[553,875,876],{"class":691},"               7\n",[553,878,880,883,886],{"class":555,"line":879},26,[553,881,882],{"class":559},"                                                    rsrp",[553,884,885],{"class":563},"               -127",[553,887,888],{"class":563},"            dBm\n",[553,890,892,895,898],{"class":555,"line":891},27,[553,893,894],{"class":559},"                                                    rsrq",[553,896,897],{"class":563},"               -5",[553,899,900],{"class":563},"              dB\n",[553,902,904,906,908,911,914],{"class":555,"line":903},28,[553,905,679],{"class":559},[553,907,682],{"class":563},[553,909,910],{"class":563},"  BLUETOOTH_DATA_THROUGHPUT",[553,912,913],{"class":563},"  address.type",[553,915,916],{"class":691},"       0\n",[553,918,920,923],{"class":555,"line":919},29,[553,921,922],{"class":559},"                                                    address.val",[553,924,925],{"class":691},"        0x60fcf10031da\n",[553,927,929,932,935],{"class":555,"line":928},30,[553,930,931],{"class":559},"                                                    throughput",[553,933,934],{"class":691},"         323",[553,936,937],{"class":563},"             B\u002Fsec\n",[553,939,941],{"class":555,"line":940},31,[553,942,944],{"class":943},"s2Zo4","...\n",[494,946,947],{},"There are also a number of available options:",[543,949,951],{"className":545,"code":950,"language":547,"meta":548,"style":548},"> infuse tdf_list -h\n\nusage: infuse tdf_list [-h] [--array-all] [--id ID] [--min-rssi MIN_RSSI] [--server-port SERVER_SOCK]\n\nDisplay received TDFs in a list\n\noptions:\n  -h, --help            show this help message and exit\n  --array-all           Display all array values, not just the last\n  --id ID               Limit displayed TDFs by device ID\n  --min-rssi MIN_RSSI   Minimum RSSI to display TDF\n  --server-port SERVER_SOCK\n                        Alternate port to use for Gateway connections (default 8751)\n",[550,952,953,962,968,1014,1018,1038,1042,1047,1073,1102,1127,1150,1158],{"__ignoreMap":548},[553,954,955,959],{"class":555,"line":556},[553,956,958],{"class":957},"sMK4o",">",[553,960,961],{"class":642}," infuse tdf_list -h\n",[553,963,964],{"class":555,"line":624},[553,965,967],{"emptyLinePlaceholder":966},true,"\n",[553,969,970,973,976,979,982,985,988,991,994,997,999,1001,1004,1006,1008,1011],{"class":555,"line":633},[553,971,972],{"class":559},"usage:",[553,974,975],{"class":563}," infuse",[553,977,978],{"class":563}," tdf_list",[553,980,981],{"class":642}," [-h] ",[553,983,984],{"class":957},"[",[553,986,987],{"class":642},"--array-all",[553,989,990],{"class":957},"]",[553,992,993],{"class":957}," [",[553,995,996],{"class":642},"--id ID",[553,998,990],{"class":957},[553,1000,993],{"class":957},[553,1002,1003],{"class":642},"--min-rssi MIN_RSSI",[553,1005,990],{"class":957},[553,1007,993],{"class":957},[553,1009,1010],{"class":642},"--server-port SERVER_SOCK",[553,1012,1013],{"class":957},"]\n",[553,1015,1016],{"class":555,"line":646},[553,1017,967],{"emptyLinePlaceholder":966},[553,1019,1020,1023,1026,1029,1032,1035],{"class":555,"line":658},[553,1021,1022],{"class":559},"Display",[553,1024,1025],{"class":563}," received",[553,1027,1028],{"class":563}," TDFs",[553,1030,1031],{"class":563}," in",[553,1033,1034],{"class":563}," a",[553,1036,1037],{"class":563}," list\n",[553,1039,1040],{"class":555,"line":676},[553,1041,967],{"emptyLinePlaceholder":966},[553,1043,1044],{"class":555,"line":695},[553,1045,1046],{"class":559},"options:\n",[553,1048,1049,1052,1055,1058,1061,1064,1067,1070],{"class":555,"line":704},[553,1050,1051],{"class":559},"  -h,",[553,1053,1054],{"class":563}," --help",[553,1056,1057],{"class":563},"            show",[553,1059,1060],{"class":563}," this",[553,1062,1063],{"class":563}," help",[553,1065,1066],{"class":563}," message",[553,1068,1069],{"class":563}," and",[553,1071,1072],{"class":563}," exit\n",[553,1074,1075,1078,1081,1084,1087,1090,1093,1096,1099],{"class":555,"line":712},[553,1076,1077],{"class":559},"  --array-all",[553,1079,1080],{"class":563},"           Display",[553,1082,1083],{"class":563}," all",[553,1085,1086],{"class":563}," array",[553,1088,1089],{"class":563}," values,",[553,1091,1092],{"class":563}," not",[553,1094,1095],{"class":563}," just",[553,1097,1098],{"class":563}," the",[553,1100,1101],{"class":563}," last\n",[553,1103,1104,1107,1110,1113,1116,1118,1121,1124],{"class":555,"line":721},[553,1105,1106],{"class":559},"  --id",[553,1108,1109],{"class":563}," ID",[553,1111,1112],{"class":563},"               Limit",[553,1114,1115],{"class":563}," displayed",[553,1117,1028],{"class":563},[553,1119,1120],{"class":563}," by",[553,1122,1123],{"class":563}," device",[553,1125,1126],{"class":563}," ID\n",[553,1128,1129,1132,1135,1138,1141,1144,1147],{"class":555,"line":730},[553,1130,1131],{"class":559},"  --min-rssi",[553,1133,1134],{"class":563}," MIN_RSSI",[553,1136,1137],{"class":563},"   Minimum",[553,1139,1140],{"class":563}," RSSI",[553,1142,1143],{"class":563}," to",[553,1145,1146],{"class":563}," display",[553,1148,1149],{"class":563}," TDF\n",[553,1151,1152,1155],{"class":555,"line":739},[553,1153,1154],{"class":559},"  --server-port",[553,1156,1157],{"class":563}," SERVER_SOCK\n",[553,1159,1160,1163,1166,1168,1171,1174,1177,1180,1183,1186],{"class":555,"line":748},[553,1161,1162],{"class":559},"                        Alternate",[553,1164,1165],{"class":563}," port",[553,1167,1143],{"class":563},[553,1169,1170],{"class":563}," use",[553,1172,1173],{"class":563}," for",[553,1175,1176],{"class":563}," Gateway",[553,1178,1179],{"class":563}," connections",[553,1181,1182],{"class":642}," (default ",[553,1184,1185],{"class":691},"8751",[553,1187,1188],{"class":642},")\n",[529,1190,517],{"id":1191},"tdf-csv",[494,1193,1194],{},"The TDF CSV tool records all received TDF packets to CSV files.",[543,1196,1201],{"className":1197,"code":1199,"language":1200},[1198],"language-text","infuse tdf_csv\n","text",[550,1202,1199],{"__ignoreMap":548},[494,1204,1205,1206,1209,1210,1213,1214,1217],{},"Each unique Infuse ID and TDF pair results in a dedicated file,\ne.g a ",[550,1207,1208],{},"BATTERY_STATE"," TDF received from ",[550,1211,1212],{},"0x123456789ABCDEF"," is saved to ",[550,1215,1216],{},"123456789ABCDEF_BATTERY_STATE.csv",".\nIf a file already exists, new data is appended to it.",[494,1219,1220,1221,1028],{},"Example CSV content for ",[550,1222,1208],{},[543,1224,1228],{"className":1225,"code":1226,"language":1227,"meta":548,"style":548},"language-csv shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","time,voltage_mv,current_ua,soc\n2025-03-10T00:00:35.671640,3737,0,66\n2025-03-10T00:00:37.428005,3737,0,66\n2025-03-10T00:00:38.531742,3737,0,66\n2025-03-10T00:00:40.439066,3737,0,66\n","csv",[550,1229,1230,1235,1240,1245,1250],{"__ignoreMap":548},[553,1231,1232],{"class":555,"line":556},[553,1233,1234],{},"time,voltage_mv,current_ua,soc\n",[553,1236,1237],{"class":555,"line":624},[553,1238,1239],{},"2025-03-10T00:00:35.671640,3737,0,66\n",[553,1241,1242],{"class":555,"line":633},[553,1243,1244],{},"2025-03-10T00:00:37.428005,3737,0,66\n",[553,1246,1247],{"class":555,"line":646},[553,1248,1249],{},"2025-03-10T00:00:38.531742,3737,0,66\n",[553,1251,1252],{"class":555,"line":658},[553,1253,1254],{},"2025-03-10T00:00:40.439066,3737,0,66\n",[1256,1257,1258],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":548,"searchDepth":633,"depth":624,"links":1260},[1261,1262,1263],{"id":531,"depth":624,"text":532},{"id":587,"depth":624,"text":514},{"id":1191,"depth":624,"text":517},"View and log live sensor data.","md",null,{},{"title":176,"description":1264},"nxnZdAFfSSkcqJVaUl4GJtlCQ4Cce5Ez-rKDcFv3c2I",[1271,1273],{"title":172,"path":173,"stem":174,"description":1272,"children":-1},"Provision device hardware into Infuse-IoT Cloud.",{"title":180,"path":181,"stem":182,"description":1274,"children":-1},"Send and Receive commands to nearby devices.",1791526870520]