<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Henri Rion</title>
    <description>The latest articles on DEV Community by Henri Rion (@henri_rion).</description>
    <link>https://dev.to/henri_rion</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F283841%2F5492167b-6814-45fb-9af4-5a74febe546c.jpg</url>
      <title>DEV Community: Henri Rion</title>
      <link>https://dev.to/henri_rion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/henri_rion"/>
    <language>en</language>
    <item>
      <title>Tasmota IR Bridge, integrated to Home Assistant (transmitter part)</title>
      <dc:creator>Henri Rion</dc:creator>
      <pubDate>Mon, 26 Jul 2021 16:14:40 +0000</pubDate>
      <link>https://dev.to/henri_rion/tasmota-ir-bridge-integrated-to-home-assistant-transmitter-part-3c2k</link>
      <guid>https://dev.to/henri_rion/tasmota-ir-bridge-integrated-to-home-assistant-transmitter-part-3c2k</guid>
      <description>&lt;p&gt;As a beginner in this IoT world, I read quite a lot of tutorials, and articles, but I could not find articles dedicated to beginners.&lt;/p&gt;

&lt;p&gt;Thus, here is a short tutorial on how I did it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Assumptions
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;We already know what Protocol, Code, and Length to transmit&lt;/li&gt;
&lt;li&gt;In this case: NEC, 16712445, 32 &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  🛍️ Required Materials
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;ESP8266: &lt;a href="https://www.amazon.fr/SeeKool-d%C3%A9veloppement-Fonctionne-Parfaitement-Compatible/dp/B07DRF9YTV/ref=sr_1_5" rel="noopener noreferrer"&gt;Amazon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;IR transmitter: &lt;a href="https://www.amazon.fr/gp/product/B07912FFXV/" rel="noopener noreferrer"&gt;Amazon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;3 jumpers female-female + 1 USB Cable
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxp72ir75d2509u50s8k8.jpg" alt="Materials Overview"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ESP8266 Flashing with Tasmota
&lt;/h1&gt;

&lt;p&gt;Not covered in this tutorial, and assuming it's done.&lt;br&gt;
Check my dedicated &lt;a href="https://dev.to/henri_rion/esp8266-flashed-with-tasmota-in-less-than-5min-1ehl"&gt;article&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Wiring
&lt;/h1&gt;

&lt;p&gt;Here are the required connections (from ESP8266 to IR Transmitter)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GND -&amp;gt; GND&lt;/li&gt;
&lt;li&gt;3V3 -&amp;gt; VCC&lt;/li&gt;
&lt;li&gt;D3 -&amp;gt; SIG&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcww4d5xth6kn5srtlw67.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcww4d5xth6kn5srtlw67.jpg" alt="ESP8266 Connections"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbpesrbcpuasiutb2tro.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbpesrbcpuasiutb2tro.jpg" alt="IR Transmitter Connections"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Tasmota Config
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Go to the allocated IP address of our Tasmota&lt;/li&gt;
&lt;li&gt;In this case, we have 192.168.1.62&lt;/li&gt;
&lt;li&gt;Go to : Configuration &amp;gt; Configure Module, and select Generic module type, and allocate IRSend to the D3 GPIO0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faa17wiflgm4ej8nix8m7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faa17wiflgm4ej8nix8m7.png" alt="Tasmota Config"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Home Assistant Integration
&lt;/h1&gt;

