Custom Component: Smarter Kettle and Coffee

If you can get a shell on it, either through ssh or otherwise, it will have Python and you can run a script.

Or you can install Python on your desktop. You can Google how to do that.

Once you have a machine with python that you have access to, write to me.

I will share with you a script such that you will need to edit a text file on your machine to contain your credentials and run the script then be able to share with me the file that it generates.

So you will also need to be able to retrieve data from whichever machine you use

Well I have a NUC server running ubuntu where I have installed python 3.13 on Is this useful?

got SSH connection to it :slight_smile: and a remote desktop gui access if needed

Great.

git clone https://github.com/kbirger/smarter-kettle-client.git
cd smarter-kettle-client

You may want to start up a virtual env, optional but recommended

virtualenv .venv
# I forget, but believe to activate it on ubuntu:
./.venv/bin/activate

Install deps

pip install -r requirements.txt

Create a new file named “credentials” in the current directory. put your email on one line and password on the next line.

python -m discovery

It should generate a file named “report” in the current directory. Post that.

Like this?

https://yggdrasill.dk/report

Perfect. Thanks. I’ll get to it soon

1 Like

@Thrawn I’m having to do a bit of refactoring to support this. As I look at the output you sent me, some thing are unclear to me. It would be helpful if you could go through and document what you think certain things are.

For example:

    "brewed_keeping_warm": {
      "cups": 3,
      "ts": 1732081971
    },

What do you suppose this means?

I also see

    "coffee_soak_percentage": 0,

Which has no significance to me. Even more puzzling is this:

"coffee_soak_percentage_medium": [
      null,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0,
      0
    ],

I don’t see why this should have an array of 13 values.
There is also a _strong and _weak variant.
Any ideas? coffee_strength and coffee_strength_medium are similarly laid out.

I didn’t expect this device to be so different and to have so many obscure settings. I won’t be able to do much without having one, or without input from someone who does.

Please document as much as you can from that file by experimenting with the Smarter app on your phone. The coffee maker is the second device. You can run the script multiple times to see how values are changing when you do things in the app.

Additionally, please provide screenshots or videos of how the app looks and behaves. You could document some functionality you would like to see.

I’ll do my best

I’m not much of a coder/scripter so much of it does not make that much sense to me
Ill see if i can take a video to start with showing you the machine in th app :slight_smile:

I can tell you some of the features if that helps:
i has 3 different options to guess how much water is in it:
cups, ML and half full
Then I can chose how long to keep warm:
0-40 min
I can chose the strength of the brew:
Weak medium strong
I can chose where the coffe come from:
Bean of filter
Then I can pre heat which I believe is heating up the water before using it (I dont drink coffe myself):
1-5 min
Finally I can chose how many cups to make 2-12

again ill try to show a video soon.

Hope some of it is helpful?

This is likely helpful. I will have to review.

You don’t need to be a coder. You can just look at the data points under state and status and let me know what you think they might correlate to. Your guess is better than mine.

As for commands, those are simply commands that can be sent to the device to update state.

Alpha build available.

This isn’t a daily driver. It breaks some functionality, like services. That said, some coffee features should work. Please let me know, and do please show me a video

Thanks a million!! I was waiting for this for a long time!!! I’ll start the tests too, and report all behaviours :grin::heart:

So i prepared a good report here with all my first impressions, but for security reasons, this forum dont allow me to post more than one link or photo (im new)

So i created a PDF file with everything, including the link for the python report of my machine as well.

https://drive.google.com/file/d/1J9qL3hggx1RF-IVIAch9Z-gA9EIx98cS/view?usp=sharing

Ill continue my tests, thanks!!! :slight_smile:

Sorry, I left out the translations file, which is why you are seeing “None”. I pushed a new build.

It should also fix the switch issue you were having. It was not correctly mapping a default value (off) to the switch.

The reason is that there is not actually a flag explicitly for whether or not the coffee maker is currently brewing. Instead, there is a field “state”, which has values like “brewing” “cooling” “keeping warm”, “idle”.

