Publish pages

This commit is contained in:
Richard Kubíček
2022-02-10 18:37:07 +01:00
parent 2760b8be03
commit 06fad82e5b
50 changed files with 7982 additions and 0 deletions

138
site/404.html Normal file
View File

@@ -0,0 +1,138 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/img/favicon.ico">
<title>Python Eledio library</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
<link rel="stylesheet" href="/css/theme.css" />
<link rel="stylesheet" href="/css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/github.min.css" />
<script src="/js/jquery-2.1.1.min.js" defer></script>
<script src="/js/modernizr-2.8.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/languages/python.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="/." class="icon icon-home"> Python Eledio library</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="//search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="/.">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/api_description/">API description</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/application_example/">Application example</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/contact/">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="/.">Python Eledio library</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="/.">Docs</a> &raquo;</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="404-page-not-found">404</h1>
<p><strong>Page not found</strong></p>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
<p>Eledio © 2019</p>
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
</span>
</div>
<script>var base_url = '/';</script>
<script src="/js/theme_extra.js" defer></script>
<script src="/js/theme.js" defer></script>
<script src="/search/main.js" defer></script>
<script defer>
window.onload = function () {
SphinxRtdTheme.Navigation.enable(true);
};
</script>
</body>
</html>

View File

@@ -0,0 +1,327 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>API description - Python Eledio library</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "API description";
var mkdocs_page_input_path = "api_description.md";
var mkdocs_page_url = null;
</script>
<script src="../js/jquery-2.1.1.min.js" defer></script>
<script src="../js/modernizr-2.8.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/languages/python.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> Python Eledio library</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="./">API description</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#necessary-parts">Necessary parts</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#device-description-in-json-file">Device description in json file</a>
<ul>
<li class="toctree-l4"><a class="reference internal" href="#example-of-json-file-can-be-named-as-configjson">Example of json file, can be named as config.json</a>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#import-of-library-components">Import of library components</a>
</li>
<li class="toctree-l3"><a class="reference internal" href="#load-of-json-file">Load of json file</a>
<ul>
<li class="toctree-l4"><a class="reference internal" href="#basic-example-of-device-registration">Basic example of device registration</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#readout-values-from-the-peripherals-sensors-to-linux">Readout values from the peripherals - sensors, to linux</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#put-new-values-to-the-peripherals-actuators-connected-to-the-hardware">Put new values to the peripherals - actuators, connected to the hardware</a>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../application_example/">Application example</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contact/">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">Python Eledio library</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="..">Docs</a> &raquo;</li>
<li>API description</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="description-of-api-for-python-eledio-library">Description of API for python-eledio library</h1>
<p>This description allow to you easly write your own python script.</p>
<p>This script you can use for control of your Eledio devices. This sript you can upload to your <a href="https://www.eledio.com/en/hardware/"><strong>Eledio Gateway</strong></a> and control your gateways and your <a href="https://www.eledio.com/en/hardware/"><strong>Eledio Extendres</strong></a> which you want control from gateway.</p>
<p>This library is preinstalled in your <a href="https://www.eledio.com/en/hardware/">Eledio Gateway</a>. You can start programming, after unpacking.</p>
<h2 id="necessary-parts">Necessary parts</h2>
<p>Each major drive script in python for your application must be made up with some necessary parts.</p>
<ul>
<li>
<p><a href="#device-description-in-json-file">device description in <em>json</em> file</a></p>
</li>
<li>
<p><a href="#import-of-library-components">import of library components</a></p>
</li>
<li>
<p><a href="#load-of-json-file">load of <em>json</em> file</a></p>
</li>
</ul>
<h3 id="device-description-in-json-file">Device description in <em>json</em> file</h3>
<ul>
<li>this file is for hardware abstraction layer to linux</li>
<li>you are able to used your own names of identifiers, eg. you can rename <em>Temperature</em> to <em>OutsideTemperature</em></li>
<li>every name of identifiers must consist only with English alphabet characters, without spaces and other punctuation</li>
<li>if you need some reaclculation of readout values, you can use prepared values <strong>a</strong> and <strong>b</strong>, with are parts of equation <strong>y=a*x+b</strong>, where <strong>x</strong> is readout value from device, <strong>y</strong> is value which you obtain in python script, eg. if you need temeperature in degree of fahrenheit, you can place <strong>a=1.8</strong> and <strong>b=32</strong> (which corresponds of equation <code>T[°F] = T[°C]*1.8 + 32</code>)</li>
</ul>
<h4 id="example-of-json-file-can-be-named-as-configjson">Example of <em>json</em> file, can be named as config.json</h4>
<pre><code>{
&quot;devices&quot;: {
&quot;unit-40&quot;: {
&quot;bus&quot;: &quot;i2c&quot;,
&quot;address&quot;: 40,
&quot;datacrc&quot;: 9718,
&quot;compilermagic&quot;: 4006394777
}
},
&quot;identifiers&quot;: {
&quot;gatewayHWEvent&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;sdp&quot;,
&quot;offset&quot;: 0,
&quot;entrysize&quot;: 2,
&quot;depth&quot;: 0,
&quot;type&quot;: 1,
&quot;prescaler&quot;: 0,
&quot;a&quot;: 1,
&quot;b&quot;: 0,
&quot;datatype&quot;: &quot;u16&quot;,
&quot;srq&quot;: 0
},
&quot;gatewayHWState&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;sdp&quot;,
&quot;offset&quot;: 2,
&quot;entrysize&quot;: 2,
&quot;depth&quot;: 0,
&quot;type&quot;: 1,
&quot;prescaler&quot;: 0,
&quot;a&quot;: 1,
&quot;b&quot;: 0,
&quot;datatype&quot;: &quot;u16&quot;
},
&quot;RE1Voltage&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;sdp&quot;,
&quot;offset&quot;: 4,
&quot;entrysize&quot;: 2,
&quot;depth&quot;: 0,
&quot;type&quot;: 1,
&quot;prescaler&quot;: 0,
&quot;a&quot;: 0.01,
&quot;b&quot;: 0,
&quot;datatype&quot;: &quot;s16&quot;
},
&quot;Temperature&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;sdp&quot;,
&quot;offset&quot;: 6,
&quot;entrysize&quot;: 2,
&quot;depth&quot;: 0,
&quot;type&quot;: 1,
&quot;prescaler&quot;: 0,
&quot;a&quot;: 0.01,
&quot;b&quot;: 0,
&quot;datatype&quot;: &quot;s16&quot;
},
&quot;gatewayHWAction&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;adp&quot;,
&quot;offset&quot;: 0,
&quot;entrysize&quot;: 2
},
&quot;RE1&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;adp&quot;,
&quot;offset&quot;: 2,
&quot;entrysize&quot;: 1
},
&quot;RE3&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;adp&quot;,
&quot;offset&quot;: 3,
&quot;entrysize&quot;: 1
}
}
}
</code></pre>
<h3 id="import-of-library-components">Import of library components</h3>
<ul>
<li>consist with few of import statements, which are necessary for correct function</li>
</ul>
<pre><code>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
</code></pre>
<h3 id="load-of-json-file">Load of <em>json</em> file</h3>
<ul>
<li>this part is required before fist try of attempt to variables with names form config <em>json</em> part</li>
</ul>
<h4 id="basic-example-of-device-registration">Basic example of device registration</h4>
<pre><code>eledio = Eledio()
eledio.register_device_factory(&quot;i2c&quot;, PcuFactory(SMBus(0)))
# repeat for every configuration file
with open('config.json') as f:
eledio.append_config(json.load(f))
</code></pre>
<h2 id="readout-values-from-the-peripherals-sensors-to-linux">Readout values from the peripherals - sensors, to linux</h2>
<p>Everytime, you want to read all of variables, e.g.: temperatures, digital input states, sensors values, ... you must to call <code>eledio.load_inputs()</code></p>
<p>After this calling, you can access to variables by their symbloc names in dict access.
For example:</p>
<pre><code>eledio.load_inputs()
temperature = eledio[&quot;Temperature&quot;] # this statement put value of temperature after processing of linear equation (a and b coeficients) to the variable temperature
voltage = eledio[&quot;RE1Voltage&quot;] # this statement put value of RMS voltage on relay 1 to variable voltage
</code></pre>
<h2 id="put-new-values-to-the-peripherals-actuators-connected-to-the-hardware">Put new values to the peripherals - actuators, connected to the hardware</h2>
<p>For relay, digital outputs you are able to set states True/False. Used logic of every component is written in component description.</p>
<pre><code>eledio[&quot;RE1&quot;] = True # switch on relay 1
eledio[&quot;RE3&quot;] = False # switch off relay 3
eledio.store_outputs()
</code></pre>
<p>After setting values for all of dict <code>eledio</code> parts, which you want to set, you need to call command <code>eledio.store_outputs()</code>, which send that values to real hardware.</p>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../application_example/" class="btn btn-neutral float-right" title="Application example">Next <span class="icon icon-circle-arrow-right"></span></a>
<a href=".." class="btn btn-neutral" title="Home"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
<p>Eledio © 2019</p>
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href=".." style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../application_example/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script>var base_url = '..';</script>
<script src="../js/theme_extra.js" defer></script>
<script src="../js/theme.js" defer></script>
<script src="../search/main.js" defer></script>
<script defer>
window.onload = function () {
SphinxRtdTheme.Navigation.enable(true);
};
</script>
</body>
</html>