&lt;p&gt;(If it's not already the case, go to Configuration &amp;gt; Integrations &amp;gt; Add Integration &amp;gt; Tasmota)&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing first!
&lt;/h2&gt;

&lt;p&gt;Before final integration, let's test the communication between MQTT, and our Tasmota device.&lt;/p&gt;

&lt;p&gt;On a new tab of your favorite browser, open the Tasmota panel (192.168.1.62), and go to Console.&lt;/p&gt;

&lt;p&gt;Open a new tab with Home Assistant, and go to Configuration &amp;gt; Integrations, and click on the MQTT Configure button.&lt;/p&gt;

&lt;p&gt;In the "Publish a Packet" part, we will add the topic (i.e. the name of our Tasmota), and the Payload (the code we want to execute).&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to find the Topic?
&lt;/h3&gt;

&lt;p&gt;On the Tasmota tab, go to the Information menu, and find the "MQTT Full Topic". In our case, we have:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

cmnd/tasmota_E30D62/


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Add this topic name to our Home Assistant MQTT Configure panel, with IRsend at the end.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to find the Payload?
&lt;/h3&gt;

&lt;p&gt;As previously explained, in this case, we assume having already the code, and protocol.&lt;/p&gt;

&lt;p&gt;Payload:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{"Protocol":"NEC","Bits":32,"Data":16753245}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;And now click publish.&lt;/p&gt;

&lt;p&gt;You should see the Tasmota's console displaying the below message:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

MQT: stat/tasmota_E30D62/RESULT = {"IRSend":"Done"}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Integration
&lt;/h2&gt;

&lt;p&gt;Open your configuration.yaml file and add the following lines:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

switch:
  - platform: mqtt
    name: "TEST ESP8266 LED LIGHT" #the entity name
    command_topic: "cmnd/tasmota_E30D62/IRsend"
    payload_on: '{"Protocol":"NEC","Bits":32,"Data":16712445}'
    payload_off: '{"Protocol":"NEC","Bits":32,"Data":16712445}'



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Save and close the configuration.yaml file.&lt;br&gt;
Check the configuration within Home Assistant. Go to Configurations &amp;gt; Server Controls &amp;gt; Configuration Validation &amp;gt; Check Configuration. You must have the Configuration Valid! message.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gqyc92g8qz39znh9daw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gqyc92g8qz39znh9daw.png" alt="Configuration valid message"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the configuration valid message appears, you can restart Home Assistant server.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Entity Usage
&lt;/h2&gt;

&lt;p&gt;Now, create a new view, and click the add card button.&lt;br&gt;
Select the Button card type.&lt;br&gt;
Find the Entity we just created, and save.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fil2ii27nppycy00zdtzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fil2ii27nppycy00zdtzx.png" alt="Home Assistant - Button Card configuration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you have an IR Bridge working.&lt;/p&gt;

&lt;p&gt;I hope you enjoyed this small tutorial. Do not hesitate to ask questions, or give improvements. I'm always open to improve and share :-).&lt;/p&gt;

</description>
      <category>tasmota</category>
      <category>ir</category>
      <category>bridge</category>
      <category>homeassistant</category>
    </item>
    <item>
      <title>5 Steps to Flash ESP8266 with Tasmota in 2021</title>
      <dc:creator>Henri Rion</dc:creator>
      <pubDate>Mon, 26 Jul 2021 15:41:03 +0000</pubDate>
      <link>https://dev.to/henri_rion/esp8266-flashed-with-tasmota-in-less-than-5min-1ehl</link>
      <guid>https://dev.to/henri_rion/esp8266-flashed-with-tasmota-in-less-than-5min-1ehl</guid>
      <description>&lt;p&gt;In this very short tutorial, I will show you how I flashed an ESP8266 with Tasmota.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1: Download ESP Flasher &amp;amp; Tasmota
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;ESP Flasher: &lt;a href="https://github.com/Jason2866/ESP_Flasher/releases"&gt;github repo&lt;/a&gt;, and download the appropriate version of ESP Flasher (no need to install)&lt;/li&gt;
&lt;li&gt;Tasmota: &lt;a href="http://ota.tasmota.com/tasmota/release/"&gt;tasmota.bin.gz&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Step 2: Plug ESP8266 to your computer in Boot Mode
&lt;/h1&gt;

&lt;p&gt;Plug the ESP8266's USB to your computer, while pressing the &lt;strong&gt;Flash button&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wEa9pNxr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0n5lp6nrt2sgxj1sz1gw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wEa9pNxr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0n5lp6nrt2sgxj1sz1gw.jpg" alt="ESP8266 Flash Button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 3: Start and Setup ESP Flasher
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Reload the Serial Port until you see your USB plug appearing&lt;/li&gt;
&lt;li&gt;Browse the firmware Tasmota we downloaded in Step 1&lt;/li&gt;
&lt;li&gt;Launch ESP-Flasher&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8GmUa82F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rsm7ro981ytzsyu44q47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8GmUa82F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rsm7ro981ytzsyu44q47.png" alt="ESP Flasher"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This process can take up to 30sec. Once done, unplug, and replug the ESP8266 module to your computer or any other source of power.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 4: WiFi connection
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Once relaunched, you should see a Tasmota_XXX WiFi appearing in your networks.&lt;/li&gt;
&lt;li&gt;Connect your computer to the Tasmota WiFi&lt;/li&gt;
&lt;li&gt;Connect your WiFi (SSID + Password)&lt;/li&gt;
&lt;li&gt;Click Ok&lt;/li&gt;
&lt;li&gt;Let the component restart&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Step 5: Tasmota Config
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Configure MQTT Broker accordingly (host + port + login + password)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>esp8266</category>
      <category>tasmota</category>
      <category>flashing</category>
    </item>
    <item>
      <title>9-Steps Raspberry Pi Headless Setup with Ubuntu 21.04</title>
      <dc:creator>Henri Rion</dc:creator>
      <pubDate>Mon, 26 Jul 2021 08:43:02 +0000</pubDate>
      <link>https://dev.to/henri_rion/9-steps-raspberry-pi-headless-setup-with-ubuntu-21-04-3el3</link>
      <guid>https://dev.to/henri_rion/9-steps-raspberry-pi-headless-setup-with-ubuntu-21-04-3el3</guid>
      <description>&lt;p&gt;Hold-on, if you don't have a Raspberry Pi, yet, I can recommend these on &lt;a href="https://amzn.to/3lzRCYt" rel="noopener noreferrer"&gt;Amazon&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1: 🍓 Download Raspberry Pi Imager
&lt;/h1&gt;

&lt;p&gt;Raspberry Pi Imager is used to install Operating System to the microSD card. This software works for MacOS, Windows and Linux (click here to download).&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 2: 🔌 Plug your microSD card to your computer
&lt;/h1&gt;

&lt;p&gt;Depending on your computer setup, you will need a microSD Card reader.&lt;br&gt;
Being on a Mac, I’m using this docker you can buy on &lt;a href="https://amzn.to/3FPBXNS" rel="noopener noreferrer"&gt;Amazon&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  Step 3: 🔥 Flash the Card with Ubuntu 21.04
&lt;/h1&gt;

&lt;p&gt;Launch the Raspberry Pi Imager tool.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2Apkeal1DbiCQBmbN7OQioVw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2Apkeal1DbiCQBmbN7OQioVw.png" alt="Raspberry Pi Image Welcome Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depending on the Raspberry Pi you have, you will need to choose the right OS (64-bit vs 32-bit). In this case, I’m using the 64-bit version).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2Ay6LUCRWmqfS6RSVMwuBt9A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2Ay6LUCRWmqfS6RSVMwuBt9A.png" alt="Raspberry Pi Image Welcome Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s choose the SD Card (be careful here, to select the right one!).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AWshpU5tcshqTFuheTvjKTQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AWshpU5tcshqTFuheTvjKTQ.png" alt="Raspberry Pi Imager"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we are all set, and we can click on Write button to actually flash the SD card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AxBKvGgm62CP9V3rO9Sw13Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AxBKvGgm62CP9V3rO9Sw13Q.png" alt="Raspberry Pi Imager"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2ASUSYICYWTwRT09LWLAsyGQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2ASUSYICYWTwRT09LWLAsyGQ.png" alt="Raspberry Pi Imager"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a couple of minutes (writing &amp;amp; verifying), your microSD card will be flashed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2ArjZQGjYagViRgtsDSA0acA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2ArjZQGjYagViRgtsDSA0acA.png" alt="Raspberry Pi Imager"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Step 4: 📡 Setup WiFi connection
&lt;/h1&gt;

