<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Hrishikesh Dhayagude on Medium]]></title>
        <description><![CDATA[Stories by Hrishikesh Dhayagude on Medium]]></description>
        <link>https://medium.com/@dhrishi?source=rss-d9449153a291------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*DDUgoJ9qFnIRTuhcUr_1YA.jpeg</url>
            <title>Stories by Hrishikesh Dhayagude on Medium</title>
            <link>https://medium.com/@dhrishi?source=rss-d9449153a291------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 22:26:15 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@dhrishi/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Matter: Device-to-Device Automations]]></title>
            <link>https://medium.com/the-esp-journal/matter-device-to-device-automations-bdbb32365350?source=rss-d9449153a291------2</link>
            <guid isPermaLink="false">https://medium.com/p/bdbb32365350</guid>
            <category><![CDATA[matter]]></category>
            <category><![CDATA[esp32]]></category>
            <category><![CDATA[iot]]></category>
            <dc:creator><![CDATA[Hrishikesh Dhayagude]]></dc:creator>
            <pubDate>Wed, 08 Dec 2021 06:40:52 GMT</pubDate>
            <atom:updated>2021-12-16T06:36:20.442Z</atom:updated>
            <content:encoded><![CDATA[<p><a href="https://blog.espressif.com/matter-38ccf1d60bcd"><em>Espressif Matter Series</em></a><em> #3</em></p><p>[This is article #3 in the <a href="https://blog.espressif.com/matter-38ccf1d60bcd">Espressif Matter Series</a> of articles. You may read the second part <a href="https://blog.espressif.com/matter-clusters-attributes-commands-82b8ec1640a0">here</a>.]</p><p>In the previous article we looked at the data model of Matter. Today, let us talk about how Matter devices within a network can interact with each other leading to useful automations. For instance, you may want a light switch at your home to control one or more light bulbs. Or even a thermostat to turn on or off based on reports from the occupancy sensor.</p><p>This is a very interesting usecase that is not easily possible through the existing ecosystem protocols. Matter easily enables this. This doesn’t require intermediation from any cloud or phone apps to make it happen. Instead, it is all facilitated directly over the local network.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/441/1*B_HImQPnRCfK6RKBqWVq-g.jpeg" /></figure><p>As mentioned in the data model article, every Matter cluster has a cluster server, and a cluster client counterpart. The communication happens between the client and server of the same cluster. As can be seen above, the OnOff cluster client on the switch can talk with the OnOff cluster server on the light to turn it on or off. And the end-user can configure which device can talk to which device(s) in their home.</p><p>For this interaction to happen, the switch should know the details about the light. This is achieved through <strong>device binding</strong>. A binding represents a persistent relationship that informs a client endpoint of one or more target endpoints for a potential interaction. A user (through the Matter phone app) can establish binding between devices, regardless of the vendors they are from.</p><p>There are two ways through which device-to-device interaction can be accomplished:</p><h4><strong>1. Synchronous Control</strong></h4><p>Let’s go back to our example of the switch controlling the light that is shown above. For this, the switch additionally needs to have a Binding cluster server that offers the binding service. After a user binds the light to the switch, an action (on or off) on the switch results into corresponding action on the light. This scenario is illustrated below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/711/1*U854xZnv59FRNcbzHAoAqA.jpeg" /></figure><p>Similarly, a Dimmer Switch needs to have an OnOff client, a Level Control client and a Binding server to control a dimmable light.</p><h4><strong>2. Asynchronous Notification (Subscribe-Report)</strong></h4><p>This method facilitates receiving data reports from a publisher to a subscriber. The subscriber can <strong>subscribe to attributes and/or events</strong> on the publisher.</p><p>The thermostat and occupancy sensor usecase mentioned above can be realised after the thermostat <strong>subscribes to attributes </strong>of the sensor. First the user binds the thermostat to the occupancy sensor. Once done, the thermostat can subscribe to the sensor attributes and receive data periodically as well as when there is an activity (change in sensor attributes). This scenario is illustrated below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/706/1*-3jfMtoyO2kIyCpOolNw1A.jpeg" /></figure><p>This was an example of subscribing to attributes. Devices could also <strong>subscribe to events</strong>. In the data model article, we talked about clusters having attributes and commands. Here, we introduce events which are also a part of clusters. Events capture every single change and convey it to the subscribed entity. A few examples of events include switch pressed, long press, and door opened.</p><p>This sums up the introduction to device-to-device communication in Matter along with the different ways in which it can be implemented.</p><p>This article is a part of a series of articles <a href="https://blog.espressif.com/matter-38ccf1d60bcd"><em>Espressif Matter Series</em></a>. You may read the next article that talks about <a href="https://blog.espressif.com/matter-bridge-for-non-matter-devices-d3b7f003a004">Matter: Bridge to non-Matter Devices</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bdbb32365350" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-esp-journal/matter-device-to-device-automations-bdbb32365350">Matter: Device-to-Device Automations</a> was originally published in <a href="https://medium.com/the-esp-journal">The ESP Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing Matter (previously ‘CHIP’) on ESP32]]></title>
            <link>https://medium.com/the-esp-journal/announcing-matter-previously-chip-on-esp32-84164316c0e3?source=rss-d9449153a291------2</link>
            <guid isPermaLink="false">https://medium.com/p/84164316c0e3</guid>
            <category><![CDATA[matter]]></category>
            <category><![CDATA[iot]]></category>
            <category><![CDATA[esp32]]></category>
            <dc:creator><![CDATA[Hrishikesh Dhayagude]]></dc:creator>
            <pubDate>Wed, 26 May 2021 12:17:42 GMT</pubDate>
            <atom:updated>2021-11-25T13:34:01.370Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/920/1*6SmRnmN49BKqaxYRVYR9Qg.jpeg" /></figure><h3>Introduction</h3><p><a href="https://buildwithmatter.com/">Matter</a>, previously project CHIP, is the new foundation for connected things. Guided by the <a href="http://csa-iot.org/">Connectivity Standards Alliance</a>, and developed through collaboration amongst all the leaders of the IoT industry, Matter focuses on building connected devices that are secure, reliable, and importantly, seamless to use.</p><p>Espressif has been a part of the Matter initiative since early days, and we have been focusing on making it easy to develop and use Matter with Espressif’s line of SoCs. In this article, we will discuss the steps to get your first Matter application up and running on an ESP32. In upcoming articles, we will discuss various technical details of Matter and explore ways to quickly build Matter certified devices on Espressif platforms.</p><h3>Architecture</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kSxqtZCqJf1pH4JYaoa1IA.png" /></figure><p>As illustrated above, Matter defines the application layer that will be deployed on devices and controllers as well as supported IPv6-based networks to help achieve the interoperability goals. Matter will initially support Wi-Fi and Thread for core communications and Bluetooth Low Energy (BLE) to simplify device commissioning and setup.</p><h3>Matter on ESP32</h3><h4>Matter SDK</h4><p>The <a href="https://github.com/project-chip/connectedhomeip">Matter SDK</a> is an open source repository for the implementation of the specification and continues to be under active development. ESP32 has been a supported platform in the Matter SDK since the very beginning. At present, it is the only platform that offers support of both Wi-Fi as well as BLE. ESP32 supports commissioning (initial device configuration) over BLE as well as Wi-Fi SoftAP; and supports operational communication over Wi-Fi.</p><h4>Sample Examples</h4><p>You could try either of the following examples:</p><ol><li><a href="https://github.com/project-chip/connectedhomeip/tree/test_event_7/examples/all-clusters-app/esp32">ESP32 all-clusters-app</a>: This example allows you to try out all the Matter features using ESP32 based dev-kits (ESP32 WROVER Kit, ESP32 DevKit-C, M5Stack Core1). It allows you to perform device commissioning, and also control the device using a Matter controller. This is also the default application that is used by many of the Matter developers for development and testing.</li><li>Footprint optimised application: The ESP32 all-clusters-app above is like a kitchen sink application that incorporates all the clusters that are part of Matter. If you wish to get an idea about the footprint utilisation of Matter, you may try the <a href="https://github.com/project-chip/connectedhomeip/tree/test_event_7/examples/temperature-measurement-app/esp32">ESP32 temperature-measurement-app</a>. This app is specifically optimised, in order to facilitate footprint impact analysis.</li></ol><p>Either of these examples can be tested against a Matter controller. The Matter SDK provides reference implementation of controllers:</p><ol><li><a href="https://github.com/project-chip/connectedhomeip/tree/test_event_7/src/controller/python">Python based Device Controller</a></li><li><a href="https://github.com/project-chip/connectedhomeip/tree/test_event_7/examples/chip-tool">CHIPTool</a></li><li><a href="https://github.com/project-chip/connectedhomeip/tree/test_event_7/src/android/CHIPTool">Android CHIPTool</a></li><li><a href="https://github.com/project-chip/connectedhomeip/tree/test_event_7/src/darwin/CHIPTool">Darwin CHIPTool</a></li></ol><h4>Getting Started</h4><p>Let’s look at the steps to try the above examples on ESP32.</p><p>We use Espressif IoT Development Framework (ESP-IDF) <a href="https://github.com/espressif/esp-idf/releases/tag/v4.3">release v4.3</a> to try this out.</p><ol><li>If you haven’t setup ESP-IDF already, please follow the steps <a href="https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32/index.html">here</a>.</li><li>You may then follow the README files in the respective application directories (<a href="https://github.com/project-chip/connectedhomeip/blob/test_event_7/examples/all-clusters-app/esp32/README.md">all-clusters app README</a>, <a href="https://github.com/project-chip/connectedhomeip/blob/test_event_7/examples/temperature-measurement-app/esp32/README.md">temperature-measurement-app README</a>) for instructions on building and loading the examples on ESP32.</li><li>Once the ESP32 is up and running, we need to setup the controller. As a demonstration, we will be using the all-clusters-app with the Python based controller here. Please follow the steps below:</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nPAQ_qyd84e8jkJq9RCeWQ.jpeg" /></figure><h4>Build the Python Controller</h4><pre>$ cd /path/to/connectedhomeip</pre><pre>$ ./scripts/build_python.sh -m platform</pre><ul><li>Execute the controller and establish a secure session over BLE. BLE is the default mode in the application and is configurable through menuconfig.</li></ul><pre>$ source ./out/python_env/bin/activate</pre><pre>$ chip-device-ctrl</pre><pre>chip-device-ctrl &gt; ble-scan</pre><pre>chip-device-ctrl &gt; connect -ble 3840 20202021 135246</pre><p><strong>Parameters:</strong></p><ol><li><strong>Discriminator</strong>: 3840 (configurable through menuconfig)</li><li><strong>Setup-pin-code</strong>: 20202021 (configurable through menuconfig)</li><li><strong>Node ID</strong>: Optional. If not passed in this command, then it is auto-generated by the controller and displayed in the output of connect. The same value should be used in the next commands. We have chosen a random node ID which is 135246.</li></ol><ul><li>Add credentials of the Wi-Fi network you want the ESP32 to connect to, using the AddWiFiNetwork command and then enable the ESP32 to connect to it using EnableWiFiNetwork command. In this example, we have used TESTSSID and TESTPASSWD as the SSID and passphrase respectively.</li></ul><pre>chip-device-ctrl &gt; zcl NetworkCommissioning <strong>AddWiFiNetwork</strong> 135246 0 0 ssid=str:<strong>TESTSSID</strong> credentials=str:<strong>TESTPASSWD</strong> breadcrumb=0 timeoutMs=1000</pre><pre>chip-device-ctrl &gt; zcl NetworkCommissioning <strong>EnableNetwork</strong> 135246 0 0 networkID=str:<strong>TESTSSID</strong> breadcrumb=0 timeoutMs=1000</pre><ul><li>Close the BLE connection to ESP32, as it is not required hereafter.</li></ul><pre>chip-device-ctrl &gt; close-ble</pre><ul><li>Resolve DNS-SD name and update address of the node in the device controller.</li></ul><pre>chip-device-ctrl &gt; resolve 135246</pre><ul><li>Use the OnOff cluster command to control the OnOff attribute. This allows you to toggle a parameter implemented by the device to be On or Off.</li></ul><pre>chip-device-ctrl &gt; zcl OnOff Off 135246 1 0</pre><blockquote>Note: All the above commands have help associated with them that can assist with the parameters.</blockquote><p>The above commands help you try the common functionality that is exposed by Matter on the ESP32.</p><h4>ESP32-C3 Support</h4><p>ESP32-C3 support is integrated in Matter. Please follow the READMEs to run the examples on ESP32-C3</p><p>Stay tuned for more updates on Matter and ESP32. Happy hacking!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=84164316c0e3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-esp-journal/announcing-matter-previously-chip-on-esp32-84164316c0e3">Announcing Matter (previously ‘CHIP’) on ESP32</a> was originally published in <a href="https://medium.com/the-esp-journal">The ESP Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Preview Release: NimBLE support in ESP-IDF]]></title>
            <link>https://medium.com/the-esp-journal/preview-release-nimble-support-in-esp-idf-a4d6daf9b954?source=rss-d9449153a291------2</link>
            <guid isPermaLink="false">https://medium.com/p/a4d6daf9b954</guid>
            <category><![CDATA[bluetooth]]></category>
            <category><![CDATA[iot]]></category>
            <category><![CDATA[esp32]]></category>
            <dc:creator><![CDATA[Hrishikesh Dhayagude]]></dc:creator>
            <pubDate>Wed, 20 Mar 2019 04:27:28 GMT</pubDate>
            <atom:updated>2019-03-20T04:27:28.111Z</atom:updated>
            <content:encoded><![CDATA[<p>ESP-IDF now supports Apache Mynewt NimBLE host stack which is ported for the ESP32 platform and FreeRTOS. NimBLE is an open-source Bluetooth Low Energy (BLE) or Bluetooth Smart stack (both host and controller) fully compliant with Bluetooth 5 specifications and with support for BLE Mesh. More details can be found here: <a href="https://github.com/apache/mynewt-nimble.">https://github.com/apache/mynewt-nimble.</a> NimBLE, being BLE only, is a footprint optimised stack and can be used in a variety of applications involving BLE.</p><p>The NimBLE preview release is made available on ESP-IDF Github: <a href="https://github.com/espressif/esp-idf/tree/feature/nimble-preview">https://github.com/espressif/esp-idf/tree/feature/nimble-preview</a></p><p>A few examples, ported from the NimBLE repository, can be found here: <a href="https://github.com/espressif/esp-idf/tree/feature/nimble-preview/examples/bluetooth/nimble">https://github.com/espressif/esp-idf/tree/feature/nimble-preview/examples/bluetooth/nimble</a></p><p>The porting layer is kept cleaner by maintaining all the existing APIs of NimBLE along with a single ESP-NimBLE API for initialisation, making it simpler for the application developers. The documentation of NimBLE APIs can be found at: <a href="https://mynewt.apache.org/latest/network/docs/index.html#ble-user-guide">https://mynewt.apache.org/latest/network/docs/index.html#ble-user-guide</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a4d6daf9b954" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-esp-journal/preview-release-nimble-support-in-esp-idf-a4d6daf9b954">Preview Release: NimBLE support in ESP-IDF</a> was originally published in <a href="https://medium.com/the-esp-journal">The ESP Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Embedding Voice into Devices with ESP32]]></title>
            <link>https://medium.com/the-esp-journal/embedding-voice-into-devices-with-esp32-107d9211633c?source=rss-d9449153a291------2</link>
            <guid isPermaLink="false">https://medium.com/p/107d9211633c</guid>
            <category><![CDATA[esp32]]></category>
            <category><![CDATA[iot]]></category>
            <category><![CDATA[dialogflow]]></category>
            <dc:creator><![CDATA[Hrishikesh Dhayagude]]></dc:creator>
            <pubDate>Mon, 11 Mar 2019 07:56:55 GMT</pubDate>
            <atom:updated>2019-03-13T02:59:14.428Z</atom:updated>
            <content:encoded><![CDATA[<p>ESP32 already supported being a fully functional <a href="https://github.com/espressif/esp-va-sdk/blob/master/README-Alexa.md">Alexa client</a>, a voice assistant.</p><p>ESP32 now also supports <a href="https://dialogflow.com/">Dialogflow</a>, a voice-enabled conversational interface from Google. It enables IoT users to include a natural language user interface in their devices.</p><p>The differences of Dialogflow w.r.t. voice assistants are</p><ul><li>a reduced complexity,</li><li>pay as you go pricing,</li><li>custom wake words, instead of having to use ‘Okay Google’ or ‘Alexa’</li><li>and no certification hassles, because hey, you aren’t integrating with Alexa or Google Assistant; you are building one of your own</li></ul><p>Unlike voice-assistants, Dialogflow let’s you configure every step of the conversation, and it won’t answer other trivia/questions like voice-assistants typically do. For example, a Dialogflow agent for a Laundry project will provide information only about the configurable parameters of the laundry (like state, temperature, wash cycle etc.)</p><p>This is now a part of Espressif’s Voice Assistant SDK and is available on github here: <a href="https://github.com/espressif/esp-va-sdk/blob/master/README-Dialogflow.md">https://github.com/espressif/esp-va-sdk</a>. To get started, see <a href="https://github.com/espressif/esp-va-sdk/blob/master/README-Dialogflow.md">this</a>.</p><p>The underlying technologies used by the Dialogflow implementation for VA SDK includes:</p><ul><li>gRPC</li><li>Google Protobufs</li><li>HTTP 2.0</li></ul><p>You can see a demo video of Dialogflow on ESP32 LyraT below:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FkyPt6Jd9dU0%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DkyPt6Jd9dU0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FkyPt6Jd9dU0%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/f46d07333355f6390904c0a486f0fdce/href">https://medium.com/media/f46d07333355f6390904c0a486f0fdce/href</a></iframe><p>Note that the current Dialogflow SDK does not yet include support for creating custom wake words. Conversations initiated with a tap-to-talk button are supported.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=107d9211633c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-esp-journal/embedding-voice-into-devices-with-esp32-107d9211633c">Embedding Voice into Devices with ESP32</a> was originally published in <a href="https://medium.com/the-esp-journal">The ESP Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>