For the kettle, I mapped “heating”, and “keeping warm” to “is_boiling”, because I think having a switch like this in the UI is helpful.

I have done likewise for the coffee maker. Maybe it makes sense, maybe it doesn’t :man_shrugging: . You can tell me.

And if you would like translations in your native language, feel free to provide me a file similar to “en.json” in the github repo for your native language. You may do so either by uploading it, or making a PR.

Can either of you run that script and try to help me figure out what values the API uses for different coffee strengths?

Basically, just change the strength selection and then the script. I need a report for each strength. It will be helpful if you name your files accordingly.

Note: the script doesn’t need to be run from home assistant machine. It can be run from any machine with python. I originally said to run it from hass host because one of you said you don’t have Python.

Also open to a discord session.

Sorry. Development has been slow because of holiday travel. Also because I decided to rewrite a bunch of the code to make it easier to support the coffee stuff.

Once we get all the features you want, I’ll fix the service (actions) support, and put out a beta.

The beta will be a daily driver build, but not fully tested. After I rewrite a bunch of tests, I will release a stable.

Thanks for working with me.

hey there! I just stumbled upon this project and it looks great! Is there any way this might be working with the Lidl Silvercrest Smart Wifi Water Kettle? This is the one, sorry I could only find this one: https://www.bol.com/nl/nl/p/silvercrest-kitchen-tools-waterkoker-smart-wifi-1-7-l-3000w/9300000170401265/

I created another script in this repo named device_debug. You can follow the same instructions as above, but there are some additional dependencies you can get from the requirements.txt file located in the device_debug subdirectory.

Make sure you have a credentials file, then run python -m device_debug.

It will prompt you to choose a network, then a device. It will then listen to that device, and log any state changes. When you press a key, it will terminate and save a log file.

Please use your native mobile app, and exercise any features and settings you would like the integration to support. Then send me some report logs along with a description of what you did in the app.

This will help me to know things like which values correspond to different brew strengths, etc.

Nope, sorry. Smarter uses really proprietary ways to communicate with their devices.

thank you for your reply! I will look further or perhaps buy the iKettle :slight_smile:

1 Like

This is great, what you have achieved so far, considering you don’t have a machine.

what I have noticed is there is 1 item in your control section that is missing, and that is the option for using Beans or a Filter.

On the display - on the front LCD it shows either as Bean or Filter (selected by a button) I have looked through your files and the only thing obvious is ‘Grinder enable’ so I can only conclude that before brewing this is set either true or false, and if true grinds the beans first before applying the water - otherwise it just applies the water.

Other observation is the strange ‘cup mode enable’ which was the other ‘off’ item in your list, I cant think what this would have been for, other than for perhaps putting a cup underneath but never got implemented. I have never seen this option mentioned anywhere

Keep up the great work

and thank you for your time spent on this

From my experience on the cattle, it is in the possible that there are options that don’t function. For instance on the kettle, there is a concept of Auto boil, and a regular boil. There are also settings listed as"custom".

I would try fiddling with all of the controls that you have, and seeing if any of them modify this setting. Same goes for grinder

Thank you, yes I have done that already - gone through all the options in the app but cannot get the bean/filter option to change using your options or even the cup mode to turn on/off
For your info this is how the LCD looks…
_______________________
| |
button | Start Weak | button
| |
button | Bean 2 Cups | button
|______________________|

Bean can change to Filter
Weak can change to Medium or Strong
Cups number changes (LCD display only from 4 to 12)
in app goes down to 2 and changes on LCD from 2 to 12

Once start is clicked display clears and then gives
_______________________
| ‘Preheating’ |
| |
button | clock icon 59s* Stop | button
|______________________|

only bottom 2 buttons active
pressing Left lower button then changes ‘Preheating’ to ‘Brewing’ and displays clock icon 3m*

(*numbers countdown)
pressing Stop cancels all