OWFS with hub support for Node-Red

I’ve built my home automation system based on Node-Red (as mentioned in Flexible home automation system) and I am using 1-wire sensors for humidity, temperature and to measure the daylight level.

Initially I used the Node-Red “node-red-contrib-owfs” package to communicate with my 1-wire server but I have multiple 1-wire hubs and the package simply does not support having an hierarchy of sensors so I created a my own node to resolve this – noreowfs.

Use the UI of the 1-wire server to find the attribute that you want to read and simply add to the configuration of the node and the value will be available in the output of the node.

17cdec26-a68e-11e5-88ac-f7002d8c994b

Advertisements

Flexible home automation system

I have, for a number of years, tried a number of different home automation solutions but I’ve not been completely satisfied with any of them due to either lack of features, too difficult to oversee or too proprietary…For years I used SwitchKing and I’ve also tried Domoticz and looked into other options such as OpenHAB but I’ve been frustrated with either the UI, only running on Windows or too much and too complex.. So I decided to base my own Home Automation-setup on Node-Red instead as it very simple to use and extend if necessary and there is a vast amount of additional nodes one can use in your own setup.

However, Node-Red is, by default, a non-stateful event engine which means that if I was to implement my turning on/off lights rules it would have to include a large amount of message flows and I would have to be using complex custom coding to share information between the flows. E.g. I would like to implement the following rules:

  • Turn on the light switch if:
    • It is dark outside and the time of day < 23:00
    • It is dark outside and the TV is on (i.e. even if the time is above 23:00)
    • It is dark outside and there is movement in the house (e.g. someone wants to go to the bathroom during the night)
  • Otherwise turn it off

To implement all of the above is quite complex if just using the standard nodes in Node-Red as it does not keep the state – e.g. turn off only if there is no valid rule. So I decided to implement e number of nodes to ease the process of defining these rules and to take action (turn off/on).

Screen Shot 2016-03-30 at 15.45.06

Example of a few rules and filters

I’ve been running it now for a number of months and I am happy with the result. It is simple to add new datasources/sensors and to create new rules and flows if necessary.

I’m running it on a Raspberry Pi 2 with a rfxtrx433 transceiver but can also be used with a Tellstick (but I haven’t tested it though)

Take a look at the demo: http://goo.gl/T6Ag9P

And if you want to try it out it is available in NPM for download: https://www.npmjs.com/package/norelite

IBM Verse with standalone Sametime client

I’ve written a small little Greasemonkey snippet to be used with IBM Verse with the standalone IBM Sametime client. Install Tampermonkey for Chrome or Greasemonkey for Firefox/Safari and install the user script to get it running..

After you’ve installed the browser plugins simply click on the “RAW” button on the gist page to install the script.

https://gist.github.com/nidayand/767796526ce4ae7af0c3

 

Simplify3D and OctoPrint

 

I’ve just purchased a license for S3D and I’m starting to learn it/configure it for my Velleman k8200 printer. I’ve been running Slic3r previously and that slicing tool has a great integration to OctoPrint and I’ve not found anyone that has proposed a simple way to send the gcode output from S3D to OctoPrint so I’ve solved it fairly easily by simply issuing a curl command.

Go to Edit Process Settings and select the Scripts tab and enter the following statement

curl -H "X-Api-Key: 185A556C8F684E20AAB85F2D867F2791" -F "select=false" -F "print=false" -F "file=@[output_filepath]" "http://192.168.2.197/api/files/local"
  • Change to your own API-key
  • Modify the URL (and if you want to save it to your sdcard change the URL to …/api/files/sdcard)
  • If you want the uploaded file to become selected upon upload change select=false to select=true
  • If you want it to start printing upon upload change print=false to print=true

Screen Shot 2016-02-29 at 20.38.08