&lt;p&gt;Eject, and re-plug the microSD card to your computer.&lt;/p&gt;

&lt;p&gt;Now, open the microSD card directory, and look for the “network-config” file (in the root folder).&lt;/p&gt;

&lt;p&gt;Open it with your favorite IDE. I’m using Visual Studio Code in this tutorial.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AzudGOT_Wci9k060Mzv43rg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F700%2F1%2AzudGOT_Wci9k060Mzv43rg.png" alt="network-config in the root directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The initial content of this file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#[...] some comments
version: 2
ethernets:
  eth0:
    dhcp4: true
    optional: true
#wifis:
#  wlan0:
#    dhcp4: true
#    optional: true
#    access-points:
#      myhomewifi:
#        password: "S3kr1t"
#      myworkwifi:
#        password: "correct battery horse staple"
#      workssid:
#        auth:
#          key-management: eap
#          method: peap
#          identity: "me@example.com"
#          password: "passw0rd"
#          ca-certificate: /etc/my_ca.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, a specific section about wifis is already written, and commented.&lt;/p&gt;

&lt;p&gt;Now, change this file such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 2
ethernets:
  eth0:
    dhcp4: true
    optional: true
wifis:
  wlan0:
  dhcp4: true
  optional: true
  access-points:
    your_wifi_name:
    password: "your_password"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the file, and eject the microSD card properly from your computer.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 5: 🏁 Start the Raspberry Pi