View File

@@ -0,0 +1,424 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>Application example - Python Eledio library</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Application example";
var mkdocs_page_input_path = "application_example.md";
var mkdocs_page_url = null;
</script>
<script src="../js/jquery-2.1.1.min.js" defer></script>
<script src="../js/modernizr-2.8.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/languages/python.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> Python Eledio library</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../api_description/">API description</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="./">Application example</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#state-led-buzzer-and-watchdog-control">State LED, buzzer and watchdog control</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#configuration-json-file">Configuration json file</a>
</li>
<li class="toctree-l3"><a class="reference internal" href="#usage">Usage</a>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#wifi-rssi-linux-cpu-utilization">WiFi RSSI, linux CPU utilization</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#usage_1">Usage</a>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#srqirq-handler">SRQ/IRQ handler</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#configuration-json-file_1">Configuration json file</a>
</li>
<li class="toctree-l3"><a class="reference internal" href="#usage_2">Usage</a>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#error-handler">Error handler</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#usage_3">Usage</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../contact/">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">Python Eledio library</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="..">Docs</a> &raquo;</li>
<li>Application example</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="example-of-usages">Example of usages</h1>
<p>There you can find some examples, how to use python-eledio library in your Eledio devices.</p>
<h2 id="state-led-buzzer-and-watchdog-control">State LED, buzzer and watchdog control</h2>
<h3 id="configuration-json-file">Configuration <em>json</em> file</h3>
<p>File name: <em>mpu-config.json</em></p>
<pre><code>{
&quot;devices&quot;: {
&quot;mpu-dev&quot;: {
&quot;bus&quot;: &quot;mpu&quot;
}
},
&quot;identifiers&quot;: {
&quot;mpuWifiRssi&quot;: {
&quot;unit&quot;: &quot;mpu-dev&quot;,
&quot;parameter&quot;: &quot;wifi-rssi&quot;
},
&quot;mpuInternalTemperature&quot;: {
&quot;unit&quot;: &quot;mpu-dev&quot;,
&quot;parameter&quot;: &quot;temperature&quot;
},
&quot;mpuCpuPercent&quot;: {
&quot;unit&quot;: &quot;mpu-dev&quot;,
&quot;parameter&quot;: &quot;cpu-percent&quot;
},
&quot;mpuLed&quot;: {
&quot;unit&quot;: &quot;mpu-dev&quot;,
&quot;parameter&quot;: &quot;led&quot;
},
&quot;mpuBeeper&quot;: {
&quot;unit&quot;: &quot;mpu-dev&quot;,
&quot;parameter&quot;: &quot;beeper&quot;
},
&quot;mpuWatchdog&quot;: {
&quot;unit&quot;: &quot;mpu-dev&quot;,
&quot;parameter&quot;: &quot;watchdog&quot;
}
}
}
</code></pre>
<h3 id="usage">Usage</h3>
<pre><code>import json
from eledio import Eledio
from eledio.component.mpu.i2c import SMBus
from eledio.device.mpu import MpuFactory
if __name__ == &quot;__main__&quot;:
eledio = Eledio()
eledio.register_device_factory(&quot;mpu&quot;, MpuFactory())
with open('mpu-config.json') as f:
eledio.append_config(json.load(f))
eledio[&quot;mpuLed&quot;] = (0x40, 0x00, 0x00) # set color of state LED in (R, G, B) format
eledio[&quot;mpuBeeper&quot;] = (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[&quot;mpuWatchdog&quot;] = 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()
</code></pre>
<h2 id="wifi-rssi-linux-cpu-utilization">WiFi RSSI, linux CPU utilization</h2>
<p>Use <a href="#configuration-json-file">same <em>json</em></a> file as in previous example.</p>
<h3 id="usage_1">Usage</h3>
<pre><code>import json
from eledio import Eledio
from eledio.component.mpu.i2c import SMBus
from eledio.device.mpu import MpuFactory
if __name__ == &quot;__main__&quot;:
eledio = Eledio()
eledio.register_device_factory(&quot;mpu&quot;, MpuFactory())
with open('mpu-config.json') as f:
eledio.append_config(json.load(f))
eledio.load_inputs()
rssi = eledio[&quot;mpuWifiRssi&quot;] # place to variable rssi, WiFi signal RSSI
utilization = eledio[&quot;mpuCpuPercent&quot;] # place to variable utilitation, linux CPU utilization
</code></pre>
<h2 id="srqirq-handler">SRQ/IRQ handler</h2>
<p>If you want to used quick access to variables like received code from RF433 control, you can use SRQ handler.</p>
<p>Inside SRQ handler, in this example function <code>handle_srq</code>, you received dictionary of eledio identifiers and their new value after SRQ.</p>
<h3 id="configuration-json-file_1">Configuration <em>json</em> file</h3>
<p>File name: <em>map.json</em></p>
<pre><code>{
&quot;devices&quot;: {
&quot;unit-40&quot;: {
&quot;bus&quot;: &quot;i2c&quot;,
&quot;address&quot;: 40,
&quot;datacrc&quot;: 43200,
&quot;compilermagic&quot;: 4006394777
}
},
&quot;identifiers&quot;: {
&quot;gatewayHWEvent&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;sdp&quot;,
&quot;offset&quot;: 0,
&quot;entrysize&quot;: 2,
&quot;depth&quot;: 0,
&quot;type&quot;: 1,
&quot;prescaler&quot;: 0,
&quot;a&quot;: 1,
&quot;b&quot;: 0,
&quot;datatype&quot;: &quot;u16&quot;,
&quot;srq&quot;: 0
},
&quot;gatewayHWState&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;sdp&quot;,
&quot;offset&quot;: 2,
&quot;entrysize&quot;: 2,
&quot;depth&quot;: 0,
&quot;type&quot;: 1,
&quot;prescaler&quot;: 0,
&quot;a&quot;: 1,
&quot;b&quot;: 0,
&quot;datatype&quot;: &quot;u16&quot;
},
&quot;rf433&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;sdp&quot;,
&quot;offset&quot;: 4,
&quot;entrysize&quot;: 4,
&quot;depth&quot;: 0,
&quot;type&quot;: 1,
&quot;prescaler&quot;: 0,
&quot;a&quot;: 1,
&quot;b&quot;: 0,
&quot;datatype&quot;: &quot;u32&quot;,
&quot;srq&quot;: 1
},
&quot;gatewayHWAction&quot;: {
&quot;unit&quot;: &quot;unit-40&quot;,
&quot;partition&quot;: &quot;adp&quot;,
&quot;offset&quot;: 0,
&quot;entrysize&quot;: 2
}
}
}
</code></pre>
<h3 id="usage_2">Usage</h3>
<pre><code>import json
from eledio import Eledio
from eledio.component.mpu.i2c import SMBus
from eledio.device.mpu import MpuFactory
def handle_srq(identifiers):
&quot;&quot;&quot;
User handling of SRQ (called in context of eledio.wait_events)
:param identifiers: dictionary of eledio identifiers and their new value after SRQ
:return:
&quot;&quot;&quot;
print(&quot;Service requests!&quot;, identifiers)
if __name__ == &quot;__main__&quot;:
eledio = Eledio()
eledio.register_device_factory(&quot;i2c&quot;, 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)
</code></pre>
<h2 id="error-handler">Error handler</h2>
<p>In runtime and while you develop your solution, there could rise some errors. You can catch them by definition of <em>error handler</em>.</p>
<h3 id="usage_3">Usage</h3>
<p>In this example <em>error handler</em> is represented by function <code>handler_error</code>.</p>
<pre><code>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):
&quot;&quot;&quot;
User handling of SRQ (called in context of eledio.wait_events)
:param identifiers: dictionary of eledio identifiers and their new value after SRQ
:return:
&quot;&quot;&quot;
print(&quot;Service requests!&quot;, identifiers)
def handle_error(src, ex):
&quot;&quot;&quot;
Handle error inside eledio library
:param src:
:param ex:
:return:
&quot;&quot;&quot;
print(src, ex)
if __name__ == &quot;__main__&quot;:
eledio = Eledio()
eledio.register_device_factory(&quot;i2c&quot;, PcuFactory(SMBus(0)))
eledio.register_device_factory(&quot;mpu&quot;, 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[&quot;test1&quot;])
# eledio[&quot;test2&quot;] = True
# apply final value to hardware
eledio.store_outputs()
# do something else or wait some time
eledio.wait_events(1.0)
</code></pre>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../contact/" class="btn btn-neutral float-right" title="Contact">Next <span class="icon icon-circle-arrow-right"></span></a>
<a href="../api_description/" class="btn btn-neutral" title="API description"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
<p>Eledio © 2019</p>
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../api_description/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../contact/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script>var base_url = '..';</script>
<script src="../js/theme_extra.js" defer></script>
<script src="../js/theme.js" defer></script>
<script src="../search/main.js" defer></script>
<script defer>
window.onload = function () {
SphinxRtdTheme.Navigation.enable(true);
};
</script>
</body>
</html>

