As per the controller software, I would just like to say that Home Assistant (/r/homeassistant) is by far the most used one. It's also one of the most active open source projects on GitHub.
Home Automation
Home automation is the residential extension of building automation.
It is automation of the home, housework or household activity.
Home automation may include centralized control of lighting, HVAC (heating, ventilation and air conditioning), appliances, security locks of gates and doors and other systems, to provide improved convenience, comfort, energy efficiency and security.
Warning: Working with electricity can result in injury, property damage, or even death if it is not done properly. Please keep this in mind while assisting others. If you are not sure about what you are doing, hire a licensed professional.
Rules
- No abusive behaviour. This is a forum for friendly discussion; personal attacks will not be tolerated and you will be banned without warning.
- Referral/affiliate links are NOT ALLOWED!
- NO POLITICS! There are plenty of other communities to discuss them; this is not one.
- When posting project details must be included. Posting a video or image without detail will result in a removed post and may result in a ban.
- Crowdfunding links are not allowed.
- Reposts, low-effort content and karma farming may be removed at the discretion of the mods. Posters may be banned without warning.
I think the key things to focus on here will be understanding the fundamental technologies and architectures that are common in the space.
Some of the technologies that I would start with:
- Microservice Architecture
- Docker image design and building
- MQTT networking
- Zigbee and Zwave Protocols
- Fundamentals of Embedded Programming
- Learn a little C++ and C just so you can read examples and work from there.
- Learn how to think about working with minimal memory and compute resources
- Investigate ESP32 Based development boards.
- They are inexpensive and allow you to fail fast and cheap
The good new for you is that many of the major projects out there are written in python, so understanding and contributing will come quickly to you. One thing that I would recommend is to become aware of how professional development workflows can help you. Learn standards like PEP8, learn how to document your code with docstrings, learn branching, merging, pre-commit testing, unit testing, and how to maintain a good standard of quality. Each of these topics are not absolutely necessary, but they are incredibly valuable skill to develop as you are learning about HA topics.
As for hardware, you will have to eventually get some tools like a logic analyzer or an oscilloscope when you are serious. You can get a really cheap Saleae clone logic analyzer to start with. Getting an oscilloscope is often a major commitment to device development. You will want to buy one good enough that you can actually use it. That can be expensive.
If you want to design your own boards, you will need to both learn layout tools and the fundamentals of electrical design. A good book for electrical design is "The Art Of Electronics" This books is among the best I've read for actually communicating how circuits can be used and designed to suit your needs.
A common professional board layout software is Altium. I believe it has some student edition options if you still have a university email. Outside of that I think it is prohibitively expensive, so you may want to look for opensource alternatives.
Read the wiki. Its full of terms and info you can use as jump off points.