JSPM

  • Created
  • Published
  • Downloads 332
  • Score
    100M100P100Q96935F
  • License MIT

RESTful interface for ioBroker.

Package Exports

  • iobroker.simple-api
  • iobroker.simple-api/lib/simpleapi.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (iobroker.simple-api) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Logo ioBroker simple-api adapter

NPM version Downloads Tests

NPM

This is RESTFul interface to read the objects and states from ioBroker and to write/control the states over HTTP Get/Post requests.

Usage

Call in browser http://ipaddress:8087/help to get the help about API. The result is:

{
  "getPlainValue": "http://ipaddress:8087/getPlainValue/stateID",
  "get": "http://ipaddress:8087/get/stateID/?prettyPrint",
  "getBulk": "http://ipaddress:8087/getBulk/stateID1,stateID2/?prettyPrint",
  "set": "http://ipaddress:8087/set/stateID?value=1&prettyPrint",
  "toggle": "http://ipaddress:8087/toggle/stateID&prettyPrint",
  "setBulk": "http://ipaddress:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint",
  "objects": "http://ipaddress:8087/objects?pattern=system.adapter.admin.0*&prettyPrint",
  "objects": "http://ipaddress:8087/objects?pattern=system.adapter.admin.0*&type=adapter&prettyPrint",
  "states": "http://ipaddress:8087/states?pattern=system.adapter.admin.0*&prettyPrint"
}

getPlainValue

Call e.g.:

http://ipaddress:8087/getPlainValue/system.adapter.admin.0.alive

Result:

true

get

Call e.g.:

http://ipaddress:8087/get/system.adapter.admin.0.alive

Result:

{"val":true,"ack":true,"ts":1442432193,"from":"system.adapter.admin.0","lc":1442431190,"expire":23437,"_id":"system.adapter.admin.0.alive","type":"state","common":{"name":"admin.0.alive","type":"boolean","role":"indicator.state"},"native":{}}

or call e.g.:

http://ipaddress:8087/get/system.adapter.admin.0.alive?prettyPrint

Result:

{
  "val": true,
  "ack": true,
  "ts": 1442432238,
  "from": "system.adapter.admin.0",
  "lc": 1442431190,
  "expire": 28494,
  "_id": "system.adapter.admin.0.alive",
  "type": "state",
  "common": {
    "name": "admin.0.alive",
    "type": "boolean",
    "role": "indicator.state"
  },
  "native": {}
}

getBulk

get many states with one request

set

Call e.g.:

http://ipaddress:8087/set/javascript.0.test?value=1

Result:

{"id":"javascript.0.test","value":1}

or call e.g.:

http://ipaddress:8087/set/javascript.0.test?value=1&prettyPrint

Result:

{
  "id": "javascript.0.test",
  "value": 1
}

Of course the data point javascript.0.test must exist.

toggle

toggles value:
  • boolean: true => false, false => true
  • number without limits: x => 100-x
  • number with limits: x => max - (x - min)

setBulk

Set many states with one request. This request supports POST method too.
 

objects

states

help

Gives this output back

Install

node iobroker.js add simple-api

Usage

Assume, we have no security and the server runs on default port 8087.

For all queries the name or id of the state can be specified.

For every requiest that returns JSON you can set parameter prettyPrint to get the output in human readable form.

If authentication is enabled, two other fields are mandatory:

?user=admin&pass=iobroker

getPlainValue

Read state value as text. You can specify more ids divided by semicolon

http://ip:8087/getPlainValue/admin.0.memHeapTotal
   
  31.19
http://ip:8087/getPlainValue/admin.0.memHeapTotal, admin.0.memHeapUsed
  
  31.19
  17.52

get

Read state and object data of state as json. You can specify more ids divided by semicolon. If more than one ID requested, the JSON array will be returned.

