petfeedd users, I am proud to announce the beta release of petfeedd 1.0. It’s been almost three years since the last release of petfeedd (version 0.2.2), and Version 1.0 marks a new start for this project.
I have been running the beta release on my feeders for the last week and I believe I have smashed all the major bugs.
First, because I am sure you are curious, a rundown of the new features of in Version 1.0:
- The entire application was completely rewritten in NodeJS.
- Configuration is stored in the database, entirely eliminating the need for editing config files.
- A new onboarding experience makes setting up the feeder a breeze.
- Completely redesigned web based user interface.
- Completely redesigned REST API exposes all functionality of the feeder.
- Adds support for multiple servos, MQTT, zeroconb/bonjour, buttons, and sounds.
- Adds support for raw devices (basically, power on to a pin, then power off).
- The Docker images now support multiple architectures from a single pull (arm32v6, arm32v7, arm64, and amd64).
How can I install/uprade to it?
Installing and upgrading it is as easy as:
docker pull peckrob/petfeedd:beta
And configure docker-compose.yaml
as follows:
version: '3'
services:
petfeedd:
privileged: true
image: peckrob/petfeedd:beta
restart: always
volumes:
- /etc/localtime:/etc/localtime
- /opt/petfeedd.db:/opt/petfeedd.db
- /etc/petfeedd.conf:/etc/petfeedd.conf
ports:
- 0.0.0.0:8080:8080
If you had a previous petfeedd.conf
file, petfeedd will automatically migrate
your settings from the config file to the database, so the transition should be
seamless.
For more detailed instructions, see:
Why did you rewrite petfeedd in Node?
To be completely honest, because I don’t really like Python that much. I find it to be a clunky, obtuse language with an annoyingly inconsistent syntax. And because of the Python 2/3 breaking changes, finding help for issues is a regular WTF of “is this a Python 2 or 3 solution.” Performance is fairly poor on many of these low-powered boards. The whole mess that is virtualenv/pipenv. There’s just a lot about it that I don’t really like.
The only reason I wrote the original petfeedd in Python is because, at the time, it had the best support for GPIO on the Raspberry Pi in a high-level lanugage. In the meantime, there is now better support for GPIO is other languages.
This is not to say I particularly like Javascript either. It has it’s own fair share of problems. But being that it is a language I work with regularly, I am at least aware of most of the pain points instead of having to stumble blindly into them. Being able to have the same language on the front end and back end is a real time saver. And, it has dramatically better performance.
I guess that’s a really long way of saying: because I wanted to. :)
What about the 0.2 version
I have deleted the code for the 0.2 version, as it is in the same repository as the new version, and I do not intend to continue to develop it further. However, I am leaving the docker images up for the time being if you want to continue using the 0.2 version. I will probably remove them at some point in the future, but I will give warning before I do.
docker pull peckrob/petfeedd-arm32v7
- Raspberry Pi 2/2B/3/3Bdocker pull peckrob/petfeedd-arm32v6
- Raspperry Pi/Zerodocker pull peckrob/petfeedd-amd64
- Intel x86
You are welcome to fork the repo and revert the deletes if you want to continue to use the Python code from source. But it should be with the clear understanding that doing so is entirely unsupported (like, I will delete tickets relating to it.)
Should I upgrade?
That is up to you! If petfeedd 0.2 is working for you and you don’t want or need any of the new features, there is no need for you to upgrade and you are free to keep using it. But all development going forward is on the new Node version.