157
site/contact/index.html Normal file
View File

@@ -0,0 +1,157 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>Contact - Python Eledio library</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
<link rel="stylesheet" href="../css/theme.css" />
<link rel="stylesheet" href="../css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Contact";
var mkdocs_page_input_path = "contact.md";
var mkdocs_page_url = null;
</script>
<script src="../js/jquery-2.1.1.min.js" defer></script>
<script src="../js/modernizr-2.8.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/languages/python.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> Python Eledio library</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../api_description/">API description</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../application_example/">Application example</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="./">Contact</a>
<ul class="current">
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">Python Eledio library</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="..">Docs</a> &raquo;</li>
<li>Contact</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="contact">Contact</h1>
<p>If you have any question please contact us on email: <a href="mailto:%20eledio@eledio.com">eledio@eledio.com</a></p>
<p>WWW: <a href="https://eledio.com">eledio.com</a></p>
<p>tel.: +420 <strong>724 328 130</strong></p>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../application_example/" class="btn btn-neutral" title="Application example"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
<p>Eledio © 2019</p>
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../application_example/" style="color: #fcfcfc">&laquo; Previous</a></span>
</span>
</div>
<script>var base_url = '..';</script>
<script src="../js/theme_extra.js" defer></script>
<script src="../js/theme.js" defer></script>
<script src="../search/main.js" defer></script>
<script defer>
window.onload = function () {
SphinxRtdTheme.Navigation.enable(true);
};
</script>
</body>
</html>

