VSCP heartbeat handler
Project description
send-mqtt-heartbeat and send-vscp-heartbeat
Two scripts that help to send VSCP heartbeats from remote machines. One version is for sending VSCP heartbeats over MQTT and the other for sending VSCP heartbeats over the tcp/ip link protocol.
Installation
You can either download the scripts from this repository (https://github.com/grodansparadis/vscp-python-send-heartbeat) or install them from the package manager. If you download from the repository you need to install the dependencies yourself.
The far easiest eay is to install with pip. The only thing needed to install the pyhon package is the following:
pip3 install vscp-python-send-heartbeat
best is to install in a virtual environment. Use the following command to create a virtual environment:
mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
the do the install of the package as described above.
After install you can use bot scripts, send-vscp-heartbeat.py and send-mqtt-heartbeat.py, from the command line. Info on how to configure the scripts for your needs are below.
send-mqtt-heartbeat
Send VSCP heartbeat to a MQTT broker (typically used in a cron job)
Usage
./send-mqtt-heartbeat.py --broker=host -n --topic="/vscp" [--guid=""]
This will send a json formatted heartbeat event to the selected MQTT broker. You can set zone and subzone and also data byte zero content.
If a guid is not specified a GUID will be constructed from the machines MAC address. See the specification for more information on this.
The default topic is "vscp/{xguid}/{xclass}/{xtype}" where {xguid} is replaced with the actual GUID and {xclass} is replaced with the VSCP class and {xtype} is replaced with the actual VSCP type.
The -n says that username and password should be fetched from the .netrc file. See Use .netrc below.
Short parameter | Long parameter | Description |
---|---|---|
-h | --help | Show help text |
-v | --verbose | Print output also to screen. |
-c | --config | Path to configuration file (--config="some path"). |
-b | --broker | Broker to connect to (--broker="demo.vscp.org"). |
-p | --port | Port on broker to connect to (--port=1883). |
-u | --user | Username to use as credentials (--user=admin). |
-P | --password | Password to use as credentials (--password=secret). |
-g | --guid | GUID to use for event (--guid=FF:FF:FF:FF:FF:FF:FF:FE:60:A4:4C:E7:76:5A:00:00). |
-t | --topic | Topic to publish heartbeat on (-topic=the_fabulous_topic). |
-0 | --byte0 | Set optional byte 0 (--byte0=11). |
-z | --zone | Set zone (--zone=22). |
-s | --subzone | Set subzone (--subzone=33). |
Example
./send-mqtt-heartbeat.py --broker=test.mosquitto.org -n -v -t="/vscp/FF:FF:FF:FF:FF:FF:FF:FE:60:A4:4C:E7:76:5A:00:00/20/9"
will send a VSCP heartbeat event to the MQTT mosquitto test broker using the specified topic.
Example
./send-mqtt-heartbeat.py -v -c"./config.ini"
will send a VSCP heartbeat event to the broker specified in the configuration file.
Typically used in a cron job.
* * * * * root cd /root;./send_mqtt heartbeat.py -n
send-vscp-heartbeat
Send VSCP heartbeat to a VSCP daemon or send (typically used in a cron job)
Usage
./send-vscp-heartbeat.py --server=host -n [--guid=""]
This will send a heartbeat event to the selected VSCP sever. You can set zone and subzone and also data byte zero content.
If a guid is not specified a GUID will be constructed from the machines MAC address. See the specification for more information on this.
The -n says that username and password should be fetched from the .netrc file. See Use .netrc below.
Short parameter | Long parameter | Description |
---|---|---|
-h | --help | Show help text |
-v | --verbose | Print output also to screen. |
-c | --config | Path to configuration file (--config="some path"). |
-b | --server | Server to connect to (--server="demo.vscp.org"). |
-p | --port | Port on broker to connect to (--port=1883). |
-u | --user | Username to use as credentials (--user=admin). |
-P | --password | Password to use as credentials (--password=secret). |
-g | --guid | GUID to use for event (--guid=FF:FF:FF:FF:FF:FF:FF:FE:60:A4:4C:E7:76:5A:00:00). |
-0 | --byte0 | Set optional byte 0 (--byte0=11). |
-z | --zone | Set zone (--zone=22). |
-s | --subzone | Set subzone (--subzone=33). |
Example
./send-vscp-heartbeat.py --broker=test.mosquitto.org -n -v -t="/vscp/FF:FF:FF:FF:FF:FF:FF:FE:60:A4:4C:E7:76:5A:00:00/20/9"
will send a VSCP heartbeat event to the MQTT mosquitto test broker using the specified topic.
Example
./send-vscp-heartbeat.py -v -c"./config.ini"
will send a VSCP heartbeat event to the host specified in the configuration file.
Typically used in a cron job.
Use .netrc
The switch -n or --netrc says that username and password should be fetched from the .netrc file in the executing user's home directory. This file should only be readable by the owner no one else. The format is
machine host1
login user1
password pass1
machine host2
login user2
password pass2
which also can be written as
machine host1 login user1 password pass1
machine host2 login user2 password pass2
The command line argument
´´´ --broker=host
or
--server=host ´´´
select the entry (can also be given as -bhost).
This is the secure way to use the script not exposing any credentials. Another alternative is to store this information in the configuration file and set proper access rights for this file. The insecure way is to enter the credentials on the command line which even if supported is not secure.
Configuration file format
A typical configuration file have the following content. The content should be selfexlpratory.
# Configuration file example for send_mqtt_heartbeat.py and send_vscp_heartbeat.py
[GENERAL]
# Show info when the script is eceuted
bVerbose = True
# GUID to use for heartbeat event
# If empty MAC address will be used to construct GUID
guid=
# Optional byte zero to use for heartbeat event
byte0=0
# Zone to use for heartbeat event
zone=80
# Subzone to use for heartbeat event
subzone=0
[VSCP]
# The VSCP daemon to connect to.
# If .netrc is used this should be the machine name.
host = vscp
# (comment out if using .netrc)
user = vscp
# (comment out if using .netrc)
password = secret
[MQTT]
# MQTT host address
host=mqtt
# MQTT host port
port=1883
# MQTT username (comment out if using .netrc)
user=vscp
# MQTT password (comment out if using .netrc)
password=secret
# Topics for VSCP JSON event publishing
topic_temperature=vscp/{xguid}/{xclass}/{xtype}
This file is part of the VSCP project (https://www.vscp.org)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file vscp_python_send_heartbeat-1.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: vscp_python_send_heartbeat-1.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2dfdf26ba2a0bcc91ad80606c5ebbb8672d5e8efbbeb8a6384c9a119b548aa82 |
|
MD5 | 2ec00d83c1366ee29e72c5315a5bae30 |
|
BLAKE2b-256 | 3030dcbbd08c05f62dbfbc449f3ac476fc33093e861bcf2b377dc6957e643df0 |