&lt;/h1&gt;

&lt;p&gt;Now, we have a properly flashed microSD card, and a wifi connection, let’s plug back the microSD card into the Raspberry Pi, and switch it on.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 6: 🏠 Identify your Raspberry Pi IP address
&lt;/h1&gt;

&lt;p&gt;In order to connect us to our Raspberry Pi, we need to define it’s IP address.&lt;/p&gt;

&lt;p&gt;Several methods can be used here. The easiest one consists in connecting to your internet provider box, and try to find the new Ubuntu Server from our Raspberry Pi.&lt;/p&gt;

&lt;p&gt;Here we are:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F374%2F1%2Ar6wUKIxqhLu35m3d-pK2Ag.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fmax%2F374%2F1%2Ar6wUKIxqhLu35m3d-pK2Ag.png" alt="UBUNTU Machine IP Address on local network: 192.168.1.45"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 7: 🛰️ SSH connection
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Hold on, what is SSH connection?
&lt;/h2&gt;

&lt;p&gt;According to Wikipedia: SSH is typically used to log into a remote machine and execute commands&lt;br&gt;
Now, open a Terminal command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh ubuntu@192.168.1.45
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ubuntu is the default login, and the @192.. is the IP address we identified in the previous step.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The authenticity of host '192.168.1.45 (192.168.1.45)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type Yes.&lt;/p&gt;

&lt;p&gt;The default password is ubuntu as well. You will be required to change the password directly after first sign-in.&lt;/p&gt;

&lt;p&gt;Once the new password set, the connection will be automatically closed. You will have to restart the ssh connection, using the new password you defined.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 8: 🍿 Enjoy
&lt;/h1&gt;

&lt;p&gt;You are all set.&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment ☝
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Don’t forget, that we didn’t define a static IP address for our Raspberry Pi. It means, that the IP address will be dynamically (DHCP) changed over time.&lt;/li&gt;
&lt;li&gt;If you need a static IP, please check my next article (soon).&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Post Scriptum #1
&lt;/h1&gt;

&lt;p&gt;If you like this kind of blog posts, don't hesitate to check my blog &lt;a href="https://catchtheblock.com" rel="noopener noreferrer"&gt;Catchtheblock.com&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Post Scriptum #2
&lt;/h1&gt;

&lt;p&gt;If you prefer a good video detailing this process, I recommend watching this one &lt;br&gt;
👉 &lt;a href="https://www.youtube.com/watch?v=dJTqd90bwsI" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=dJTqd90bwsI&lt;/a&gt;&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>ubuntu</category>
      <category>headless</category>
    </item>
    <item>
      <title>9-Steps to Flash Sonoff WiFi Smart Switch with Tasmota (MacOS Catalina)</title>
      <dc:creator>Henri Rion</dc:creator>
      <pubDate>Mon, 26 Jul 2021 08:29:50 +0000</pubDate>
      <link>https://dev.to/henri_rion/9-steps-to-flash-sonoff-wifi-smart-switch-with-tasmota-macos-catalina-4in</link>
      <guid>https://dev.to/henri_rion/9-steps-to-flash-sonoff-wifi-smart-switch-with-tasmota-macos-catalina-4in</guid>
      <description>&lt;p&gt;In this short tutorial, we will change Sonoff WiFi Smart Switch firmware with Tasmota, using MacOS Catalina. No worries, it’s very easy. Let’s move on.&lt;/p&gt;

&lt;p&gt;Before we start, let’s have short reminders.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Sonoff WiFi Smart Switch?
&lt;/h1&gt;

&lt;p&gt;Sonoff is an ESP8266 based device providing users with smart home control. &lt;/p&gt;

