Skip to content

Reference

DataNodes of type Variable was described in the basics section.

In the following, we describe the remaining dataNode types of Chalk'it.

Type
Variable
Python Script
JavaScript Script (client-side)
REST web-service
Generic text file reader
Generic binary file reader
CSV file reader
CSV file player
Geolocation
Clock
Delay
Memory
MQTT
WebSocket receive
WebSocket send

Python Script

It allows the evaluation of a Python script in a local runner (default runner) or in client-side using Pyodide. Executed Python in client-side code may use the librairies available for installation in the Project librairies main tab. For further information, please read the Client-side execution with Pyodide

Some examples:

JavaScript Script

Similar to Python Script-type dataNodes, it is possible to write JavaScript code referencing other dataNodes, and producing JSON output to the workspace.

JSON formula

Simple example :

REST web-services

The dataNode type REST Web-service is used to call functions exposed as REST web-services. Input arguments may come from Chalk'it workspaces (referenced using keyword dataNodes). The response is then evaluated in the workspace, if the call was successful.

Typically, the information required to write the dataNode comes from the web-service API documentation. It may use Swagger.

Parameters

URL

The URL of the HTTP request.

The following examples illustrate Chalk'it syntax for path and how to use code to modify query arguments passed in URL.

xProxy

xProxy concept was inspired by ThingProxy.

It allows to overcome web-browser CORS (Cross-Origin Resources issues) restrictions. As Chalk'it runs on a web-browser, it is subject to browser's CORS policy.

Please disable xProxy if you call a localhost or private network webservice.

Some examples

Simple GET

Simple POST

GET with arguments

  • webservice-get-args-js.xprjson: this example illustrates a GET call where arguments (custom path and query arguments) are defined using the urlAppend object in the body field.

GET with arguments from another dataNode

GET of a binary file

POST with arguments from another dataNode

Triggered POST

Triggered POST Example

CSV file reader

Reads a CSV file and translates its content to JSON, according to the value of ROW TO ARRAY property :

  • If set to true, each row of the CSV file will be placed into a JavaScript Array.

See example: csv-array.xprjson

  • Otherwise, if set to false, content is parsed as an array of JSON objects.

See example: csv-json.xprjson

The following CSV:

"lat","lng","CH4"
48.876684, 2.175765, 1.94
48.876684, 2.175765, 1.95
48.876684, 2.175765, 1.92
48.876705, 2.175806, 1.93
48.876705, 2.175806, 1.99

when ROW TO ARRAY is true, is translated to:

{
    "lat": [
        48.876684,
        48.876684,
        48.876684,
        48.876705,
        48.876705
    ],
    "lng": [
        2.175765,
        2.175765,
        2.175765,
        2.175806,
        2.175806
    ],
    "CH4": [
        1.94,
        1.95,
        1.92,
        1.93,
        1.99
    ]
}

otherwise, it is translated to:

[
  {
    lat: 48.876684,
    lng: 2.175765,
    CH4: 1.94,
  },
  {
    lat: 48.876684,
    lng: 2.175765,
    CH4: 1.95,
  },
  {
    lat: 48.876684,
    lng: 2.175765,
    CH4: 1.92,
  },
  {
    lat: 48.876705,
    lng: 2.175806,
    CH4: 1.93,
  },
  {
    lat: 48.876705,
    lng: 2.175806,
    CH4: 1.99,
  },
];

An example of table display of this CSV file is given here: csv-array-table-display.xprjson.

It combines a CSV file reader as well as a JavaScript Script using the Lodash library.

csv-array-table-display

CSV file player

Acts as a player of CSV file. Its behaviour depends on the TIME INCLUDED parameter:

  • If set to false, play starts from the first row. On each SAMPLING TIME, the current row is output in JSON format and the pointer moves to the next row. See example csv-player.xprjson.

  • Otherwise (i.e. TIME INCLUDED), the first row is considered as a time vector.

Delay

Applies a one-step delay to its input defined in the INPUT SIGNAL field.

