Fork me on GitHub

pimatic-unipi-evok by Marcus Wittig | github | npm

pimatic-unipi

Dependency Status npm version Build Status

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.

MIT

Plugin Config Options

pimatic-unipi-evok plugin config options
OptionDescriptionDefault
debug
boolean
Debug mode. Writes debug message to the pimatic log
false
url
string
URL of the Evok Web Server
timeout
number
Timeout in seconds for HTTP REST Requests, value range [5-86400]
10

Device Config Options

pimatic-probe device config schemas

UniPiRelay

UniPi Relay
OptionDescriptionDefault
circuit
string
The Relay circuit address (a number string between 1 and 8)

UniPiDigitalOutput

UniPi Digital Output
OptionDescriptionDefault
circuit
string
The Digital Output circuit id
"1"

UniPiAnalogOutput

UniPi Analog Output
OptionDescriptionDefault
circuit
string
The Analog Output circuit id
"1"

UniPiAnalogInput

UniPi Analog Input
OptionDescriptionDefault
circuit
string
The Analog Input circuit id
"1"

UniPiDigitalInput

UniPi Digital Input
OptionDescriptionDefault
circuit
string
The Digital Input circuit id
"1"

UniPiTemperature

UniPi Temperature Sensor
OptionDescriptionDefault
circuit
string
The sensor circuit address
pimatic-unipi-evok is written by Marcus Wittig