14
site/css/theme.css Normal file

File diff suppressed because one or more lines are too long

191
site/css/theme_extra.css Normal file
View File

@@ -0,0 +1,191 @@
/*
* Wrap inline code samples otherwise they shoot of the side and
* can't be read at all.
*
* https://github.com/mkdocs/mkdocs/issues/313
* https://github.com/mkdocs/mkdocs/issues/233
* https://github.com/mkdocs/mkdocs/issues/834
*/
.rst-content code {
white-space: pre-wrap;
word-wrap: break-word;
padding: 2px 5px;
}
/**
* Make code blocks display as blocks and give them the appropriate
* font size and padding.
*
* https://github.com/mkdocs/mkdocs/issues/855
* https://github.com/mkdocs/mkdocs/issues/834
* https://github.com/mkdocs/mkdocs/issues/233
*/
.rst-content pre code {
white-space: pre;
word-wrap: normal;
display: block;
padding: 12px;
font-size: 12px;
}
/**
* Fix code colors
*
* https://github.com/mkdocs/mkdocs/issues/2027
*/
.rst-content code {
color: #E74C3C;
}
.rst-content pre code {
color: #000;
background: #f8f8f8;
}
/*
* Fix link colors when the link text is inline code.
*
* https://github.com/mkdocs/mkdocs/issues/718
*/
a code {
color: #2980B9;
}
a:hover code {
color: #3091d1;
}
a:visited code {
color: #9B59B6;
}
/*
* The CSS classes from highlight.js seem to clash with the
* ReadTheDocs theme causing some code to be incorrectly made
* bold and italic.
*
* https://github.com/mkdocs/mkdocs/issues/411
*/
pre .cs, pre .c {
font-weight: inherit;
font-style: inherit;
}
/*
* Fix some issues with the theme and non-highlighted code
* samples. Without and highlighting styles attached the
* formatting is broken.
*
* https://github.com/mkdocs/mkdocs/issues/319
*/
.rst-content .no-highlight {
display: block;
padding: 0.5em;
color: #333;
}
/*
* Additions specific to the search functionality provided by MkDocs
*/
.search-results {
margin-top: 23px;
}
.search-results article {
border-top: 1px solid #E1E4E5;
padding-top: 24px;
}
.search-results article:first-child {
border-top: none;
}
form .search-query {
width: 100%;
border-radius: 50px;
padding: 6px 12px; /* csslint allow: box-model */
border-color: #D1D4D5;
}
/*
* Improve inline code blocks within admonitions.
*
* https://github.com/mkdocs/mkdocs/issues/656
*/
.rst-content .admonition code {
color: #404040;
border: 1px solid #c7c9cb;
border: 1px solid rgba(0, 0, 0, 0.2);
background: #f8fbfd;
background: rgba(255, 255, 255, 0.7);
}
/*
* Account for wide tables which go off the side.
* Override borders to avoid weirdness on narrow tables.
*
* https://github.com/mkdocs/mkdocs/issues/834
* https://github.com/mkdocs/mkdocs/pull/1034
*/
.rst-content .section .docutils {
width: 100%;
overflow: auto;
display: block;
border: none;
}
td, th {
border: 1px solid #e1e4e5 !important; /* csslint allow: important */
border-collapse: collapse;
}
/*
* Without the following amendments, the navigation in the theme will be
* slightly cut off. This is due to the fact that the .wy-nav-side has a
* padding-bottom of 2em, which must not necessarily align with the font-size of
* 90 % on the .rst-current-version container, combined with the padding of 12px
* above and below. These amendments fix this in two steps: First, make sure the
* .rst-current-version container has a fixed height of 40px, achieved using
* line-height, and then applying a padding-bottom of 40px to this container. In
* a second step, the items within that container are re-aligned using flexbox.
*
* https://github.com/mkdocs/mkdocs/issues/2012
*/
.wy-nav-side {
padding-bottom: 40px;
}
/*
* The second step of above amendment: Here we make sure the items are aligned
* correctly within the .rst-current-version container. Using flexbox, we
* achieve it in such a way that it will look like the following:
*
* [No repo_name]
* Next >> // On the first page
* << Previous Next >> // On all subsequent pages
*
* [With repo_name]
* <repo_name> Next >> // On the first page
* <repo_name> << Previous Next >> // On all subsequent pages
*
* https://github.com/mkdocs/mkdocs/issues/2012
*/
.rst-versions .rst-current-version {
padding: 0 12px;
display: flex;
font-size: initial;
justify-content: space-between;
align-items: center;
line-height: 40px;
}
/*
* Please note that this amendment also involves removing certain inline-styles
* from the file ./mkdocs/themes/readthedocs/versions.html.
*
* https://github.com/mkdocs/mkdocs/issues/2012
*/
.rst-current-version span {
flex: 1;
text-align: center;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
site/img/Eledio_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
site/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

165
site/index.html Normal file
View File

@@ -0,0 +1,165 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Documentation site of Python Eledio library">
<link rel="shortcut icon" href="img/favicon.ico">
<title>Python Eledio library</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
<link rel="stylesheet" href="css/theme.css" />
<link rel="stylesheet" href="css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/github.min.css" />
<script>
// Current page data
var mkdocs_page_name = "Home";
var mkdocs_page_input_path = "index.md";
var mkdocs_page_url = null;
</script>
<script src="js/jquery-2.1.1.min.js" defer></script>
<script src="js/modernizr-2.8.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/languages/python.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="." class="icon icon-home"> Python Eledio library</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href=".">Home</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#note">Note</a>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="api_description/">API description</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="application_example/">Application example</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="contact/">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href=".">Python Eledio library</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href=".">Docs</a> &raquo;</li>
<li>Home</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="python-eledio-library-documentation">Python Eledio library documentation</h1>
<p><img alt="Eledio logo" src="img/Eledio_logo.png" /></p>
<p>Welcome to Eledio library documentation pages</p>
<h2 id="note">Note</h2>
<p><strong>This library and documantation can be aplied only for devices from Eledio ecosystem</strong></p>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="api_description/" class="btn btn-neutral float-right" title="API description">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
<p>Eledio © 2019</p>
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="api_description/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script>var base_url = '.';</script>
<script src="js/theme_extra.js" defer></script>
<script src="js/theme.js" defer></script>
<script src="search/main.js" defer></script>
<script defer>
window.onload = function () {
SphinxRtdTheme.Navigation.enable(true);
};
</script>
</body>
</html>
<!--
MkDocs version : 1.2.3
Build Date UTC : 2022-02-10 17:35:58.956444+00:00
-->

4
site/js/jquery-2.1.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
site/js/modernizr-2.8.3.min.js vendored Normal file

File diff suppressed because one or more lines are too long

3
site/js/theme.js Normal file
View File

@@ -0,0 +1,3 @@
/* sphinx_rtd_theme version 0.4.1 | MIT license */
/* Built 20180727 10:07 */
require=function n(e,i,t){function o(s,a){if(!i[s]){if(!e[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=i[s]={exports:{}};e[s][0].call(u.exports,function(n){var i=e[s][1][n];return o(i||n)},u,u.exports,n,e,i,t)}return i[s].exports}for(var r="function"==typeof require&&require,s=0;s<t.length;s++)o(t[s]);return o}({"sphinx-rtd-theme":[function(n,e,i){var jQuery="undefined"!=typeof window?window.jQuery:n("jquery");e.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var e=this;void 0===n&&(n=!0),e.isRunning||(e.isRunning=!0,jQuery(function(i){e.init(i),e.reset(),e.win.on("hashchange",e.reset),n&&e.win.on("scroll",function(){e.linkScroll||e.winScroll||(e.winScroll=!0,requestAnimationFrame(function(){e.onScroll()}))}),e.win.on("resize",function(){e.winResize||(e.winResize=!0,requestAnimationFrame(function(){e.onResize()}))}),e.onResize()}))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")}).on("click",".wy-menu-vertical .current ul li a",function(){var i=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(i),e.hashChange()}).on("click","[data-toggle='rst-current-version']",function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")}),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var i=n(this);expand=n('<span class="toctree-expand"></span>'),expand.on("click",function(n){return e.toggleCurrent(i),n.stopPropagation(),!1}),i.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}i.length>0&&($(".wy-menu-vertical .current").removeClass("current"),i.addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l1").parent().addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l2").addClass("current"),i.closest("li.toctree-l3").addClass("current"),i.closest("li.toctree-l4").addClass("current"))}catch(o){console.log("Error expanding nav for anchor",o)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,i=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],i=0;i<e.length&&!window.requestAnimationFrame;++i)window.requestAnimationFrame=window[e[i]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[i]+"CancelAnimationFrame"]||window[e[i]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,i){var t=(new Date).getTime(),o=Math.max(0,16-(t-n)),r=window.setTimeout(function(){e(t+o)},o);return n=t+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()},{jquery:"jquery"}]},{},["sphinx-rtd-theme"]);

