### Test WKD Setup with GnuPG Source: https://context7_llms Uses the GnuPG command-line tool to test the Web Key Directory setup by attempting to locate and import a public key. This command verifies server accessibility and correct key serving. ```bash gpg --auto-key-locate clear,nodefault,wkd --locate-keys john@example.com ``` -------------------------------- ### GnuPG WKD Test Output Example Source: https://miarecki.eu/posts/web-key-directory-setup/ An example output from the GnuPG command when successfully locating and importing a key via WKD. It shows the key details, including its type, expiration, and associated email address. ```text gpg: key 19733425922AA05E: public key "john@example.com" imported gpg: Total number processed: 1 gpg: imported: 1 pub ed25519 2024-03-17 [SC] [expires: 2026-03-17] 82BB5FCA5F46ED3F04A29A6619733425922AA05E uid john@example.com ``` -------------------------------- ### Test GPG WKD Setup Locally Source: https://context7_llms Tests the GPG Web Key Directory (WKD) setup by attempting to fetch a key from the server using the email address. This command verifies if GPG can locate and import the key via WKD. ```bash gpg --auto-key-locate clear,nodefault,wkd --locate-keys john@example.com ``` -------------------------------- ### PlatformIO Flashing Guide Source: https://context7_llms Step-by-step instructions for flashing the SML-Reader firmware onto the W5500-EVB-Pico microcontroller using PlatformIO within Visual Studio Code. Includes cloning the repository and the build/upload process. ```Shell 1. Install PlatformIO in VSCode 2. Clone the SML-Reader project: git clone https://github.com/JonatanMGit/SML-Reader 3. Open the project in VSCode. 4. Use PlatformIO to build and upload the project to the W5500-EVB-Pico. Alternative flashing: Manually copy UF2 files to the device while holding the Bootsel button. ``` -------------------------------- ### Setup Configuration and Compilation Source: https://github.com/JonatanMGit/SML-Reader Instructions for setting up the SML-Reader project. This involves modifying the configuration file, checking network settings and OBIS codes in the main source file, compiling the code, and uploading it to the W5500-EVB-Pico board. ```c++ 1. Open the `config.h` file and change values to your needs. 2. In main.cpp check your Ethernet Network and your OBIS Codes. 3. Compile and upload the code to your W5500-EVB-Pico. 4. Get data! (You can also use OTA now) ``` -------------------------------- ### Arduino Serial Example Source: https://github.com/olliiiver/sml_parser An example demonstrating how to read data from an Arduino pin and output debug information to the serial port using the SML parser library. ```c #include #include "sml.h" // Assuming sml.h and necessary parser structures are available sml_parser_t* parser; void setup() { Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB } parser = sml_parser_init(); if (!parser) { Serial.println("Failed to initialize SML parser"); return; } // Register a handler to process parsed SML messages sml_parser_set_handler(parser, my_sml_handler); // Configure pin for input (e.g., receiving data) pinMode(8, INPUT); Serial.println("SML Parser ready. Reading from Pin 8..."); } void loop() { // Read data from a digital pin (e.g., a serial data line) // This is a simplified example; actual data reading might involve // specific communication protocols or hardware interfaces. int pinState = digitalRead(8); // Assuming pinState represents a byte of SML data, or you're reading // from a buffer populated by hardware. // For demonstration, let's simulate receiving a byte. // In a real scenario, you'd read from a buffer or stream. uint8_t received_byte = (uint8_t)pinState; // Placeholder // Write the received byte to the parser // In a real application, you'd likely buffer multiple bytes before writing. int result = sml_parser_write(parser, &received_byte, 1); if (result == -1) { Serial.println("SML parsing error detected. Parser reset."); // The parser is already reset internally by sml_parser_write on error } delay(10); // Small delay between reads } // Callback function to handle parsed SML values void my_sml_handler(sml_parser_t* parser, const sml_value_t* value) { Serial.print("Parsed SML Value: Type="); // Print type (simplified) Serial.print(value->type); Serial.print(", Value="); // Print value based on type (simplified) switch (value->type) { case SML_TYPE_INTEGER: Serial.println(value->value.integer); break; case SML_TYPE_STRING: Serial.println(value->value.string); break; case SML_TYPE_BYTES: Serial.print("0x"); for (size_t i = 0; i < value->bytes_len; ++i) { Serial.print(value->value.bytes[i], HEX); } Serial.println(); break; default: Serial.println("[Unsupported Type]"); break; } } ``` -------------------------------- ### Nginx Configuration for WKD Source: https://miarecki.eu/posts/web-key-directory-setup/ Example Nginx configuration to serve OpenPGP public keys from the `.well-known/openpgpkey` directory. It sets the correct content type to `application/octet-stream` and allows cross-origin access with `Access-Control-Allow-Origin: *`. ```nginx location ^~ /.well-known/openpgpkey { default_type application/octet-stream; add_header Access-Control-Allow-Origin * always; } ``` -------------------------------- ### GnuPG Local WKD Test Source: https://miarecki.eu/posts/web-key-directory-setup/ Tests the Web Key Directory setup by attempting to fetch a public key for a given email address using GnuPG. This command verifies if the WKD server is correctly configured and accessible. ```bash gpg --auto-key-locate clear,nodefault,wkd --locate-keys john@example.com ``` -------------------------------- ### Configure GnuPG Keyserver Source: https://keys.openpgp.org/about/usage Adds keys.openpgp.org as the default keyserver in GnuPG's configuration. This ensures GnuPG uses this server for key lookups and operations. ```shell keyserver hkps://keys.openpgp.org ``` -------------------------------- ### Home Assistant MQTT Light Configuration with Abbreviations Source: https://www.home-assistant.io/integrations/mqtt Demonstrates configuring an MQTT light with abbreviated variable names and a JSON schema for state payloads. This example includes brightness control and uses a base topic for topic definitions. ```APIDOC MQTT Light Configuration with Abbreviations: Configuration Topic: homeassistant/light/kitchen/config Command Topic: homeassistant/light/kitchen/set State Topic: homeassistant/light/kitchen/state Example State Payload: {"state": "ON", "brightness": 255} Configuration Payload: { "~": "homeassistant/light/kitchen", "name": "Kitchen", "uniq_id": "kitchen_light", "cmd_t": "~/set", "stat_t": "~/state", "schema": "json", "brightness": true } ``` ```JSON { "~": "homeassistant/light/kitchen", "name": "Kitchen", "uniq_id": "kitchen_light", "cmd_t": "~/set", "stat_t": "~/state", "schema": "json", "brightness": true } ``` -------------------------------- ### WKD URL Format Example Source: https://metacode.biz/openpgp/web-key-directory Illustrates the structure of a Web Key Directory URL used to fetch OpenPGP keys based on an email address. This format is crucial for key discovery services. ```APIDOC WKD URL Format: https:///.well-known/openpgpkey/hu/ Example: For Joe.Doe@Example.ORG, the key is fetched from: https://example.org/.well-known/openpgpkey/hu/iy9q119eutrkn8s1mk4r39qejnbu3n5q ``` -------------------------------- ### Set up Web Key Directory (WKD) via CNAME Source: https://keys.openpgp.org/about/usage Demonstrates the required CNAME DNS record to delegate a domain's OpenPGP keys subdomain to the managed WKD service (wkd.keys.openpgp.org). This enables key discovery via email address. ```dns $ drill openpgpkey.example.org ... openpgpkey.example.org. 300 IN CNAME wkd.keys.openpgp.org. ``` -------------------------------- ### Sample Server Response with Public Key Source: https://datatracker.ietf.org/doc/draft-koch-openpgp-webkey-service/ Example of a server's response after decrypting a key submission request, containing the OpenPGP public key block to be published. This is the content served by the Web Key Directory. ```pgp Content-Type: application/pgp-keys -----BEGIN PGP PUBLIC KEY BLOCK----- mDMEV2o9XRYJKwYBBAHaRw8BAQdAZ8zkuQDL9x7rcvvoo6s3iEF1j88Dknd9nZhL nTEoBRm0G3BhdHJpY2UubHVtdW1iYUBleGFtcGxlLm5ldIh5BBMWCAAhBQJXaj1d ``` -------------------------------- ### New Device-Based Discovery Configuration Source: https://www.home-assistant.io/integrations/mqtt Example of the consolidated device-based discovery configuration payload. It groups multiple components (like automation and sensor) under a single device. ```json { "device": { "identifiers": [ "0AFFD2" ] }, "o": { "name": "foobar" }, "cmps": { "bla1": { "p": "device_automation", "automation_type": "trigger", "payload": "short_press", "topic": "foobar/triggers/button1", "type": "button_short_press", "subtype": "button_1" }, "bla2": { "p": "sensor", "state_topic": "foobar/sensor/sensor1", "unique_id": "bla_sensor001" } } } ``` -------------------------------- ### Original Single Component Discovery (Sensor) Source: https://www.home-assistant.io/integrations/mqtt Example of a single component discovery configuration for a sensor. It includes device identifiers, state topic, and a unique ID. ```json { "device": { "identifiers": ["0AFFD2"], "name": "Test device" }, "o": { "name": "foobar" }, "state_topic": "foobar/sensor/sensor1", "unique_id": "bla_sensor001" } ``` -------------------------------- ### Original Single Component Discovery (Automation) Source: https://www.home-assistant.io/integrations/mqtt Example of a single component discovery configuration for a device automation. It includes device identifiers, automation type, payload, and topic. ```json { "device": { "identifiers": ["0AFFD2"], "name": "Test device" }, "o": { "name": "foobar" }, "automation_type": "trigger", "payload": "short_press", "topic": "foobar/triggers/button1", "type": "button_short_press", "subtype": "button_1" } ``` -------------------------------- ### Example MQTT Discovery Payload Source: https://www.home-assistant.io/integrations/mqtt A sample JSON payload used for discovering and configuring a single MQTT component in Home Assistant. It includes device information, component-specific settings, and state topic details. ```json { "dev": { "ids": "ea334450945afc", "name": "Kitchen", "mf": "Bla electronics", "mdl": "xya", "sw": "1.0", "sn": "ea334450945afc", "hw": "1.0rev2" }, "o": { "name":"bla2mqtt", "sw": "2.1", "url": "https://bla2mqtt.example.com/support" }, "device_class":"temperature", "unit_of_measurement":"°C", "value_template":"{{ value_json.temperature}}", "unique_id":"temp01ae_t", "state_topic":"sensorBedroom/state", "qos": 2 } ``` -------------------------------- ### Customer Accounts RPC and Model Setup Source: https://www.ariss.org/upcoming-sstv-events.html Defines the Remote Procedure Call (RPC) actions and Backbone.js model/collection structures for customer account management. This includes methods for login, logout, session details, order retrieval, registration, and password management. ```javascript var STATIC_BASE = '//cdn1.editmysite.com/'; var ASSETS_BASE = '//cdn2.editmysite.com/'; var STYLE_PREFIX = 'wsite'; function initCustomerAccountsModels() { (function(){ _W.setup_rpc({ "url": "\/ajax\/api\/JsonRPC\/CustomerAccounts\/", "actions": { "CustomerAccounts": [ {"name": "login", "len": 2, "multiple": false, "standalone": false}, {"name": "logout", "len": 0, "multiple": false, "standalone": false}, {"name": "getSessionDetails", "len": 0, "multiple": false, "standalone": false}, {"name": "getAccountDetails", "len": 0, "multiple": false, "standalone": false}, {"name": "getOrders", "len": 0, "multiple": false, "standalone": false}, {"name": "register", "len": 4, "multiple": false, "standalone": false}, {"name": "emailExists", "len": 1, "multiple": false, "standalone": false}, {"name": "passwordReset", "len": 1, "multiple": false, "standalone": false}, {"name": "passwordUpdate", "len": 3, "multiple": false, "standalone": false}, {"name": "validateSession", "len": 1, "multiple": false, "standalone": false} ] }, "namespace": "_W.CustomerAccounts.RPC" }); _W.setup_model_rpc({ "rpc_namespace": "_W.CustomerAccounts.RPC", "model_namespace": "_W.CustomerAccounts.BackboneModelData", "collection_namespace": "_W.CustomerAccounts.BackboneCollectionData", "bootstrap_namespace": "_W.CustomerAccounts.BackboneBootstrap", "models": { "CustomerAccounts": { "_class": "CustomerAccounts.Model.CustomerAccounts", "defaults": null, "validation": null, "types": null, "idAttribute": null, "keydefs": null } }, "collections": { "CustomerAccounts": { "_class": "CustomerAccounts.Collection.CustomerAccounts" } }, "bootstrap": [] }); })(); } if(document.createEvent && document.addEventListener) { var initEvt = document.createEvent('Event'); initEvt.initEvent('customerAccountsModelsInitialized', true, false); document.dispatchEvent(initEvt); } else if(document.documentElement.initCustomerAccountsModels === 0){ document.documentElement.initCustomerAccountsModels++; } _W = _W || {}; _W.securePrefix='www.ariss.org'; _W = _W || {}; _W.customerLocale = "en_US"; _W.storeName = "ARISS-USA"; _W.isCheckoutReskin = false; _W.storeCountry = "US"; _W.storeCurrency = "USD"; _W.storeEuPrivacyPolicyUrl = ""; com_currentSite = "308825221614152135"; com_userID = "111680627"; _W.configDomain = "www.weebly.com"; _W.relinquish && _W.relinquish(); _W.themePlugins = []; _W.recaptchaUrl = "https://www.google.com/recaptcha/api.js"; ``` -------------------------------- ### Get WKD Hash using GPG Source: https://miarecki.eu/posts/web-key-directory-setup/ Demonstrates how to use the `gpg` command-line tool to retrieve the WKD hash for an email address or list hashes for all stored keys. This hash is crucial for locating public keys via the Web Key Directory (WKD) standard. ```bash # A specific key: gpg --with-wkd-hash --fingerprint john@example.com # All stored keys: gpg --list-keys --with-wkd-hash ``` -------------------------------- ### Home Assistant MQTT Switch Configuration Source: https://www.home-assistant.io/integrations/mqtt Demonstrates the basic MQTT configuration for a Home Assistant switch, including essential topics and a standard JSON payload for device discovery. This setup allows Home Assistant to control and monitor a switch via MQTT. ```APIDOC MQTT Switch Configuration: Configuration Topic: homeassistant/switch/irrigation/config State Topic: homeassistant/switch/irrigation/state Command Topic: homeassistant/switch/irrigation/set Payload: { "name":"Irrigation", "command_topic":"homeassistant/switch/irrigation/set", "state_topic":"homeassistant/switch/irrigation/state", "unique_id":"irr01ad", "device":{ "identifiers":[ "garden01ad" ], "name":"Garden" } } Retain Flag: Use the -r switch with mosquitto_pub to retain the configuration topic. ``` ```JSON { "name":"Irrigation", "command_topic":"homeassistant/switch/irrigation/set", "state_topic":"homeassistant/switch/irrigation/state", "unique_id":"irr01ad", "device":{ "identifiers":[ "garden01ad" ], "name":"Garden" } } ``` ```bash mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \ -m '{"name": "Irrigation", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state", "unique_id": "irr01ad", "device": {"identifiers": ["garden01ad"], "name": "Garden" }}' ``` -------------------------------- ### GnuPG Retrieve Key by Email Source: https://keys.openpgp.org/about/usage Locates and retrieves a user's OpenPGP key from the configured keyserver using their email address. Requires GnuPG to be installed. ```shell gpg --auto-key-locate keyserver --locate-keys user@example.net ``` -------------------------------- ### Configure Tor for Anonymous Keyserver Access Source: https://keys.openpgp.org/about/usage Specifies the onion service address for accessing keys.openpgp.org anonymously via the Tor network. This requires Tor to be installed and configured. ```configuration hkp://zkaan2xfbuxia2wpf7ofnkbz6r5zdbbvxbunvp5g2iebopbfc4iqmbad.onion ``` -------------------------------- ### MQTT Sensor State Payload Example Source: https://www.home-assistant.io/integrations/mqtt An example of a JSON payload that can be sent to a shared MQTT state topic for a device reporting multiple sensor values, such as temperature and humidity. ```json { "temperature": 23.20, "humidity": 43.70 } ``` -------------------------------- ### PlatformIO Flashing Steps Source: https://context7_llms Outlines the process for compiling and uploading the SML-Reader firmware using the PlatformIO IDE within VSCode, including an alternative manual flashing method. ```APIDOC Flashing SML-Reader with PlatformIO: 1. Install PlatformIO extension in VSCode. 2. Clone the SML-Reader project repository. 3. Open the cloned project in VSCode. 4. Use PlatformIO's build and upload functionality. Alternative Manual Flashing: If flashing via PlatformIO fails, manually copy the UF2 files to the device while holding the Bootsel button. ``` -------------------------------- ### Flashing SML-Reader with PlatformIO in VSCode Source: https://miarecki.eu/posts/ha-sml-electricity-meter/ Steps to build and upload the SML-Reader project using PlatformIO within VSCode. This process compiles the firmware and deploys it to the W5500-EVB-Pico board. A fallback method using UF2 files is also mentioned. ```Shell 1. Install PlatformIO in VSCode 2. Clone the SML-Reader project 3. Open the project in VSCode. PlatformIO should offer a build/upload option. 4. Compile and upload the project. If flashing fails, manually copy UF2 files while holding Bootsel. ``` -------------------------------- ### SML-Reader Configuration Files Source: https://context7_llms Details the configuration files for the SML-Reader project. `config.h` is used for MQTT server connection details, while `main.cpp` can be used for static IP addresses and custom OBIS codes. ```C++ // In config.h: // Enter MQTT server login data here. // Example: // #define MQTT_HOST "your_mqtt_server.com" // #define MQTT_PORT 1883 // #define MQTT_USER "your_username" // #define MQTT_PASSWORD "your_password" // In main.cpp: // Further settings like static IP address or other OBIS codes can be made here. // Example for static IP: // IPAddress staticIP(192, 168, 1, 100); // IPAddress gateway(192, 168, 1, 1); // IPAddress subnet(255, 255, 255, 0); // Example for adding OBIS codes: // OBIS_HANDLER_LIST.push_back({"1-0:1.8.0*255", "Total Active Energy Import"}); ``` -------------------------------- ### GnuPG Export Key to File Source: https://keys.openpgp.org/about/usage Exports a public GnuPG key to a file, which can then be uploaded manually via the web interface or other methods. This is an alternative to direct upload. ```shell gpg --export your_address@example.net > my_key.pub ``` -------------------------------- ### Manual MQTT Item Configuration (YAML) Source: https://www.home-assistant.io/integrations/mqtt Demonstrates the YAML structure for manually configuring MQTT items within Home Assistant's configuration.yaml file. This method expects items to be listed under their respective domains, with each item having a '{domain}' key. ```YAML mqtt: - {domain}: name: "" ... - {domain}: name: "" ... ``` -------------------------------- ### Export Public Key for WKD Source: https://miarecki.eu/posts/web-key-directory-setup/ Shows how to export a public OpenPGP key in an unarmored binary format, redirecting the output to a file named after the WKD hash. This file is then placed in the WKD directory. Note: On Windows, use Git Bash or WSL for correct binary redirection. ```bash gpg --no-armor --export john@example.com > wwq7w9d96wfsd4zkytndq84kpkjod3eb ``` -------------------------------- ### Nginx Configuration for OpenPGP Key Serving Source: https://context7_llms Configures Nginx to serve OpenPGP keys with the correct content type and CORS headers. This setup ensures keys are served as 'application/octet-stream' and are accessible from any origin. ```nginx location ^~ /.well-known/openpgpkey { default_type application/octet-stream; add_header Access-Control-Allow-Origin * always; } ``` -------------------------------- ### Initialize DocSearch Component Source: https://www.home-assistant.io/integrations/mqtt Configures the DocSearch library for site search functionality. It specifies the target container, application ID, index name, and API key for integrating Algolia's search service. ```javascript docsearch({ container: '#docsearch', appId: 'FBHBYS3J0U', indexName: 'home-assistant', apiKey: "ba6f7e6d97b3d3d2f778978c742a47c6", }); ``` -------------------------------- ### Configure MQTT Connection in config.h Source: https://miarecki.eu/posts/ha-sml-electricity-meter/ Edit the `config.h` file to specify your MQTT server connection details, including login credentials. This file is saved during the flashing process. Further settings like static IP can be made in main.cpp. ```C++ // Edit the config.h file in the SML-Reader project to enter the connection information for your MQTT server. // Here you enter the MQTT login data. ``` -------------------------------- ### GnuPG Refresh Keys Source: https://keys.openpgp.org/about/usage Refreshes all keys known to GnuPG, including updating revocation certificates and subkeys. This command ensures local keyrings are up-to-date with remote servers. ```shell gpg --refresh-keys ``` -------------------------------- ### GnuPG Upload Key via Curl Source: https://keys.openpgp.org/about/usage Uploads a public GnuPG key to keys.openpgp.org using curl. This method provides a direct link to a verification page for the uploaded key. ```shell gpg --export your_address@example.net | curl -T - https://keys.openpgp.org ``` -------------------------------- ### YAML Configuration for MQTT Items Source: https://www.home-assistant.io/integrations/mqtt Illustrates how MQTT entities can be manually configured using YAML, either per item or bundled by domain. ```APIDOC Manual MQTT Configuration: description: Configure MQTT devices and entities directly in Home Assistant's configuration.yaml. grouping_strategy: - keyed_and_bundled_by_domain: Group configurations under their respective domain (e.g., `mqtt: sensor: - name: "My MQTT Sensor" state_topic: "my/sensor/state" ...`). - listed_per_item: Define each MQTT entity as a separate entry within the `mqtt:` section. example_sensor_config: mqtt: sensor: - name: "Temperature Sensor" state_topic: "home/office/temperature" unit_of_measurement: "°C" device_class: "temperature" value_template: "{{ value | float }}" availability_topic: "home/office/status" payload_available: "online" payload_not_available: "offline" qos: 1 retain: true ``` -------------------------------- ### W5500-EVB-Pico Overview Source: https://docs.wiznet.io/Product/iEthernet/W5500/w5500-evb-pico Provides a high-level overview of the W5500-EVB-Pico board, emphasizing its core components and key features like Ethernet connectivity and certifications. ```text W5500-EVB-Pico ============== Overview ------------------------------------------------ W5500-EVB-Pico is a microcontroller evaluation board based on the Raspberry Pi RP2040 and fully hardwired TCP/IP controller W5500 – and basically works the same as Raspberry Pi Pico board but with additional Ethernet via W5500. * Raspberry Pi Pico Clone * Ethernet (W5500 Hardwired TCP/IP CHIP) * [AWS IoT Core Qualified](https://devices.amazonaws.com/detail/a3G8a00000311tuEAA/W5500-EVB-Pico) * [Microsoft Azure Device Certified](https://devicecatalog.azure.com/devices/b278ce42-dde1-46b7-919e-4ae3a5266a3c) ![W5500-EVB-RP2040](/assets/images/w5500_evb_pico_side-da676c5d9c41adedc0469b9f1810b81b.png) ![Powered By Raspberry Pi logo](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAlgCWAAD/4QCCRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAABJADAAIAAAAUAAAAUJAEAAIAAAAUAAAAZJKRAAIAAAADMDAAAJKSAAIAAAADMDAAAAAAAAAyMDIyOjEwOjE5IDEyOjQxOjU1ADIwMjI6MTA6MTkgMTI6NDE6NTUAAAD/4QGcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDw6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjB4bXBDcmVhdGVEYXRlPjIwMjItMTAtMTlUMTI6NDE6NTU8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCjw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAA+ANADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6nkdY42eRlVFG5mY4AA7muHn+KXh1J5I7c314qHaZba2Z0J9jxmpvjJPJb/DjV2hYozCOMkf3WkUEfiCR+NeW/ETxXq/hvXU0PQLo6fp1lbxLHHCijcSgYknHJ5pNntZZlscXG71bv1stLX6Puj0n/haeh/8APpq//gGf8aP+Fp6H/wA+mr/+AZ/xryrQdZ+I2vRNNpl7eyW6Ehp3KRxrjr8zYFWNWvfibpccclzdXrxSOIle3ZJgXJxt+TODnj60rnovJsOp8jcb9ufX/wBJPTf+Fp6H/wA+mr/+AZ/xo/4Wnof/AD6av/4Bn/GvPhF8VfLz9rnEhGRCbiESHjP3c56Z49q5fUPG3jbTruS1v9Uvre4jOHjkUKw/DFFx08loVXam4v0n/wDan0H4Y8Z6N4kmkt9PndbuMbnt50McgHrg9R9K6OvCbXW573SfB3irVGVbq11M2d1eqoUmE/38e2R+frXe+O/G1tYeH2bw/qOn3OpTyJBCEnSTYWP3yAT0/ninc8nE5ZKNWMKS3bXezTtvbbrsdzRXkEVx4x0Hx0dJs75vEMz6eLl47pxEikvgleeMYx+NehaDda3daZdN4h0+3sZwSESGbzAy46n05ouc2IwTopSU007dddfJ6/gbAuYCcCeL/vsVLXkfwr8FeHdZ8C2F5qemRT3UhlDyFmBOJGA6H0ArQ8B6nBoVx4wtHvXl8P6PIjQSu+/ywVJaMHvggAD1+tFzatgIRdSFKTbg7PS19baavqemUVwDeO9Ui09dXufCt1FoLAP9pFyjSrGejmLGcfj71uyeKIV8Q6Np6ReZa6tbvPbXYfhio3bduP7pBznv0p3OaWCrR3XfZp7avZ7pdNzoqK5iy8YWt345vfDSxES20PmCffw7YUlAMdQGHfsaS28Y2rL4juLqIwafo03kNcb93msB8wC44IOB1Oc0XJeErL7PRP5Pb7zqKK4JvHmoWlvb6lq/hm6stCmZQLs3Cu8ascKzxgZUHI78Vb8SeM7jTPE0Wh6dos2p3k1oLmLypggOWIwxIwowpO7PoMUrmn1CvzcqXfqrab63tp1OyorkdT8W3VrLp+nW2jSXXiG6gFxJYpOoW3XuXk6YzkDjnH0qfw54q/tC8v8AT9WsX0rU7JBLLBJKJFMZ/jVxwR6+lO5DwlVQ57aeq22vbe3nsdM7rGjO5CqoySTwBUNjeW1/ax3NjPFcW8mSksTBlbBxwR7iuCk8balqulXt7pvhm6n0LZIi3n2hVkdQCC6xHkj8f8K0vg7/wAk30b/AHZP/Rr0rmtXBTo0XUqbppWun0e9tnpszqWv7RdQWxa5hF60fmiAuN5TON2OuM96s15h4pv7nT/jDYSWOny6hdPpBjjgjYJkmVzlmPCjg810GjeLru61S70jVdGfTtZjgNxDbmcSJcKP7rgevt6+houFTAzUI1Iapq71V/u3t5nX0Vy2k+MrW/wDA83iN4WhSGORpbcvllZM/JnHU4HbuK2fD2oSatodlqE1sbV7mIS+SX3FQeRzgdsdqZz1MPUppuatZ2+Zy3xs/5Jtqn+9D/wCjUrxX4yf8lAvf+uUH/opK9q+Nn/JNtU/3of8A0aleK/GT/koF9/1yg/8ARSVMj6nhzaP/ANv/APuMsywLI8cSSyMqIu5mY4AA7k15/448Z6x4f17S9L0fS5723vY5J55YyVj2KQu0j+82eR6V6BXk/xM8P61q/j7w/q+m6XNqFjZ20sE0kKlo1k3KzE+g4H40mZ43F061OVSK0V10V10PZKK8J8P+N/F+v+JtP0238P3FjFfQvN500Z3xIuN20j+8w4P0r2C4uIrW0mupm2QxxtK59FUEk/kK5sRgcNiI80p2S000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ``` -------------------------------- ### Initiate Discovery Migration Payload Source: https://www.home-assistant.io/integrations/mqtt This JSON payload is published to existing single component discovery topics to signal the start of the migration process. It unloads the discovered item while retaining its settings. ```json { "migrate_discovery": true } ```