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 [2020/01/23 15:28] avsetula |
en:sw:02-apis:01-evok [2020/05/11 10:35] avsetula |
||
---|---|---|---|
Line 4: | Line 4: | ||
{{ :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:02-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. | ||
Line 19: | Line 18: | ||
{{: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 30: | 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 ===== |
{{:en:sw:02-evok:neuron_diagram.png?direct&400|}} | {{:en:sw:02-evok:neuron_diagram.png?direct&400|}} | ||
~~NOCACHE~~ | ~~NOCACHE~~ |