8
site/js/theme_extra.js Normal file
View File

@@ -0,0 +1,8 @@
/*
* Assign 'docutils' class to tables so styling and
* JavaScript behavior is applied.
*
* https://github.com/mkdocs/mkdocs/issues/2028
*/
$('div.rst-content table').addClass('docutils');

145
site/search.html Normal file
View File

@@ -0,0 +1,145 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="./img/favicon.ico">
<title>Python Eledio library</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700" />
<link rel="stylesheet" href="./css/theme.css" />
<link rel="stylesheet" href="./css/theme_extra.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/github.min.css" />
<script src="./js/jquery-2.1.1.min.js" defer></script>
<script src="./js/modernizr-2.8.3.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/languages/python.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="./." class="icon icon-home"> Python Eledio library</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="./.">Home</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./api_description/">API description</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./application_example/">Application example</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="./contact/">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="./.">Python Eledio library</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="./.">Docs</a> &raquo;</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="search">Search Results</h1>
<form id="content_search" action="search.html">
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
<input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="Search the Docs" autocomplete="off" autofocus title="Type search term here">
</form>
<div id="mkdocs-search-results" class="search-results" data-no-results-text="No results found">
Searching...
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
<p>Eledio © 2019</p>
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
</span>
</div>
<script>var base_url = '.';</script>
<script src="./js/theme_extra.js" defer></script>
<script src="./js/theme.js" defer></script>
<script src="./search/main.js" defer></script>
<script defer>
window.onload = function () {
SphinxRtdTheme.Navigation.enable(true);
};
</script>
</body>
</html>