&lt;p&gt;It’s a WiFi switch that connects to a variety of devices.&lt;br&gt;
Initially, Sonoff sends data to a cloud platform via a WiFi router, allowing customers to control all connected appliances remotely using the eWeLink smartphone app, being the proprietary firmware of Sonoff.&lt;/p&gt;

&lt;p&gt;If you landed here, you want to change this proprietary firmware of Sonoff, with Tasmota.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Tasmota?
&lt;/h1&gt;

&lt;p&gt;Tasmota is an open source firmware for ESP8266 based devices created and maintained by Mr Theo Arends.&lt;/p&gt;

&lt;p&gt;For more details, please have a look on the dedicated Tasmota page on Github: &lt;a href="https://tasmota.github.io/docs/About/"&gt;https://tasmota.github.io/docs/About/&lt;/a&gt; .&lt;/p&gt;

&lt;h1&gt;
  
  
  Material required
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Components&lt;/th&gt;
&lt;th&gt;Where To Buy?&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sonoff Module&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://www.amazon.fr/Interrupteur-Intelligent-Universel-minuterie-Android/dp/B07XYVKHNH"&gt;Amazon.fr&lt;/a&gt;, &lt;a href="https://www.reichelt.de/de/de/1-kanal-schaltaktor-wlan-sonoff-basic-r2-p288686.html"&gt;Reichelt.de&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;~9 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FT232RL Adapter USB to TTL 3.3V&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.amazon.fr/gp/product/B01N9RZK6I/"&gt;Amazon.fr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;~8 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB 2.0 A to USB Mini B cable&lt;/td&gt;
&lt;td&gt;It Depends on the connection of the FT232RL you will have, but it’s to connect the FT232RL to the computer. (FYI: I ordered the model referenced with the Amazon link, and the port received was Mini B instead of USB 2.0 as presented. Nevermind ;-)).&lt;a href="https://www.amazon.fr/gp/product/B006ZZ1C4M/"&gt;Amazon.fr&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;~5 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cables and, Pin Connectors&lt;/td&gt;
&lt;td&gt;To connect Sonoff with the FT232RL: &lt;a href="https://www.amazon.fr/dp/B01JD5WCG2/"&gt;Amazon.de&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt; ~1 EUR&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Materials Overview
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6eeDceR1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/2400/1%2AfkIrVHraVfbIwYLZuBnXng.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6eeDceR1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/2400/1%2AfkIrVHraVfbIwYLZuBnXng.jpeg" alt="Materials Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  9 Steps
&lt;/h1&gt;

&lt;p&gt;Now, we are ready to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step1: 🏗️ Prepare the Sonoff for welding
&lt;/h2&gt;

&lt;p&gt;Remove the Sonoff’s plastic box (Caution: be careful with static electricity while touching the electronic inside !)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jwY-SKpr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AL1iPGhKtzfBdtqJOGKohQA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jwY-SKpr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AL1iPGhKtzfBdtqJOGKohQA.jpeg" alt="Sonoff Device Opened"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get a 4 pins connector and plug it on the Sonoff (cf image for the exact location)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FttUtu2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AJd_VmBmnSHvPBBAT9Tv4zA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FttUtu2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AJd_VmBmnSHvPBBAT9Tv4zA.jpeg" alt="Plug Pins to Sonoff"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Braze the 4 connectors (or if you can, hold it on the device).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wT1vAqh3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AHbVkUOx2PgVVqXXlvxagSw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wT1vAqh3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AHbVkUOx2PgVVqXXlvxagSw.jpeg" alt="Braze"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: 🔌 Connect the Sonoff and the FT232RL adapter together
&lt;/h2&gt;

