Ok…. Here you go…
Computer you can find here:
https://robosavvy.com/static/RoboSavvyPages/eBox/DMP_EBOX_catalogue_old-2011.pdf- I have the Xbox 43xx with VIA eden ULV 500MHz processor.
- I have 1G RAM
- And at this moment 8G CF card as “hard disk”
- Processor is 1W, total power consumption is more.
- This computer is no longer available. I bought in its 2008 for about 200euro (approx 200$)
Today I would go for a raspberry PI but that did not exist at that time.
For my home automation I literally did everything :
- roof mounted heatpipe system
- self plumbed the heating
- did all electricity
- made the PCB’s with electronics
- did all the control wiring in house
- and programmed the control program from scratch in C.
These days I would probably have adopted “home assistant” but that did not exist (or at least not generally) at that time.
I started with 2 protocols:
- x10 which is a Powerline protocol for light switches and is controlled via an usb enquiped gateway. The protocol is slow (1..2seconds) and unreliable but allows connection to lights without additional wiring. At that time wireless was still in its infancy.
https://www.uk-automation.co.uk/products/Marmitek-X10-CM15Pro-Computer-Interface-with-Transceiver_revpage-2/- 1wire protocol that uses a 1 wire serial cable that can connect multiple inputs, outputs and temperature sensors. The endpoints are simple “transistor style” components of about 2euro/$. They are accessed in about 0.2seconds and (as being hard wired) quite reliable. This is controlled by a usb adapter.
https://www.ibuttonshop.nl/ds9490r-usb-1-wire-adapter====
As an operating system I used Damn Small Linux (DSL) for reason:
- runs in RAM so even on a slow underpowered processor have decent speed
- runs in RAM so minimal amount of write actions that cause the flashdrive to wear and ultimately break down
The sad thing:
- when I installed it in 2008 DSL was maintained. But maintenance stopped at about that time. Sad… no upgrades
After all the hardware actions my dream had been to do some high level programming to develop controllers. I have a background in control technology so I was looking forward to explore variants.
How bad….
The usb gateways I was using had opensource sdk’s but these appeared to be very low quality. The 1wire components should be accessible in 0.2 seconds but reality was more like 5 seconds. So… at the end I found myself completely rewriting the usb interface software to the level of precisely timing the control of the usb endpoints all the way until bit-level. Ouch. But i survived
.
On the positive side: “at work I have much smoother discussion with our software engineers since than”.
Anyway…
- Program is completely written in C, There is a nice modularity:
- drivers/gateways to the components
- control algorithms
- process flow and reporting
- For gui i run an Apache server with php website
I survived at DSL with linux 2.4.31 until this spring.
During that time I once did recompile gcc for reason I did need libusb 1.0 while the included version was only at 0.1. That compile was a bit of nightmare as it took about 5 hours and was constantly running out of RAM. I had to juggle compile options severely to get it succeeding. All the time I was quite worried that i would get stuck.
The backup I had was a bit shaky. I never succeeded to have a “real reliable backup” because dsl uses a lot of mounts and symlinks that I not got to properly backup.
Over time I kept extending the application:
- got curtains integrated via the x10 interface where I soldered the buttons of the remote of the curtains to x10 switches.
- got energy reading with rs232 over usb interface
- got pv panel reading via http interface
- got EV charge station connecting via http interface
- got garden watering implemented with 1wire components
- got alarm integrated by connecting 1wire input to its relay output
And than I hit the hard limit.
1/ Internet moving to “all https”
2/ wishing to include a modern python program that is able to read my EV car diagnostics.
For those I would need a modern Linux.
For about a year I considered options.
Basically:
- either start all over on a raspberry pi running home assistant
- or get all on a modern Linux.
At the end I did choose the latter. I migrated to tiny core 15 which I really really love:
- it includes latest gcc and latest kernel so my board from 2008 is 100% up to date and extendable now.
- it has really small footprint
- runs in ram which makes it fast and does not wear the compact flash harddrive. I literally have only 1 ssd write per day (bulk saving the monitoring data of that day)
- the concept of mounting of compressed applications is amazing. The system remains extremely pristine. Customizations are very much concentrated in .filetool.lst, bootlocal.sh and syslinux.conf files. All files are “real non sym linked files” so can be very easily backed up with a compressed or non compressed copy command.
I had my lesson from the gcc recompile that had me worried whether “I would survive” so I prepared the full migration on a second “development workstation” being a hp510 thin client that I purchased for the whopping price of 10euro/$.
Biggest hurdle was to get a 1st version of tinycore running.
Strangely enough:
- getting a 1st pen drive with windows is well supported from the website.
- but getting a 1st pen drive from Linux is more tricky. Especially if that needs to come from a very old dsl kernel.
At the end I succeeded.
After having tinycore running on my “development workstation hp510” the transfer to the 500MHz board was relatively simple. I first tested the tiny core os by booting from usb.
Than removed the original compact flash and installed tinycore from USB on a fresh compact flash (keeping the original cf card such that I could always go back by simple hardware swap).
—- why not gone for fresh home assistant on raspberry pi?
A full migration would cost about a year of weekends to get all reprogrammed. I don’t want to do that.
The way I would do this would be to run home assistant on raspberry pi “at the side” for all modern connections and keep the old board for all legacy and simple make a data path between the 2 boards.
However…..
Home assistant needs about 4G of ram. That means it can only run on the bigger (more power consuming) raspberry pi’s. I basically “do not really like that”. I also wonder whether I would be able to run all in ram. If not, it will wear the ssd card. And as this project is clearly not caring about footprint… it’s unclear how that will develop in future.
So…
At some point I may try things… but at this moment I’m happy that I have modernized my low power, full ram running system.
Well… this is about it….