On the first execution, its output is set to the JSON value defined in the INIT VALUE field.

Example with Clock and Delay : clock-and-delay.xprjson.

Memory

Gets the previous value of a dataNode defined in the selected value of the DATANODE ORIGIN combobox. Its name is automatically generated by adding the prefix _pastValue__.

On the first execution, its output is set to the JSON value defined in the INIT VALUE field.

This special dataNode exhibits a distinct behavior compared to other dataNodes, as it doesn't follow the typical data flow execution. Specifically, when its DATANODE ORIGIN is executed, the memory is initiated at the subsequent scheduler start (of the same disconnected graph).

With Memory dataNode, user can create counters for example, without adding real cycles in the graph.

See example: memory.xprjson.

In this example, the cycle between "counter" and "pastValue_counter" is a non-algebraic cycle, because of the special memory type.

non-algebraic cycle

Clock

Gets the value of the JavaScript clock from the web-browser which is running the Chalk'it app:

{
    "numeric_value": 1556898500713,
    "full_string_value": "03/05/2019 à 17:48:20",
    "date_string_value": "03/05/2019",
    "time_string_value": "17:48:20",
    "date_object": "2019-05-03T15:48:20.713Z"
}

Example with Clock and Delay : clock-and-delay.xprjson.

Geolocation

This dataNode gets the current geographical position of the device, using the GPS sensors if available.

For privacy reasons, authorization is requested from the user to report its position. It also requires Chalk'it to operate under the https protocole.

Geolocation Parameters

DataNode produces the following output.

Geolocation Preview

Its output value is updated automatically according to the device position and movement.

Example with Geolocation dataNode and Leaflet Maps widget which displays your location : osm-geojson-geolocation.xprjson .

WebSocket

These dataNodes offers support for the WebSocket protocol, which is supported by most web browsers to offert real-time data exchange capabilities. It provides full-duplex communication channels over a single TCP connection. WebSocket in Chalk'it is implemented as client. It needs to communicate with remote WebSocket server.

WebSocket receive

Acts as a WebSocket client receiver for Chalk'it.

WebSocket Receive Parameters

  • Remote IP address : The IP address or host name for your remote WebSocket sender.
  • Remote IP port : The port to connect to your WebSocket sender.
  • Initialization token : Keep to None for most applications.
  • None : nothing is sent to the web server during initialization of exchange.
  • xMOD : support to xMOD software. The token "ws_init" is sent once to the xMOD WebSocket server during initialisation of exchange.
  • Decoding options : decoding options applied on response data sent by your WebSocket sender.
options Description
JSON Received data are in JSON format
Int8Array Received data are an Array of integer 1 byte
Uint8Array Received data are an Array of unsigned integer 1 byte
Int16Array Received data are an Array of integer 16 bits
Uint16Array Received data are an Array of unsigned integer 16 bits
Int32Array Received data are an Array of integer 32 bits
Uint32Array Received data are an Array of unsigned integer 32 bits
Float32Array Received data are an Array of float 32 bits (IEEE 754 single precision)
Float64Array Received data are an Array of float 64 bits (IEEE 754 double precision)
ArrayBuffer2String Received data are an Javascript ArrayBuffer and transform to string inside Chalk'it

WebSocket send

Acts as a WebSocket client sender for Chalk'it.

Websocket Send Parameters

  • JSON/JAVASCRIPT INPUT : The data sent by this dataNode to the WebSocket receiver. Data are sent without any modification. In the following example, the dataNode reads the value of "Item" property from the "SelectedCmd" dataNode and send this value to the remote WebSocket receiver as a 32-bit float.

Example

Follow instructions below to first build a WebSockets test server.

npm install ws
  • Run the WebSockets server
node simpleWS.js
  • The server should be ready and display the following message:

server listening

  • Open the websocket-demo.xprjson example with Chalk'it.

  • Switch to View mode.

  • Test the communication with the server.

  • The server should display:

    server receiving

  • Chalk'it should display:

    Chalk'it receiving