Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
en:sw:02-apis:01-evok [2018/12/04 13:52] tomas_knot ↷ Page name changed from en:sw:02-sdks:02-evok to en:sw:02-sdks:01-evok |
en:sw:02-apis:01-evok [2020/03/10 08:48] jan_kozak |
||
---|---|---|---|
Line 1: | Line 1: | ||
======%hide Evok ====== | ======%hide Evok ====== | ||
+ | ~~NOTOC~~ | ||
+ | |||
{{ :en:sw:evok_1_.png?400&nolink |}} | {{ :en:sw:evok_1_.png?400&nolink |}} | ||
- | The EVOK is our Apache-licensed open-source application programming interface (API), serving for a remote access to our PLC units. It is a simple software to make the access to hardware as simple as possible without any extensive programming. | + | The EVOK is our Apache-licensed open-source application programming interface (API), serving for remote access to our PLC units. It is a simple software to make access to hardware as simple as possible without any extensive programming. |
- | The software can be downloaded via its [[https://github.com/UniPiTechnology/evok|GitHub repository]]. Here, the user can also find documentation, installation instructions and a technical manu | + | The software can be downloaded via its [[https://github.com/UniPiTechnology/evok|GitHub repository]]. Here, the user can also find documentation, installation instructions and a technical manual. |
- | al. | + | |
==== Basic features ==== | ==== Basic features ==== | ||
- | EVOK is equipped with six protocols (or unified methods) serving as a replacement of the need to write custom code - that means the user can use almost any programming language. The API itself then serves as a layer between the hardware and the EVOK web-based control interface. Resulting software is so easy to use, even an absolute beginner can use it. | + | EVOK is equipped with six protocols (or unified methods) serving as a replacement of the need to write custom code - that means the user can use almost any programming language. The API itself then serves as a layer between the hardware and the EVOK web-based control interface. The resulting software is so easy to use, even an absolute beginner can use it. |
- | EVOK gives the user an option to control basic operations via a simple web interface, such as switching I/O modules, monitoring the system state, carrying out measurements etc. For more complex operations (such as specific system / behaviour programming), the user has to use a suitable external application. Such an application would then use EVOK as a communication layer between the I/O modules and itself. | + | EVOK gives the user an option to control basic operations via a simple web interface, such as switching I/O modules, monitoring the system state, carrying out measurements etc. For more complex operations (such as specific system/behaviour programming), the user has to use a suitable external application. Such an application would then use EVOK as a communication layer between the I/O modules and itself. |
- | Support for [[en:sw:02-sdks:03-modbus-tcp|TCP-Modbus]] interface and [[en:sw:02-sdks:04-sysfs|SysFS]] is also included, along with a basic Wi-Fi functionality. | + | Support for [[en:sw:02-sdks:02-modbus-tcp|TCP-Modbus]] interface and [[en:sw:02-sdks:04-sysfs|SysFS]] is also included, along with a basic Wi-Fi functionality. |
{{:en:sw:02-evok:evokedited.png?400|Simplified EVOK scheme}} | {{:en:sw:02-evok:evokedited.png?400|Simplified EVOK scheme}} | ||
==== Protocols used ==== | ==== Protocols used ==== | ||
- | **REST** is a type of API design, which is based on endpoint operations in accordance with the HTTP specification. The WebForm interface provides native web-based access to our API, based on the same communication principle as plain HTML forms. | + | **REST** is a type of API design, which is based on endpoint operations under the HTTP specification. The WebForm interface provides native web-based access to our API, based on the same communication principle as plain HTML forms. |
- | **Bulk JSON** protocol is designed to send a series of commands at once, achieving much lower latency than using separate TCP connections. Without the use of this protocol, sending e.g. 20 commands -each with 25 millisecond latency- would take up to 0.5 s. That would make the device unsuitable for use in time-critical applications, such as for lighting switches. With the bulk protocol however, the user can send a large series of commands such as this, with total latency (for the example given) not exceeding 30 milliseconds. | + | **Bulk JSON** protocol is designed to send a series of commands at once, achieving much lower latency than using separate TCP connections. Without the use of this protocol, sending e.g. 20 commands -each with 25-millisecond latency- would take up to 0.5 s. That would make the device unsuitable for use in time-critical applications, such as for lighting switches. With the bulk protocol, however, the user can send a large series of commands such as this, with total latency (for the example given) not exceeding 30 milliseconds. |
- | **REST JSON** is very similar to REST WebForms. The difference is that it uses the JSON (JavaScript Object Notation) file format, which transmits attribute-value pairs, along with array certain array data types, in the form of JavaScripts data objects. This makes is much easier to process in JavaScript. | + | **REST JSON** is very similar to REST WebForms. The difference is that it uses the JSON (JavaScript Object Notation) file format, which transmits attribute-value pairs, along with array certain array data types, in the form of JavaScripts data objects. This makes it much easier to process in JavaScript. |
**SOAP** (Simple Object Access Protocol) is a protocol based on XML, which utilises a pre-defined access interface called WSDL, making it simpler to parse and allowing easier integration of EVOK into existing systems. | **SOAP** (Simple Object Access Protocol) is a protocol based on XML, which utilises a pre-defined access interface called WSDL, making it simpler to parse and allowing easier integration of EVOK into existing systems. | ||
Line 28: | Line 29: | ||
**WebSocket** is an independent communication protocol, which allows creating a full-duplex (i.e. two-way, simultaneous data transfer) communication over a standard TCP connection. It can be used in machine-to-user as well as machine-to-machine applications. | **WebSocket** is an independent communication protocol, which allows creating a full-duplex (i.e. two-way, simultaneous data transfer) communication over a standard TCP connection. It can be used in machine-to-user as well as machine-to-machine applications. | ||
- | **JSON-RPC** is a designation for protocol which uses JSON objects to remotely invoke scripting functions. This allows the integration of remote functions, without the need to create transport objects. | + | **JSON-RPC** is a designation for a protocol which uses JSON objects to remotely invoke scripting functions. This allows the integration of remote functions, without the need to create transport objects. |
==== Full EVOK technical scheme ==== | ==== Full EVOK technical scheme ==== |