wiki:nodered

Version 3 (modified by Ryan Erbstoesser, 9 months ago) (diff)

update demo

Node-RED

Node-RED can be used with the Gateworks SBCs.

Typically, Node-RED may actually run on a server machine and the Gateworks SBC acts as a client and talks back to the server. Or, Node-RED can be install on the Gateworks SBC itself.

Install Node-RED on Gateworks SBC

Doing the below commands will make the Gateworks SBC act as the 'server'

    sudo apt-get update
    sudo apt-get install mosquitto #if wanting to use the MQTT protocol to talk to client
    sudo apt-get install nodejs #beware Ubuntu default may be 10.19, and it would be better to use a newer version
    sudo apt-get install npm #get the node package manager
    sudo npm install -g --unsafe-perm node-red #install node-red using npm
    node-red

Once node-red is running, use a browser to open the node-red gui on port 1880.

Demo Setup: This demo takes an incoming MQTT message from a client and just prints it out in the debug screen. Use the MQTT input module connected to a debug module ti replicate what is shown in the picture below.

Create a Client on Gateworks SBC

    sudo apt-get update
    sudo apt-get install python #if wanting to use the MQTT protocol to talk to client
    sudo apt-get install nodejs #beware Ubuntu default may be 10.19, and it would be better to use a newer version

Then, create a python script (example below) to send MQTT messages from the client SBC to the server SBC.

Gateworks Python Script to send MQTT Messages

root@focal-venice:~# cat gateworks.py 
# Compatible with python 2.* version
import sys
import os.path
import json
import time
import random
import paho.mqtt.client as mqtt
from datetime import datetime

def callbackMessage(msg):
    if msg:
        print("\n--- Command Message Received ---")
        print(str(msg['ack']))
        print(str(msg['ackId']))
        print(str(msg['command']))
        print(str(msg['uniqueId']))

def callbackTwinMessage(msg):
    if msg:
        print("\n--- Twin Message Received ---")
        print(json.dumps(msg))

def main(argv):
 while True:
    try:
        env = "enter_evn_name_here"

        uniqueId = "enter_device_id_here_example_device1"
        cpId = "enter_company_id_here_from_avnet_portal"
        print("in loop")
        client = mqtt.Client("clientone")
        broker = "122.24.11.93"
        client.connect(broker) 
        client.subscribe("house/bulbs")
        client.publish("house/bulbs","OFF")
        print("done publishing")

    except Exception as ex:
        print(ex.message)
        sys.exit(0)
    time.sleep(10)


if __name__ == "__main__":
    main(sys.argv)

Attachments (2)

Download all attachments as: .zip