I have published a test version of the app that fixes the LED issue with firmware version 3.1.2, Button + | Homey
Hi Adrian, how does that work as I dont seem to be able to select a device and create a “clean” configuration. If I select a different device and go to “configurations->display” then I see the same configs as the one I opened before. Changes are also applied to all button+ devices.
I need to have room-specific device-configs (like thermostat, music, lighting, etc).
[edit]
oh I think I get it, you have
Displays configs (display specific?)
| - Page configs (pages to ‘walk through’ using button navigations?)
|- Page elements (elements/viewports on the 'page')
Wow, this works perfect
It does take a bit of lateral thinking to work out how to use the app. That is basically due to the options available in the Homey GUI.
A device has a pretty limited array of features for the GUI, but that’s also what makes Homey easy to use in most cases, because it creates a simple consistent interface.
The app settings uses a web page approach, so just about any custom GUI can be created.
The bit that takes some getting your head around in this app is how the two are tied together to make it a very flexible system.
Also, the Button+ itself has evolved over time, so I had to weave in the new features while maintaining backward compatibility as much as possible.
The early firmware didn’t have any page support, so the Homey app provided that via Flows, giving you the ability to switch to a different configuration on a button press. Since that was added to later firmware and switching configurations then required the Button+ to restart, I had to provide the different approach in the configurations.
I understand but it works pretty straigh forward though.
@Adrian_Rockall Is it possible to place a SVG via mqtt topic in the display?
It seems I only can place Value, Unit and label. I cant find a SVG placeholder in the Display config. Would also be helpfull if this can be done using the Homey ‘variables’ as source to create a ‘digital twin’ (like global weather info of today, tomorrow, etc).
As the ability to display svg files is new to the Button+ I have only enabled that via a Flow command. So you can create a Flow that sends an svg using a Then card. That can use the svg text pasted into the card or a variable. Once the svg is displayed, it remains on the display until you send another one or blank text to remove it.
hi Adrian,
thank you for your reply. Question remains how to create a SVG “viewport” in a display page. Or is that created/inserted dynamicly by the flowcard?
More support for the svg images is on my to-do list.
New test version adds more support for SVG images.
The Button Configuration now has space to enter the raw SVG code for the On and Off states. The image overrides the value as the button displays don’t seem to support both at the same tme.
The Display configuration as space for one SVG image, however, if you configure a display item as a variable and the contents of the variable starts with ‘<svg’ then it assumes it will be an image. That means you could change the image by updating the variable.
hi Adrian,
thanks for the update and your time to get the integration again a step forward.
For the SVGs in the display module, does it require a new firmware? I tried this before on 3.1.2-V2 but it just displayed the SVG text.
In addition, When I select a Honey"volume" item (%) then it always seems to display 0..1.0% because the Homey value for % is between 0.0 and 1.0. There’s no ‘scaling’ option to get it to 0.. 100% on the display.
Best regards
It requires firmware version 3.1.2 on the Button+.
if you tried it on the release version of the app then it would just display the text as it didn’t know about the SVG option. The test version detects the <svg in the text string and sends it to the svg topic instead of the text topic.
Hi @Adrian_Rockall ,
I’ve updated the Button+ App to the latest test version and the panels version is 3.1.2 (factory released).
In Homey now see the element option “SVG” and I pasted this code into the SVG field:
<svg viewBox="0 0 50 50"><path d="M49 1v48H1V1h48M50 0H0v50h50V0h0Z"></path><ellipse cx="30.58" cy="19.57" rx="7.88" ry="8.04" fill="#ff0" stroke="#ffe927" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"></ellipse><path d="M30.58 1.89v3.22M30.58 34.03v3.22M18.3 7.07l2.25 2.28M40.6 29.79l2.25 2.28M13.23 19.57h3.16M44.76 19.57h3.16M18.3 32.07l2.25-2.28M40.6 9.35l2.25-2.28" fill="none" stroke="#ffe927" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"></path><path d="M37.49 30.26h-2.63c-2.3-7.52-11.4-12.03-20.32-10.09C5.62 22.11.25 29.77 2.55 37.28c1.91 6.21 8.55 10.54 16.17 10.54h18.77c5.76 0 10.42-3.93 10.42-8.78s-4.67-8.78-10.42-8.78h-.01Z" fill="#fff" stroke="#dfdfdf" stroke-miterlimit="10" stroke-width="3"></path></svg>
I Also created a Text Variable “Weather.today” in Homey, filled with the same SVG code, and made the relation between the Button+ page element to the Variable.
It does not appear on the display.
The SVG data field in the Homey App-Display configuration seems not to be not retained (after apply, close and reopening its empty).
I also ended up with an unresponsive and inaccessible display.
Config making the Button plus device ‘crash’. Even the ‘config’ button does not respond.
{
"core": {
"deviceid": "btn_91832c",
"location": "Room 1",
"autobackup": true,
"brightness": 100,
"color": 16765791,
"wallledscolor": 0,
"statusbar": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/btn_91832c/brightness/large",
"payload": "",
"eventtype": 24
},
{
"brokerid": "mosquito",
"topic": "buttonplus/btn_91832c/brightness/mini",
"payload": "",
"eventtype": 25
},
{
"brokerid": "mosquito",
"topic": "buttonplus/btn_91832c/brightness/led",
"payload": "",
"eventtype": 27
}
]
},
"buttons": [
{
"leds": [
{
"frontwall": "front",
"onrgb": 0,
"topics": []
},
{
"frontwall": "wall",
"onrgb": 0,
"topics": []
}
],
"page": 0,
"position": 7,
"label": "",
"toplabel": "",
"topics": [],
"longdelay": 75,
"longrepeat": 50
},
{
"leds": [
{
"frontwall": "front",
"onrgb": 0,
"topics": []
},
{
"frontwall": "wall",
"onrgb": 0,
"topics": []
}
],
"page": 0,
"position": 8,
"label": "",
"toplabel": "",
"topics": [],
"longdelay": 75,
"longrepeat": 50
}
],
"displayitems": [
{
"align": 1,
"x": 0,
"y": 79,
"fontsize": 2,
"width": 30,
"label": "Today",
"unit": "",
"round": 0,
"page": 0,
"boxtype": 1,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/de2e18c5-6a4e-49d3-97d5-09f3c1b3c365/time",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 29,
"y": 79,
"fontsize": 2,
"width": 60,
"label": "",
"unit": "",
"round": 0,
"page": 0,
"boxtype": 1,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/de2e18c5-6a4e-49d3-97d5-09f3c1b3c365/date",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 0,
"y": 0,
"fontsize": 5,
"width": 51,
"label": "Keuken",
"unit": "C",
"round": 1,
"page": 1,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/keuken/sensor/sens1",
"eventtype": "15",
"payload": ""
}
]
},
{
"align": 1,
"x": 69,
"y": 0,
"fontsize": 2,
"width": 30,
"label": "Buiten",
"unit": "C",
"round": 1,
"page": 1,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/0981df3b-76fe-447f-a7f1-945e5a88061b/measure_temperature.outdoor",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 69,
"y": 30,
"fontsize": 2,
"width": 30,
"label": "Vloer",
"unit": "C",
"round": 1,
"page": 1,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/86a19995-794e-4ffe-89e2-7d0c98db87f9/measure_temperature",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 70,
"y": 60,
"fontsize": 2,
"width": 30,
"label": "Setpoint",
"unit": "C",
"round": 1,
"page": 1,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/86a19995-794e-4ffe-89e2-7d0c98db87f9/target_temperature",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 0,
"y": 0,
"fontsize": 2,
"width": 65,
"label": "playing",
"unit": "",
"round": 0,
"page": 2,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/b42f5e2c-6a34-4560-9d9b-f0e764f0d210/speaker_track",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 70,
"y": 0,
"fontsize": 2,
"width": 25,
"label": "Volume",
"unit": "%",
"round": 2,
"page": 2,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/_variable_/aca53c74-2489-4a37-a8c5-c6d301ddc84e",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 30,
"y": 0,
"fontsize": 2,
"width": 30,
"label": "Solar",
"unit": "W",
"round": -1,
"page": 3,
"boxtype": 1,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/1999e993-5c3f-4957-832d-a9ba203b4a1b/measure_power.pv",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 0,
"y": 20,
"fontsize": 2,
"width": 30,
"label": "Grid",
"unit": "W",
"round": 0,
"page": 3,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/1999e993-5c3f-4957-832d-a9ba203b4a1b/measure_power",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 60,
"y": 20,
"fontsize": 2,
"width": 30,
"label": "Verbruik",
"unit": "W",
"round": -1,
"page": 3,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/1999e993-5c3f-4957-832d-a9ba203b4a1b/measure_power.consumption",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 30,
"y": 30,
"fontsize": 3,
"width": 10,
"label": "",
"unit": "",
"round": 0,
"page": 3,
"boxtype": 1,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/btn_91832c/none/3/30/30",
"eventtype": 15,
"payload": ""
}
]
},
{
"align": 1,
"x": 30,
"y": 40,
"fontsize": 2,
"width": 30,
"label": "",
"unit": "W",
"round": 0,
"page": 3,
"boxtype": 0,
"topics": [
{
"brokerid": "mosquito",
"topic": "buttonplus/1999e993-5c3f-4957-832d-a9ba203b4a1b/measure_power.battery",
"eventtype": 15,
"payload": ""
}
]
}
],
"brokers": [
{
"brokerid": "mosquito",
"url": "mqtt://192.168.3.90",
"port": 1883,
"wsport": null,
"username": "",
"password": "",
"defaultschema": true
}
],
"sensors": [
{
"sensorid": "sens1",
"type": 1,
"interval": 10,
"topics": []
}
]
}
And it wont connect to the broker now (Disconnected).
It looks like your configuration is missing a section that defines the hardware. I sent it to my panel and it caused it me a few problems.
Could you do a factory reset on the panel so that it show the Button+ information in the display and the Like button. Then re-apply the Homey configuration once you have joined it to your network.
Basically, Homey fetches the configuration from the display panel and then modifies the bits it needs to, so if the Info section was missing it doesn’t add it back. By doing the factory reset, the info section will be regenerated and then when Homey fetches the configuration it will keep it.
Hi Adrian,
I did give the panel a couple of factory resets. But the factory reset is not entirely a factory reset, as it retains certain configs like SSID instead of presenting itself with the factory default StationID. It was not the solution, didnt fix it.
In the end I got it fixed. I first thought it was a mis-config in “page3” (from Homey App). But I think I finally resolved it by (locally) changing the config in the device WEBui, where I removed “page3” and re-applied the config there, after then the issue was resolved.
I’m not sure how I got in that nowhere-land. The app generates timeouts if the devices are not reachable. Or is this an uncovered scenario for the hardware-info retrieval?
Best regarfs,
Where did you get your SVG files from?
Can you try some files from the Button+ web site to see if they work just to see if it is struggling with the files?