http://localhost:8087/get/admin.0.memHeapTotal/?prettyPrint
  {
    "val": 31.19,
    "ack": true,
    "ts": 1423154619,
    "from": "system.adapter.admin.0",
    "lc": 1423153989,
    "_id": "system.adapter.admin.0.memHeapTotal",
    "type": "state",
    "common": {
      "name": "admin.0.memHeapTotal",
      "type": "number",
      "role": "indicator.state",
      "unit": "MB",
      "history": {
        "enabled": true,
        "changesOnly": true,
        "minLength": 480,
        "maxLength": 960,
        "retention": 604800,
        "debounce": 10000
      }
    },
    "native": {}
  }
http://ip:8087/get/admin.0.memHeapTotal,admin.0.memHeapUsed/?prettyPrint
  [
    {
      "val": 31.19,
      "ack": true,
      "ts": 1423154544,
      "from": "system.adapter.admin.0",
      "lc": 1423153989,
      "_id": "system.adapter.admin.0.memHeapTotal",
      "type": "state",
      "common": {
        "name": "admin.0.memHeapTotal",
        "type": "number",
        "role": "indicator.state",
        "unit": "MB",
        "history": {
          "enabled": true,
          "changesOnly": true,
          "minLength": 480,
          "maxLength": 960,
          "retention": 604800,
          "debounce": 10000
        }
      },
      "native": {}
    },
    {
      "val": 16.25,
      "ack": true,
      "ts": 1423154544,
      "from": "system.adapter.admin.0",
      "lc": 1423154544,
      "_id": "system.adapter.admin.0.memHeapUsed",
      "type": "state",
      "common": {
        "name": "admin.0.memHeapUsed",
        "type": "number",
        "role": "indicator.state",
        "unit": "MB",
        "history": {
          "enabled": true,
          "changesOnly": true,
          "minLength": 480,
          "maxLength": 960,
          "retention": 604800,
          "debounce": 10000
        }
      },
      "native": {}
    }
  ]

getBulk

Read the states of more IDs with timestamp. You can specify more ids divided by semicolon. Always the JSON array will be returned.

http://ip:8087/getBulk/admin.0.memHeapTotal,admin.0.memHeapUsed/?prettyPrint
  [
    {
      "val": 31.19,
      "ts": 1423154754
    },
    {
      "val": 15.6,
      "ts": 1423154754
    }
  ]

set

Write the states with specified IDs. You can specifiy wait option in milliseconds to wait for answer from driver.

http://ip:8087/set/hm-rpc.0.IEQ12345.LEVEL?value=1&prettyPrint
{
       "id": "hm-rpc.0.IEQ12345.LEVEL",
       "value": 1
     }
http://ip:8087/set/hm-rpc.0.IEQ12345.LEVEL?value=1&wait=5000&prettyPrint
{
       "val": 1,
       "ack": true,
       "ts": 1423155399,
       "from": "hm-rpc.0.IEQ12345.LEVEL",
       "lc": 1423155399
     }

If no answer will be recieved in specified time, the null value will be returned. In the first case the answer will be returned immediately and ack is false. In the second case ack is true. That means it was response from driver.

setBulk

  • write bulk of IDs in one request.
http://ip:8087/setBulk?hm-rpc.0.FEQ1234567:1.LEVEL=0.7&Anwesenheit=0&prettyPrint
  [
    {
      "id": "hm-rpc.0.FEQ1234567:1.LEVEL",
      "val": "0.7"
    },
    {
      "error": "error: datapoint \"Anwesenheit\" not found"
    }
  ]

You can send this request as POST too.

objects

Get the list of all objects for pattern. If no pattern specified all objects as JSON array will be returned.

