Internet of Things/Node-RED: verschil tussen versies

Uit Lab
Naar navigatie springen Naar zoeken springen
Geen bewerkingssamenvatting
Regel 57: Regel 57:
         type: "credentials",
         type: "credentials",
         users: [{
         users: [{
             username: "eelco",
             username: "hans",
             password: "$2a$08$5acKiQ0JAh/PYu6SARDQGOQusZ0myS10PkbWg9jOLFw1qSes/uz1W",
             password: "$2a$08$5acKiQ0JAh/PYu6SARDQGOQusZ0myS10PkbWg9jOLFw1qSes/uz1W",
             permissions: "*"
             permissions: "*"

Versie van 26 sep 2017 09:22

Node-RED

Node-RED [1] is een omgeving om grafisch een Internet of Things/node.js server-configuratie te maken. Je kunt dit gebruiken voor IoT-toepassingen, maar ook voor meer klassieke websites en web-apps.

Met behulp van de standaard-verzameling nodes kun je al eenvoudige toepassingen maken. Een toepassing bestaan uit één of meer "flows": een netwerk van knopen en verbindingen, op één pagina (tab). Je kunt meerdere flows definiëren, op verschillende tabs.

In het bijzonder kun je je toepassing koppelen aan allerlei andere interfaces. Zo kun je bijvoorbeeld MQTT-boodschappen afhandelen, en deze in een database opslaan. In een andere flow kun je een http GET-request afhandelen, met een pagina met deze MQTT-gegevens als respons.

Het installeren van Node-RED in Cloud9 (c9.io)

  1. maak een Node.js workspace aan (via het dashboard: Create new workspace)
  2. installeer volgens de standaard-methode hierin Node-RED (in een "bash" terminal-venster, als shell-commando)
    1. sudo npm install -g --unsafe-perm node-red
  3. start Node-RED op met het commando:
    1. node-red
  4. je vindt het gebruikersinterface nu via de URL: workspacename-username-c9.io
    1. dit kun je ook vinden via het menu bovenin, links van "Run": Preview -> Preview running application
    2. dit is een publieke URL: je kunt dit via de browser op elke computer gebruiken
    3. (ook anderen kunnen dit gebruiken; met alle voor- en nadelen vandien)
  5. je stopt de server door middel van ^C (control-C) in hetzelfde terminal-venster.

Een eigen nodered-configuratie (settings.js)

We hebben een aantal aanpassingen nodig in de settings, onder andere voor het beveiligen van het user interface. Hiervoor gebruiken we een lokale versie van het settings-bestand.

  1. Kopieer het default settings-bestand naar je eigen workspace:
    1. cp $HOME/.node-red/settings.js .
  2. Start nu NodeRed met de lokale settings:
    1. node-red -s settings.js
  3. Controleer of NodeRed werkt, via de Preview
  4. Stop de server met ^C.

Voor het starten van NodeRed gebruik je dan voortaan: node-red -s settings.js

Beveiligen van het interface

Via het NodeRed interface kun je je eigen server inrichten. Maar, als je dit interface niet beveiligt, kunnen anderen dat ook. Je kunt je NodeRed-interface eenvoudig beveiligen. Zie ook: https://nodered.org/docs/security.html#usernamepassword-based-authentication

  1. Installeer node-red-admin, met het volgende commando:
    1. npm install -g node-red-admin
  2. Maak de hashcode voor het wachtwoord waarmee je nodered wilt beveiligen:
    1. node-red-admin hash-pw
  3. Pas je eigen settings.js aan, met de c9-editor (klik op settings.js in de linker kolom).
    1. zoek het gedeelte dat begint met adminAuth: {; dit staat nog als commentaar
    2. verwijder voor dit gedeelte (t/m bijbehorende }) de commentaar-//
    3. verander admin in je eigen naam
    4. verander de hash-code voor het wachtwoord door de hashcode van je eigen wachtwoord.
    5. bewaar het bestand.
  4. Start node-red op (node-red -s settings.js), en ga naar de Preview.
    1. als het goed is kom je nu in een inlog-pagina
    2. voer je naam en wachtwoord (niet de hashcode!) in.

Voorbeeld van een beveiligingsdeel:

   // Securing Node-RED
    // -----------------
    // To password protect the Node-RED editor and admin API, the following
    // property can be used. See http://nodered.org/docs/security.html for details.
    adminAuth: {
        type: "credentials",
        users: [{
            username: "hans",
            password: "$2a$08$5acKiQ0JAh/PYu6SARDQGOQusZ0myS10PkbWg9jOLFw1qSes/uz1W",
            permissions: "*"
        }]
    },

Tutorial: first flow

Je kunt een tutorial voor node-red vinden op: http://nodered.org/docs/getting-started/first-flow.html

Een eenvoudige chat-toepassing

Koppelen aan MQTT

Koppelen aan Twitter (enz.)