3475
site/search/lunr.js Normal file

File diff suppressed because it is too large Load Diff

102
site/search/main.js Normal file
View File

@@ -0,0 +1,102 @@
function getSearchTermFromLocation() {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == 'q') {
return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20'));
}
}
}
function joinUrl (base, path) {
if (path.substring(0, 1) === "/") {
// path starts with `/`. Thus it is absolute.
return path;
}
if (base.substring(base.length-1) === "/") {
// base ends with `/`
return base + path;
}
return base + "/" + path;
}
function formatResult (location, title, summary) {
return '<article><h3><a href="' + joinUrl(base_url, location) + '">'+ title + '</a></h3><p>' + summary +'</p></article>';
}
function displayResults (results) {
var search_results = document.getElementById("mkdocs-search-results");
while (search_results.firstChild) {
search_results.removeChild(search_results.firstChild);
}
if (results.length > 0){
for (var i=0; i < results.length; i++){
var result = results[i];
var html = formatResult(result.location, result.title, result.summary);
search_results.insertAdjacentHTML('beforeend', html);
}
} else {
var noResultsText = search_results.getAttribute('data-no-results-text');
if (!noResultsText) {
noResultsText = "No results found";
}
search_results.insertAdjacentHTML('beforeend', '<p>' + noResultsText + '</p>');
}
}
function doSearch () {
var query = document.getElementById('mkdocs-search-query').value;
if (query.length > min_search_length) {
if (!window.Worker) {
displayResults(search(query));
} else {
searchWorker.postMessage({query: query});
}
} else {
// Clear results for short queries
displayResults([]);
}
}
function initSearch () {
var search_input = document.getElementById('mkdocs-search-query');
if (search_input) {
search_input.addEventListener("keyup", doSearch);
}
var term = getSearchTermFromLocation();
if (term) {
search_input.value = term;
doSearch();
}
}
function onWorkerMessage (e) {
if (e.data.allowSearch) {
initSearch();
} else if (e.data.results) {
var results = e.data.results;
displayResults(results);
} else if (e.data.config) {
min_search_length = e.data.config.min_search_length-1;
}
}
if (!window.Worker) {
console.log('Web Worker API not supported');
// load index in main thread
$.getScript(joinUrl(base_url, "search/worker.js")).done(function () {
console.log('Loaded worker');
init();
window.postMessage = function (msg) {
onWorkerMessage({data: msg});
};
}).fail(function (jqxhr, settings, exception) {
console.error('Could not load worker.js');
});
} else {
// Wrap search in a web worker
var searchWorker = new Worker(joinUrl(base_url, "search/worker.js"));
searchWorker.postMessage({init: true});
searchWorker.onmessage = onWorkerMessage;
}

