devhub is a RESTful service that abstracts the protocols:
to read out measurement devices. It
shell commands. Requests are POSTed via http in json
format. Measurement data is returned in json
format. devhub acts
as a stub and returns predefined responses. The
repository contains instructions to build a standalone version that
runs on BSD, Linux, MacOS and Windows. devhub can be configured to
use elasticsearch (els) as a log database.
Table of Contents
- devhub
- Features
- Data flow
- Code documentation
- Install instructions
- production endpoint
- special endpoints
- Next up
- Supported protocols:
UDP
TCP
VXI11
MODBUS
:ReadHoldingRegisters
:ReadInputRegisters
:ReadCoils
:ReadDiscreteInputs
:writeSingleRegister
EXECUTE
- endpoints:
/
(production)/echo
/version
/stub
first
last
rand
:Value: "IDN?"
or:Value: ["PR1?" "<ENQ>"]
- pre-processing
javascript
python3
clojure
- post-processing
javascript
python3
clojure
- Searchable logs (elasticsearch, kibana)
- linux, windows and macOS support
The devhub documentation is
build on push
events with github actions.
See install instructions.
For convenience set:
H="Content-Type: application/json"
URL=http://localhost:9009/
devhub allows the configuration of predefined responses depending on the POST
ed
TaskName
. These responses are stored in the resources/stub-response.edn
file.
The default configuration for the stub
endpoint is:
:stub {
:mode :rand
;; ...
}
Examples for stub endpoint are:
No TaskName
means :missing
is selected in resources/stub-response.edn
.
curl -H "$H" -d '{"Wait": 100 , "Repeat":10}' -X POST http://localhost:9009/stub --noproxy "*"
returns:
{
"req-id": "1654439253784",
"Repeat": 10,
"stub": true,
"_x": [
"MEAS 23.1 C",
"2e-3 Pa",
"DCR +1.98779E-4",
"MEAS 23.1 C",
"foo",
"MEAS 23.1 C",
"#<;;:_-",
"#<;;:_-",
"123",
"foo"
],
"Value": [
"no-value"
],
"_t_start": [
"1654439253784",
"1654439253885",
"1654439253985",
"1654439254086",
"1654439254186",
"1654439254287",
"1654439254387",
"1654439254488",
"1654439254588",
"1654439254688"
],
"Wait": 100,
"select": "missing",
"_t_stop": [
"1654439253784",
"1654439253885",
"1654439253985",
"1654439254086",
"1654439254186",
"1654439254287",
"1654439254387",
"1654439254488",
"1654439254588",
"1654439254689"
]
}
after 10x100ms=1s.
D = '{"TaskName":"IM540-read_out", "Wait":1 , "Repeat":10}'
curl -H "$H" -d "$D" -X POST http://localhost:9009/stub
Returns the current devhub version.
curl http://localhost:9009/version
## =>
## {"version":"0.6.375"}
whereby the last number gives the amount of commits on current branch.
You get your request echoed.
curl -H "$H" -d '{"TaskName": "echo-test"}' -X POST http://localhost:9009/echo
## =>
## {"TaskName": "echo-test"}
[clojure-interop/java.nio "1.0.5"]
- https://cljdoc.org/d/clojure-interop/java.nio/1.0.5
- overcome
SSL peer shut down incorrectly
error by:
export JAVA_TOOL_OPTIONS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2