[{"data":1,"prerenderedAt":1919},["ShallowReactive",2],{"page-\u002Fpages\u002Fkm271-wifi-howto":3},{"id":4,"title":5,"body":6,"description":213,"extension":1911,"meta":1912,"navigation":280,"path":1915,"seo":1916,"stem":1917,"__hash__":1918},"pages\u002Fpages\u002Fkm271-wifi-howto.md","KM271-WiFi - HowTo",{"type":7,"value":8,"toc":1895},"minimark",[9,13,26,43,52,59,64,67,82,87,97,100,104,115,125,135,145,154,158,161,166,169,172,175,184,187,190,194,202,206,209,215,219,1689,1693,1700,1705,1708,1711,1844,1848,1852,1861,1866,1869,1873,1876,1881,1884,1888,1891],[10,11,12],"p",{},"Attention!!! 0.0.6 changed some of the pins and is not 100% compatible anymore. Please keep in mind, when using the ESPhome YAML or when implementing your own firmware.",[10,14,15],{},[16,17,21],"a",{"href":18,"rel":19},"https:\u002F\u002Fgithub.com\u002Fthe78mole\u002Fkm271-wifi",[20],"nofollow",[22,23],"img",{"alt":24,"src":25},"Dieses Bild hat ein leeres Alt-Attribut. Der Dateiname ist image-47.png","\u002Fimages\u002Fblog\u002F2021\u002F07\u002Fimage-47.png",[10,27,28,32,33,32,38],{},[16,29,31],{"href":18,"rel":30},[20],"Hardware"," - ",[16,34,37],{"href":35,"rel":36},"https:\u002F\u002Fgithub.com\u002Fthe78mole\u002Fesphome_components",[20],"ESPhome-FW",[16,39,42],{"href":40,"rel":41},"https:\u002F\u002Fgithub.com\u002Fdewenni\u002FESP_Buderus_KM271",[20],"Dewenni's FW",[10,44,45,46,51],{},"If you need to assemble a few parts (ECAPs and optional stuff) or flash another firmware, watch ",[16,47,50],{"href":48,"rel":49},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=h_pQlpXaQ1I",[20],"my video"," on YouTube.",[10,53,54],{},[16,55,58],{"href":56,"rel":57},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=h%5C_pQlpXaQ1I",[20],"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=h\\_pQlpXaQ1I",[60,61,63],"h2",{"id":62},"introduction","Introduction",[10,65,66],{},"At first, do not get confused, KM217 and KM271 ist the same, I just had a number swap in and it is simply impossible to change all the historic stuff and naming :-(",[10,68,69,70,75,76,81],{},"If you ordered the module described in ",[16,71,74],{"href":72,"rel":73},"https:\u002F\u002Fthe78mole.de\u002Freverse-engineering-the-buderus-km217\u002F",[20],"Reverse Engineering the Buderus KM271 – And Making It WiFi-Flying on ESPhome and Home Assistant"," from my ",[16,77,80],{"href":78,"rel":79},"https:\u002F\u002Fwww.tindie.com\u002Fproducts\u002F24664\u002F",[20],"Tindie store"," or built it on your own, this is the place to search for, when it comes to getting it up and running. You will find the Information for both versions (0.0.5 and 0.0.6 here). Version 0.0.6 is already available and can be ordered.",[83,84,86],"h4",{"id":85},"known-compatible-heating-control-units","Known compatible Heating Control Units",[88,89,90,94],"ul",{},[91,92,93],"li",{},"Buderus Logamatic 2107 M (this is my own unit)",[91,95,96],{},"Logamatic HS2102 (not EcoMatic !!!)",[10,98,99],{},"If you have one of my boards and a different control unit that works, please tell me about, so I can add it to this list :-) If you are not 100% sure, I have still plenty of old bare 0.0.5-Boards for a very low price. Antoher option is to print one of the PCB pages with 1:1 scale, glue it on a cardboard cut it out and test if it fits in your heating controller.",[60,101,103],{"id":102},"the-hardware","The Hardware",[10,105,106,111],{},[16,107,110],{"href":108,"rel":109},"https:\u002F\u002Fthe78mole.de\u002Fwp-content\u002Fuploads\u002F2023\u002F03\u002FKM217-WiFi.pdf",[20],"KM217-WiFi-Schematics (0.0.6)",[16,112,114],{"href":108,"rel":113},[20],"Herunterladen",[10,116,117,122],{},[16,118,121],{"href":119,"rel":120},"https:\u002F\u002Fthe78mole.de\u002Fwp-content\u002Fuploads\u002F2023\u002F03\u002FKM217-WiFi-PCB-0.0.6.pdf",[20],"KM217-WiFi-PCB (0.0.6)",[16,123,114],{"href":119,"rel":124},[20],[10,126,127,132],{},[16,128,131],{"href":129,"rel":130},"https:\u002F\u002Fthe78mole.de\u002Fwp-content\u002Fuploads\u002F2022\u002F11\u002FKM217-WiFi-Schematics.pdf",[20],"KM217-WiFi-Schematics (0.0.5)",[16,133,114],{"href":129,"rel":134},[20],[10,136,137,142],{},[16,138,141],{"href":139,"rel":140},"https:\u002F\u002Fthe78mole.de\u002Fwp-content\u002Fuploads\u002F2022\u002F11\u002FKM217-WiFi-PCB.pdf",[20],"KM217-WiFi-PCB (0.0.5)",[16,143,114],{"href":139,"rel":144},[20],[10,146,147,148,153],{},"To make your life easier for aseembly and to find the parts and signals, here is the ",[16,149,152],{"href":150,"rel":151},"https:\u002F\u002Fthe78mole.de\u002Fwp-content\u002Fuploads\u002F2022\u002F11\u002Fibom.html",[20],"interactie BOM",".",[60,155,157],{"id":156},"the-software","The Software",[10,159,160],{},"There is a ton of software alternatives for the board, but I'll only describe three of them in more detail. You can select the firmware when you order the board.",[162,163,165],"h3",{"id":164},"default-no-fw-selected-blinkenlights","Default, no FW selected: Blinkenlights",[10,167,168],{},"At first, I'll just tell you, what is on the board, when you did not select any firmware during your order on Tindie. It is a simple test program, that ensures, that the ESP32 and the LEDs are working.",[10,170,171],{},"It does nothing more than rolling through the 4 LEDs on the board.",[10,173,174],{},"It will be possibly extended in future to catch hardware and assembly bugs, should they arise in future.",[10,176,177,178,183],{},"You can find it on ",[16,179,182],{"href":180,"rel":181},"https:\u002F\u002Fgitlab.com\u002Fthe78mole\u002Flogamatic_2107_wifi_comm\u002F-\u002Ftree\u002Fmain\u002FFW\u002FKM271-WIFI-Test",[20],"GitLab",". Use VSCode with PlatformIO to open, compile and flash it. This is also a very nice foundation for developing your own firmware.",[10,185,186],{},"Flashing can be done, by connecting power, ground, RX and TX. IO0 and EN is not needed and can be triggered with the buttons. Press BOOT and keep it pressed, shortly press RESET and start your flash tool. Then release BOOT and flashing will start.",[10,188,189],{},"I'll possibly improve the Blinkenlight to be able to update the board via WiFi or BLE. If you feel responsible to do this, I would be happy to take the pull request. If I get a working firmware, the minimal thing I would do is refunding the board you bought from me :-)",[162,191,193],{"id":192},"svens-great-mqtt-firmware","Sven's great MQTT-firmware",[10,195,196,197,201],{},"Sven published a firmware on ",[16,198,200],{"href":40,"rel":199},[20],"GitHub"," for my module that speaks MQTT on the network. This was probably the most complete piece of code for my module before JEns accepted the challenge on the ESPhome part. The \"only thing\" you need to do is installing VSCode and the PlatformIO addon, set the credentials for WiFi, MQTT and OTA (in include\u002FCredentials.h), compile and flash it to the board.",[162,203,205],{"id":204},"esphome","ESPhome",[10,207,208],{},"If you selected ESPhome, you will get an (older) ESPhome firmware version for this board. But as you will update the firmware after adjusting the config, you will have the latest firmware aligned with your ESPhome instance. Currently, the firmware is likely to be feature complete and runs without problems. See the section below, ho to connect to your board.",[10,210,211],{},[22,212],{"alt":213,"src":214},"","\u002Fimages\u002Fblog\u002F2022\u002F12\u002Fimage-1.png",[162,216,218],{"id":217},"diggers-full-example-yaml-drop-down-accordeon","Diggers Full Example YAML (Drop Down Accordeon)",[220,221,225],"pre",{"className":222,"code":223,"language":224,"meta":213,"style":213},"language-yaml shiki shiki-themes github-light github-dark","esphome:\n  name: buderus-km217\n  platform: ESP32\n  board: esp32dev\n\n# Enable logging\nlogger:\n\n# Enable Home Assistant API\napi:\n\nota:\n  password: \"XYZ\"\n\nwifi:\n  ssid: !secret wifi_ssid\n  password: !secret wifi_pass\n\n  # Enable fallback hotspot (captive portal) in case wifi connection fails\n  ap:\n    ssid: \"Fallback Hotspot\"\n    password: \"XXX\"\n\ncaptive_portal:\n\nuart:\n  id: uart_bus\n  tx_pin: GPIO2\n  rx_pin: GPIO4\n  baud_rate: 2400\n\nexternal_components:\n#  - source:\n#      type: local\n#      path: my_components\u002Fcomponents\n#    components: [ km271_wifi ]\n  - source: github:\u002F\u002Fthe78mole\u002Fesphome_components@main\n    components: [ km271_wifi ]\n \n\nkm271_wifi:\n  - id: budoil\n    uart_id: uart_bus\n\n# SPI starting from version 0.0.6\nspi:\n  clk_pin: GPIO18\n  mosi_pin: GPIO23\n  miso_pin: GPIO19\n  id: bus_spi1\n\n# nCS for SPI is GPIO15\n\ni2c:\n  sda: GPIO13\n  scl: GPIO16\n  scan: true\n  id: bus_i2c1\n\n# For version 0.0.6\n# For triggered actions, I2C devices can use GPIO14\n# To enable the I2C level shifter (I2C_EXT_EN), use GPIO 12\n\nstatus_led:\n  id: ledgn1\n  pin: \n    number: GPIO21\n    inverted: true\n\nnumber:\n  - platform: km271_wifi\n    warm_water_temperature:\n      name: \"Warmwassersolltemperatur Tag\"\n\nselect:\n  - platform: template\n    name: \"Warmwasser Betriebsart\"\n    id: warmwasser_betriebsart\n    entity_category: config\n    optimistic: true\n    options:\n      - Dauerhaft aus (0)\n      - Dauerhaft ein (1)\n      - Automatik (2)\n    initial_option: Automatik (2)\n    set_action: \n      - lambda:\n          auto index = id(warmwasser_betriebsart).index_of(x);\n          if (index.has_value()) {\n            uint8_t command[] = {0x0C, 0x0E, (uint8_t)index.value(), 0x65, 0x65, 0x65, 0x65, 0x65};\n            budoil->writer.enqueueTelegram(command, 8);\n          }\n\nbinary_sensor:\n  - platform: km271_wifi\n    boiler_error:\n      name: \"KM271 Kesselfehler\"\n    boiler_running:\n      name: \"KM271 Kesselbetrieb\"\n    load_pump_running:\n      name: \"KM271 Ladepumpe\"\n\nsensor:\n  - platform: km271_wifi\n    heating_circuit_1_flow_target_temperature:\n      name: \"KM271 Vorlaufsolltemperatur\"\n    heating_circuit_1_flow_temperature:\n      name: \"KM271 Vorlauftemperatur\"\n    hot_water_target_temperature:\n      name: \"KM271 Warmwassersolltemperatur\"\n    hot_water_temperature:\n      name: \"KM271 Warmwassertemperatur\"\n    boiler_target_temperature:\n      name: \"KM271 Kesselvorlaufsolltemperatur\"\n    boiler_temperature:\n      name: \"KM271 Kesselvorlauftemperatur\"\n    outdoor_temperature:\n      name: \"KM271 Außentemperatur\"\n    heating_circuit_1_room_target_temperature:\n      name: \"KM271 Raumsolltemperatur\"\n    heating_circuit_1_curve_n10:\n      name: \"KM271 Heizkurve -10 °C\"\n    heating_circuit_1_curve_0:\n      name: \"KM271 Heizkurve 0 °C\"\n    heating_circuit_1_curve_p10:\n      name: \"KM271 Heizkurve +10 °C\"\n    boiler_turn_on_temperature:\n      name: \"KM271 Brennereinschalttemperatur\"\n    boiler_turn_off_temperature:\n      name: \"KM271 Brennerausschalttemperatur\"\n\n  - platform: wifi_signal\n    name: \"KM217 WiFi Signal Sensor\"\n    update_interval: 60s\n\n  - platform: adc\n    pin: 36\n    unit_of_measurement: \"V\"\n    name: \"KM217 5V Supply\"\n    accuracy_decimals: 2\n    update_interval: 5s\n    attenuation: 6dB\n    filters:\n      - multiply: 27.7317\n      - throttle_average: 60s\n      \nswitch:\n  - platform: gpio\n    name: LED2_Green\n    pin: \n      number: 22\n      mode: OUTPUT\n      inverted: true\n  - platform: gpio\n    name: LED3_Yellow\n    pin: \n      number: 17\n#     number: 23  # For 0.0.5\n      mode: OUTPUT\n      inverted: true\n  - platform: gpio\n    name: LED4_Red\n    pin: \n      number: 25\n      mode: OUTPUT\n      inverted: true\n","yaml",[226,227,228,240,253,264,275,282,289,297,302,308,316,321,329,340,345,353,368,380,385,391,399,410,421,426,434,439,447,458,469,480,492,497,505,511,517,523,529,543,558,564,569,576,589,599,604,610,618,629,640,651,661,666,672,677,685,696,707,718,728,733,739,745,751,756,764,774,783,794,804,809,817,830,838,849,854,862,874,885,896,907,917,925,934,942,950,960,968,978,984,990,996,1002,1008,1013,1021,1032,1040,1050,1058,1068,1076,1086,1091,1099,1110,1118,1128,1136,1146,1154,1164,1172,1182,1190,1200,1208,1218,1226,1236,1244,1254,1262,1272,1280,1290,1298,1308,1316,1326,1334,1344,1349,1361,1371,1382,1387,1399,1410,1421,1431,1442,1452,1463,1471,1484,1496,1502,1510,1522,1532,1539,1550,1561,1571,1582,1592,1599,1609,1615,1624,1633,1644,1654,1661,1671,1680],"code",{"__ignoreMap":213},[229,230,233,236],"span",{"class":231,"line":232},"line",1,[229,234,204],{"class":235},"s9eBZ",[229,237,239],{"class":238},"sVt8B",":\n",[229,241,243,246,249],{"class":231,"line":242},2,[229,244,245],{"class":235},"  name",[229,247,248],{"class":238},": ",[229,250,252],{"class":251},"sZZnC","buderus-km217\n",[229,254,256,259,261],{"class":231,"line":255},3,[229,257,258],{"class":235},"  platform",[229,260,248],{"class":238},[229,262,263],{"class":251},"ESP32\n",[229,265,267,270,272],{"class":231,"line":266},4,[229,268,269],{"class":235},"  board",[229,271,248],{"class":238},[229,273,274],{"class":251},"esp32dev\n",[229,276,278],{"class":231,"line":277},5,[229,279,281],{"emptyLinePlaceholder":280},true,"\n",[229,283,285],{"class":231,"line":284},6,[229,286,288],{"class":287},"sJ8bj","# Enable logging\n",[229,290,292,295],{"class":231,"line":291},7,[229,293,294],{"class":235},"logger",[229,296,239],{"class":238},[229,298,300],{"class":231,"line":299},8,[229,301,281],{"emptyLinePlaceholder":280},[229,303,305],{"class":231,"line":304},9,[229,306,307],{"class":287},"# Enable Home Assistant API\n",[229,309,311,314],{"class":231,"line":310},10,[229,312,313],{"class":235},"api",[229,315,239],{"class":238},[229,317,319],{"class":231,"line":318},11,[229,320,281],{"emptyLinePlaceholder":280},[229,322,324,327],{"class":231,"line":323},12,[229,325,326],{"class":235},"ota",[229,328,239],{"class":238},[229,330,332,335,337],{"class":231,"line":331},13,[229,333,334],{"class":235},"  password",[229,336,248],{"class":238},[229,338,339],{"class":251},"\"XYZ\"\n",[229,341,343],{"class":231,"line":342},14,[229,344,281],{"emptyLinePlaceholder":280},[229,346,348,351],{"class":231,"line":347},15,[229,349,350],{"class":235},"wifi",[229,352,239],{"class":238},[229,354,356,359,361,365],{"class":231,"line":355},16,[229,357,358],{"class":235},"  ssid",[229,360,248],{"class":238},[229,362,364],{"class":363},"szBVR","!secret",[229,366,367],{"class":251}," wifi_ssid\n",[229,369,371,373,375,377],{"class":231,"line":370},17,[229,372,334],{"class":235},[229,374,248],{"class":238},[229,376,364],{"class":363},[229,378,379],{"class":251}," wifi_pass\n",[229,381,383],{"class":231,"line":382},18,[229,384,281],{"emptyLinePlaceholder":280},[229,386,388],{"class":231,"line":387},19,[229,389,390],{"class":287},"  # Enable fallback hotspot (captive portal) in case wifi connection fails\n",[229,392,394,397],{"class":231,"line":393},20,[229,395,396],{"class":235},"  ap",[229,398,239],{"class":238},[229,400,402,405,407],{"class":231,"line":401},21,[229,403,404],{"class":235},"    ssid",[229,406,248],{"class":238},[229,408,409],{"class":251},"\"Fallback Hotspot\"\n",[229,411,413,416,418],{"class":231,"line":412},22,[229,414,415],{"class":235},"    password",[229,417,248],{"class":238},[229,419,420],{"class":251},"\"XXX\"\n",[229,422,424],{"class":231,"line":423},23,[229,425,281],{"emptyLinePlaceholder":280},[229,427,429,432],{"class":231,"line":428},24,[229,430,431],{"class":235},"captive_portal",[229,433,239],{"class":238},[229,435,437],{"class":231,"line":436},25,[229,438,281],{"emptyLinePlaceholder":280},[229,440,442,445],{"class":231,"line":441},26,[229,443,444],{"class":235},"uart",[229,446,239],{"class":238},[229,448,450,453,455],{"class":231,"line":449},27,[229,451,452],{"class":235},"  id",[229,454,248],{"class":238},[229,456,457],{"class":251},"uart_bus\n",[229,459,461,464,466],{"class":231,"line":460},28,[229,462,463],{"class":235},"  tx_pin",[229,465,248],{"class":238},[229,467,468],{"class":251},"GPIO2\n",[229,470,472,475,477],{"class":231,"line":471},29,[229,473,474],{"class":235},"  rx_pin",[229,476,248],{"class":238},[229,478,479],{"class":251},"GPIO4\n",[229,481,483,486,488],{"class":231,"line":482},30,[229,484,485],{"class":235},"  baud_rate",[229,487,248],{"class":238},[229,489,491],{"class":490},"sj4cs","2400\n",[229,493,495],{"class":231,"line":494},31,[229,496,281],{"emptyLinePlaceholder":280},[229,498,500,503],{"class":231,"line":499},32,[229,501,502],{"class":235},"external_components",[229,504,239],{"class":238},[229,506,508],{"class":231,"line":507},33,[229,509,510],{"class":287},"#  - source:\n",[229,512,514],{"class":231,"line":513},34,[229,515,516],{"class":287},"#      type: local\n",[229,518,520],{"class":231,"line":519},35,[229,521,522],{"class":287},"#      path: my_components\u002Fcomponents\n",[229,524,526],{"class":231,"line":525},36,[229,527,528],{"class":287},"#    components: [ km271_wifi ]\n",[229,530,532,535,538,540],{"class":231,"line":531},37,[229,533,534],{"class":238},"  - ",[229,536,537],{"class":235},"source",[229,539,248],{"class":238},[229,541,542],{"class":251},"github:\u002F\u002Fthe78mole\u002Fesphome_components@main\n",[229,544,546,549,552,555],{"class":231,"line":545},38,[229,547,548],{"class":235},"    components",[229,550,551],{"class":238},": [ ",[229,553,554],{"class":251},"km271_wifi",[229,556,557],{"class":238}," ]\n",[229,559,561],{"class":231,"line":560},39,[229,562,563],{"class":238}," \n",[229,565,567],{"class":231,"line":566},40,[229,568,281],{"emptyLinePlaceholder":280},[229,570,572,574],{"class":231,"line":571},41,[229,573,554],{"class":235},[229,575,239],{"class":238},[229,577,579,581,584,586],{"class":231,"line":578},42,[229,580,534],{"class":238},[229,582,583],{"class":235},"id",[229,585,248],{"class":238},[229,587,588],{"class":251},"budoil\n",[229,590,592,595,597],{"class":231,"line":591},43,[229,593,594],{"class":235},"    uart_id",[229,596,248],{"class":238},[229,598,457],{"class":251},[229,600,602],{"class":231,"line":601},44,[229,603,281],{"emptyLinePlaceholder":280},[229,605,607],{"class":231,"line":606},45,[229,608,609],{"class":287},"# SPI starting from version 0.0.6\n",[229,611,613,616],{"class":231,"line":612},46,[229,614,615],{"class":235},"spi",[229,617,239],{"class":238},[229,619,621,624,626],{"class":231,"line":620},47,[229,622,623],{"class":235},"  clk_pin",[229,625,248],{"class":238},[229,627,628],{"class":251},"GPIO18\n",[229,630,632,635,637],{"class":231,"line":631},48,[229,633,634],{"class":235},"  mosi_pin",[229,636,248],{"class":238},[229,638,639],{"class":251},"GPIO23\n",[229,641,643,646,648],{"class":231,"line":642},49,[229,644,645],{"class":235},"  miso_pin",[229,647,248],{"class":238},[229,649,650],{"class":251},"GPIO19\n",[229,652,654,656,658],{"class":231,"line":653},50,[229,655,452],{"class":235},[229,657,248],{"class":238},[229,659,660],{"class":251},"bus_spi1\n",[229,662,664],{"class":231,"line":663},51,[229,665,281],{"emptyLinePlaceholder":280},[229,667,669],{"class":231,"line":668},52,[229,670,671],{"class":287},"# nCS for SPI is GPIO15\n",[229,673,675],{"class":231,"line":674},53,[229,676,281],{"emptyLinePlaceholder":280},[229,678,680,683],{"class":231,"line":679},54,[229,681,682],{"class":235},"i2c",[229,684,239],{"class":238},[229,686,688,691,693],{"class":231,"line":687},55,[229,689,690],{"class":235},"  sda",[229,692,248],{"class":238},[229,694,695],{"class":251},"GPIO13\n",[229,697,699,702,704],{"class":231,"line":698},56,[229,700,701],{"class":235},"  scl",[229,703,248],{"class":238},[229,705,706],{"class":251},"GPIO16\n",[229,708,710,713,715],{"class":231,"line":709},57,[229,711,712],{"class":235},"  scan",[229,714,248],{"class":238},[229,716,717],{"class":490},"true\n",[229,719,721,723,725],{"class":231,"line":720},58,[229,722,452],{"class":235},[229,724,248],{"class":238},[229,726,727],{"class":251},"bus_i2c1\n",[229,729,731],{"class":231,"line":730},59,[229,732,281],{"emptyLinePlaceholder":280},[229,734,736],{"class":231,"line":735},60,[229,737,738],{"class":287},"# For version 0.0.6\n",[229,740,742],{"class":231,"line":741},61,[229,743,744],{"class":287},"# For triggered actions, I2C devices can use GPIO14\n",[229,746,748],{"class":231,"line":747},62,[229,749,750],{"class":287},"# To enable the I2C level shifter (I2C_EXT_EN), use GPIO 12\n",[229,752,754],{"class":231,"line":753},63,[229,755,281],{"emptyLinePlaceholder":280},[229,757,759,762],{"class":231,"line":758},64,[229,760,761],{"class":235},"status_led",[229,763,239],{"class":238},[229,765,767,769,771],{"class":231,"line":766},65,[229,768,452],{"class":235},[229,770,248],{"class":238},[229,772,773],{"class":251},"ledgn1\n",[229,775,777,780],{"class":231,"line":776},66,[229,778,779],{"class":235},"  pin",[229,781,782],{"class":238},": \n",[229,784,786,789,791],{"class":231,"line":785},67,[229,787,788],{"class":235},"    number",[229,790,248],{"class":238},[229,792,793],{"class":251},"GPIO21\n",[229,795,797,800,802],{"class":231,"line":796},68,[229,798,799],{"class":235},"    inverted",[229,801,248],{"class":238},[229,803,717],{"class":490},[229,805,807],{"class":231,"line":806},69,[229,808,281],{"emptyLinePlaceholder":280},[229,810,812,815],{"class":231,"line":811},70,[229,813,814],{"class":235},"number",[229,816,239],{"class":238},[229,818,820,822,825,827],{"class":231,"line":819},71,[229,821,534],{"class":238},[229,823,824],{"class":235},"platform",[229,826,248],{"class":238},[229,828,829],{"class":251},"km271_wifi\n",[229,831,833,836],{"class":231,"line":832},72,[229,834,835],{"class":235},"    warm_water_temperature",[229,837,239],{"class":238},[229,839,841,844,846],{"class":231,"line":840},73,[229,842,843],{"class":235},"      name",[229,845,248],{"class":238},[229,847,848],{"class":251},"\"Warmwassersolltemperatur Tag\"\n",[229,850,852],{"class":231,"line":851},74,[229,853,281],{"emptyLinePlaceholder":280},[229,855,857,860],{"class":231,"line":856},75,[229,858,859],{"class":235},"select",[229,861,239],{"class":238},[229,863,865,867,869,871],{"class":231,"line":864},76,[229,866,534],{"class":238},[229,868,824],{"class":235},[229,870,248],{"class":238},[229,872,873],{"class":251},"template\n",[229,875,877,880,882],{"class":231,"line":876},77,[229,878,879],{"class":235},"    name",[229,881,248],{"class":238},[229,883,884],{"class":251},"\"Warmwasser Betriebsart\"\n",[229,886,888,891,893],{"class":231,"line":887},78,[229,889,890],{"class":235},"    id",[229,892,248],{"class":238},[229,894,895],{"class":251},"warmwasser_betriebsart\n",[229,897,899,902,904],{"class":231,"line":898},79,[229,900,901],{"class":235},"    entity_category",[229,903,248],{"class":238},[229,905,906],{"class":251},"config\n",[229,908,910,913,915],{"class":231,"line":909},80,[229,911,912],{"class":235},"    optimistic",[229,914,248],{"class":238},[229,916,717],{"class":490},[229,918,920,923],{"class":231,"line":919},81,[229,921,922],{"class":235},"    options",[229,924,239],{"class":238},[229,926,928,931],{"class":231,"line":927},82,[229,929,930],{"class":238},"      - ",[229,932,933],{"class":251},"Dauerhaft aus (0)\n",[229,935,937,939],{"class":231,"line":936},83,[229,938,930],{"class":238},[229,940,941],{"class":251},"Dauerhaft ein (1)\n",[229,943,945,947],{"class":231,"line":944},84,[229,946,930],{"class":238},[229,948,949],{"class":251},"Automatik (2)\n",[229,951,953,956,958],{"class":231,"line":952},85,[229,954,955],{"class":235},"    initial_option",[229,957,248],{"class":238},[229,959,949],{"class":251},[229,961,963,966],{"class":231,"line":962},86,[229,964,965],{"class":235},"    set_action",[229,967,782],{"class":238},[229,969,971,973,976],{"class":231,"line":970},87,[229,972,930],{"class":238},[229,974,975],{"class":235},"lambda",[229,977,239],{"class":238},[229,979,981],{"class":231,"line":980},88,[229,982,983],{"class":251},"          auto index = id(warmwasser_betriebsart).index_of(x);\n",[229,985,987],{"class":231,"line":986},89,[229,988,989],{"class":251},"          if (index.has_value()) {\n",[229,991,993],{"class":231,"line":992},90,[229,994,995],{"class":251},"            uint8_t command[] = {0x0C, 0x0E, (uint8_t)index.value(), 0x65, 0x65, 0x65, 0x65, 0x65};\n",[229,997,999],{"class":231,"line":998},91,[229,1000,1001],{"class":251},"            budoil->writer.enqueueTelegram(command, 8);\n",[229,1003,1005],{"class":231,"line":1004},92,[229,1006,1007],{"class":238},"          }\n",[229,1009,1011],{"class":231,"line":1010},93,[229,1012,281],{"emptyLinePlaceholder":280},[229,1014,1016,1019],{"class":231,"line":1015},94,[229,1017,1018],{"class":235},"binary_sensor",[229,1020,239],{"class":238},[229,1022,1024,1026,1028,1030],{"class":231,"line":1023},95,[229,1025,534],{"class":238},[229,1027,824],{"class":235},[229,1029,248],{"class":238},[229,1031,829],{"class":251},[229,1033,1035,1038],{"class":231,"line":1034},96,[229,1036,1037],{"class":235},"    boiler_error",[229,1039,239],{"class":238},[229,1041,1043,1045,1047],{"class":231,"line":1042},97,[229,1044,843],{"class":235},[229,1046,248],{"class":238},[229,1048,1049],{"class":251},"\"KM271 Kesselfehler\"\n",[229,1051,1053,1056],{"class":231,"line":1052},98,[229,1054,1055],{"class":235},"    boiler_running",[229,1057,239],{"class":238},[229,1059,1061,1063,1065],{"class":231,"line":1060},99,[229,1062,843],{"class":235},[229,1064,248],{"class":238},[229,1066,1067],{"class":251},"\"KM271 Kesselbetrieb\"\n",[229,1069,1071,1074],{"class":231,"line":1070},100,[229,1072,1073],{"class":235},"    load_pump_running",[229,1075,239],{"class":238},[229,1077,1079,1081,1083],{"class":231,"line":1078},101,[229,1080,843],{"class":235},[229,1082,248],{"class":238},[229,1084,1085],{"class":251},"\"KM271 Ladepumpe\"\n",[229,1087,1089],{"class":231,"line":1088},102,[229,1090,281],{"emptyLinePlaceholder":280},[229,1092,1094,1097],{"class":231,"line":1093},103,[229,1095,1096],{"class":235},"sensor",[229,1098,239],{"class":238},[229,1100,1102,1104,1106,1108],{"class":231,"line":1101},104,[229,1103,534],{"class":238},[229,1105,824],{"class":235},[229,1107,248],{"class":238},[229,1109,829],{"class":251},[229,1111,1113,1116],{"class":231,"line":1112},105,[229,1114,1115],{"class":235},"    heating_circuit_1_flow_target_temperature",[229,1117,239],{"class":238},[229,1119,1121,1123,1125],{"class":231,"line":1120},106,[229,1122,843],{"class":235},[229,1124,248],{"class":238},[229,1126,1127],{"class":251},"\"KM271 Vorlaufsolltemperatur\"\n",[229,1129,1131,1134],{"class":231,"line":1130},107,[229,1132,1133],{"class":235},"    heating_circuit_1_flow_temperature",[229,1135,239],{"class":238},[229,1137,1139,1141,1143],{"class":231,"line":1138},108,[229,1140,843],{"class":235},[229,1142,248],{"class":238},[229,1144,1145],{"class":251},"\"KM271 Vorlauftemperatur\"\n",[229,1147,1149,1152],{"class":231,"line":1148},109,[229,1150,1151],{"class":235},"    hot_water_target_temperature",[229,1153,239],{"class":238},[229,1155,1157,1159,1161],{"class":231,"line":1156},110,[229,1158,843],{"class":235},[229,1160,248],{"class":238},[229,1162,1163],{"class":251},"\"KM271 Warmwassersolltemperatur\"\n",[229,1165,1167,1170],{"class":231,"line":1166},111,[229,1168,1169],{"class":235},"    hot_water_temperature",[229,1171,239],{"class":238},[229,1173,1175,1177,1179],{"class":231,"line":1174},112,[229,1176,843],{"class":235},[229,1178,248],{"class":238},[229,1180,1181],{"class":251},"\"KM271 Warmwassertemperatur\"\n",[229,1183,1185,1188],{"class":231,"line":1184},113,[229,1186,1187],{"class":235},"    boiler_target_temperature",[229,1189,239],{"class":238},[229,1191,1193,1195,1197],{"class":231,"line":1192},114,[229,1194,843],{"class":235},[229,1196,248],{"class":238},[229,1198,1199],{"class":251},"\"KM271 Kesselvorlaufsolltemperatur\"\n",[229,1201,1203,1206],{"class":231,"line":1202},115,[229,1204,1205],{"class":235},"    boiler_temperature",[229,1207,239],{"class":238},[229,1209,1211,1213,1215],{"class":231,"line":1210},116,[229,1212,843],{"class":235},[229,1214,248],{"class":238},[229,1216,1217],{"class":251},"\"KM271 Kesselvorlauftemperatur\"\n",[229,1219,1221,1224],{"class":231,"line":1220},117,[229,1222,1223],{"class":235},"    outdoor_temperature",[229,1225,239],{"class":238},[229,1227,1229,1231,1233],{"class":231,"line":1228},118,[229,1230,843],{"class":235},[229,1232,248],{"class":238},[229,1234,1235],{"class":251},"\"KM271 Außentemperatur\"\n",[229,1237,1239,1242],{"class":231,"line":1238},119,[229,1240,1241],{"class":235},"    heating_circuit_1_room_target_temperature",[229,1243,239],{"class":238},[229,1245,1247,1249,1251],{"class":231,"line":1246},120,[229,1248,843],{"class":235},[229,1250,248],{"class":238},[229,1252,1253],{"class":251},"\"KM271 Raumsolltemperatur\"\n",[229,1255,1257,1260],{"class":231,"line":1256},121,[229,1258,1259],{"class":235},"    heating_circuit_1_curve_n10",[229,1261,239],{"class":238},[229,1263,1265,1267,1269],{"class":231,"line":1264},122,[229,1266,843],{"class":235},[229,1268,248],{"class":238},[229,1270,1271],{"class":251},"\"KM271 Heizkurve -10 °C\"\n",[229,1273,1275,1278],{"class":231,"line":1274},123,[229,1276,1277],{"class":235},"    heating_circuit_1_curve_0",[229,1279,239],{"class":238},[229,1281,1283,1285,1287],{"class":231,"line":1282},124,[229,1284,843],{"class":235},[229,1286,248],{"class":238},[229,1288,1289],{"class":251},"\"KM271 Heizkurve 0 °C\"\n",[229,1291,1293,1296],{"class":231,"line":1292},125,[229,1294,1295],{"class":235},"    heating_circuit_1_curve_p10",[229,1297,239],{"class":238},[229,1299,1301,1303,1305],{"class":231,"line":1300},126,[229,1302,843],{"class":235},[229,1304,248],{"class":238},[229,1306,1307],{"class":251},"\"KM271 Heizkurve +10 °C\"\n",[229,1309,1311,1314],{"class":231,"line":1310},127,[229,1312,1313],{"class":235},"    boiler_turn_on_temperature",[229,1315,239],{"class":238},[229,1317,1319,1321,1323],{"class":231,"line":1318},128,[229,1320,843],{"class":235},[229,1322,248],{"class":238},[229,1324,1325],{"class":251},"\"KM271 Brennereinschalttemperatur\"\n",[229,1327,1329,1332],{"class":231,"line":1328},129,[229,1330,1331],{"class":235},"    boiler_turn_off_temperature",[229,1333,239],{"class":238},[229,1335,1337,1339,1341],{"class":231,"line":1336},130,[229,1338,843],{"class":235},[229,1340,248],{"class":238},[229,1342,1343],{"class":251},"\"KM271 Brennerausschalttemperatur\"\n",[229,1345,1347],{"class":231,"line":1346},131,[229,1348,281],{"emptyLinePlaceholder":280},[229,1350,1352,1354,1356,1358],{"class":231,"line":1351},132,[229,1353,534],{"class":238},[229,1355,824],{"class":235},[229,1357,248],{"class":238},[229,1359,1360],{"class":251},"wifi_signal\n",[229,1362,1364,1366,1368],{"class":231,"line":1363},133,[229,1365,879],{"class":235},[229,1367,248],{"class":238},[229,1369,1370],{"class":251},"\"KM217 WiFi Signal Sensor\"\n",[229,1372,1374,1377,1379],{"class":231,"line":1373},134,[229,1375,1376],{"class":235},"    update_interval",[229,1378,248],{"class":238},[229,1380,1381],{"class":251},"60s\n",[229,1383,1385],{"class":231,"line":1384},135,[229,1386,281],{"emptyLinePlaceholder":280},[229,1388,1390,1392,1394,1396],{"class":231,"line":1389},136,[229,1391,534],{"class":238},[229,1393,824],{"class":235},[229,1395,248],{"class":238},[229,1397,1398],{"class":251},"adc\n",[229,1400,1402,1405,1407],{"class":231,"line":1401},137,[229,1403,1404],{"class":235},"    pin",[229,1406,248],{"class":238},[229,1408,1409],{"class":490},"36\n",[229,1411,1413,1416,1418],{"class":231,"line":1412},138,[229,1414,1415],{"class":235},"    unit_of_measurement",[229,1417,248],{"class":238},[229,1419,1420],{"class":251},"\"V\"\n",[229,1422,1424,1426,1428],{"class":231,"line":1423},139,[229,1425,879],{"class":235},[229,1427,248],{"class":238},[229,1429,1430],{"class":251},"\"KM217 5V Supply\"\n",[229,1432,1434,1437,1439],{"class":231,"line":1433},140,[229,1435,1436],{"class":235},"    accuracy_decimals",[229,1438,248],{"class":238},[229,1440,1441],{"class":490},"2\n",[229,1443,1445,1447,1449],{"class":231,"line":1444},141,[229,1446,1376],{"class":235},[229,1448,248],{"class":238},[229,1450,1451],{"class":251},"5s\n",[229,1453,1455,1458,1460],{"class":231,"line":1454},142,[229,1456,1457],{"class":235},"    attenuation",[229,1459,248],{"class":238},[229,1461,1462],{"class":251},"6dB\n",[229,1464,1466,1469],{"class":231,"line":1465},143,[229,1467,1468],{"class":235},"    filters",[229,1470,239],{"class":238},[229,1472,1474,1476,1479,1481],{"class":231,"line":1473},144,[229,1475,930],{"class":238},[229,1477,1478],{"class":235},"multiply",[229,1480,248],{"class":238},[229,1482,1483],{"class":490},"27.7317\n",[229,1485,1487,1489,1492,1494],{"class":231,"line":1486},145,[229,1488,930],{"class":238},[229,1490,1491],{"class":235},"throttle_average",[229,1493,248],{"class":238},[229,1495,1381],{"class":251},[229,1497,1499],{"class":231,"line":1498},146,[229,1500,1501],{"class":238},"      \n",[229,1503,1505,1508],{"class":231,"line":1504},147,[229,1506,1507],{"class":235},"switch",[229,1509,239],{"class":238},[229,1511,1513,1515,1517,1519],{"class":231,"line":1512},148,[229,1514,534],{"class":238},[229,1516,824],{"class":235},[229,1518,248],{"class":238},[229,1520,1521],{"class":251},"gpio\n",[229,1523,1525,1527,1529],{"class":231,"line":1524},149,[229,1526,879],{"class":235},[229,1528,248],{"class":238},[229,1530,1531],{"class":251},"LED2_Green\n",[229,1533,1535,1537],{"class":231,"line":1534},150,[229,1536,1404],{"class":235},[229,1538,782],{"class":238},[229,1540,1542,1545,1547],{"class":231,"line":1541},151,[229,1543,1544],{"class":235},"      number",[229,1546,248],{"class":238},[229,1548,1549],{"class":490},"22\n",[229,1551,1553,1556,1558],{"class":231,"line":1552},152,[229,1554,1555],{"class":235},"      mode",[229,1557,248],{"class":238},[229,1559,1560],{"class":251},"OUTPUT\n",[229,1562,1564,1567,1569],{"class":231,"line":1563},153,[229,1565,1566],{"class":235},"      inverted",[229,1568,248],{"class":238},[229,1570,717],{"class":490},[229,1572,1574,1576,1578,1580],{"class":231,"line":1573},154,[229,1575,534],{"class":238},[229,1577,824],{"class":235},[229,1579,248],{"class":238},[229,1581,1521],{"class":251},[229,1583,1585,1587,1589],{"class":231,"line":1584},155,[229,1586,879],{"class":235},[229,1588,248],{"class":238},[229,1590,1591],{"class":251},"LED3_Yellow\n",[229,1593,1595,1597],{"class":231,"line":1594},156,[229,1596,1404],{"class":235},[229,1598,782],{"class":238},[229,1600,1602,1604,1606],{"class":231,"line":1601},157,[229,1603,1544],{"class":235},[229,1605,248],{"class":238},[229,1607,1608],{"class":490},"17\n",[229,1610,1612],{"class":231,"line":1611},158,[229,1613,1614],{"class":287},"#     number: 23  # For 0.0.5\n",[229,1616,1618,1620,1622],{"class":231,"line":1617},159,[229,1619,1555],{"class":235},[229,1621,248],{"class":238},[229,1623,1560],{"class":251},[229,1625,1627,1629,1631],{"class":231,"line":1626},160,[229,1628,1566],{"class":235},[229,1630,248],{"class":238},[229,1632,717],{"class":490},[229,1634,1636,1638,1640,1642],{"class":231,"line":1635},161,[229,1637,534],{"class":238},[229,1639,824],{"class":235},[229,1641,248],{"class":238},[229,1643,1521],{"class":251},[229,1645,1647,1649,1651],{"class":231,"line":1646},162,[229,1648,879],{"class":235},[229,1650,248],{"class":238},[229,1652,1653],{"class":251},"LED4_Red\n",[229,1655,1657,1659],{"class":231,"line":1656},163,[229,1658,1404],{"class":235},[229,1660,782],{"class":238},[229,1662,1664,1666,1668],{"class":231,"line":1663},164,[229,1665,1544],{"class":235},[229,1667,248],{"class":238},[229,1669,1670],{"class":490},"25\n",[229,1672,1674,1676,1678],{"class":231,"line":1673},165,[229,1675,1555],{"class":235},[229,1677,248],{"class":238},[229,1679,1560],{"class":251},[229,1681,1683,1685,1687],{"class":231,"line":1682},166,[229,1684,1566],{"class":235},[229,1686,248],{"class":238},[229,1688,717],{"class":490},[83,1690,1692],{"id":1691},"connecting-to-the-board","Connecting to the board",[10,1694,1695,1696,1699],{},"I configured the ESPhome firmware to run a captive portal after approx one minute. So, after powering the board, you could (after one minute) connect to the SSID \"Fallback Hotspot\". Turn of your cellular internet (it disturbs the WiFi very often) and select the Fallback (password is ",[226,1697,1698],{},"\"Z8zfajgxVvNw\"","). When WiFi of your phone is connected (sometimes you need some tries), a pop-up should ask you to sign in to the network. Follow this. It will present the portal of the ESPhome firmware and show you all WiFis it has found. Select the appropriate one and enter the password of this WiFi.",[10,1701,1702],{},[22,1703],{"alt":213,"src":1704},"\u002Fimages\u002Fblog\u002F2022\u002F11\u002Fimage.png",[10,1706,1707],{},"When the module is correctly connected to the network, it should soon show up as a new ESPhome board in your Home Assistant. Sometimes, you need to wait for a few minutes for the notification to show up. When adopted, you will see it in your ESPhome devices overview and can enter adjust the YAML to your needs. New sensor nodes will also take a few minutes to be shown sometimes.",[10,1709,1710],{},"The relevant part of the YAML is as follows:",[220,1712,1714],{"className":222,"code":1713,"language":224,"meta":213,"style":213},"esphome:\n  name: km217-for-friends\n  platform: ESP32\n  board: esp32dev\n\n# Enable logging\nlogger:\n\n# Enable Home Assistant API\napi:\n\nota:\n\nwifi:\n  ssid: \"\u003CYOUR WIFI SSID>\"\n  password: \"\u003CYOUR WIFI PASSPHRASE>\"\n\n  # Enable fallback hotspot (captive portal) in case wifi connection fails\n  ap:\n    ssid: \"Fallback Hotspot\"\n    password: \"Z8zfajgxVvNw\"\n",[226,1715,1716,1722,1731,1739,1747,1751,1755,1761,1765,1769,1775,1779,1785,1789,1795,1804,1813,1817,1821,1827,1835],{"__ignoreMap":213},[229,1717,1718,1720],{"class":231,"line":232},[229,1719,204],{"class":235},[229,1721,239],{"class":238},[229,1723,1724,1726,1728],{"class":231,"line":242},[229,1725,245],{"class":235},[229,1727,248],{"class":238},[229,1729,1730],{"class":251},"km217-for-friends\n",[229,1732,1733,1735,1737],{"class":231,"line":255},[229,1734,258],{"class":235},[229,1736,248],{"class":238},[229,1738,263],{"class":251},[229,1740,1741,1743,1745],{"class":231,"line":266},[229,1742,269],{"class":235},[229,1744,248],{"class":238},[229,1746,274],{"class":251},[229,1748,1749],{"class":231,"line":277},[229,1750,281],{"emptyLinePlaceholder":280},[229,1752,1753],{"class":231,"line":284},[229,1754,288],{"class":287},[229,1756,1757,1759],{"class":231,"line":291},[229,1758,294],{"class":235},[229,1760,239],{"class":238},[229,1762,1763],{"class":231,"line":299},[229,1764,281],{"emptyLinePlaceholder":280},[229,1766,1767],{"class":231,"line":304},[229,1768,307],{"class":287},[229,1770,1771,1773],{"class":231,"line":310},[229,1772,313],{"class":235},[229,1774,239],{"class":238},[229,1776,1777],{"class":231,"line":318},[229,1778,281],{"emptyLinePlaceholder":280},[229,1780,1781,1783],{"class":231,"line":323},[229,1782,326],{"class":235},[229,1784,239],{"class":238},[229,1786,1787],{"class":231,"line":331},[229,1788,281],{"emptyLinePlaceholder":280},[229,1790,1791,1793],{"class":231,"line":342},[229,1792,350],{"class":235},[229,1794,239],{"class":238},[229,1796,1797,1799,1801],{"class":231,"line":347},[229,1798,358],{"class":235},[229,1800,248],{"class":238},[229,1802,1803],{"class":251},"\"\u003CYOUR WIFI SSID>\"\n",[229,1805,1806,1808,1810],{"class":231,"line":355},[229,1807,334],{"class":235},[229,1809,248],{"class":238},[229,1811,1812],{"class":251},"\"\u003CYOUR WIFI PASSPHRASE>\"\n",[229,1814,1815],{"class":231,"line":370},[229,1816,281],{"emptyLinePlaceholder":280},[229,1818,1819],{"class":231,"line":382},[229,1820,390],{"class":287},[229,1822,1823,1825],{"class":231,"line":387},[229,1824,396],{"class":235},[229,1826,239],{"class":238},[229,1828,1829,1831,1833],{"class":231,"line":393},[229,1830,404],{"class":235},[229,1832,248],{"class":238},[229,1834,409],{"class":251},[229,1836,1837,1839,1841],{"class":231,"line":401},[229,1838,415],{"class":235},[229,1840,248],{"class":238},[229,1842,1843],{"class":251},"\"Z8zfajgxVvNw\"\n",[60,1845,1847],{"id":1846},"hardware-extensions","Hardware Extensions",[162,1849,1851],{"id":1850},"exhaust-sensor","Exhaust Sensor",[10,1853,1854,1855,1860],{},"The Exhaust sensor is a simple 100 kOhm NTC-Resistor type, as you can order it e.g., at ",[16,1856,1859],{"href":1857,"rel":1858},"https:\u002F\u002Fwww.sensorshop24.de\u002Feinschraubtemperaturfuehler-mit-g1-4-gewinde",[20],"sensorshop24",". In my case, I select the following options:",[10,1862,1863],{},[22,1864],{"alt":213,"src":1865},"\u002Fimages\u002Fblog\u002F2024\u002F07\u002Fimage-11-1001x1024.png",[10,1867,1868],{},"I realized, that the 25°C is very precise, but when the burner is working, my readings at 150°C are 15-20°C below the values the chimney sweeper is measuring with his calibrated device. The reason for this is most likely the characteristic curve, which is standardized for PT-Type (PT100, PT500, PT1000) temperature dependent resistors, but not for NTC. They are only defined at 25°C with their nominal value (here 100 kOhm), but not their B-value. But with ESPhome, you could easily correct this by filters for the sensor.",[60,1870,1872],{"id":1871},"other-settings","Other Settings",[10,1874,1875],{},"Renaming the module should be done using ESPhome GUI",[10,1877,1878],{},[22,1879],{"alt":213,"src":1880},"\u002Fimages\u002Fblog\u002F2022\u002F11\u002Fimage-1.png",[10,1882,1883],{},"For more detailed information, see my blog about the development of the module.",[162,1885,1887],{"id":1886},"using-arduino-with-mqtt","Using Arduino with MQTT",[10,1889,1890],{},"Coming soon :-)",[1892,1893,1894],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":213,"searchDepth":242,"depth":242,"links":1896},[1897,1898,1899,1905,1908],{"id":62,"depth":242,"text":63},{"id":102,"depth":242,"text":103},{"id":156,"depth":242,"text":157,"children":1900},[1901,1902,1903,1904],{"id":164,"depth":255,"text":165},{"id":192,"depth":255,"text":193},{"id":204,"depth":255,"text":205},{"id":217,"depth":255,"text":218},{"id":1846,"depth":242,"text":1847,"children":1906},[1907],{"id":1850,"depth":255,"text":1851},{"id":1871,"depth":242,"text":1872,"children":1909},[1910],{"id":1886,"depth":255,"text":1887},"md",{"date":1913,"image":1914},"2022-11-04","\u002Fimages\u002Fblog\u002F2021\u002F07\u002FPXL_20230317_185019928.MOTION-01.COVER_-scaled.jpg","\u002Fpages\u002Fkm271-wifi-howto",{"title":5,"description":213},"pages\u002Fkm271-wifi-howto","v2xO2g1Vx-J6oryC2wSXJozkrQVdG3g9Tx7y7l1nNjw",1777297230757]