File diff suppressed because one or more lines are too long

133
site/search/worker.js Normal file
View File

@@ -0,0 +1,133 @@
var base_path = 'function' === typeof importScripts ? '.' : '/search/';
var allowSearch = false;
var index;
var documents = {};
var lang = ['en'];
var data;
function getScript(script, callback) {
console.log('Loading script: ' + script);
$.getScript(base_path + script).done(function () {
callback();
}).fail(function (jqxhr, settings, exception) {
console.log('Error: ' + exception);
});
}
function getScriptsInOrder(scripts, callback) {
if (scripts.length === 0) {
callback();
return;
}
getScript(scripts[0], function() {
getScriptsInOrder(scripts.slice(1), callback);
});
}
function loadScripts(urls, callback) {
if( 'function' === typeof importScripts ) {
importScripts.apply(null, urls);
callback();
} else {
getScriptsInOrder(urls, callback);
}
}
function onJSONLoaded () {
data = JSON.parse(this.responseText);
var scriptsToLoad = ['lunr.js'];
if (data.config && data.config.lang && data.config.lang.length) {
lang = data.config.lang;
}
if (lang.length > 1 || lang[0] !== "en") {
scriptsToLoad.push('lunr.stemmer.support.js');
if (lang.length > 1) {
scriptsToLoad.push('lunr.multi.js');
}
if (lang.includes("ja") || lang.includes("jp")) {
scriptsToLoad.push('tinyseg.js');
}
for (var i=0; i < lang.length; i++) {
if (lang[i] != 'en') {
scriptsToLoad.push(['lunr', lang[i], 'js'].join('.'));
}
}
}
loadScripts(scriptsToLoad, onScriptsLoaded);
}
function onScriptsLoaded () {
console.log('All search scripts loaded, building Lunr index...');
if (data.config && data.config.separator && data.config.separator.length) {
lunr.tokenizer.separator = new RegExp(data.config.separator);
}
if (data.index) {
index = lunr.Index.load(data.index);
data.docs.forEach(function (doc) {
documents[doc.location] = doc;
});
console.log('Lunr pre-built index loaded, search ready');
} else {
index = lunr(function () {
if (lang.length === 1 && lang[0] !== "en" && lunr[lang[0]]) {
this.use(lunr[lang[0]]);
} else if (lang.length > 1) {
this.use(lunr.multiLanguage.apply(null, lang)); // spread operator not supported in all browsers: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator#Browser_compatibility
}
this.field('title');
this.field('text');
this.ref('location');
for (var i=0; i < data.docs.length; i++) {
var doc = data.docs[i];
this.add(doc);
documents[doc.location] = doc;
}
});
console.log('Lunr index built, search ready');
}
allowSearch = true;
postMessage({config: data.config});
postMessage({allowSearch: allowSearch});
}
function init () {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", onJSONLoaded);
var index_path = base_path + '/search_index.json';
if( 'function' === typeof importScripts ){
index_path = 'search_index.json';
}
oReq.open("GET", index_path);
oReq.send();
}
function search (query) {
if (!allowSearch) {
console.error('Assets for search still loading');
return;
}
var resultDocuments = [];
var results = index.search(query);
for (var i=0; i < results.length; i++){
var result = results[i];
doc = documents[result.ref];
doc.summary = doc.text.substring(0, 200);
resultDocuments.push(doc);
}
return resultDocuments;
}
if( 'function' === typeof importScripts ) {
onmessage = function (e) {
if (e.data.init) {
init();
} else if (e.data.query) {
postMessage({ results: search(e.data.query) });
} else {
console.error("Worker - Unrecognized message: " + e);
}
};
}

23
site/sitemap.xml Normal file
View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>None</loc>
<lastmod>2022-02-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-02-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-02-10</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>None</loc>
<lastmod>2022-02-10</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

BIN
site/sitemap.xml.gz Normal file

Binary file not shown.