http://ip:8087/objects?prettyPrint
  {
  "system.adapter.admin.0.uptime": {
    "_id": "system.adapter.admin.0.uptime",
    "type": "state",
    "common": {
      "name": "admin.0.uptime",
      "type": "number",
      "role": "indicator.state",
      "unit": "seconds"
    },
    "native": {}
  },
  "system.adapter.admin.0.memRss": {
    "_id": "system.adapter.admin.0.memRss",
    "type": "state",
    "common": {
      "name": "admin.0.memRss",
      "desc": "Resident set size",
      "type": "number",
      "role": "indicator.state",
      "unit": "MB",
      "history": {
        "enabled": true,
        "changesOnly": true,
        "minLength": 480,
        "maxLength": 960,
        "retention": 604800,
        "debounce": 10000
      }
    },
    "native": {}
  },
  ...

Get all control objects of adapter system.adapter.admin.0:

http://ip:8087/objects?pattern=system.adapter.admin.0*&prettyPrint
    {
    "system.adapter.admin.0.uptime": {
      "_id": "system.adapter.admin.0.uptime",
      "type": "state",
      "common": {
        "name": "admin.0.uptime",
        "type": "number",
        "role": "indicator.state",
        "unit": "seconds"
      },
      "native": {}
    },
    ...
    

states

Get the list of all states for pattern. If no pattern specified all states as JSON array will be returned.

http://ip:8087/states?prettyPrint
  {
    "system.adapter.admin.0.uptime": {
      "val": 32176,
      "ack": true,
      "ts": 1423156164,
      "from": "system.adapter.admin.0",
      "lc": 1423156164
    },
    "system.adapter.admin.0.memRss": {
      "val": 41.14,
      "ack": true,
      "ts": 1423156164,
      "from": "system.adapter.admin.0",
      "lc": 1423156119
    },
    "system.adapter.admin.0.memHeapTotal": {
      "val": 31.19,
      "ack": true,
      "ts": 1423156164,
      "from": "system.adapter.admin.0",
      "lc": 1423155084
    },
  ...

Get all control objects of adapter system.adapter.admin.0:

http://ip:8087/states?pattern=system.adapter.admin.0*&prettyPrint
    {
      "system.adapter.admin.0.uptime": {
        "val": 32161,
        "ack": true,
        "ts": 1423156149,
        "from": "system.adapter.admin.0",
        "lc": 1423156149
      },
      "system.adapter.admin.0.memRss": {
        "val": 41.14,
        "ack": true,
        "ts": 1423156149,
        "from": "system.adapter.admin.0",
        "lc": 1423156119
      },
      "system.adapter.admin.0.memHeapTotal": {
        "val": 31.19,
        "ack": true,
        "ts": 1423156149,
        "from": "system.adapter.admin.0",
        "lc": 1423155084
      },
      "system.adapter.admin.0.memHeapUsed": {
        "val": 19.07,
        "ack": true,
        "ts": 1423156149,
        "from": "system.adapter.admin.0",
        "lc": 1423156149
      },
      "system.adapter.admin.0.connected": {
        "val": true,
        "ack": true,
        "ts": 1423156149,
        "from": "system.adapter.admin.0",
        "lc": 1423128324,
        "expire": 28100
      },
      "system.adapter.admin.0.alive": {
        "val": true,
        "ack": true,
        "ts": 1423156149,
        "from": "system.adapter.admin.0",
        "lc": 1423128324,
        "expire": 28115
      }
    }

Changelog

1.3.0 (2016-08-30)

  • (bluefox) сompatible only with new admin

1.2.0 (2016-08-27)

  • (bluefox) support of letsencrypt certificates

1.1.1 (2016-07-06)

  • (bluefox) support of chained certificates

1.1.0 (2016-02-09)

  • (bluefox) fix toggle, objects, states, setBulk, POST
  • (bluefox) add tests

1.0.0 (2015-09-30)

  • (bluefox) stop adapter before update

0.1.2 (2015-06-28)

  • (bluefox) add description in readme.md
  • (bluefox) change "toggle" for boolean and numbers

0.1.1 (2015-06-28)

  • (bluefox) change setForeignState api
  • (bluefox) add type to io-package.json
  • (bluefox) enable run from "web"
  • (bluefox) add default user

0.1.0 (2015-06-10)

  • (bluefox) change setForeignState api
  • (bluefox) support of user permissions

0.0.4 (2015-03-11)

  • (bluefox) remove socket.io from file

0.0.3 (2015-02-13)

  • (bluefox) remove socket.io from dependencies

0.0.2 (2015-02-12)

  • (bluefox) enable be a part of "web"

0.0.1 (2015-02-06)

  • (bluefox) initial commit