You’re welcome, probably a quirk due to my advanced age… ![]()
But indeed, it shows up more…on others; I sometimes happen to make them myself!
Here, for example, a risqué one:
You should never ask a woman to confirm whether she likes to make her tea in the morning — you can quickly go from a spelling mistake to a lapse in taste and sometimes to an actual mistake!
I’m leaving! ![]()
@Terdious, so I found 5 minutes to test tonight
I still have the issue saving the NAPlug, however there are no logs so I can’t give you more info
On my side I see part of it
Didn’t you change something in the Thermostat component? Because I use it every day and I tested many scenarios with @pierre-gilles
Here’s what it looks like on my dashboard when I use it on my Gladys in production.

I also tried modifying it with the same name you used and the display is correct
If I shorten the name on the dashboard of your integration, the component’s size remains the same.

Whereas if I shorten it on the thermostat of my Gladys in production we clearly see the component width adapt.

However this time, @Terdious, the setpoint change works! ![]()
Regarding the battery indicator, you modified the component and put an icon instead of the percentage value. Honestly I prefer the percentage value.

Will this change the behavior on the dashboard for all integrations? I don’t know if everyone will agree! If it’s to modify it, I’d prefer something like on the card.
![]()
Otherwise, apart from the problem saving the NAPlug, all data is reported correctly with the thermostat and I can control the temperature setpoint and I don’t have any errors in the logs.
Going forward, for a next PR for example, I could see a feature to edit the features like in zigbee2mqtt. Which would allow, for example, renaming and possibly changing the polling interval and selecting what we want to save in the DB.

