asterism-for-domoticsdeprecated

Extensible dashboard platform for domotics. Made in NodeJS, React and Materialize CSS.

Usage no npm install needed!

<script type="module">
  import asterismForDomotics from 'https://cdn.skypack.dev/asterism-for-domotics';
</script>

README

asterism-logo

asterism-for-domotics is a Domotics oriented standalone software, based on asterism framework.

NOT cloud based (local & private service). Made in NodeJS & Material interface.


release date node version github downloads asterism dep version lib dep version

Available plugins:

asterism-plugin-zwave dep version

asterism-plugin-ipcam dep version

asterism-plugin-teleinfo dep version

asterism-plugin-ftt dep version

Development progression / Roadmap available here (asterism and plugins)


Prerequisites

  • A private server remaining ON to run the background application (Linux like), reachable in a protected network area only (public version with authentication will come later),
  • One or more clients to display and control the dashboard via a Chrome browser (tablet, computer, mobile phone...).
  • Server part is not compatible with Microsoft Windows OS. Web part is compatible with Google Chrome & Chromium only, >= 71.

Example to install on Raspberry Pi

  • Download and flash Raspbian Debian Buster minimal image on a >=8Go SD card.
  • Setup: OS, password, locales, network, IP, activate ssh, and expand rootfs partition to have sufficient space. sudo raspi-config
  • Setup your timezone (very important, and please note it down). tzselect
  • Install GIT. sudo apt-get update && sudo apt-get install git
  • Download nodeJS v12. wget https://nodejs.org/dist/v12.14.1/node-v12.14.1-linux-armv7l.tar.xz
  • Install nodeJS. sudo mkdir -p /usr/local/lib/nodejs && sudo tar -xJvf node-v12.14.1-linux-armv7l.tar.xz -C /usr/local/lib/nodejs
  • Add this line to ~/.profile: export PATH=/usr/local/lib/nodejs/node-v12.14.1-linux-armv7l/bin:$PATH

Plugins prerequisites

As this package uses plugins that need specific settings before installation (third part softs prerequisites), you need to complete these steps first of all:

  • Zwave open-zwave library prerequisites
  • The new 433MHz (ftt) library prerequisites: sudo apt-get install wiringpi
  • When using HTTPS mode, you need to let nodeJS access :80 and :443 ports: sudo setcap 'cap_net_bind_service=+ep' $(which node)

Quick install guide

git clone https://www.github.com/gxapplications/asterism-for-domotics.git

This will clone the project. You can modify your settings (used plugins) in the index.js if you want different plugins. Do it before setup step!

npm run setup

This will install without development/test dependencies (will use less disk space). This will install a lot of dependencies in about 5 to 15 minutes. A build is done just after (using webpack) to compile asterism and selected plugins (can take several minutes). And then a choice can be made: either to use local HTTP / local self signed HTTPS / full public HTTPS with your own domain name.

In the two first choices case, just launch the server to test it:

npm start

In the last choice case, we use Greenlock to generate SSL certificates, and then we need some extra configuration before to start:

npm start -- --staging

You can start it for test. You should use PM2 for production (for auto-restart, log management, ...) Server will start after setup automatically. But you can restart it directly with this.

Update guide

npm run update

Install on PM2

After playing setup process (npm run setup), you can use PM2 to have a serious production exploitation.

  • Install PM2 globally, from npm. Root privileges may be required:
npm install -g pm2
  • Optionally install PM2 log-rotate plugin:
pm2 install pm2-logrotate
  • Install and save PM2 ecosystem for asterism-for-domotics:
pm2 start pm2.config.js

This will automatically start asterism process.

  • Check installation:
pm2 ls
  • To auto-start PM2 at OS boot:
pm2 startup

And follow the instructions, then after launching asterism service, save its startup configuration using:

pm2 save
  • To start & stop asterism:
pm2 start asterism
pm2 stop asterism

For more details about PM2, see http://pm2.keymetrics.io/docs

Warning: asterism server is statefull: do NOT use multiple instances/cluster (no load balancing available)

Update it from PM2

pm2 pull asterism

This stops the service, updates it from Github, updates dependencies, build webpack files, and then restart the process. This can take several minutes! TODO : test if this line is done: post_update: ["npm run update"]


Troubleshooting

Allow a Raspberry Pi to use port 80 (without sudo at startup)

sudo setcap 'cap_net_bind_service=+ep' $(which node)

:copyright: 2017-2020 GXApplications. [ Roadmap/Milestones | License ]