Description
thsq-agent
is a tool for running a Thingsquare gateway agent on a Linux machine such as a Raspberry Pi. The gateway agent sets up serial line IP, Ethernet, and WiFi connections on the Linux gateway.
Installation
Install the pm2 npm package first:
sudo npm install -g pm2
The install the agent:
sudo npm install -g thsq-agent
To use the agent with PPP, you may also need to install the PPP package:
sudo apt install ppp
To run the agent on a gateway, dnsmasq and packet forwarding is usually required. This is done by adding the following to /etc/rc.local
(and possibly update IF
with a different interface name):
IF=wlan0
iptables -t nat -A POSTROUTING -o $IF -j MASQUERADE
iptables -A FORWARD -i $IF -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ppp0 -o $IF -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
DNS masquerading is also needed:
sudo apt install dnsmasq
sudo -s
echo "interface=ppp0" >> /etc/dnsmasq.conf
Usage
To run the agent, start the following command:
sudo thsq-agent [options]
If the --autostart
option is provided, then press Ctrl-C and reboot the Pi.
Options:
-f <frontend>
: the Thingsquare frontend ID to connect the agent to.-b <backend>
: the Thingsquare backend server address to connect the agent to.--autostart
: register the agent in /etc/rc.local
so that it starts on the next boot.--reset
: resets a previously saved configuration.--ppp [tty regexp | disable]
: set up a PPP interface for directly connected serial port devices. The argument is a Javascript regular expression that should match the filename of the serial devices that the PPP server should listen on, excluding the /dev/
prefix. For example "ttyS*|ttyUSB*"
. If no argument is given, the default is ttyACM0
.--blecommands
: configure the agent to listen for encrypted Bluetooth commands to setup WiFi, which can be sent from a Thingsquare-compatible smartphone app.