TL;DR
I turned an old Raspberry Pi into a touchscreen dashboard for my house. It connects to Bosch Smart Home, shows data from the Huawei PV system, monitors room temperatures, and uses Swiss weather data to protect the shutters from hail and strong wind.
During the severe hailstorm of 28 August 2026, it received the warning and raised all the shutters automatically.
The project grew over quite a few evenings, with plenty of trial and error and a lot of help from Codex. I published the code on GitHub for anyone interested in how it works or in reusing parts of it.
Well, I was to lazy to create a proper slide for the API visualisation, so here is the FULLY AI-GENERATED TITLE IMAGE:

How it all started…
When I started renovating my house last year, I began thinking about a smart home solution. But as the project became more and more expensive during the planning phase, and after hearing from a few friends that a smart home could cost several thousand francs, I started to question the cost-benefit ratio.
When the electrical and heating installations began, I spent some of my spare time looking for a cost-effective solution that would allow me to “program” the real “brain” of the house myself. Since Bosch offered a fairly complete range of components, I decided to buy 22 light and shutter control units, five room thermostats, and a Smart Home Controller to serve as the central hub. I found them on sale on Amazon and paid around 1,200 Swiss francs in total. The decision to use the Bosch system was mainly based on the nice look of the thermostats. There are many different relays and smart home components on the market, so I cannot really judge them or provide a good comparison with other brands or systems.
So I dusted off my old Raspberry Pi 3, which should be my new “brain of the house” and control everything. I had originally planned to use it as a media server, but Netflix turned out to be the more convenient solution.
The concept
In March, while we were on a skiing holiday and taking a break from the house renovation, I already had all the components installed. I also knew that I could start another project: collecting data from the upcoming Huawei photovoltaic system. I thought, why not combine everything and create a touchscreen interface for the Raspberry Pi? It could show all the important information at a glance and also allow me to control a few things.
As I tried to stay away from my laptop during the holiday, I at least started drawing the user interface on my iPad.
The first sketch included controls for the lights, shutters, and presence simulation. It also showed the current solar production, battery level, household consumption, power fed into the grid, and the possibility to run the washing machine and/or tumble dryer directly with the power created from the photovoltaic system.
(Labeling in german — please note the awesome drawing of the electricity pylons on the bottom right (Einspeisung)) 😉

The data
Now we come to the main reason why this project deserves a place on a data blog: the data it uses.
Even though I do not have a direct comparison with other countries, I would say that Switzerland has a good amount of publicly available data across many different areas. One example is opendata.swiss, a joint project of the Swiss federal government, cantons, and municipalities that provides a central portal for open data. There are also many other APIs available for a wide range of purposes. But I was also surprised by what was possible with my PV and smart home systems.
BOSCH Smart Home
The Bosch Smart Home system could be connected locally through its API using a Python library. After registering the Raspberry Pi with the Smart Home Controller, it received a certificate and key for authentication. This allowed the application to read the status of the connected devices and control lights, shutters, presence simulation, and room temperatures without relying on a cloud service. As I started the implementation with some simple functions of my frist draft in mind like the triggering of a presence simulation and global light and shutter control, I stumbled on something else…
The weather data
Once the global shutter control was working, I thought: why not move the shutters automatically when certain weather conditions could damage them?
For hail, Switzerland already offers a service called “Hagelschutz – einfach automatisch”. Usually, you can purchase a small signal box that connects to the building’s shutter control. It raises the shutters when a hail warning is active and releases them again after the warning has passed.
For my project, I asked for direct API access instead, so I could integrate the warning signal into my own application. The API access and warning service are provided free of charge. The Raspberry Pi checks the API every two minutes and receives one of three states: no hail, a hail warning, or a test alarm. If a warning is active, the application tells the Bosch Smart Home Controller to raise all shutters. The current hail status is also shown on the display.
Additionally, I connected the application to the open data provided by MeteoSwiss. It retrieves the local wind forecast and checks the expected wind gusts for the next few hours. If they exceed a configured threshold, the shutters are raised as a precaution. The shutters can therefore react to hail and strong winds even when nobody is at home.
The PV data
The next step was to include data from the Huawei photovoltaic system. The same information was already available through the FusionSolar app, but I wanted to see it directly on the Raspberry Pi together with the smart home controls.
Using a Python library, the application connects to my FusionSolar account and retrieves the current solar production, household consumption, battery level, battery charging or discharging power, and the amount of electricity taken from or fed into the grid.
This data is refreshed regularly and displayed as a simple energy flow. It provides a quick overview of where the electricity is coming from and where it is going. Based on the current household consumption, the application also estimates whether larger appliances such as the washing machine or tumble dryer are running. It would also allow me to keep a history of the measurements troughout several years and (possibly) find out whether the system’s performance decreases more than expected over time.
The interface
Turning that initial sketch into a working interface for the small Raspberry Pi touchscreen took quite a bit of trial and error. There was also a lot of AI-assisted coding involved in getting the layout, proportions, colours, and controls into the right shape.
The final interface shows the most important information on a single screen, including the status of the connected services, current PV production, energy flows, battery level, wind and hail warnings, and the estimated status of larger appliances. It also provides direct controls for the lights, shutters, and presence simulation.
I was not trying to build a polished commercial interface. I simply wanted one screen that showed me everything without having to open several apps. What I really like is the log section in the top right corner to display current activity and stats.

