M5Stack Dial - ESP32-S3 Smart Rotary Knob

I had no success with getting the external port working with either an am2320 temperature probe or a sx1509 port expander.
It would see the address of both devices when scanning the bus, but would not receive data from them and I am pretty sure you are right - there is too much blocking code being used for the display to get the timing right for the second bus.

Iā€™m using a SHTC3 temperature/humidity sensor and that is exactly what I see too - the device is discovered by the scan but then it wonā€™t communicate.

Yeah, the display blocks a lot, even with nothing being drawn it blocks. Ive not really looked into the component as to why, or how it could be improved just yet.

That said, im using an ld2410 presence sensor via the external port connection with no issues. But not i2c.

First of all, I wanna thank you for the amazing work you did with both the custom component and the config you did and published. It was a big help in getting my dial set up the way it is now.

I just noticed that you named it m4-dial everywhere and I was just curious as to why? isnā€™t it the M5-Dial? Just curious :))

Typoā€¦ and then it was way too much effort to fix :smile:

2 Likes

Iā€™ll take back what I said. I altered the display code so that its setup priority was LATE (so it doesnā€™t start until after the HA API is connected, which requires the WiFI which always takes a second or so) and I still saw errors with the i2c bus starting, so I donā€™t think itā€™s related. I was seeing the SHTC3 being correctly started about 10% of the time, so I suspect it was just one of those times that I saw before when I said it was related.

I took a look at the display code, and I think there are two main issues relating to blocking code with it - first in the setup, it blocks a few times for 100ms using delay() which needs replacing with callbacks and second the obvious problem with the display redraw taking a very long time.

However, defining a i2c bus on port B:

i2c:
  - id: bus_internal
    sda: GPIO11
    scl: GPIO12
    scan: false
  - id: bus_portb
    sda: GPIO2
    scl: GPIO1
    scan: false

appears to work reliably.

Theres probably some opportunity to improve the gc9a01 driver - since it can supposedly support DMA. But thats not something i have any experience doing.

But from what i can tell from the m5dial specs, port a should be the preferred port for the second i2c.
but good that Port b works.

I ordered a second one of these the other day, and it just arrived. Looks like they now include the little power plug and a tiny allen key in the package - or maybe in my excitement in getting the first batch I missed it and threw them away.

3 Likes

That connector and key were not there in mine either :slight_smile:

Good to see theyā€™re improving the experience. I had to purchase a connector from their store, and it came with a whole heap of other stuff I didnā€™t necessarily need.

Just wish the ports were standard plugs, and not the seed ones. Iā€™ve got a whole heap but they donā€™t actually fit.

Thanks @dgaust and @atomic10 for your suggestions !

My ESPHome M5StackDial groove well !

5 Likes

Note the perfect integration on BTicino 503 box, with 3D printed modelā€¦

Looks great

This is beautiful. Is there any chance someone with limited knowledge could get this working? I have a preschool and would love to control the classroom media and AC with it. We have 3 AC units and itā€™s a pain to control as you have to go to each unitā€™s control panel. Iā€™m hooking up the AC to HA in the next couple of weeks through a P1P2 module and would love one little dial to control it all.

Iā€™m great at following instructions, but I have no idea how it works underneath.

Even if not, this thread was a great read and well done to you all for getting this far!

I wouldnā€™t recommend taking this on as your first ESPhome project.

But if you have played with some ESPhome YAML configurations before, I suggest get it working one piece at a time - display the AC setpoint, display the current room temp, then make the AC setpoint adjustable with the dial, and build from there.

2 Likes

Thanks.
Iā€™ve ordered a dial and Iā€™m going to play around with it while I wait for the AC stuff to arrive.

Iā€™ve set up Bluetooth proxies, an earthquake sensor, a doorbell unit, and an NFC scanner using esp32s, but they were all really well documented, so it was just a case of copying and pasting or following instructions in VS. I have no idea what to do with a screen.

I have it and rushed to get the yaml on it. It works! I quickly removed it to make sure it didnā€™t start messing with things, but it showed up fine; there was just a notification about the device not being authorised to do service calls or something.

Can I just confirm that I need to go through the yaml and replace any entities with ones present in my HA instance? Or do I need to set things up on the HA side of things i.e set up automations from data coming from the dial entity?

If I just replace anything in entity_id with something relevant from my HA instance will it work?

Iā€™m eagerly awaiting a climate control section I can stealšŸ˜….

Hi, every one.

sorry in advance for my english.
i see the m5dial a month ago, and when i see it, i search information f itā€™s possible to plug it on esphome and home assistant.

I have naturally found this forum (thanks a lot for your work).

This allow me to work on own integration. I will reproduise the home assistant climate interface.
I actually have this :

I think is not bad :smiley: , for the moment itā€™s just a display (no interaction) but the process is in progress.
I will publish my code when i will have a functional knob climate :slight_smile:

6 Likes

Hello

Iā€™m trying to use the Yaml to configure the M5Stack rotatory knob with this yaml file Link over the HA on esphome GUI

But Iā€™m facing this issue:

image

Can you please help me in order to get this fixed ?

Thank you

The provided yaml files from dghast and myself are only examples of what we are using or testing on our systems, so they will have entities that are specific to our setups. It isnā€™t a ā€˜cut and pastā€™ yaml that will just work - you will need to change many items to make it function on your setup.

The fault you are getting is the HA api key that dghast has specified in his secrets yaml file.

api:
encryption:
key: !secret m4dialencryption

2 Likes