Skip to content
Snippets Groups Projects
Select Git revision
  • 6019676661527fad9bf54b3f6d0f34a594c4aabe
  • master default protected
  • vxi
  • 0.16.467
  • 0.16.462
  • 0.16.460
  • 0.16.457
  • 0.16.455
  • 0.16.413
  • 0.16.0
  • 0.15.1
  • 0.15.0
  • 0.14.0
  • 0.13.0
14 results

devhub

  • Clone with SSH
  • Clone with HTTPS
  • Thomas Bock's avatar
    Thomas Bock authored
    60196766
    History

    devhub


    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

    Features

    • 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

    Data flow

    request-response

    Code documentation

    The devhub documentation is build on push events with github actions.

    Install instructions

    See install instructions.

    production endpoint

    special endpoints

    For convenience set:

    H="Content-Type: application/json"
    URL=http://localhost:9009/

    stub [POST /stub]

    devhub allows the configuration of predefined responses depending on the POSTed 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

    version

    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.

    echo

    You get your request echoed.

    curl -H "$H" -d '{"TaskName": "echo-test"}' -X POST http://localhost:9009/echo
    
    ## =>
    ## {"TaskName": "echo-test"}

    notes

    export JAVA_TOOL_OPTIONS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

    Next up