Stay notified
Since the system runs automatically, I also wanted to know when something important happens or when one of the connected services is unavailable. For this, I added notifications through ntfy.
Setting it up is simple. You download the ntfy app on your phone and subscribe to the same topic that is configured on the Raspberry Pi. The application can then send a message when the shutters are raised because of hail or strong wind. It also sends a warning if one of the APIs cannot be reached. To avoid receiving the same error repeatedly, it only sends another notification after the connection has recovered and a new error occurs.
It is important not to include sensitive information in the topic name or notification messages. Unless the topic is protected by authentication, anyone who knows or guesses its name may be able to subscribe to it. A long and random topic name should therefore be used, or the topic should be protected with a username and password.
The “productive” test
The first real test came on 28 August 2026, when a severe hailstorm passed through my hometown.





Because my house is located on a hill, large amounts of water and hail came directly down the slope. The water forced open the shed door and entered through the window well, reaching the entrance area, garage, cellar, and laundry room. Trees and plants were heavily damaged, and the garden was covered with hail, branches, leaves, and fallen apples.
At almost the same time as I received the fire brigade alarm, my application notified me that the shutters had been raised automatically. That was the moment I knew the whole chain actually worked: the warning service, the Raspberry Pi, and finally the Bosch controller raising the shutters.

The storm affected large parts of Switzerland, with hailstones reaching up to five centimetres in diameter. More than 100,000 vehicles were damaged, and privately insured losses were estimated at almost one billion Swiss francs. Building damage covered by the cantonal building insurers was not included in that amount.
Cleaning up the house and garden took a lot of work (especially my friends and family ❤️), but this was minor compared with the losses suffered by local farmers. After an extended period of dry weather, the hail destroyed parts of their harvest within minutes. That was by far the worst consequence of the storm.
Conclusion
In the end, an old Raspberry Pi that had been collecting dust, a few hours of coding, and some assistance from Codex saved me at least the trouble of dealing with damaged shutters. They still look as good as they did on day one.
If you are interested in the code, I published it on GitHub with an AI-generated README. It is provided only as a reference to show how the project works and to help others reuse individual parts for their own projects. There is no warranty, support, or guarantee that the code will work correctly with your system. Use it at your own risk, especially when controlling physical devices such as lights and shutters.
Link: GitHub – ivsch/home_automate · GitHub
More functions and ideas
The GitHub repository also includes a small web page for displaying room temperatures. Its purpose is to identify rooms that are getting too warm and to help decide when it makes sense to open (or better when to close) the windows during hot periods.
I also built a small web scraper that checks whether my favourite beer is currently on sale. This part is just for fun and is not included in the public GitHub repository 😉
There are still a few ideas I would like to add:
- Open-window detection: A sudden temperature drop could indicate that a window has been left open for too long. The system could detect this and send a notification.
- PV maintenance: By comparing the long-term performance of the solar panels with the expected output, the system could identify an unusual decrease in production and suggest when cleaning or maintenance might be necessary.
The project will probably never be completely finished. There will always be another data source to connect or another small problem that could be automated.
Let me know your ideas to extend the repo!
And if you have any questions, feedback or improvement ideas, feel free to reach out to me!





