Great work again!
Thanks @_Will_71 for these new tests.
Always interesting ^^ I’m struggling to reproduce. For the logs, normally there are some but targeted; could you start by looking at right-click / Inspect => Console tab
then Network, you should have something like this on ‹ discover ›
If you can copy/paste the object to me in a pm, or here after removing the home IDs and more if you want.
And see what the new request returns when you save. Also check the Console again. Thanks in advance
Indeed, I just updated the branch and it’s much better ^^ (because I hadn’t changed anything ^^) Change in the latest update? It was bad timing ^^ or maybe depends ^^
So no, not directly, I had tried to change the type ‹ SIGNAL.QUALITY › to ‹ DISPLAY_BY_FEATURE_TYPE › instead of ‹ SIGNAL › in ‹ DISPLAY_BY_FEATURE_CATEGORY › because I needed to add a ‹ SIGNAL.BINARY › for the ‹ Reachable › feature and of course it no longer made sense.
But I hadn’t noticed that ‹ SIGNAL.QUALITY › was an ‹ INTEGER ›, which renders all the 'INTEGER’s in this format => doesn’t match, thanks for the test. I’ll try something else.
The problem being that ‹ DISPLAY_BY_FEATURE_CATEGORY › has priority so all ‹ SIGNAL › types have the same representation. I’ll try to find a similar case.
That wasn’t the goal ^^
Actually I prefer that too ^^ But it can’t be part of this PR. I must not change anything else that would impact the rest in this PR. So well spotted @_Will_71 !!^^
Yes ^^ It’s planned ^^ I had done it in that one!! But in the end, it has to be as lightweight as possible. I think once it’s released, I’ll make several side by side!!
1.1) Support for valves (since related to PLUG / Thermostat)
1.2) Edit menu on devices
1.3) Settings menu in the integration (to edit the polling notably)
1.4) Expose non-compatible devices as suggested by @PhilippeMA
For this part it can’t be done on the devices, it will be in section 1.4) above. The entirety of device states is retrieved at each poll. Because Netatmo devices push their data on a cron. It depends on the device family. So, a minimum will be set.
Then I will integrate webhooks for those who have Gladys Plus. Already functional on my side (well, stopped since the new connection method), it’s instant and it works very well. Unfortunately Netatmo doesn’t do it for everything, and there will be a lot of work on that side.
Thanks again for the tests, if you can check the Network part for your PLUG, that would be great!!
Everything is fixed: Battery and temperature display
@_Will_71, based on your feedback about the network part, I’ll create a new image for you with logs all over Discover if needed.
@pierre-gilles quick question, would you mind if I make a modification in SignalQualityDeviceValue by adding:
if (deviceFeature.type === DEVICE_FEATURE_TYPES.SIGNAL.BINARY) {
return \u003cBinaryDeviceValue deviceFeature={deviceFeature} /\u003e;
}
I don’t see how to properly handle it in
SensorDeviceType without creating a special case that wouldn’t be great. The purpose of this type is to indicate whether the device is reachable in the room from the Netatmo API.
Edit: @_Will_71, for info I just reran the complete test (deleting the DB and recreating it from scratch, I really can’t reproduce it ^^). So if you don’t mind we’ll work on your installation to see what’s wrong. Do you have anything particular about your setup? How old is your PLUG?
Is this a way of saying whether the component is available or not?
We need to be sure of our choice on this point, because there are requests on this subject, and we’ll therefore need to handle the cases properly and avoid confusion with the signal strength.
Yes, that’s exactly it: to say whether the device is available or not:
Indeed, that’s why I prefer to ask the question. From my point of view it falls into that ‹ SIGNAL › category in the sense that it’s really a piece of data that will indicate a loss of signal or power, which results in a loss of signal. Knowing that the power loss cannot be indicated independently, the only thing the receiver can be sure of is that it has lost contact…
That could be a solution, which makes sense, I think.
If we’re all in agreement, let’s go for it.
@Terdious , I’ll try to make another attempt at noon if I have time.
Yes, no worries, don’t rush yourself too much either, no rush!! I’ll finish writing the tests in the meantime ^^
Cool to see lots of testers here ![]()
I’d prefer that your PR stays 100% Netatmo! We can make changes in the core in another PR
Focus focus focus otherwise it’s impossible to measure the impact of your PR and we’ll fall back into the pitfalls of other PRs that never got merged!
Yes yes ^^
But right now I need it to display this feature ^^ You were telling me to create different categories, but here I only need one type!! I removed all the categories to be created so as not to bloat the PR, precisely ^^
Do you mean you’d prefer that I don’t integrate the feature for the moment and that it be the subject of a very small PR?
In your case, yes!
I really prefer that this PR (pull request) be of ultra good quality and do the bare minimum required, rather than doing too much and getting scattered!
Actually it’s simple: if I see your PR only touches files in the netatmo folders, it’s relatively simple to review and I trust that it can’t have a negative impact on the rest of Gladys.
If it starts changing core/data model things, that’s a whole different impact and I have much less confidence, so it will take longer to merge and the review will be much more thorough.
Ok,
Ah no no, it’s never a hassle to make PRs even for 2 files, quite the opposite!
Look at most PRs on the repo — they touch a few lines/a few files, and generally it takes me 1 minute to review, 10 minutes to test, and in 20 minutes it’s merged ![]()
@Terdious, when I save I get error 422
Below is what I have in Discover
{
"name": "Home",
"external_id": "netatmo:**:**:**:**:**:**",
"selector": "netatmo:**:**:**:**:**:**",
"model": "NAPlug",
"service_id": "fc9006d9-505e-4008-b6a6-0e855591380c",
"should_poll": false,
"features": [
{
"name": "Last seen - Home",
"external_id": "netatmo:**:**:**:**:**:**:last_plug_seen",
"selector": "netatmo:**:**:**:**:**:**:last_plug_seen",
"category": "schedule",
"type": "time-day-hour",
"read_only": true,
"keep_history": true,
"has_feedback": false,
"min": 0,
"max": 43200000
},
{
"name": "Link RF quality - Home",
"external_id": "netatmo:**:**:**:**:**:**:rf_strength",
"selector": "netatmo:**:**:**:**:**:**:rf_strength",
"category": "signal",
"type": "integer",
"read_only": true,
"keep_history": true,
"has_feedback": false,
"min": 0,
"max": 100
},
{
"name": "Link Wifi quality - Home",
"external_id": "netatmo:**:**:**:**:**:**:16:wifi_strength",
"selector": "netatmo:**:**:**:**:**:**:16:wifi_strength",
"category": "signal",
"type": "integer",
"read_only": true,
"keep_history": true,
"has_feedback": false,
"min": 0,
"max": 100
},
{
"name": "Home connected boiler",
"external_id": "netatmo:**:**:**:**:**:**:16:plug_connected_boiler",
"selector": "netatmo:**:**:**:**:**:**:16:plug_connected_boiler",
"category": "switch",
"type": "binary",
"read_only": true,
"keep_history": true,
"has_feedback": false,
"min": 0,
"max": 1
},
{
"name": "Reachable (WiFi or Power) - Home",
"external_id": "netatmo:**:**:**:**:**:**:reachable",
"selector": "netatmo:**:**:**:**:**:**:reachable",
"category": "signal",
"type": "binary",
"read_only": true,
"keep_history": true,
"has_feedback": false,
"min": 0,
"max": 1
}
],
"params": [
{
"name": "modules_bridge_id",
"value": "[\\\"**:**:**:**:**:**\\\"]"
},
{
"name": "firmware_revision",
"value": 236
},
{
"name": "home_id",
"value": "*****************"
},
{
"name": "room_id"
},
{
"name": "room_name"
}
],
"deviceNetatmo": {
"id": "**:**:**:**:**:**",
"type": "NAPlug",
"firmware_revision": 236,
"rf_strength": 101,
"wifi_strength": 58,
"name": "Home",
"setup_date": 1506366782,
"modules_bridged": [
"**:**:**:**:**:**"
],
"_id": "**:**:**:**:**:**",
"firmware": 236,
"last_bilan": {
"y": 2023,
"m": 11
},
"last_setup": 1506366782,
"last_status_store": 1702900256,
"place": {
"city": "******",
"country": "FR",
"location": [
*********,
*********
],
"timezone": "Europe/Paris",
"altitude": 344,
"continent": "Europe",
"country_name": "France",
"street": "************",
"trust_location": true
},
"plug_connected_boiler": true,
"wifi_status": 56,
"station_name": "Home",
"udp_conn": true,
"last_plug_seen": 1702900256,
"home": "******************",
"room": {}
}
}
Spotted, I think. Your PLUG is not associated with a room in the Netatmo API. I’ll fix it!! And I won’t even be able to test, I tried to take it out of the room but it’s impossible and you can’t delete a room if a device is present ![]()
Thanks @_Will_71!!
Edit: Fix applied, I’m finishing my changes and I’ll let you know when it’s ready!
In fact I’ve had my thermostat since 2018 and it wasn’t necessary to provide a part for this product, only for the thermostat.
I checked and indeed it is listed among the unplaced products.
Indeed, I wouldn’t have had that error; I hadn’t thought of that ^^
New image is being built. Available in about an hour.
Hopefully that will work!
I’ll test tonight.
Ok pour le NAPlug je peux l’ajouter maintenant. Bravo. ![]()
It was indeed the problem with the part.
Here is what it looks like on my dashboard now
Ok for the battery but no improvement for the thermostat. The value is still truncated. If you haven’t changed anything then we’ll see later I think.













