Deployed ae10d35 with MkDocs version: 1.2.3
| @@ -1,158 +0,0 @@ | |||||||
| --- |  | ||||||
| summary: Documentation site of Python Eledio library |  | ||||||
| authors: |  | ||||||
|     - Richard Kubicek |  | ||||||
| date: 2019-09-27 |  | ||||||
| --- |  | ||||||
| # Description of API for python-eledio library |  | ||||||
| This description allow to you easly write your own python script. |  | ||||||
|  |  | ||||||
| This script you can use for control of your Eledio devices. This sript you can upload to your [__Eledio Gateway__](https://www.eledio.com/en/hardware/) and control your gateways and your [__Eledio Extendres__](https://www.eledio.com/en/hardware/) which you want control from gateway. |  | ||||||
|  |  | ||||||
| This library is preinstalled in your [Eledio Gateway](https://www.eledio.com/en/hardware/).  You can start programming, after unpacking. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Necessary parts |  | ||||||
| Each major drive script in python for your application must be made up with some necessary parts. |  | ||||||
|  |  | ||||||
| * [device description in _json_ file](#device-description-in-json-file) |  | ||||||
|  |  | ||||||
| * [import of library components](#import-of-library-components) |  | ||||||
|  |  | ||||||
| * [load of _json_ file](#load-of-json-file) |  | ||||||
|  |  | ||||||
| ### Device description in _json_ file |  | ||||||
| * this file is for hardware abstraction layer to linux |  | ||||||
| * you are able to used your own names of identifiers, eg. you can rename _Temperature_ to _OutsideTemperature_ |  | ||||||
| * every name of identifiers must consist only with English alphabet characters, without spaces and other punctuation |  | ||||||
| * if you need some reaclculation of readout values, you can use prepared values __a__ and __b__, with are parts of equation __y=a*x+b__, where __x__ is readout value from device, __y__ is value which you obtain in python script, eg. if you need temeperature in degree of fahrenheit, you can place __a=1.8__ and __b=32__ (which corresponds of equation ```T[°F] = T[°C]*1.8 + 32```) |  | ||||||
| #### Example of _json_ file, can be named as  config.json |  | ||||||
| ``` |  | ||||||
| { |  | ||||||
|   "devices": { |  | ||||||
|     "unit-40": { |  | ||||||
|       "bus": "i2c", |  | ||||||
|       "address": 40, |  | ||||||
|       "datacrc": 9718, |  | ||||||
|       "compilermagic": 4006394777 |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "identifiers": { |  | ||||||
|     "gatewayHWEvent": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "sdp", |  | ||||||
|       "offset": 0, |  | ||||||
|       "entrysize": 2, |  | ||||||
|       "depth": 0, |  | ||||||
|       "type": 1, |  | ||||||
|       "prescaler": 0, |  | ||||||
|       "a": 1, |  | ||||||
|       "b": 0, |  | ||||||
|       "datatype": "u16", |  | ||||||
|       "srq": 0 |  | ||||||
|     }, |  | ||||||
|     "gatewayHWState": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "sdp", |  | ||||||
|       "offset": 2, |  | ||||||
|       "entrysize": 2, |  | ||||||
|       "depth": 0, |  | ||||||
|       "type": 1, |  | ||||||
|       "prescaler": 0, |  | ||||||
|       "a": 1, |  | ||||||
|       "b": 0, |  | ||||||
|       "datatype": "u16" |  | ||||||
|     }, |  | ||||||
|     "RE1Voltage": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "sdp", |  | ||||||
|       "offset": 4, |  | ||||||
|       "entrysize": 2, |  | ||||||
|       "depth": 0, |  | ||||||
|       "type": 1, |  | ||||||
|       "prescaler": 0, |  | ||||||
|       "a": 0.01, |  | ||||||
|       "b": 0, |  | ||||||
|       "datatype": "s16" |  | ||||||
|     }, |  | ||||||
|     "Temperature": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "sdp", |  | ||||||
|       "offset": 6, |  | ||||||
|       "entrysize": 2, |  | ||||||
|       "depth": 0, |  | ||||||
|       "type": 1, |  | ||||||
|       "prescaler": 0, |  | ||||||
|       "a": 0.01, |  | ||||||
|       "b": 0, |  | ||||||
|       "datatype": "s16" |  | ||||||
|     }, |  | ||||||
|     "gatewayHWAction": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "adp", |  | ||||||
|       "offset": 0, |  | ||||||
|       "entrysize": 2 |  | ||||||
|     }, |  | ||||||
|     "RE1": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "adp", |  | ||||||
|       "offset": 2, |  | ||||||
|       "entrysize": 1 |  | ||||||
|     }, |  | ||||||
|     "RE3": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "adp", |  | ||||||
|       "offset": 3, |  | ||||||
|       "entrysize": 1 |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### Import of library components |  | ||||||
| * consist with few of import statements, which are necessary for correct function |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| import json # necessary for description json file; required |  | ||||||
|  |  | ||||||
| from eledio import Eledio   # basic functionality; required |  | ||||||
| from eledio.component.mpu.i2c import SMBus  # communication interface with linux; required |  | ||||||
| from eledio.device.pcu import PcuFactory    # access to variables and components of base board, e.g: relay outputs, digital inputs, ...; required |  | ||||||
| from eledio.device.mpu import MpuFactory # access to variables and components of linux board, e.g.: wifi signal rssi, status LED color, ... |  | ||||||
| from eledio.device.srq import Srq   # interrupt system for quick access to variables which need intermediate handle, e.g.: RF433 receiver |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### Load of _json_ file |  | ||||||
| * this part is required before fist try of attempt to variables with names form config _json_ part |  | ||||||
| #### Basic example of device registration |  | ||||||
| ``` |  | ||||||
| eledio = Eledio() |  | ||||||
| eledio.register_device_factory("i2c", PcuFactory(SMBus(0))) |  | ||||||
|  |  | ||||||
| # repeat for every configuration file |  | ||||||
| with open('config.json') as f: |  | ||||||
|     eledio.append_config(json.load(f)) |  | ||||||
| ``` |  | ||||||
| ## Readout values from the peripherals - sensors, to linux |  | ||||||
| Everytime, you want to read all of variables, e.g.: temperatures, digital input states, sensors values, ... you must to call ```eledio.load_inputs()``` |  | ||||||
|  |  | ||||||
| After this calling, you can access to variables by their symbloc names in dict access. |  | ||||||
| For example: |  | ||||||
| ``` |  | ||||||
| eledio.load_inputs() |  | ||||||
|  |  | ||||||
| temperature = eledio["Temperature"]	# this statement put value of temperature after processing of linear equation (a and b coeficients) to the variable temperature |  | ||||||
|  |  | ||||||
| voltage = eledio["RE1Voltage"] # this statement put value of RMS voltage on relay 1 to variable voltage |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ## Put new values to the peripherals - actuators, connected to the hardware |  | ||||||
| For relay, digital outputs you are able to set states True/False. Used logic of every component is written in component description. |  | ||||||
| ``` |  | ||||||
| eledio["RE1"] = True # switch on relay 1 |  | ||||||
| eledio["RE3"] = False # switch off relay 3 |  | ||||||
|  |  | ||||||
| eledio.store_outputs() |  | ||||||
| ``` |  | ||||||
| After setting values for all of dict ```eledio``` parts, which you want to set, you need to call command ```eledio.store_outputs()```, which send that values to real hardware. |  | ||||||
| @@ -1,253 +0,0 @@ | |||||||
| --- |  | ||||||
| summary: Application example of Python Eledio library |  | ||||||
| authors: |  | ||||||
|     - Richard Kubicek |  | ||||||
| date: 2019-09-06 |  | ||||||
| --- |  | ||||||
| # Example of usages |  | ||||||
| There you can find some examples, how to use python-eledio library in your Eledio devices. |  | ||||||
|  |  | ||||||
| ## State LED, buzzer and watchdog control |  | ||||||
| ### Configuration _json_ file |  | ||||||
| File name: _mpu-config.json_ |  | ||||||
| ``` |  | ||||||
| { |  | ||||||
|   "devices": { |  | ||||||
|     "mpu-dev": { |  | ||||||
|       "bus": "mpu" |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "identifiers": { |  | ||||||
|     "mpuWifiRssi": { |  | ||||||
|       "unit": "mpu-dev", |  | ||||||
|       "parameter": "wifi-rssi" |  | ||||||
|     }, |  | ||||||
|     "mpuInternalTemperature": { |  | ||||||
|       "unit": "mpu-dev", |  | ||||||
|       "parameter": "temperature" |  | ||||||
|     }, |  | ||||||
|     "mpuCpuPercent": { |  | ||||||
|       "unit": "mpu-dev", |  | ||||||
|       "parameter": "cpu-percent" |  | ||||||
|     }, |  | ||||||
|     "mpuLed": { |  | ||||||
|       "unit": "mpu-dev", |  | ||||||
|       "parameter": "led" |  | ||||||
|     }, |  | ||||||
|     "mpuBeeper": { |  | ||||||
|       "unit": "mpu-dev", |  | ||||||
|       "parameter": "beeper" |  | ||||||
|     }, |  | ||||||
|     "mpuWatchdog": { |  | ||||||
|       "unit": "mpu-dev", |  | ||||||
|       "parameter": "watchdog" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| ### Usage |  | ||||||
| ``` |  | ||||||
| import json |  | ||||||
|  |  | ||||||
| from eledio import Eledio |  | ||||||
| from eledio.component.mpu.i2c import SMBus |  | ||||||
| from eledio.device.mpu import MpuFactory |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     eledio = Eledio() |  | ||||||
|     eledio.register_device_factory("mpu", MpuFactory()) |  | ||||||
|  |  | ||||||
|     with open('mpu-config.json') as f: |  | ||||||
|         eledio.append_config(json.load(f)) |  | ||||||
|  |  | ||||||
| 	eledio["mpuLed"] = (0x40, 0x00, 0x00) # set color of state LED in (R, G, B) format |  | ||||||
| 	eledio["mpuBeeper"] = (1500, 10)	# after calling store_outputs() switch on beeper on frequency 1500 Hz for 1s (first parameter is frequency in Hz, second parameter is duration in hundred ms) |  | ||||||
|  |  | ||||||
| 	''' |  | ||||||
| 	Warning, next statement is dangerous, it couse restart of linux machine (watchdog). |  | ||||||
| 	This function is good to use when you have your development complete, and you know, that you communicate with components and devices lower then every x second. |  | ||||||
| 	''' |  | ||||||
| 	eledio["mpuWatchdog"] = 120 # after calling store_outputs() this statement couse reset of linux every 120 seconds. If there is any communication with devicese, timeout is restarted. |  | ||||||
|  |  | ||||||
|     eledio.store_outputs() |  | ||||||
| ``` |  | ||||||
| ## WiFi RSSI, linux CPU utilization |  | ||||||
| Use [same _json_](#configuration-json-file) file as in previous example. |  | ||||||
| ### Usage |  | ||||||
| ``` |  | ||||||
| import json |  | ||||||
|  |  | ||||||
| from eledio import Eledio |  | ||||||
| from eledio.component.mpu.i2c import SMBus |  | ||||||
| from eledio.device.mpu import MpuFactory |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     eledio = Eledio() |  | ||||||
|     eledio.register_device_factory("mpu", MpuFactory()) |  | ||||||
|  |  | ||||||
|     with open('mpu-config.json') as f: |  | ||||||
|         eledio.append_config(json.load(f)) |  | ||||||
|  |  | ||||||
| 	eledio.load_inputs() |  | ||||||
|  |  | ||||||
| 	rssi = eledio["mpuWifiRssi"] # place to variable rssi, WiFi signal RSSI |  | ||||||
| 	utilization = eledio["mpuCpuPercent"] # place to variable utilitation, linux CPU utilization |  | ||||||
| ``` |  | ||||||
| ## SRQ/IRQ handler |  | ||||||
| If you want to used quick access to variables like received code from RF433 control, you can use SRQ handler. |  | ||||||
|  |  | ||||||
| Inside SRQ handler, in this example function ```handle_srq```, you received dictionary of eledio identifiers and their new value after SRQ. |  | ||||||
| ### Configuration _json_ file |  | ||||||
| File name: _map.json_ |  | ||||||
| ``` |  | ||||||
| { |  | ||||||
|   "devices": { |  | ||||||
|     "unit-40": { |  | ||||||
|       "bus": "i2c", |  | ||||||
|       "address": 40, |  | ||||||
|       "datacrc": 43200, |  | ||||||
|       "compilermagic": 4006394777 |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "identifiers": { |  | ||||||
|     "gatewayHWEvent": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "sdp", |  | ||||||
|       "offset": 0, |  | ||||||
|       "entrysize": 2, |  | ||||||
|       "depth": 0, |  | ||||||
|       "type": 1, |  | ||||||
|       "prescaler": 0, |  | ||||||
|       "a": 1, |  | ||||||
|       "b": 0, |  | ||||||
|       "datatype": "u16", |  | ||||||
|       "srq": 0 |  | ||||||
|     }, |  | ||||||
|     "gatewayHWState": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "sdp", |  | ||||||
|       "offset": 2, |  | ||||||
|       "entrysize": 2, |  | ||||||
|       "depth": 0, |  | ||||||
|       "type": 1, |  | ||||||
|       "prescaler": 0, |  | ||||||
|       "a": 1, |  | ||||||
|       "b": 0, |  | ||||||
|       "datatype": "u16" |  | ||||||
|     }, |  | ||||||
|     "rf433": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "sdp", |  | ||||||
|       "offset": 4, |  | ||||||
|       "entrysize": 4, |  | ||||||
|       "depth": 0, |  | ||||||
|       "type": 1, |  | ||||||
|       "prescaler": 0, |  | ||||||
|       "a": 1, |  | ||||||
|       "b": 0, |  | ||||||
|       "datatype": "u32", |  | ||||||
|       "srq": 1 |  | ||||||
|     }, |  | ||||||
|     "gatewayHWAction": { |  | ||||||
|       "unit": "unit-40", |  | ||||||
|       "partition": "adp", |  | ||||||
|       "offset": 0, |  | ||||||
|       "entrysize": 2 |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
| ### Usage |  | ||||||
| ``` |  | ||||||
| import json |  | ||||||
|  |  | ||||||
| from eledio import Eledio |  | ||||||
| from eledio.component.mpu.i2c import SMBus |  | ||||||
| from eledio.device.mpu import MpuFactory |  | ||||||
|  |  | ||||||
| def handle_srq(identifiers): |  | ||||||
|     """ |  | ||||||
|     User handling of SRQ (called in context of eledio.wait_events) |  | ||||||
|     :param identifiers: dictionary of eledio identifiers and their new value after SRQ |  | ||||||
|     :return: |  | ||||||
|     """ |  | ||||||
|     print("Service requests!", identifiers) |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     eledio = Eledio() |  | ||||||
|     eledio.register_device_factory("i2c", PcuFactory(SMBus(0))) |  | ||||||
|     eledio.register_srq(Srq(), handle_srq()) |  | ||||||
|  |  | ||||||
|     # repeat for every configuration file |  | ||||||
|     with open('map.json') as f: |  | ||||||
|         eledio.append_config(json.load(f)) |  | ||||||
|  |  | ||||||
|  while True: |  | ||||||
|         # load state of inputs and outputs |  | ||||||
|         eledio.load_inputs() |  | ||||||
|  |  | ||||||
|         # do something else or wait some time |  | ||||||
|         eledio.wait_events(1.0) |  | ||||||
| ``` |  | ||||||
| ## Error handler |  | ||||||
| In runtime and while you develop your solution, there could rise some errors. You can catch them by definition of _error handler_. |  | ||||||
| ### Usage |  | ||||||
| In this example _error handler_ is represented by function ```handler_error```. |  | ||||||
| ``` |  | ||||||
| import json |  | ||||||
|  |  | ||||||
| from eledio import Eledio |  | ||||||
| from eledio.component.mpu.i2c import SMBus |  | ||||||
| from eledio.device.pcu import PcuFactory |  | ||||||
| from eledio.device.mpu import MpuFactory |  | ||||||
| from eledio.device.srq import Srq |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def handle_srq(identifiers): |  | ||||||
|     """ |  | ||||||
|     User handling of SRQ (called in context of eledio.wait_events) |  | ||||||
|     :param identifiers: dictionary of eledio identifiers and their new value after SRQ |  | ||||||
|     :return: |  | ||||||
|     """ |  | ||||||
|     print("Service requests!", identifiers) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def handle_error(src, ex): |  | ||||||
|     """ |  | ||||||
|     Handle error inside eledio library |  | ||||||
|     :param src: |  | ||||||
|     :param ex: |  | ||||||
|     :return: |  | ||||||
|     """ |  | ||||||
|     print(src, ex) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     eledio = Eledio() |  | ||||||
|     eledio.register_device_factory("i2c", PcuFactory(SMBus(0))) |  | ||||||
|     eledio.register_device_factory("mpu", MpuFactory()) |  | ||||||
|     eledio.register_srq(Srq(), handle_srq) |  | ||||||
|     eledio.error_handler = handle_error |  | ||||||
|  |  | ||||||
|     # repeat for every configuration file |  | ||||||
|     with open('config.json') as f: |  | ||||||
|         eledio.append_config(json.load(f)) |  | ||||||
|  |  | ||||||
|     with open('mpu-config.json') as f: |  | ||||||
|         eledio.append_config(json.load(f)) |  | ||||||
|  |  | ||||||
|     while True: |  | ||||||
|         # load state of inputs and outputs |  | ||||||
|         eledio.load_inputs() |  | ||||||
|  |  | ||||||
|         # manipulate with inputs and outputs by identifier |  | ||||||
|         # e.g. |  | ||||||
|         #   print(eledio["test1"]) |  | ||||||
|         #   eledio["test2"] = True |  | ||||||
|  |  | ||||||
|         # apply final value to hardware |  | ||||||
|         eledio.store_outputs() |  | ||||||
|  |  | ||||||
|         # do something else or wait some time |  | ||||||
|         eledio.wait_events(1.0) |  | ||||||
| ``` |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| # Contact |  | ||||||
|  |  | ||||||
| If you have any question please contact us on email: [eledio@eledio.com](mailto:%20eledio@eledio.com) |  | ||||||
|  |  | ||||||
| WWW: [eledio.com](https://eledio.com) |  | ||||||
|  |  | ||||||
| tel.: +420  **724 328 130** |  | ||||||
| @@ -1,9 +0,0 @@ | |||||||
| # Python Eledio library documentation |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Welcome to Eledio library documentation pages |  | ||||||
|  |  | ||||||
| ## Note |  | ||||||
|  |  | ||||||
| __This library and documantation can be aplied only for devices from Eledio ecosystem__ |  | ||||||
| Before Width: | Height: | Size: 434 KiB After Width: | Height: | Size: 434 KiB | 
| Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB | 
| Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB | 
| @@ -161,5 +161,5 @@ | |||||||
| 
 | 
 | ||||||
| <!-- | <!-- | ||||||
| MkDocs version : 1.2.3 | MkDocs version : 1.2.3 | ||||||
| Build Date UTC : 2022-02-10 17:35:58.956444+00:00 | Build Date UTC : 2022-02-10 17:41:18.970024+00:00 | ||||||
| --> | --> | ||||||
							
								
								
									
										13
									
								
								mkdocs.yml
									
									
									
									
									
								
							
							
						
						| @@ -1,13 +0,0 @@ | |||||||
| site_name: Python Eledio library |  | ||||||
| nav: |  | ||||||
|     - Home: index.md |  | ||||||
|     - API description: api_description.md |  | ||||||
|     - Application example: application_example.md |  | ||||||
|     - Contact: contact.md |  | ||||||
| theme: |  | ||||||
|     name: readthedocs |  | ||||||
|     highlightjs: true |  | ||||||
|     hljs_languages: |  | ||||||
|         - python |  | ||||||
| copyright: Eledio © 2019 |  | ||||||
| site_description: Documentation site of Python Eledio library |  | ||||||
| Before Width: | Height: | Size: 9.2 KiB |