pimatic-unipi-evok
v0.3.3
Published
Pimatic Plugin for UniPi boards and Neuron PLCs using Evok 2.0 - http://www.unipi.technology
Downloads
7
Readme
pimatic-unipi
Pimatic Plugin for the UniPi board based on the Evok UniPi API. The plugin has been tested with Evok 2.0 using a UniPi 1.1 board. It should also work UniPi Lite and Neuron boards. Note, Evok 1.0 is no longer supported.
Contributions
If you like this plugin, please consider ★ starring the project on github. Contributions to the project are welcome. You can simply fork the project and create a pull request with your contribution to start with.
Getting Started
To be able to use the plugin you need to install Evok 2.0 on the Raspberry Pi mounted on the UniPi board. Pimatic can either be installed on the same Raspberry Pi or on another host on the local network. Note, Evok 1.0 is also known to work, but will no longer be supported.
Plugin Configuration
You can load the plugin by editing your config.json
to include the following
in the plugins
section. You need to provide the URL of the Evok Web Server.
{
"plugin": "unipi-evok",
"url": "http://unipi.fritz.box"
}
The plugin has the following configuration properties:
| Property | Default | Type | Description | |:----------|:---------|:--------|:--------------------------------------------| | url | - | String | URL of the Evok Web Server | | debug | false | Boolean | Provide additional debug output if true | | timeout | 10 | Number | Timeout in seconds for HTTP REST Requests |
Device Configuration
As of pimatic version 0.9, devices can be added easily using the discovery function of the pimatic frontend. However, if you wish to add devices directly to the config file instead, snippets are provided for all device types.
Relay Device
The Relay Device is based on the PowerSwitch device class. You need to provide the circuit id as shown by Evok.
{
"id": "unipiRelay-1",
"class": "UniPiRelay",
"name": "Relay 1",
"circuit": "1"
}
The Relay Device has the following configuration properties:
| Property | Default | Type | Description | |:----------|:---------|:--------|:--------------------------------------------| | circuit | "1" | String | Circuit id as shown by Evok |
The Relay Device exhibits the following attributes:
| Property | Unit | Type | Acronym | Description | |:--------------|:------|:--------|:--------|:---------------------------------------| | state | - | Boolean | - | Switch State, true is on, false is off |
The following predicates and actions are supported:
- {device} is turned on|off
- switch {device} on|off
- toggle {device}
Digital Output Device (Neuron Boards)
The Digital Output Device is based on the PowerSwitch device class. You need to provide the circuit id as shown by Evok.
{
"id": "unipiRelay-1",
"class": "UniPiRelay",
"name": "Relay 1",
"circuit": "1"
}
The Digital Output Device has the following configuration properties:
| Property | Default | Type | Description | |:----------|:---------|:--------|:--------------------------------------------| | circuit | "1" | String | Circuit id as shown by Evok |
The Digital Output Device exhibits the following attributes:
| Property | Unit | Type | Acronym | Description | |:--------------|:------|:--------|:--------|:---------------------------------------| | state | - | Boolean | - | Switch State, true is on, false is off |
The following predicates and actions are supported:
- {device} is turned on|off
- switch {device} on|off
- toggle {device}
Digital Input Device
The Digital Input Device is based on the ContactSensor device class. You need to provide the circuit id as shown by Evok.
{
"id": "unipiDigitalInput-1",
"class": "UniPiDigitalInput",
"name": "Digital Input"
"circuit": "1"
}
The Digital Input Device has the following configuration properties:
| Property | Default | Type | Description | |:----------|:---------|:--------|:--------------------------------------------| | circuit | "1" | String | Circuit id as shown by Evok |
The following predicates are supported:
- {device} is opened|closed
Analog Input Device
The Analog Input Device is based on the Sensor Device device class. You need to provide the circuit id as shown by Evok.
{
"id": "unipiAnalogInput-1",
"class": "UniPiAnalogInput",
"name": "Analog Input",
"circuit": "2"
}
The Analog Input Device has the following configuration properties:
| Property | Default | Type | Description | |:----------|:---------|:--------|:--------------------------------------------| | circuit | "1" | String | Circuit id as shown by Evok |
The Analog Input Device exhibits the following attributes:
| Property | Unit | Type | Acronym | Description | |:--------------|:------|:--------|:--------|:---------------------------------| | inputVoltage | V | Number | U | Input Voltage |
The following predicates are supported:
- inputVoltage of {device} is equal to | is less than | is greater than {value}, more comparison operators are supported
Analog Output Device
The Analog Output Device is based on the DimmerActuator device class.
{
"id": "unipiAnalogOutput-1",
"class": "UniPiAnalogOutput",
"name": "Analog Output",
"circuit": "1"
}
The Analog Output Device has the following configuration properties:
| Property | Default | Type | Description | |:----------|:---------|:--------|:--------------------------------------------| | circuit | "1" | String | Circuit id as shown by Evok |
The Analog Output Device exhibits the following attributes:
| Property | Unit | Type | Acronym | Description | |:--------------|:------|:--------|:--------|:---------------------------------| | outputVoltage | V | Number | U | Output Voltage | | dimlevel | - | Number | - | 0-100% (Output Voltage Control) |
The following predicates and actions are supported:
- outputVoltage of {device} is equal to | is less than | is greater than {value}, more comparison operators are supported
- dim {device} to {Value}, where {Value} is 0-100
Temperature Device
The Temperature Device is based on the TemperatureSensor device class.
{
"id": "unipiTemperature-1",
"class": "UniPiTemperature",
"name": "Temperature",
"circuit": "2832ECD906000025"
}
The Temperature Device has the following configuration properties:
| Property | Default | Type | Description | |:----------|:---------|:--------|:--------------------------------------------| | circuit | "1" | String | Circuit id as shown by Evok |
The Temperature Device exhibits the following attributes:
| Property | Unit | Type | Acronym | Description | |:--------------|:------|:--------|:--------|:---------------------------------| | temperature | °C | Number | T | Temperature |
The following predicates are supported:
- temperature of {device} is equal to | is less than | is greater than {value}, more comparison operators are supported
Trouble Shooting
"Error: unable to get status for device circuit ... Internal Server Error (500)"
If you get this error occasionally, it most likely occurs because you have setup a pimatic device with a circuit id which no longer exist in your Evok configuration, e.g. a 1wire sensor which has been unplugged from the the board.
"TypeError: Buffer.alloc is not a function" during installation
Make sure, you have node version 4.5 or greater installed.
Acknowledgments
I would like to thank UniPi.technology for providing me with a UniPi 1.1 board for development. In particular, I would like to thank Tomáš Hora for his excellent support!
History
See Release History.
License
Copyright (c) 2015 - 2020, Marcus Wittig and contributors
All rights reserved.