Are there any decent open source alternatives or should I be looking to go down the building route?
I am a coding newbie so would be a bit daunting!
Node-Red is probably your best bet
it’s functional with a lot of plugins available as well as relatively easy due to the “flow” workflowone other command mentioned Home Assistant but even among the Home Assistant community there are quite some people using Node-Red together with Home Assistant to achieve their goals
I’m actually migrating away from Node-Red in HomeAssistant.
Don’t get me wrong i love Node Red, but HomeAssistant’s automations are now capable enough to do about 90% of what I need around the house.
Now, if you’re automating like a large growroom and you have hundreds of lights and sprinkler valves to automate against temp and soil sensors…
if your goal is to automate your home (or lab, or work place) I also would highly recommend Home Assistant but I hesitated to recommend it anyone since OP didn’t really explained what they actually want to with it
i.e. if your goal is automate rss feeds and notifications than Home Assistant ist just completely overkill for this task
I would start with home assistants built in automations and scripts before diving into node-red. Node-red is great for complex automations, but if all you’re doing is turning on lights and stuff, just using HA is more than enough, and has a much easier learning curve, IMO.
I use n8n, it has node-based workflows with tons of integrations and even the ability to run Javascript for advanced data processing or logic. You can go way further than IFTTT or even Zapier.
The cloud-hosted version is expensive but it’s easy to self-host (self-hosting is free).
not open source, but source available
https://github.com/huginn/huginn
Are a few that I saw on the Awesome Self-hosted list
What are you using IFTTT for?
What are you looking to automate? Home Assistant does a lot of things that could have been done with IFTTT.
In all honesty nothing in particular, moreso that I want to explore what’s possible. I used IFTTT for things like switching WiFi on when my phone was in a specific location, saving emails with receipts/order confirmations to somewhere central like Google Drive (though trying to find a non-google alternative). I also liked the Pocket integration.
Cryptpad is a decent google workspace alternative. Nextcloud is a popular one, but I’ve always had some problems with it.
We have Nextcloud on our lan. Works fine for us.
I found that IFTTT has integrations for hardware and software that doesn’t always have a clear public API that can replace it. I would like to be proved wrong on this because I’m definitely using IFTTT and would love to replace it. But it’s pretty useful still.
I use huginn. Takes some work to get it setup and do what you want. But its completely selfhosted and really powerful and simpler than writing your own one off ad-hoc scripts. Ask me how I know that…
Honestly I do all my IoT stuff in plain code, it’s actually simpler IMO than trying to use a graphical functional block type interface like NodeRed. And it’s a good way for you to get into coding in a way that you can work with real systems in a fairly safe way.
Check out Python’s MQTT library, you can build an event driven MQTT handler pretty easily. You set a list of topics you want to subscribe to and then when a message arrives it will call the message handling function. You can check the topic/payload and act on it as you want, publish other messages or perform other operations.
I like distributed control systems myself where individual nodes subscribe to each other and communicate directly (through the MQTT broker) when possible, plus a couple Python scripts running on the broker system to coordinate operations that can’t be easily managed that way.
For example an “sundown” topic can be published by a light sensor in the evening, and then either individual lights can subscribe to it and respond, or a script subscribes and iterates through a list of all the lights that are supposed to be on and sends them a power on command. The first option works with custom built endpoints, the second works to integrate Tasmota or similar where several different node devices may exist with different command schema.