Personal tools

Data storage example

From PhotoVoltaic Logger new generation

Jump to: navigation, search

Default

As example we will store a temperature.

Parameter Value since
API key a10d3cca-370c-121e-b79c-2f0a58030a01 r1
Channel GUID 87fd-cc15-cb33-71a8-6b78-3855-4c11-a79e r1
Temperature 23.45 °C r1
  • We have to make a PUT request with JSON encoded body content: {"data":"<value>"} from a console with curl.
  • The API key must be send as a Header field named X-PVLng-key
  • Here only the measuring data is send, the timestamp will be used from server.

Interesting is the HTTP code returned and the response body for error analysis in case of HTTP code is not 200 or 201.

$ set $(curl --request PUT \
        –-write-out %{http_code} \
        --output /tmp/pvlng.curl \
        --header "X-PVLng-key: a10d3cca-370c-121e-b79c-2f0a58030a01" \
        --data-binary {"data":"23.45"} \
        http://your.domain.here/api/r4/data/87fd-cc15-cb33-71a8-6b78-3855-4c11-a79e.txt)

To get readable error messages back, request content type text/plain (triggered by file extension .txt).

Check the return code like this:

$ test $1 -eq 200 -o $1 -eq 201 || echo "Error ($1): $(</tmp/pvlng.curl)" && exit 1

With timestamp

If you run the command from a remote equipment and want to use its time, you can send it as well.

Parameter Value since
Timestamp Sat, 30 Aug 2014 22:11:11 GMT == 1409436671 r1
  • We have to make a PUT request with JSON encoded body content: {"data":"<value>","timestamp":"<timestamp>"}
$ set $(curl --request PUT \
        –-write-out %{http_code} \
        --output /tmp/pvlng.curl \
        --header "X-PVLng-key: a10d3cca-370c-121e-b79c-2f0a58030a01" \
        --data-binary {"data":"23.45","timestamp":"1409436671"} \
        http://your.domain.here/api/r4/data/87fd-cc15-cb33-71a8-6b78-3855-4c11-a79e.txt)