&lt;p&gt;The figure below show how to connect Sonoff and the FT232 adapter together.&lt;br&gt;
As you can see on the figure and my pictures, the Pins are not on the same place. Never mind, it’s just a different model.&lt;br&gt;
Connection Summary (from Sonoff to FT232RL):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GND → GND&lt;/li&gt;
&lt;li&gt;TX → RX&lt;/li&gt;
&lt;li&gt;RX → TX&lt;/li&gt;
&lt;li&gt;VCC or 3.3V → VCC or 3.3V&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8HwlYEjL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AXTPU0FqRpJKGx5oj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8HwlYEjL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AXTPU0FqRpJKGx5oj.jpg" alt="Connect Sonoff and FT232RL (Credit: https://www.domo-blog.fr/)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: 🔌 Plug the USB Cable to the FT232RL
&lt;/h2&gt;

&lt;p&gt;Plug the USB cable to the FT232RL. Don’t connect the cable to the computer yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overview after connection
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ojRc8Qid--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AMLC7irFwdVsnLTU7jsJPvg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ojRc8Qid--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AMLC7irFwdVsnLTU7jsJPvg.jpeg" alt="All Connected"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we are all set, let’s move on the computer part 😄.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: 🤓 Switch you Mac On…
&lt;/h2&gt;

&lt;p&gt;For this tutorial, I’m using a Macbook Air with MacOS Catalina installed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: 🔌 Preparing Flashing
&lt;/h2&gt;

&lt;p&gt;We need to flash the internal memory with Tasmota. In other words, we are replacing Sonoff firmware with Tasmota.&lt;/p&gt;

&lt;p&gt;Download NodeMCU PyFlasher for Catalina, and Copy the App to your computer: &lt;a href="https://github.com/marcelstoer/nodemcu-pyflasher/releases"&gt;https://github.com/marcelstoer/nodemcu-pyflasher/releases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QDw1tfst--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AhtkYE5Fkp8mxev9KCgU8LA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QDw1tfst--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AhtkYE5Fkp8mxev9KCgU8LA.png" alt="NodeMCU PyFlasher Github Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download Tasmota: &lt;a href="http://ota.tasmota.com/tasmota/release/"&gt;http://ota.tasmota.com/tasmota/release/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NHbNkTgb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2Am5W3eKnj_qQDwlQNuKq-mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NHbNkTgb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2Am5W3eKnj_qQDwlQNuKq-mg.png" alt="Tasmota Releases"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, open NodeMCU PyFlasher, and set the options as in the screenshot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tpOVrSeB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AK7-C7nV7FL_6rJU19i6BTQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tpOVrSeB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AK7-C7nV7FL_6rJU19i6BTQ.png" alt="NodeMCU PyFlasher configured"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: 💥 Let’s Flash now
&lt;/h2&gt;

&lt;p&gt;Be careful here, because we need to switch the Sonoff to “boot mode”. &lt;/p&gt;

&lt;p&gt;Here is the process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Press the Sonoff button (before plugging the USB!!)&lt;/li&gt;
&lt;li&gt;While pressing the Sonoff button, plug the USB cable to the computer. Hold the Sonoff button for 2sec after plugging the USB cable.&lt;/li&gt;
&lt;li&gt;Now you can launch the Flash ModeMCU on your computer. The operation can take up to 1 min.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--22rXLbCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AVB9yoHsmpE-dcjgyIoU-2g.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--22rXLbCD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AVB9yoHsmpE-dcjgyIoU-2g.jpeg" alt="Button to Press on Sonoff"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GeZYTnc4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AZJlHneLpCvRpmMJC1O7hRw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GeZYTnc4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/1%2AZJlHneLpCvRpmMJC1O7hRw.png" alt="NodeMCU Config"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: I had a few issues during the flashing step. My computer was not able to connect the Sonoff device. I had to restart a couple of times the operation of pressing the button, and connect the USB to access the Boot Mode. So be careful doing this operation. After a couple of tries, the Flashing operation succeeds.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 7: ⚡ Power Up
&lt;/h1&gt;

&lt;p&gt;Unplug the Sonoff device from USB adapter, and connect a Male Plug in the Input side, and a Female Plug in the Output side.&lt;br&gt;
Now you can Power Up.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 8: 🚧 Tasmota Setup
&lt;/h1&gt;

&lt;p&gt;We should have TasmotaXXXX that appears in our WiFi networks. Select the WiFi Tasmota emitted by the Sonoff device.&lt;br&gt;
After selecting, a pop-up window will appear from Tasmota Firmware asking to connect to your Wifi network. Enter login &amp;amp; password.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 9: 🍿 Enjoy
&lt;/h1&gt;

&lt;p&gt;We can now toggle Off &amp;amp; On the Sonoff WiFi switch :-).&lt;/p&gt;

&lt;p&gt;Feel Free  to contact me if you have any questions, or  if any step was not clear enough, happy to help.&lt;/p&gt;

</description>
      <category>sonoff</category>
      <category>tasmota</category>
      <category>macos</category>
      <category>wifi</category>
    </item>
  </channel>
</rss>
