Deployed cf78e98 with MkDocs version: 1.5.2

This commit is contained in:
github-actions[bot]
2023-09-16 20:45:01 +00:00
parent 4d1beafaf0
commit 9ffb7b351a
42 changed files with 8587 additions and 9445 deletions

View File

@@ -130,7 +130,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="/AI-on-the-edge-device-docs/Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="/AI-on-the-edge-device-docs/Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="/AI-on-the-edge-device-docs/Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="/AI-on-the-edge-device-docs/Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="/AI-on-the-edge-device-docs/Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="/AI-on-the-edge-device-docs/Release-creation/">Preparing for Release</a>
</li> </li>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Additional-Information/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Additional-Information/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Additional Information - AI on the Edge Device</title> <title>Additional Information - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Additional Information"; var mkdocs_page_name = "Additional Information";
var mkdocs_page_input_path = "Additional-Information.md"; var mkdocs_page_input_path = "Additional-Information.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Additional-Information/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Additional-Information/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -140,7 +136,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -156,76 +152,60 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Additional Information</li> <li class="breadcrumb-item active">Additional Information</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Additional-Information.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Additional-Information.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<p>The following links point to additional information in other repos:</p> <p>The following links point to additional information in other repos:</p>
<h1 id="digits">Digits</h1> <h1 id="digits"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Digits</h1>
<ul> <ul>
<li><a href="https://github.com/jomjol/neural-network-digital-counter-readout">Training and using a neural network to readout the value of a digital counter</a></li> <li><a href="https://github.com/jomjol/neural-network-digital-counter-readout">Training and using a neural network to readout the value of a digital counter</a></li>
<li><a href="https://github.com/jomjol/neural-network-digital-counter-readout/blob/master/Train_Network.md">Training the CNN neural network</a></li> <li><a href="https://github.com/jomjol/neural-network-digital-counter-readout/blob/master/Train_Network.md">Training the CNN neural network</a></li>
</ul> </ul>
<h1 id="analog">Analog</h1> <h1 id="analog"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.</span> Analog</h1>
<ul> <ul>
<li><a href="https://github.com/jomjol/neural-network-analog-needle-readout">Training and using a neural network to read out the value of an analog display</a></li> <li><a href="https://github.com/jomjol/neural-network-analog-needle-readout">Training and using a neural network to read out the value of an analog display</a></li>
<li><a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/master/Train_Network.md">Training the CNN neural network</a></li> <li><a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/master/Train_Network.md">Training the CNN neural network</a></li>
</ul> </ul>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Neural-Network-Types/" class="btn btn-neutral float-left" title="Neural Network Types"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Neural-Network-Types/" title="Neural Network Types"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../New-Releases-Notification/" class="btn btn-neutral float-right" title="Notification about new Releases">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../New-Releases-Notification/" title="Notification about new Releases">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Neural-Network-Types/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../New-Releases-Notification/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Neural-Network-Types/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../New-Releases-Notification/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -238,6 +218,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Alignment/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Alignment/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Alignment References - AI on the Edge Device</title> <title>Alignment References - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Alignment References"; var mkdocs_page_name = "Alignment References";
var mkdocs_page_input_path = "Alignment.md"; var mkdocs_page_input_path = "Alignment.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Alignment/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Alignment/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -144,7 +140,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -160,29 +156,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Configuration &raquo;</li> <li>Configuration »</li>
<li class="breadcrumb-item active">Alignment References</li> <li class="breadcrumb-item active">Alignment References</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Alignment.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Alignment.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="alignment-references"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Alignment References</h1>
<h1 id="alignment-references">Alignment References</h1>
<p>The alignment references are used in every round to re-align the taken image to the reference coordinates. <p>The alignment references are used in every round to re-align the taken image to the reference coordinates.
Two alignment structures must be defined and the taken image then in each round is shifted and rotated according to their position Two alignment structures must be defined and the taken image then in each round is shifted and rotated according to their position
with the target to be in exactly the same position as the reference image.</p> with the target to be in exactly the same position as the reference image.</p>
@@ -191,9 +184,9 @@ with the target to be in exactly the same position as the reference image.</p>
<p>The alignment structures needs to be unique and have a good contrast. <p>The alignment structures needs to be unique and have a good contrast.
It is advised to have them as far apart as possible.</p> It is advised to have them as far apart as possible.</p>
</div> </div>
<h2 id="precondition">Precondition</h2> <h2 id="precondition"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Precondition</h2>
<p>Please make sure to have setup your camera properly and taken a good <a href="../Reference-Image">Reference Image</a>.</p> <p>Please make sure to have setup your camera properly and taken a good <a href="../Reference-Image">Reference Image</a>.</p>
<h2 id="define-two-reference-images">Define two Reference Images</h2> <h2 id="define-two-reference-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Define two Reference Images</h2>
<p><img alt="" src="../img/initial_setup_2_alignment_marks.jpg" style="width:500px"/></p> <p><img alt="" src="../img/initial_setup_2_alignment_marks.jpg" style="width:500px"/></p>
<p>You can switch between this two marks with <code>(1)</code>.</p> <p>You can switch between this two marks with <code>(1)</code>.</p>
<p>Then define the reference area in the image by either directly drag and drop with the mouse or use the input boxes below. <p>Then define the reference area in the image by either directly drag and drop with the mouse or use the input boxes below.
@@ -206,43 +199,30 @@ The result will be calculated on the ESP32 - so be a bit patient, before you see
<p>A reboot is not required at this point of time.</p> <p>A reboot is not required at this point of time.</p>
</div> </div>
<p>As next you should define the <a href="../ROI-Configuration/">Digit and Analog ROIs</a>.</p> <p>As next you should define the <a href="../ROI-Configuration/">Digit and Analog ROIs</a>.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Reference-Image/" class="btn btn-neutral float-left" title="Reference Image"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Reference-Image/" title="Reference Image"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../ROI-Configuration/" class="btn btn-neutral float-right" title="ROIs (Regions of Interest)">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../ROI-Configuration/" title="ROIs (Regions of Interest)">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Reference-Image/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../ROI-Configuration/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Reference-Image/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../ROI-Configuration/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -255,6 +235,5 @@ The result will be calculated on the ESP32 - so be a bit patient, before you see
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Best-Practice/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Best-Practice/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Best Practice - AI on the Edge Device</title> <title>Best Practice - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Best Practice"; var mkdocs_page_name = "Best Practice";
var mkdocs_page_input_path = "Best-Practice.md"; var mkdocs_page_input_path = "Best-Practice.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Best-Practice/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Best-Practice/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul class="current"> <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -146,7 +142,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -162,87 +158,71 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Getting Started &raquo;</li> <li>Getting Started »</li>
<li class="breadcrumb-item active">Best Practice</li> <li class="breadcrumb-item active">Best Practice</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Best-Practice.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Best-Practice.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="best-practice"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Best Practice</h1>
<h1 id="best-practice">Best Practice</h1>
<p>This page shows some best practices:</p> <p>This page shows some best practices:</p>
<h2 id="camera-placement">Camera Placement</h2> <h2 id="camera-placement"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Camera Placement</h2>
<ul> <ul>
<li>Move the Camera as close as possible (~4cm), this will help get rid of reflections. <li>Move the Camera as close as possible (~4cm), this will help get rid of reflections.
-&gt; focus can be adjusted by turning the outer black ring of the camera.</li> -&gt; focus can be adjusted by turning the outer black ring of the camera.</li>
<li>If the LED reflections are too strong, put tape over the LED to diffuse the light</li> <li>If the LED reflections are too strong, put tape over the LED to diffuse the light</li>
<li>Change the ImageSize to QVGA under "Expert mode" configuration when close enough, this will be faster and is often good enough for digital recognition.</li> <li>Change the ImageSize to QVGA under "Expert mode" configuration when close enough, this will be faster and is often good enough for digital recognition.</li>
</ul> </ul>
<h2 id="reflections">Reflections</h2> <h2 id="reflections"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Reflections</h2>
<ul> <ul>
<li>Try to get rid of the reflections by rotating the camera, so that the reflections are at positions, where no number is.</li> <li>Try to get rid of the reflections by rotating the camera, so that the reflections are at positions, where no number is.</li>
<li>By using the external LED option, you can place WS2812 LEDs freely away from the main axis.</li> <li>By using the external LED option, you can place WS2812 LEDs freely away from the main axis.</li>
<li>Users report, that a handy cover foil could also help</li> <li>Users report, that a handy cover foil could also help</li>
</ul> </ul>
<h2 id="post-processing">Post-processing</h2> <h2 id="post-processing"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Post-processing</h2>
<ul> <ul>
<li>Filter out the Number "9", as "3" will often be misread for a "9" and void every number between 3 and 9 due to it being negative flow.</li> <li>Filter out the Number "9", as "3" will often be misread for a "9" and void every number between 3 and 9 due to it being negative flow.</li>
<li>Split the readings into two, while the decimal numbers might move to fast to be recognized, at least the slower moving part will produce a correct reading. <li>Split the readings into two, while the decimal numbers might move to fast to be recognized, at least the slower moving part will produce a correct reading.
-&gt; keep in mind that the offset needs to be adjusted, a.e if you have a comma reading of "3", it needs to become "0.3". This can be done wherever the data ends up being sent, like home assistant using sensor templates.</li> -&gt; keep in mind that the offset needs to be adjusted, a.e if you have a comma reading of "3", it needs to become "0.3". This can be done wherever the data ends up being sent, like home assistant using sensor templates.</li>
<li>If you are using a low resolution and only digital mode, processing can often be done in &lt;1 minute. Check the logs to confirm how fast it is and then set the interval accordingly under "Expert mode" in configuration, as the normal mode will lock you to 3+ minutes.</li> <li>If you are using a low resolution and only digital mode, processing can often be done in &lt;1 minute. Check the logs to confirm how fast it is and then set the interval accordingly under "Expert mode" in configuration, as the normal mode will lock you to 3+ minutes.</li>
</ul> </ul>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Hardware-Compatibility/" class="btn btn-neutral float-left" title="Hardware Compatibility"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Hardware-Compatibility/" title="Hardware Compatibility"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../FAQs/" class="btn btn-neutral float-right" title="Frequently Asked Questions">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../FAQs/" title="Frequently Asked Questions">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Hardware-Compatibility/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../FAQs/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Hardware-Compatibility/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../FAQs/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -255,6 +235,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Build-Instructions/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Build-Instructions/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Build the Project - AI on the Edge Device</title> <title>Build the Project - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Build the Project"; var mkdocs_page_name = "Build the Project";
var mkdocs_page_input_path = "Build-Instructions.md"; var mkdocs_page_input_path = "Build-Instructions.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Build-Instructions/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Build-Instructions/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -140,7 +136,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -156,67 +152,51 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Development &raquo;</li> <li>Development »</li>
<li class="breadcrumb-item active">Build the Project</li> <li class="breadcrumb-item active">Build the Project</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Build-Instructions.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Build-Instructions.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="build-the-project"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Build the Project</h1>
<h1 id="build-the-project">Build the Project</h1>
<p>See <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/master/code/README.md">README.md</a></p> <p>See <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/master/code/README.md">README.md</a></p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Influx-DB/" class="btn btn-neutral float-left" title="Influx DB"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Influx-DB/" title="Influx DB"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Upload-files-by-script/" class="btn btn-neutral float-right" title="Scripted File Upload">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Upload-files-by-script/" title="Scripted File Upload">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Influx-DB/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Upload-files-by-script/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Influx-DB/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Upload-files-by-script/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -229,6 +209,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Choosing-the-Model/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Choosing-the-Model/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Model Selection - AI on the Edge Device</title> <title>Model Selection - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Model Selection"; var mkdocs_page_name = "Model Selection";
var mkdocs_page_input_path = "Choosing-the-Model.md"; var mkdocs_page_input_path = "Choosing-the-Model.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Choosing-the-Model/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Choosing-the-Model/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -176,7 +172,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -192,29 +188,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Configuration &raquo;</li> <li>Configuration »</li>
<li class="breadcrumb-item active">Model Selection</li> <li class="breadcrumb-item active">Model Selection</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Choosing-the-Model.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Choosing-the-Model.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="model-selection"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Model Selection</h1>
<h1 id="model-selection">Model Selection</h1>
<div class="admonition notes"> <div class="admonition notes">
<p class="admonition-title">Notes</p> <p class="admonition-title">Notes</p>
<p>See <a href="../Neural-Network-Types">Neural Network Types</a> for additional details.</p> <p>See <a href="../Neural-Network-Types">Neural Network Types</a> for additional details.</p>
@@ -222,49 +215,49 @@
<p>In the <a href="../Graphical-configuration">Graphical Configuration Page</a>, you can choose different models depending on your needs.</p> <p>In the <a href="../Graphical-configuration">Graphical Configuration Page</a>, you can choose different models depending on your needs.</p>
<p>This page tries to help you on which model to select. <p>This page tries to help you on which model to select.
For more technical/deeper explanations have a look on <a href="../Neural-Network-Types">Neural-Network-Types</a>.</p> For more technical/deeper explanations have a look on <a href="../Neural-Network-Types">Neural-Network-Types</a>.</p>
<h2 id="digit-models">Digit Models</h2> <h2 id="digit-models"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Digit Models</h2>
<p>For digits on water meters, gas-meters or power meters you can select between two main types of models.</p> <p>For digits on water meters, gas-meters or power meters you can select between two main types of models.</p>
<h3 id="dig-class11">dig-class11</h3> <h3 id="dig-class11"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> dig-class11</h3>
<p>This model can recognize full digits. It was the first model version. All intermediate states shown a "N" for not a number. But in post process it uses older values to fill up the "N" values if possible.</p> <p>This model can recognize full digits. It was the first model version. All intermediate states shown a "N" for not a number. But in post process it uses older values to fill up the "N" values if possible.</p>
<p><img alt="" src="../img/dig-class11.png" style="width:300px"/></p> <p><img alt="" src="../img/dig-class11.png" style="width:300px"/></p>
<p>It's possibly a good fallback, if <code>dig-cont/dig-class100</code> results are not good.</p> <p>It's possibly a good fallback, if <code>dig-cont/dig-class100</code> results are not good.</p>
<h4 id="main-features">Main features</h4> <h4 id="main-features"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1.1</span> Main features</h4>
<ul> <ul>
<li>well suited for LCD digits</li> <li>well suited for LCD digits</li>
<li>the ExtendedResolution option is not supported. (Only in conjunction with ana-class100 / ana-cont)</li> <li>the ExtendedResolution option is not supported. (Only in conjunction with ana-class100 / ana-cont)</li>
</ul> </ul>
<h3 id="dig-class100-dig-cont">dig-class100 / dig-cont</h3> <h3 id="dig-class100-dig-cont"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2</span> dig-class100 / dig-cont</h3>
<p>These models are used to get a continuous reading with intermediate states. To see what the models are doing, you can go to the Recognition page.</p> <p>These models are used to get a continuous reading with intermediate states. To see what the models are doing, you can go to the Recognition page.</p>
<p><img alt="" src="../img/dig-class100.png" style="width:300px"/></p> <p><img alt="" src="../img/dig-class100.png" style="width:300px"/></p>
<h4 id="main-features_1">Main features</h4> <h4 id="main-features_1"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2.1</span> Main features</h4>
<ul> <ul>
<li>suitable for all digit displays.</li> <li>suitable for all digit displays.</li>
<li>Advantage over dig-class11 that results continue to be calculated in the transition between digits.</li> <li>Advantage over dig-class11 that results continue to be calculated in the transition between digits.</li>
<li>With the ExtendedResolution option, higher accuracy is possible by adding another digit.</li> <li>With the ExtendedResolution option, higher accuracy is possible by adding another digit.</li>
</ul> </ul>
<p>Look <a href="https://jomjol.github.io/neural-network-digital-counter-readout">here</a> for a list of digit images used for the training.</p> <p>Look <a href="https://jomjol.github.io/neural-network-digital-counter-readout">here</a> for a list of digit images used for the training.</p>
<h4 id="dig-class100-vs-dig-cont">dig-class100 vs. dig-cont</h4> <h4 id="dig-class100-vs-dig-cont"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2.2</span> dig-class100 vs. dig-cont</h4>
<p>The difference is in the internal processing. </p> <p>The difference is in the internal processing. </p>
<p>The dig-class100 is a standard classification model. Each tenth step is an output. </p> <p>The dig-class100 is a standard classification model. Each tenth step is an output. </p>
<p>dig-cont uses two outputs and arctangent to get the result. You see very complicated. </p> <p>dig-cont uses two outputs and arctangent to get the result. You see very complicated. </p>
<p>Try both models on your device and take the one that gives you the best results.</p> <p>Try both models on your device and take the one that gives you the best results.</p>
<h2 id="analog-pointer-models">Analog pointer models</h2> <h2 id="analog-pointer-models"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Analog pointer models</h2>
<h3 id="ana-class100-ana-cont">ana-class100 / ana-cont</h3> <h3 id="ana-class100-ana-cont"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1</span> ana-class100 / ana-cont</h3>
<p>For pointers on water meters use the analog models. You can only choose between ana-class100 and ana-cont. Both do mainly the same.</p> <p>For pointers on water meters use the analog models. You can only choose between ana-class100 and ana-cont. Both do mainly the same.</p>
<p><img alt="" src="../img/ana-class100.png" style="width:250px"/></p> <p><img alt="" src="../img/ana-class100.png" style="width:250px"/></p>
<h4 id="main-features_2">Main features</h4> <h4 id="main-features_2"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1.1</span> Main features</h4>
<ul> <ul>
<li>for all analogue pointers, especially for water meters.</li> <li>for all analogue pointers, especially for water meters.</li>
<li>With the ExtendedResolution option, higher accuracy is possible by adding another digit.</li> <li>With the ExtendedResolution option, higher accuracy is possible by adding another digit.</li>
</ul> </ul>
<p>Look <a href="https://jomjol.github.io/neural-network-analog-needle-readout/">here</a> for a list of pointer images used for the training</p> <p>Look <a href="https://jomjol.github.io/neural-network-analog-needle-readout/">here</a> for a list of pointer images used for the training</p>
<h4 id="ana-class100-vs-ana-cont">ana-class100 vs. ana-cont</h4> <h4 id="ana-class100-vs-ana-cont"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1.2</span> ana-class100 vs. ana-cont</h4>
<p>The difference is in the internal processing.</p> <p>The difference is in the internal processing.</p>
<p>Take the one that gives you the best results. Both models learn from the same data.</p> <p>Take the one that gives you the best results. Both models learn from the same data.</p>
<h2 id="different-types-of-models-normal-vs-quantized">Different types of models (normal vs. quantized)</h2> <h2 id="different-types-of-models-normal-vs-quantized"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Different types of models (normal vs. quantized)</h2>
<p>The normally trained network is calculating with internal floating point numbers. The saving of floating point numbers naturally takes more space than an integer type. Often the increased accuracy is not needed. Therefore there is the option, to "quantize" a neural network. In this case the internal values are rescaled to integer values, which is called "quantization". The stored tflite files are usually much smaller and runs faster on the edgeAI-device. <p>The normally trained network is calculating with internal floating point numbers. The saving of floating point numbers naturally takes more space than an integer type. Often the increased accuracy is not needed. Therefore there is the option, to "quantize" a neural network. In this case the internal values are rescaled to integer values, which is called "quantization". The stored tflite files are usually much smaller and runs faster on the edgeAI-device.
Usually the models are distrusted therefore in both versions. They can be distinguished by a "-q" at the end of the logfile.</p> Usually the models are distrusted therefore in both versions. They can be distinguished by a "-q" at the end of the logfile.</p>
<h4 id="example">Example:</h4> <h4 id="example"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.0.1</span> Example:</h4>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -283,43 +276,30 @@ Usually the models are distrusted therefore in both versions. They can be distin
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Configuration/" class="btn btn-neutral float-left" title="Graphical Configuration"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Configuration/" title="Graphical Configuration"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../ota/" class="btn btn-neutral float-right" title="Over-The-Air (OTA) Update">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../ota/" title="Over-The-Air (OTA) Update">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Configuration/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../ota/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Configuration/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../ota/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -332,6 +312,5 @@ Usually the models are distrusted therefore in both versions. They can be distin
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Configuration/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Configuration/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Graphical Configuration - AI on the Edge Device</title> <title>Graphical Configuration - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Graphical Configuration"; var mkdocs_page_name = "Graphical Configuration";
var mkdocs_page_input_path = "Configuration.md"; var mkdocs_page_input_path = "Configuration.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Configuration/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Configuration/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -168,7 +164,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -184,31 +180,28 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Configuration &raquo;</li> <li>Configuration »</li>
<li class="breadcrumb-item active">Graphical Configuration</li> <li class="breadcrumb-item active">Graphical Configuration</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Configuration.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Configuration.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="graphical-configuration"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Graphical Configuration</h1>
<h1 id="graphical-configuration">Graphical Configuration</h1>
<p>Most of the settings can be modified on the Settings page:</p> <p>Most of the settings can be modified on the Settings page:</p>
<p><img src="../img/config_s1_access.jpg" width="600" align="middle"></p> <p><img align="middle" src="../img/config_s1_access.jpg" width="600"/></p>
<p>It can be reached via the menu <code>Settings &gt; Configuration</code>.</p> <p>It can be reached via the menu <code>Settings &gt; Configuration</code>.</p>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
@@ -218,79 +211,66 @@
</ul> </ul>
</div> </div>
<p>All parameters are documented on the <a href="../Parameters">Parameters</a> page and as tooltips on the config page.</p> <p>All parameters are documented on the <a href="../Parameters">Parameters</a> page and as tooltips on the config page.</p>
<h2 id="expert-parameters">Expert Parameters</h2> <h2 id="expert-parameters"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Expert Parameters</h2>
<p>Some parameters are treated as <strong>Expert Parameters</strong> and are hidden by default. <p>Some parameters are treated as <strong>Expert Parameters</strong> and are hidden by default.
Tick the checkbox in the top left corner to enable them:</p> Tick the checkbox in the top left corner to enable them:</p>
<p><img alt="" src="../img/expert-parameters.png" /> </p> <p><img alt="" src="../img/expert-parameters.png"> </img></p>
<p>The <strong>Expert Parameters</strong> then will be shown with a red background: <p>The <strong>Expert Parameters</strong> then will be shown with a red background:
<img alt="" src="../img/expert-parameters2.png" /> </p> <img alt="" src="../img/expert-parameters2.png"> </img></p>
<h2 id="manual-editing-of-the-config-file">Manual Editing of the Config File</h2> <h2 id="manual-editing-of-the-config-file"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Manual Editing of the Config File</h2>
<p>Even more configuration parameters can be edited manually in the <code>config.ini</code>:</p> <p>Even more configuration parameters can be edited manually in the <code>config.ini</code>:</p>
<p><img alt="" src="../img/manual-config-editing.png"/> </p> <p><img alt="" src="../img/manual-config-editing.png"/> </p>
<p>To edit the <code>config.ini</code> file directly, click on the <code>Edit Config.ini directly</code> button.</p> <p>To edit the <code>config.ini</code> file directly, click on the <code>Edit Config.ini directly</code> button.</p>
<h2 id="background-information">Background Information</h2> <h2 id="background-information"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Background Information</h2>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>You do not need to understand this! <p>You do not need to understand this!
But you might be interested in it.</p> But you might be interested in it.</p>
</div> </div>
<p>The principle is very simple and can most easily be described as a flow of processing steps. Each step has a dedicated parameter description in the <code>config.ini</code>, which is indicated by brackets <code>[name_of_step]</code>. The steps are processed in the order written in the config file. That means, that you first have to describe the image taking, then the aligning and cutting and only after that you can start to config a neural network. The last step is the post processing.</p> <p>The principle is very simple and can most easily be described as a flow of processing steps. Each step has a dedicated parameter description in the <code>config.ini</code>, which is indicated by brackets <code>[name_of_step]</code>. The steps are processed in the order written in the config file. That means, that you first have to describe the image taking, then the aligning and cutting and only after that you can start to config a neural network. The last step is the post processing.</p>
<h3 id="processing-steps-overview">Processing steps - Overview</h3> <h3 id="processing-steps-overview"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1</span> Processing steps - Overview</h3>
<p>In the following you get a short overview over the available steps. This order is also the suggested order for the processing flow. Single steps can be left out, if not needed (e.g. omit the analog part, if only digits are present)</p> <p>In the following you get a short overview over the available steps. This order is also the suggested order for the processing flow. Single steps can be left out, if not needed (e.g. omit the analog part, if only digits are present)</p>
<h4 id="1-takeimage">1. <code>[TakeImage]</code></h4> <h4 id="1-takeimage"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.1</span> 1. <code>[TakeImage]</code></h4>
<p>This steps parametrises the taking of the image by the ESP32-CAM. Size, quality and storage for logging and debugging can be set.</p> <p>This steps parametrises the taking of the image by the ESP32-CAM. Size, quality and storage for logging and debugging can be set.</p>
<h4 id="2-alignment">2. <code>[Alignment]</code></h4> <h4 id="2-alignment"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.2</span> 2. <code>[Alignment]</code></h4>
<p>Image preprocessing, including image alignment with reference images</p> <p>Image preprocessing, including image alignment with reference images</p>
<h4 id="3-digits">3. <code>[Digits]</code></h4> <h4 id="3-digits"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.3</span> 3. <code>[Digits]</code></h4>
<p>Neural network evaluation of an image for digits. The neural network is defined by a tflite formatted file and the output is a number between 0 .. 9 or NaN (if image is not unique enough)</p> <p>Neural network evaluation of an image for digits. The neural network is defined by a tflite formatted file and the output is a number between 0 .. 9 or NaN (if image is not unique enough)</p>
<h4 id="4-analog">4. <code>[Analog]</code></h4> <h4 id="4-analog"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.4</span> 4. <code>[Analog]</code></h4>
<p>Neural network evaluation of analog counter. The neural network is defined by a tflite formatted file and the output is a number between 0.0 .. 9.9, representing the position of the pointer.</p> <p>Neural network evaluation of analog counter. The neural network is defined by a tflite formatted file and the output is a number between 0.0 .. 9.9, representing the position of the pointer.</p>
<h4 id="5-postprocessing">5. <code>[PostProcessing]</code></h4> <h4 id="5-postprocessing"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.5</span> 5. <code>[PostProcessing]</code></h4>
<p>Summarized the individually converted pictures to the overall result. It also implements some error corrections and consistency checks to filter wrong reading.</p> <p>Summarized the individually converted pictures to the overall result. It also implements some error corrections and consistency checks to filter wrong reading.</p>
<p>For more details look at <a href="../Correction%20Algorithm/">Correction Algorithm</a>).</p> <p>For more details look at <a href="../Correction%20Algorithm/">Correction Algorithm</a>).</p>
<h4 id="6-mqtt">6. <code>[MQTT]</code></h4> <h4 id="6-mqtt"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.6</span> 6. <code>[MQTT]</code></h4>
<p>Transfer of the readings to a MQTT server.</p> <p>Transfer of the readings to a MQTT server.</p>
<h4 id="7-autotimer">7. <code>[AutoTimer]</code></h4> <h4 id="7-autotimer"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.7</span> 7. <code>[AutoTimer]</code></h4>
<p>Configuration of the automated flow start at the start up of the ESP32. </p> <p>Configuration of the automated flow start at the start up of the ESP32. </p>
<h4 id="8-debug">8. <code>[Debug]</code></h4> <h4 id="8-debug"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.8</span> 8. <code>[Debug]</code></h4>
<p>Configuration for debugging details</p> <p>Configuration for debugging details</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../ROI-Configuration/" class="btn btn-neutral float-left" title="ROIs (Regions of Interest)"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../ROI-Configuration/" title="ROIs (Regions of Interest)"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Choosing-the-Model/" class="btn btn-neutral float-right" title="Model Selection">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Choosing-the-Model/" title="Model Selection">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../ROI-Configuration/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Choosing-the-Model/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../ROI-Configuration/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Choosing-the-Model/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -303,6 +283,5 @@ But you might be interested in it.</p>
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Correction%20Algorithm/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Correction%20Algorithm/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Correction Algorithm - AI on the Edge Device</title> <title>Correction Algorithm - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Correction Algorithm"; var mkdocs_page_name = "Correction Algorithm";
var mkdocs_page_input_path = "Correction Algorithm.md"; var mkdocs_page_input_path = "Correction Algorithm.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Correction%20Algorithm/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Correction%20Algorithm/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -170,7 +166,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -186,29 +182,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Correction Algorithm</li> <li class="breadcrumb-item active">Correction Algorithm</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Correction Algorithm.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Correction Algorithm.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="correction-algorithm"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Correction Algorithm</h1>
<h1 id="correction-algorithm">Correction Algorithm</h1>
<p>After the digitization of the images and the composition to a number a checking and correction algorithm is applied. This is explained here.</p> <p>After the digitization of the images and the composition to a number a checking and correction algorithm is applied. This is explained here.</p>
<p>There are several reasons, that a check might be necessary:</p> <p>There are several reasons, that a check might be necessary:</p>
<ol> <ol>
@@ -216,88 +209,75 @@
<li>The replacement of the "N" with a previous value could be not sufficient, due to the fact, that it might have changed.</li> <li>The replacement of the "N" with a previous value could be not sufficient, due to the fact, that it might have changed.</li>
<li>There is a misreading of one one of the numbers. This can always happen in case of neural network processing.</li> <li>There is a misreading of one one of the numbers. This can always happen in case of neural network processing.</li>
</ol> </ol>
<h3 id="terms-and-definitions">Terms and definitions</h3> <h3 id="terms-and-definitions"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1</span> Terms and definitions</h3>
<h5 id="prevalue">PreValue</h5> <h5 id="prevalue"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.1</span> PreValue</h5>
<p>The last correct read value. PreValue is here a bit missleading, because normally it is the same as the last value. In the next round of reading it will be used to check nagtive rates, high rates (MaxRateValue / MaxRateType) and CCheckDigitIncreaseConsistency (dig-class11 only). Either from a previous correctly identified value or manual setting by the user.</p> <p>The last correct read value. PreValue is here a bit missleading, because normally it is the same as the last value. In the next round of reading it will be used to check nagtive rates, high rates (MaxRateValue / MaxRateType) and CCheckDigitIncreaseConsistency (dig-class11 only). Either from a previous correctly identified value or manual setting by the user.</p>
<h5 id="digits">Digits</h5> <h5 id="digits"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.2</span> Digits</h5>
<p>Value that are digitized from a digital number. There are 11 allowed values for this: </p> <p>Value that are digitized from a digital number. There are 11 allowed values for this: </p>
<ol> <ol>
<li>Digits: 0, 1, 2, ... 9</li> <li>Digits: 0, 1, 2, ... 9</li>
<li>N = Not-a-Number - representing a not unique state between two numbers</li> <li>N = Not-a-Number - representing a not unique state between two numbers</li>
</ol> </ol>
<h5 id="analogs">Analogs</h5> <h5 id="analogs"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.3</span> Analogs</h5>
<p>This are value derived from a pointer like meter. This never has the state "N".</p> <p>This are value derived from a pointer like meter. This never has the state "N".</p>
<h5 id="checkdigitincreaseconsistency">CheckDigitIncreaseConsistency</h5> <h5 id="checkdigitincreaseconsistency"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.4</span> CheckDigitIncreaseConsistency</h5>
<p>If this is enabled an "intelligent" algorithm is used to derive from zero-crossing of discrete digit positions, if the number should have been increased. This is relevant because in some of the digit meters, the increase of a digit to the next number can be seen, before the sub-digit has gone through zero.</p> <p>If this is enabled an "intelligent" algorithm is used to derive from zero-crossing of discrete digit positions, if the number should have been increased. This is relevant because in some of the digit meters, the increase of a digit to the next number can be seen, before the sub-digit has gone through zero.</p>
<p>For example: 16.6 --&gt; 16.7 --&gt; 1N.8 --&gt; <strong>17.9</strong> corrected to 16.9 --&gt; 17.0 --&gt; 17.1 </p> <p>For example: 16.6 --&gt; 16.7 --&gt; 1N.8 --&gt; <strong>17.9</strong> corrected to 16.9 --&gt; 17.0 --&gt; 17.1 </p>
<p>As you can see, the 17.9 is a false reading as the 7 is assumed to be already readable, although the sub-digit has not crossed the zero. In this case the CheckDigitIncreaseConsistency algorithm will correct this to 16.9</p> <p>As you can see, the 17.9 is a false reading as the 7 is assumed to be already readable, although the sub-digit has not crossed the zero. In this case the CheckDigitIncreaseConsistency algorithm will correct this to 16.9</p>
<p>A detailed description of the algorithm can be found below (not yet ready!)</p> <p>A detailed description of the algorithm can be found below (not yet ready!)</p>
<h5 id="allownegativerates"><code>AllowNegativeRates</code></h5> <h5 id="allownegativerates"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5</span> <code>AllowNegativeRates</code></h5>
<p>Most of the meters only have increasing numbers and do not count backwards. Therefore a negative rate (= negative change compared to the PreValue) is surely a false value. This can be checked an flagged as false reading</p> <p>Most of the meters only have increasing numbers and do not count backwards. Therefore a negative rate (= negative change compared to the PreValue) is surely a false value. This can be checked an flagged as false reading</p>
<p>The <code>AllowNegativeRates</code> property ensures that the result does not become negative in the event of incorrect readings. This can happen, for example, if the alignment of the image did not work properly. But also the neural networks sometimes flip between two states for similar images.</p> <p>The <code>AllowNegativeRates</code> property ensures that the result does not become negative in the event of incorrect readings. This can happen, for example, if the alignment of the image did not work properly. But also the neural networks sometimes flip between two states for similar images.</p>
<p>If <code>AllowNegativeRates = true</code>, the result is discarded if it is smaller than the pre-value of the last readout and the output shows an error "Negative rate.."</p> <p>If <code>AllowNegativeRates = true</code>, the result is discarded if it is smaller than the pre-value of the last readout and the output shows an error "Negative rate.."</p>
<p>If the <code>ExtendedResolution</code> setting is true, there is an exception where the value does not become smaller, but no error is output. This only applies if the value +/- 0.2 of the last digit is inaccurate.</p> <p>If the <code>ExtendedResolution</code> setting is true, there is an exception where the value does not become smaller, but no error is output. This only applies if the value +/- 0.2 of the last digit is inaccurate.</p>
<h6 id="decimalshift"><code>DecimalShift</code></h6> <h6 id="decimalshift"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.1</span> <code>DecimalShift</code></h6>
<p>The <code>DecimalShift</code> setting puts the decimal point in the right place. It acts like a shift. Negative values shift the decimal point to the left. Positive values move the decimal point to the right, filling with zero.</p> <p>The <code>DecimalShift</code> setting puts the decimal point in the right place. It acts like a shift. Negative values shift the decimal point to the left. Positive values move the decimal point to the right, filling with zero.</p>
<h6 id="analogdigitaltransitionstart"><code>AnalogDigitalTransitionStart</code></h6> <h6 id="analogdigitaltransitionstart"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.2</span> <code>AnalogDigitalTransitionStart</code></h6>
<p>For detailed description see <a href="../Watermeter-specific-analog---digital-transition/">Analog-digital-transition</a>.</p> <p>For detailed description see <a href="../Watermeter-specific-analog---digital-transition/">Analog-digital-transition</a>.</p>
<h6 id="maxratevalue-and-maxratetype"><code>MaxRateValue</code> and <code>MaxRateType</code></h6> <h6 id="maxratevalue-and-maxratetype"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.3</span> <code>MaxRateValue</code> and <code>MaxRateType</code></h6>
<p>Here the maximum change from one to the next reading can be limited. If a false reading of the neural network results in a change larger than this, the reading is flagged as false. There a two types of comparisons possible</p> <p>Here the maximum change from one to the next reading can be limited. If a false reading of the neural network results in a change larger than this, the reading is flagged as false. There a two types of comparisons possible</p>
<p>1) <strong>AbsolutChange</strong>: Here the difference between the PreValue and the current reading is compared directly, independent how much time has passed since the last reading. <p>1) <strong>AbsolutChange</strong>: Here the difference between the PreValue and the current reading is compared directly, independent how much time has passed since the last reading.
2) <strong>RelativeRate</strong>: in this case a change rate in the unit of change/minute is calculated, taking the time between the last and the current reading into account. Be careful, that with increasing time, the absolute allowed change increases. 2) <strong>RelativeRate</strong>: in this case a change rate in the unit of change/minute is calculated, taking the time between the last and the current reading into account. Be careful, that with increasing time, the absolute allowed change increases.
Example: relative rate of 0.05 m³/minute --&gt; after 20 minutes a maximum change of 20 minutes * 0.05 m³/minute = 1 m³ is possible. That means that a false reading of 1 m³ cannot be detected false after about 20 minutes in this case Example: relative rate of 0.05 m³/minute --&gt; after 20 minutes a maximum change of 20 minutes * 0.05 m³/minute = 1 m³ is possible. That means that a false reading of 1 m³ cannot be detected false after about 20 minutes in this case
Assume, that there might be no change in the meter for hours (e.g. during the night) a much bigger change could also be accepted. </p> Assume, that there might be no change in the meter for hours (e.g. during the night) a much bigger change could also be accepted. </p>
<h6 id="extendedresolution"><code>ExtendedResolution</code></h6> <h6 id="extendedresolution"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.4</span> <code>ExtendedResolution</code></h6>
<p>Newer models such as dig-cont and dig-class100 have a high resolution of the values and can thus represent another digit by using the value of the last digit or pointer (ex. 7.8 in the last digit). </p> <p>Newer models such as dig-cont and dig-class100 have a high resolution of the values and can thus represent another digit by using the value of the last digit or pointer (ex. 7.8 in the last digit). </p>
<p>If the value is set to true, the result of the last digit is used completely. </p> <p>If the value is set to true, the result of the last digit is used completely. </p>
<p>When using dig-class11 models, the setting is ignored.</p> <p>When using dig-class11 models, the setting is ignored.</p>
<p>Due to inaccuracies of the neural networks, it sometimes happens that the results jump back and forth between two decimal places. Therefore, when using `ÀllowNegatives``= false, no error is output if the value is only off by 0.2. Nevertheless, the value then remains at the higher determined value.</p> <p>Due to inaccuracies of the neural networks, it sometimes happens that the results jump back and forth between two decimal places. Therefore, when using `ÀllowNegatives``= false, no error is output if the value is only off by 0.2. Nevertheless, the value then remains at the higher determined value.</p>
<h6 id="ignoreleadingnan"><code>IgnoreLeadingNaN</code></h6> <h6 id="ignoreleadingnan"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.5.5</span> <code>IgnoreLeadingNaN</code></h6>
<p>The parameter is only be used, if a dig-class11 model is selected. <code>ÌgnoreLeadingNaN</code> removes in the CheckDigitIncreaseConsistency process the leading <code>N</code> values.</p> <p>The parameter is only be used, if a dig-class11 model is selected. <code>ÌgnoreLeadingNaN</code> removes in the CheckDigitIncreaseConsistency process the leading <code>N</code> values.</p>
<h4 id="flow-chart">Flow Chart</h4> <h4 id="flow-chart"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.1</span> Flow Chart</h4>
<p><img alt="" src="../img/correct_algo_1.jpg"/></p> <p><img alt="" src="../img/correct_algo_1.jpg"/></p>
<p><img alt="" src="../img/correct_algo_2.jpg"/></p> <p><img alt="" src="../img/correct_algo_2.jpg"/></p>
<p><img alt="" src="../img/correct_algo_3.jpg"/></p> <p><img alt="" src="../img/correct_algo_3.jpg"/></p>
<h2 id="checkdigitincreaseconsistency-algorithm">CheckDigitIncreaseConsistency Algorithm</h2> <h2 id="checkdigitincreaseconsistency-algorithm"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> CheckDigitIncreaseConsistency Algorithm</h2>
<p>The check digit increase consistency algorithm is functional for the digits only. Due to the fact, that the rotation might be a little bit earlier or later compared to the zero crossing of the digit before, errors during the reading before and after a zero crossing can be wrong. Therefore a simple algorithm can be applied, checking the consistency of zero crossing and changes in the following digit. This is applied to one after the other digit, starting with the lowest priority digits.</p> <p>The check digit increase consistency algorithm is functional for the digits only. Due to the fact, that the rotation might be a little bit earlier or later compared to the zero crossing of the digit before, errors during the reading before and after a zero crossing can be wrong. Therefore a simple algorithm can be applied, checking the consistency of zero crossing and changes in the following digit. This is applied to one after the other digit, starting with the lowest priority digits.</p>
<p><img alt="" src="../img/correct_algo_zero_crossing.jpg"/></p> <p><img alt="" src="../img/correct_algo_zero_crossing.jpg"/></p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Learn-models-with-your-own-images/" class="btn btn-neutral float-left" title="Learn a model with your own images"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Learn-models-with-your-own-images/" title="Learn a model with your own images"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Neural-Network-Types/" class="btn btn-neutral float-right" title="Neural Network Types">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Neural-Network-Types/" title="Neural Network Types">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Learn-models-with-your-own-images/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Neural-Network-Types/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Learn-models-with-your-own-images/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Neural-Network-Types/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -310,6 +290,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Demo-Mode/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Demo-Mode/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Demo mode - AI on the Edge Device</title> <title>Demo mode - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Demo mode"; var mkdocs_page_name = "Demo mode";
var mkdocs_page_input_path = "Demo-Mode.md"; var mkdocs_page_input_path = "Demo-Mode.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Demo-Mode/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Demo-Mode/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -160,7 +156,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -176,35 +172,32 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Troubleshooting &raquo;</li> <li>Troubleshooting »</li>
<li class="breadcrumb-item active">Demo mode</li> <li class="breadcrumb-item active">Demo mode</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Demo-Mode.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Demo-Mode.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="demo-mode"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Demo Mode</h1>
<h1 id="demo-mode">Demo Mode</h1>
<p>For Demo and Testing Purpose, the device can use pre-recorded images.</p> <p>For Demo and Testing Purpose, the device can use pre-recorded images.</p>
<p>You need to enable it in the configuration (<code>TakeImage &gt; Demo</code>) and also provide the needed files on the SD card.</p> <p>You need to enable it in the configuration (<code>TakeImage &gt; Demo</code>) and also provide the needed files on the SD card.</p>
<p>For each round one image gets used, starting with the first image for the first round.</p> <p>For each round one image gets used, starting with the first image for the first round.</p>
<p>For the reference image and the alignment also the first image gets used.</p> <p>For the reference image and the alignment also the first image gets used.</p>
<p>Once the last image got reached, it starts again with the first one.</p> <p>Once the last image got reached, it starts again with the first one.</p>
<h2 id="sd-card-structure">SD Card Structure</h2> <h2 id="sd-card-structure"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> SD Card Structure</h2>
<pre><code>demo/ <pre><code>demo/
├── 520.8983.jpg ├── 520.8983.jpg
├── 520.9086.jpg ├── 520.9086.jpg
@@ -221,93 +214,80 @@
</code></pre> </code></pre>
</li> </li>
</ul> </ul>
<h2 id="recording">Recording</h2> <h2 id="recording"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Recording</h2>
<p>To record real images of a meter, you have to periodically fetch <code>http://&lt;IP&gt;/img_tmp/raw.jpg</code>.</p> <p>To record real images of a meter, you have to periodically fetch <code>http://&lt;IP&gt;/img_tmp/raw.jpg</code>.</p>
<p>To automate this, you can use the following shell script (Linux only):</p> <p>To automate this, you can use the following shell script (Linux only):</p>
<pre><code class="language-bash">#!/bin/bash <pre><code class="language-bash">#!/bin/bash
while [[ true ]]; do while [[ true ]]; do
echo &quot;fetching value...&quot; echo "fetching value..."
wget -q http://192.168.1.151/value -O value.txt wget -q http://192.168.1.151/value -O value.txt
value=`cat value.txt` value=`cat value.txt`
echo &quot;Value: $value&quot; echo "Value: $value"
diff=`diff value.txt value_previous.txt` diff=`diff value.txt value_previous.txt`
changed=$? changed=$?
#echo &quot;Diff: $diff&quot; #echo "Diff: $diff"
if [[ $changed -ne 0 ]]; then if [[ $changed -ne 0 ]]; then
echo &quot;Value changed:&quot; echo "Value changed:"
echo $diff echo $diff
echo &quot;fetching image...&quot; echo "fetching image..."
wget -q http://192.168.1.151/img_tmp/raw.jpg -O $value.jpg wget -q http://192.168.1.151/img_tmp/raw.jpg -O $value.jpg
else else
echo &quot;Value did not change, skipping image fetching!&quot; echo "Value did not change, skipping image fetching!"
fi fi
cp value.txt value_previous.txt cp value.txt value_previous.txt
echo &quot;waiting 60s...&quot; echo "waiting 60s..."
sleep 60 sleep 60
done done
</code></pre> </code></pre>
<h2 id="installation">Installation</h2> <h2 id="installation"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Installation</h2>
<p>Just install the zip file using the OTA Update functionality.</p> <p>Just install the zip file using the OTA Update functionality.</p>
<h2 id="how-does-it-work">How does it work</h2> <h2 id="how-does-it-work"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> How does it work</h2>
<p>The Demo Mode tries to interfere as less as possible with the normal behavior. Whenever a Cam framebuffer gets taken (<code>esp_camera_fb_get()</code>), it replaces the framebuffer with the image from the SD card.</p> <p>The Demo Mode tries to interfere as less as possible with the normal behavior. Whenever a Cam framebuffer gets taken (<code>esp_camera_fb_get()</code>), it replaces the framebuffer with the image from the SD card.</p>
<h2 id="example-data-of-a-water-meter">Example Data of a Water Meter</h2> <h2 id="example-data-of-a-water-meter"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5</span> Example Data of a Water Meter</h2>
<p>You can use the following demo images if you want:</p> <p>You can use the following demo images if you want:</p>
<p><img alt="530 00688" src="https://user-images.githubusercontent.com/1783586/211902363-1b8e4115-5f08-4e25-ace6-bb52e43b3741.jpg" style="width:400px"/></p> <p><img alt="530 00688" src="https://user-images.githubusercontent.com/1783586/211902363-1b8e4115-5f08-4e25-ace6-bb52e43b3741.jpg" style="width:400px"/></p>
<p>It covers a meter range from <code>530.00688</code> to <code>531.85882</code>.</p> <p>It covers a meter range from <code>530.00688</code> to <code>531.85882</code>.</p>
<h3 id="animation">Animation</h3> <h3 id="animation"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5.1</span> Animation</h3>
<p><a href="../img/demo-watermeter-animated.png">Animation of the watermeter (77 MB!)</a></p> <p><a href="../img/demo-watermeter-animated.png">Animation of the watermeter (77 MB!)</a></p>
<h3 id="selection-of-84-images">Selection of 84 images</h3> <h3 id="selection-of-84-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5.2</span> Selection of 84 images</h3>
<p><a href="https://user-images.githubusercontent.com/1783586/211915870-aa5c1342-c61c-4e1f-afe0-10e222f1499d.png"><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/211915870-aa5c1342-c61c-4e1f-afe0-10e222f1499d.png" style="width:400px"/></a></p> <p><a href="https://user-images.githubusercontent.com/1783586/211915870-aa5c1342-c61c-4e1f-afe0-10e222f1499d.png"><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/211915870-aa5c1342-c61c-4e1f-afe0-10e222f1499d.png" style="width:400px"/></a></p>
<p><a href="https://github.com/jomjol/AI-on-the-edge-device-docs/files/10395892/Demo_Images_Watermeter_530.00688-532.08243_84_images.zip">Demo_Images_Watermeter_530.00688-532.08243_84_images.zip</a></p> <p><a href="https://github.com/jomjol/AI-on-the-edge-device-docs/files/10395892/Demo_Images_Watermeter_530.00688-532.08243_84_images.zip">Demo_Images_Watermeter_530.00688-532.08243_84_images.zip</a></p>
<h3 id="selection-of-42-images">Selection of 42 images</h3> <h3 id="selection-of-42-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5.3</span> Selection of 42 images</h3>
<p><a href="https://user-images.githubusercontent.com/1783586/211915898-b499e109-7b63-4e21-ba5b-c0a370022f7a.png"><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/211915898-b499e109-7b63-4e21-ba5b-c0a370022f7a.png" style="width:400px"/></a></p> <p><a href="https://user-images.githubusercontent.com/1783586/211915898-b499e109-7b63-4e21-ba5b-c0a370022f7a.png"><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/211915898-b499e109-7b63-4e21-ba5b-c0a370022f7a.png" style="width:400px"/></a></p>
<p><a href="https://github.com/jomjol/AI-on-the-edge-device-docs/files/10395893/Demo_Images_Watermeter_530.00688-532.08243_42_images.zip">Demo_Images_Watermeter_530.00688-532.08243_42_images.zip</a></p> <p><a href="https://github.com/jomjol/AI-on-the-edge-device-docs/files/10395893/Demo_Images_Watermeter_530.00688-532.08243_42_images.zip">Demo_Images_Watermeter_530.00688-532.08243_42_images.zip</a></p>
<h3 id="all-images-843-images">All images (843 images)</h3> <h3 id="all-images-843-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5.4</span> All images (843 images)</h3>
<p><a href="https://user-images.githubusercontent.com/1783586/211915731-9a2a3cd3-390b-4b1f-a064-5e7e443ab113.png"><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/211915731-9a2a3cd3-390b-4b1f-a064-5e7e443ab113.png" style="width:400px"/></a></p> <p><a href="https://user-images.githubusercontent.com/1783586/211915731-9a2a3cd3-390b-4b1f-a064-5e7e443ab113.png"><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/211915731-9a2a3cd3-390b-4b1f-a064-5e7e443ab113.png" style="width:400px"/></a></p>
<p><a href="https://github.com/jomjol/AI-on-the-edge-device-docs/files/10395941/Demo_Images_Watermeter_530.00688-532.08243_843_images.zip">Demo_Images_Watermeter_530.00688-532.08243_843_images.zip</a></p> <p><a href="https://github.com/jomjol/AI-on-the-edge-device-docs/files/10395941/Demo_Images_Watermeter_530.00688-532.08243_843_images.zip">Demo_Images_Watermeter_530.00688-532.08243_843_images.zip</a></p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Frequent-Reboots/" class="btn btn-neutral float-left" title="Basic hardware/config issues"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Frequent-Reboots/" title="Basic hardware/config issues"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../REST-API/" class="btn btn-neutral float-right" title="REST API">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../REST-API/" title="REST API">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Frequent-Reboots/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../REST-API/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Frequent-Reboots/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../REST-API/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -320,6 +300,5 @@ done
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Error-Codes/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Error-Codes/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Reduced webinterface (error codes) - AI on the Edge Device</title> <title>Reduced webinterface (error codes) - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Reduced webinterface (error codes)"; var mkdocs_page_name = "Reduced webinterface (error codes)";
var mkdocs_page_input_path = "Error-Codes.md"; var mkdocs_page_input_path = "Error-Codes.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Error-Codes/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Error-Codes/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -112,15 +108,27 @@
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="./">Reduced webinterface (error codes)</a> <li class="toctree-l1 current"><a class="reference internal current" href="./">Reduced webinterface (error codes)</a>
<ul class="current"> <ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#0x00000001-psram-bad">0x00000001 PSRAM bad</a> <li class="toctree-l2"><a class="reference internal" href="#critical-errors">Critical Errors</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#0x00000001-psram-bad">0x00000001 PSRAM bad</a>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="#0x00000002-heap-too-small">0x00000002 Heap too small</a> <li class="toctree-l3"><a class="reference internal" href="#0x00000002-heap-too-small">0x00000002 Heap too small</a>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="#0x00000004-cam-bad">0x00000004 Cam bad</a> <li class="toctree-l3"><a class="reference internal" href="#0x00000004-cam-bad">0x00000004 Cam bad</a>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="#0x00000008-sd-card-basic-check-failed">0x00000008 SD card basic check failed</a> <li class="toctree-l3"><a class="reference internal" href="#0x00000008-sd-card-basic-check-failed">0x00000008 SD card basic check failed</a>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="#0x00000010-sd-folder-or-file-presence-check-failed">0x00000010 SD folder or file presence check failed</a> <li class="toctree-l3"><a class="reference internal" href="#0x00000010-sd-folder-or-file-presence-check-failed">0x00000010 SD folder or file presence check failed</a>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#non-critical-errors">Non-Critical Errors</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#0x00000100-cam-framebuffer-bad">0x00000100 Cam Framebuffer bad</a>
</li>
<li class="toctree-l3"><a class="reference internal" href="#0x00000200-ntp-failed">0x00000200 NTP failed</a>
</li>
</ul>
</li> </li>
</ul> </ul>
</li> </li>
@@ -150,7 +158,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -166,45 +174,42 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Troubleshooting &raquo;</li> <li>Troubleshooting »</li>
<li class="breadcrumb-item active">Reduced webinterface (error codes)</li> <li class="breadcrumb-item active">Reduced webinterface (error codes)</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Error-Codes.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Error-Codes.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="reduced-webinterface-error-indication-and-tracing"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Reduced webinterface (error indication and tracing)</h1>
<p># Reduced webinterface (error indication and tracing)</p>
<p>Whenever an error occurs during boot process which avoids loading of regular processing and regular webinterface, a reduced webinterface gets loaded to have at least some visual feedback and the possibilitiy to figure out the root cause by browsing the logfiles or trigger another OTA update.</p> <p>Whenever an error occurs during boot process which avoids loading of regular processing and regular webinterface, a reduced webinterface gets loaded to have at least some visual feedback and the possibilitiy to figure out the root cause by browsing the logfiles or trigger another OTA update.</p>
<p>The error code(s) get printed with specific error codes. This page lists the possible error codes, their meaning and possible solutions.</p> <p>The error code(s) get printed with specific error codes. This page lists the possible error codes, their meaning and possible solutions.</p>
<p>Note: Here the error codes are defined in source code: <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/code/components/jomjol_helper/Helper.h">error codes</a>.</p> <p>Note: Here the error codes are defined in source code: <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/code/components/jomjol_helper/Helper.h">error codes</a>.</p>
<h2 id="critical-errors">Critical Errors</h2> <h2 id="critical-errors"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Critical Errors</h2>
<p>Those Errors make the normal operation of the device impossible. <p>Those Errors make the normal operation of the device impossible.
Most likely they are caused by a hardware issue!</p> Most likely they are caused by a hardware issue!</p>
<h3 id="0x00000001-psram-bad"><code>0x00000001</code> PSRAM bad</h3> <h3 id="0x00000001-psram-bad"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> <code>0x00000001</code> PSRAM bad</h3>
<p>Your device most likely has no PSRAM at all or it is too small (needs to have at least 4 MBytes)! <p>Your device most likely has no PSRAM at all or it is too small (needs to have at least 4 MBytes)!
See <a href="../Hardware-Compatibility">Hardware Compatibility</a>.</p> See <a href="../Hardware-Compatibility">Hardware Compatibility</a>.</p>
<p>Usually the log shows something like this:</p> <p>Usually the log shows something like this:</p>
<pre><code>psram: PSRAM ID read error: 0xffffffff <pre><code>psram: PSRAM ID read error: 0xffffffff
cpu_start: Failed to init external RAM! cpu_start: Failed to init external RAM!
</code></pre> </code></pre>
<h3 id="0x00000002-heap-too-small"><code>0x00000002</code> Heap too small</h3> <h3 id="0x00000002-heap-too-small"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2</span> <code>0x00000002</code> Heap too small</h3>
<p>The firmware failed to allocate enough memory. This most likely is a consequential error of a bad PSRAM!</p> <p>The firmware failed to allocate enough memory. This most likely is a consequential error of a bad PSRAM!</p>
<h3 id="0x00000004-cam-bad"><code>0x00000004</code> Cam bad</h3> <h3 id="0x00000004-cam-bad"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.3</span> <code>0x00000004</code> Cam bad</h3>
<p>The attached camera can not be initialized. <p>The attached camera can not be initialized.
This usually is because on of the following reasons:</p> This usually is because on of the following reasons:</p>
<ul> <ul>
@@ -212,7 +217,7 @@ This usually is because on of the following reasons:</p>
<li>The camera is not attached properly -&gt; Try to remove and attach it again. Make sure you move the black part enough into the socket!</li> <li>The camera is not attached properly -&gt; Try to remove and attach it again. Make sure you move the black part enough into the socket!</li>
<li>The camera or the camera cable is damaged</li> <li>The camera or the camera cable is damaged</li>
</ul> </ul>
<h3 id="0x00000008-sd-card-basic-check-failed"><code>0x00000008</code> SD card basic check failed</h3> <h3 id="0x00000008-sd-card-basic-check-failed"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.4</span> <code>0x00000008</code> SD card basic check failed</h3>
<p>One or more basic SD card checks failed.</p> <p>One or more basic SD card checks failed.</p>
<p>The following checks are performed during boot sequence:</p> <p>The following checks are performed during boot sequence:</p>
<ul> <ul>
@@ -223,7 +228,7 @@ This usually is because on of the following reasons:</p>
</ul> </ul>
<p>Detailed error indication (write, rerad or delete error) can be derived from blinking code of red board status LED. Please refer to <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">StatusLED-BlinkCodes</a></p> <p>Detailed error indication (write, rerad or delete error) can be derived from blinking code of red board status LED. Please refer to <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">StatusLED-BlinkCodes</a></p>
<p>Recommendation: Reformat SD card and check again or try another SD card</p> <p>Recommendation: Reformat SD card and check again or try another SD card</p>
<h3 id="0x00000010-sd-folder-or-file-presence-check-failed"><code>0x00000010</code> SD folder or file presence check failed</h3> <h3 id="0x00000010-sd-folder-or-file-presence-check-failed"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.5</span> <code>0x00000010</code> SD folder or file presence check failed</h3>
<p>One or more mandatory folders and/or files are missing on SD card. <p>One or more mandatory folders and/or files are missing on SD card.
To have early indication that SD card is potentially ready for operation, some folder and files, which are mandatory are presence checked. This is not a 100% check and a successful test does not mean everthing is OK.</p> To have early indication that SD card is potentially ready for operation, some folder and files, which are mandatory are presence checked. This is not a 100% check and a successful test does not mean everthing is OK.</p>
<p>The following folders / files get checked during boot sequence:</p> <p>The following folders / files get checked during boot sequence:</p>
@@ -244,52 +249,39 @@ To have early indication that SD card is potentially ready for operation, some f
</ul> </ul>
<p>Note: This list might be outdated, see the source code for the latest implementation: <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/code/components/jomjol_helper/sdcard_check.cpp#L14">SDCardCheckRW()</a></p> <p>Note: This list might be outdated, see the source code for the latest implementation: <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/code/components/jomjol_helper/sdcard_check.cpp#L14">SDCardCheckRW()</a></p>
<p>Recommendation: Check logs and / or redo a Over-The-Air Update (OTA Update) to ensure proper SD card structure</p> <p>Recommendation: Check logs and / or redo a Over-The-Air Update (OTA Update) to ensure proper SD card structure</p>
<h2 id="non-critical-errors">Non-Critical Errors</h2> <h2 id="non-critical-errors"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Non-Critical Errors</h2>
<p>Those Errors can be caused by an error during initialization. It is possible that the error has no impact at all or that a reboot solves it.</p> <p>Those Errors can be caused by an error during initialization. It is possible that the error has no impact at all or that a reboot solves it.</p>
<h3 id="0x00000100-cam-framebuffer-bad"><code>0x00000100</code> Cam Framebuffer bad</h3> <h3 id="0x00000100-cam-framebuffer-bad"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1</span> <code>0x00000100</code> Cam Framebuffer bad</h3>
<p>The firmware was unable to initialize the Camera Framebuffer. <p>The firmware was unable to initialize the Camera Framebuffer.
The firmware will continue to work, but other consequential error might arise. The firmware will continue to work, but other consequential error might arise.
A reboot of the device might help.</p> A reboot of the device might help.</p>
<p>This might also be caused by a corrupred SD-Card, see <a href="https://github.com/jomjol/AI-on-the-edge-device/discussions/2390#discussioncomment-6430819">CAM is not working anymore" on init #2390</a></p> <p>This might also be caused by a corrupred SD-Card, see <a href="https://github.com/jomjol/AI-on-the-edge-device/discussions/2390#discussioncomment-6430819">CAM is not working anymore" on init #2390</a></p>
<h3 id="0x00000200-ntp-failed"><code>0x00000200</code> NTP failed</h3> <h3 id="0x00000200-ntp-failed"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2</span> <code>0x00000200</code> NTP failed</h3>
<p>The firmware failed to get the world time from an NTP server. The firmware will continue to work, but has a wrong time.</p> <p>The firmware failed to get the world time from an NTP server. The firmware will continue to work, but has a wrong time.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../New-Releases-Notification/" class="btn btn-neutral float-left" title="Notification about new Releases"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../New-Releases-Notification/" title="Notification about new Releases"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../StatusLED-BlinkCodes/" class="btn btn-neutral float-right" title="Board status LED (blink codes)">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../StatusLED-BlinkCodes/" title="Board status LED (blink codes)">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../New-Releases-Notification/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../StatusLED-BlinkCodes/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../New-Releases-Notification/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../StatusLED-BlinkCodes/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -302,6 +294,5 @@ A reboot of the device might help.</p>
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Error-Debugging/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Error-Debugging/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Often observed issues - AI on the Edge Device</title> <title>Often observed issues - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Often observed issues"; var mkdocs_page_name = "Often observed issues";
var mkdocs_page_input_path = "Error-Debugging.md"; var mkdocs_page_input_path = "Error-Debugging.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Error-Debugging/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Error-Debugging/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -148,7 +144,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -164,30 +160,27 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Troubleshooting &raquo;</li> <li>Troubleshooting »</li>
<li class="breadcrumb-item active">Often observed issues</li> <li class="breadcrumb-item active">Often observed issues</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Error-Debugging.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Error-Debugging.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="often-observed-issues"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Often observed issues</h1>
<h1 id="often-observed-issues">Often observed issues</h1> <h2 id="hardware-failure"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Hardware failure</h2>
<h2 id="hardware-failure">Hardware failure</h2>
<ul> <ul>
<li>Camera not working --&gt; check the interface, test another module</li> <li>Camera not working --&gt; check the interface, test another module</li>
<li>Low cost module with no or only 2MB memory instead of 4MB --&gt; test another module</li> <li>Low cost module with no or only 2MB memory instead of 4MB --&gt; test another module</li>
@@ -195,58 +188,45 @@
<li>Wifi reception bad / unstable --&gt; bad antenna, test another module or use external antenna</li> <li>Wifi reception bad / unstable --&gt; bad antenna, test another module or use external antenna</li>
</ul> </ul>
<p>More information in terms of hardware, component and basic configuration issues can be found here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Frequent-Reboots/">Reboot reasons</a></p> <p>More information in terms of hardware, component and basic configuration issues can be found here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Frequent-Reboots/">Reboot reasons</a></p>
<h2 id="roi-misaligned">ROI misaligned</h2> <h2 id="roi-misaligned"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> ROI misaligned</h2>
<p><img src="https://user-images.githubusercontent.com/108122193/188264361-0f5038ce-d827-4096-93fb-5907d3b072b4.png" width=30% height=30%></p> <p><img height="30%" src="https://user-images.githubusercontent.com/108122193/188264361-0f5038ce-d827-4096-93fb-5907d3b072b4.png" width="30%"/></p>
<p>This typically happens if you have suboptimal "Alignment Marks". A very simple and working solution is to put put higly contrasted stickers on your meter and put "Alignment Marks" on it (see picture below)</p> <p>This typically happens if you have suboptimal "Alignment Marks". A very simple and working solution is to put put higly contrasted stickers on your meter and put "Alignment Marks" on it (see picture below)</p>
<p><img src="https://user-images.githubusercontent.com/108122193/188264752-c0f2a2be-0c22-40de-afaf-fd55b2eb4182.png" width=30% height=30%></p> <p><img height="30%" src="https://user-images.githubusercontent.com/108122193/188264752-c0f2a2be-0c22-40de-afaf-fd55b2eb4182.png" width="30%"/></p>
<p>If after those adjustment you still have some issues, you can try to adjust your alignment settings in expert mode: <p>If after those adjustment you still have some issues, you can try to adjust your alignment settings in expert mode:
<img src="https://user-images.githubusercontent.com/108122193/188382213-68c4a015-6582-4911-81bc-cdce8ef60ed2.png" width=75% height=75%></p> <img height="75%" src="https://user-images.githubusercontent.com/108122193/188382213-68c4a015-6582-4911-81bc-cdce8ef60ed2.png" width="75%"/></p>
<h2 id="my-analog-meter-are-recognized-as-digital-counter-or-vice-versa">My Analog Meter are recognized as Digital Counter or vice versa</h2> <h2 id="my-analog-meter-are-recognized-as-digital-counter-or-vice-versa"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> My Analog Meter are recognized as Digital Counter or vice versa</h2>
<p><img src="https://user-images.githubusercontent.com/108122193/188265470-001a392f-d1f4-46a3-b1e8-f29ec41c8621.png" width=40% height=40%></p> <p><img height="40%" src="https://user-images.githubusercontent.com/108122193/188265470-001a392f-d1f4-46a3-b1e8-f29ec41c8621.png" width="40%"/></p>
<ol> <ol>
<li>First, check that your ROI are correctly defined (yey!)</li> <li>First, check that your ROI are correctly defined (yey!)</li>
<li>Second, verify that the name of your ROI analog and digital ROIs are different </li> <li>Second, verify that the name of your ROI analog and digital ROIs are different </li>
</ol> </ol>
<h2 id="recognition-is-working-well-but-number-arent-sorted-correctly">Recognition is working well, but number aren't sorted correctly</h2> <h2 id="recognition-is-working-well-but-number-arent-sorted-correctly"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> Recognition is working well, but number aren't sorted correctly</h2>
<p>You have to sort your ROI correctly (Bigger to smaller). Select your ROI and click either "move next" or "move previous". Repeat until your ROI are correctly sorted</p> <p>You have to sort your ROI correctly (Bigger to smaller). Select your ROI and click either "move next" or "move previous". Repeat until your ROI are correctly sorted</p>
<p><img src="https://user-images.githubusercontent.com/108122193/188264916-03befff1-4e61-4370-bd5a-9168a88c57f2.png" width=50% height=50%></p> <p><img height="50%" src="https://user-images.githubusercontent.com/108122193/188264916-03befff1-4e61-4370-bd5a-9168a88c57f2.png" width="50%"/></p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../WLAN-disconnect-reason/" class="btn btn-neutral float-left" title="WLAN disconnect reasons"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../WLAN-disconnect-reason/" title="WLAN disconnect reasons"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Frequent-Reboots/" class="btn btn-neutral float-right" title="Basic hardware/config issues">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Frequent-Reboots/" title="Basic hardware/config issues">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../WLAN-disconnect-reason/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Frequent-Reboots/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../WLAN-disconnect-reason/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Frequent-Reboots/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -259,6 +239,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/External-LED/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/External-LED/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>External LED - AI on the Edge Device</title> <title>External LED - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "External LED"; var mkdocs_page_name = "External LED";
var mkdocs_page_input_path = "External-LED.md"; var mkdocs_page_input_path = "External-LED.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/External-LED/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/External-LED/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -144,7 +140,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -160,41 +156,38 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">External LED</li> <li class="breadcrumb-item active">External LED</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/External-LED.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/External-LED.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="external-led"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> External LED</h1>
<h2 id="external-led">External LED</h2>
<p>The internal flash LED is very close to the camera axis. This results in reflection, especially in case of flat glass surfaces such as for power meters. <p>The internal flash LED is very close to the camera axis. This results in reflection, especially in case of flat glass surfaces such as for power meters.
To circumvent this problem, it is now possible to control external LEDs, which than can be places somewhere else in the setup. As not simples LEDs are used, but RGB LEDs with a digital interface like WS2812 not only the position, but also the color and intensity of the illumination can now be adjusted. The following image shows a direct comparison of the "old" internal flash LED and two off axis LEDs.</p> To circumvent this problem, it is now possible to control external LEDs, which than can be places somewhere else in the setup. As not simples LEDs are used, but RGB LEDs with a digital interface like WS2812 not only the position, but also the color and intensity of the illumination can now be adjusted. The following image shows a direct comparison of the "old" internal flash LED and two off axis LEDs.</p>
<p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/intern_vs_external.jpg" width="700"></p> <p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/intern_vs_external.jpg" width="700"/></p>
<p>There is also a new <a href="https://www.thingiverse.com/thing:5028229">meter adapter</a> available. This has two features: designed for <strong>small clearings</strong> in front of the meter and prepared for <strong>WS2812 LEDs</strong>.</p> <p>There is also a new <a href="https://www.thingiverse.com/thing:5028229">meter adapter</a> available. This has two features: designed for <strong>small clearings</strong> in front of the meter and prepared for <strong>WS2812 LEDs</strong>.</p>
<p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/Power_Meter_Mounted.jpg" width="500"></p> <p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/Power_Meter_Mounted.jpg" width="500"/></p>
<h4 id="1-hardware-installation-of-the-led-stripe">1. Hardware installation of the LED stripe</h4> <h2 id="1-hardware-installation-of-the-led-stripe"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> 1. Hardware installation of the LED stripe</h2>
<p>The control line of the LED stripe is connected with a 470 Ohm resistor to the GPIO12. <p>The control line of the LED stripe is connected with a 470 Ohm resistor to the GPIO12.
For power supply stabilization a capacitor between 5V and ground is recommended. Here a 470µF polymer capacitor is used. As a power supply a 5V from the ESP32 is used like in the following wiring.</p> For power supply stabilization a capacitor between 5V and ground is recommended. Here a 470µF polymer capacitor is used. As a power supply a 5V from the ESP32 is used like in the following wiring.</p>
<p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/install_external_led.jpg" width="500"> </p> <p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/install_external_led.jpg" width="500"/> </p>
<h4 id="2-software-configuration">2. Software configuration</h4> <h2 id="2-software-configuration"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> 2. Software configuration</h2>
<p>The handling of the WS2812 LED controller needs some other libraries, therefore it is controlled within a dedicated section called <code>GPIO Settings</code>. The external LED stripe is connected to GPIO12. After activating the "GPIO Settings" section, the internal flash is per default disabled. In order to activate the external LED, you need to activate <code>GPIO 12 state</code> and select <code>"extern flash light ws281x ..."</code>. </p> <p>The handling of the WS2812 LED controller needs some other libraries, therefore it is controlled within a dedicated section called <code>GPIO Settings</code>. The external LED stripe is connected to GPIO12. After activating the "GPIO Settings" section, the internal flash is per default disabled. In order to activate the external LED, you need to activate <code>GPIO 12 state</code> and select <code>"extern flash light ws281x ..."</code>. </p>
<p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/external_GPIO_settings.jpg" width="700"> </p> <p><img src="https://raw.githubusercontent.com/jomjol/ai-on-the-edge-device/master/images/external_GPIO_settings.jpg" width="700"/> </p>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -218,43 +211,30 @@ For power supply stabilization a capacitor between 5V and ground is recommended.
</tbody> </tbody>
</table> </table>
<p>Enabling the GPIO settings automatically disables the flash LED. Therefore you can enable it here manually by checking GPIO4 and choose <code>"build-in led flash light"</code>. It is not recommended to use both illumination parallel. </p> <p>Enabling the GPIO settings automatically disables the flash LED. Therefore you can enable it here manually by checking GPIO4 and choose <code>"build-in led flash light"</code>. It is not recommended to use both illumination parallel. </p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Integration-Home-Assistant/" class="btn btn-neutral float-left" title="Integration into Home Assistant"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Integration-Home-Assistant/" title="Integration into Home Assistant"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../data-logging/" class="btn btn-neutral float-right" title="Data Logging">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../data-logging/" title="Data Logging">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Integration-Home-Assistant/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../data-logging/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Integration-Home-Assistant/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../data-logging/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -267,6 +247,5 @@ For power supply stabilization a capacitor between 5V and ground is recommended.
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/FAQs/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/FAQs/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Frequently Asked Questions - AI on the Edge Device</title> <title>Frequently Asked Questions - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Frequently Asked Questions"; var mkdocs_page_name = "Frequently Asked Questions";
var mkdocs_page_input_path = "FAQs.md"; var mkdocs_page_input_path = "FAQs.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/FAQs/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/FAQs/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul class="current"> <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -156,7 +152,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -172,30 +168,27 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Getting Started &raquo;</li> <li>Getting Started »</li>
<li class="breadcrumb-item active">Frequently Asked Questions</li> <li class="breadcrumb-item active">Frequently Asked Questions</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/FAQs.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/FAQs.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="frequently-asked-questions"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Frequently Asked Questions</h1>
<h1 id="frequently-asked-questions">Frequently Asked Questions</h1> <h2 id="my-device-reboots-frequently-what-can-i-do"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> My device reboots frequently. What can I do?</h2>
<h2 id="my-device-reboots-frequently-what-can-i-do">My device reboots frequently. What can I do?</h2>
<p>There are several reasons for frequent reboots:</p> <p>There are several reasons for frequent reboots:</p>
<ul> <ul>
<li>Frequent HTML requests</li> <li>Frequent HTML requests</li>
@@ -203,7 +196,7 @@
<li>Unstable hardware - see <a href="../Hardware-Compatibility">Hardware Compatibility</a>.</li> <li>Unstable hardware - see <a href="../Hardware-Compatibility">Hardware Compatibility</a>.</li>
</ul> </ul>
<p>There is a dedicated page about this: <a href="../Frequent-Reboots/">Frequent Reboots</a>.</p> <p>There is a dedicated page about this: <a href="../Frequent-Reboots/">Frequent Reboots</a>.</p>
<h3 id="how-accurate-are-the-detections">How accurate are the detections?</h3> <h3 id="how-accurate-are-the-detections"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> How accurate are the detections?</h3>
<p>It is hard to give a specific accuracy number. It depends on many factors, e.g.</p> <p>It is hard to give a specific accuracy number. It depends on many factors, e.g.</p>
<ul> <ul>
<li>How in-focus is your camera?</li> <li>How in-focus is your camera?</li>
@@ -214,12 +207,12 @@
</ul> </ul>
<p>Anecdotally, the authors of this page have great success with the meter. While the AI algorithm itself is not perfect and sometimes returns <code>NaN</code> or incorrect values, other post-processing / prevalue / sanity checks help ensure such invalid values are filtered out. With the correct settings, one author has been running this device for 1 month without any incorrect values reported. </p> <p>Anecdotally, the authors of this page have great success with the meter. While the AI algorithm itself is not perfect and sometimes returns <code>NaN</code> or incorrect values, other post-processing / prevalue / sanity checks help ensure such invalid values are filtered out. With the correct settings, one author has been running this device for 1 month without any incorrect values reported. </p>
<p>See the FAQs below for more details and configuration hints.</p> <p>See the FAQs below for more details and configuration hints.</p>
<h2 id="my-numbers-are-not-correctly-detected-what-can-i-do">My numbers are not correctly detected. What can I do?</h2> <h2 id="my-numbers-are-not-correctly-detected-what-can-i-do"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> My numbers are not correctly detected. What can I do?</h2>
<ul> <ul>
<li>There is a dedicated page about the correct setting <a href="../ROI-Configuration/">ROI Configuration</a>.</li> <li>There is a dedicated page about the correct setting <a href="../ROI-Configuration/">ROI Configuration</a>.</li>
<li>This page also includes the instructions for gathering new images for the training.</li> <li>This page also includes the instructions for gathering new images for the training.</li>
</ul> </ul>
<h2 id="how-can-i-ensure-invalid-numbers-are-never-reported">How can I ensure invalid numbers are never reported?</h2> <h2 id="how-can-i-ensure-invalid-numbers-are-never-reported"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> How can I ensure invalid numbers are never reported?</h2>
<p>As mentioned above, the AI algorithm is not perfect. Sometimes it may read an incorrect value.</p> <p>As mentioned above, the AI algorithm is not perfect. Sometimes it may read an incorrect value.</p>
<p>We can tune the software to <em>almost</em> never report an incorrect value. There is a tradeoff though: the software may report <em>stale</em> values - i.e. it will drop incorrect values for a potentially long period of time, resulting in the meter reading being outdated by hours. If never receiving an incorrect value is important to you, consider tolerating this tradeoff.</p> <p>We can tune the software to <em>almost</em> never report an incorrect value. There is a tradeoff though: the software may report <em>stale</em> values - i.e. it will drop incorrect values for a potentially long period of time, resulting in the meter reading being outdated by hours. If never receiving an incorrect value is important to you, consider tolerating this tradeoff.</p>
<p>You can change the following settings to reduce incorrect readings (but potentially increase staleness of data):</p> <p>You can change the following settings to reduce incorrect readings (but potentially increase staleness of data):</p>
@@ -228,7 +221,7 @@
<li>Change <code>PostProcessing</code> configuration option <code>MaxRateType</code> to be time based instead of absolute. Set <code>MaxRateValue</code> to something realistic (e.g. <code>5</code> gal/min). You can often find the max flow rate your meter supports directly on the cover.</li> <li>Change <code>PostProcessing</code> configuration option <code>MaxRateType</code> to be time based instead of absolute. Set <code>MaxRateValue</code> to something realistic (e.g. <code>5</code> gal/min). You can often find the max flow rate your meter supports directly on the cover.</li>
<li>Reduce <code>AutoTimer</code> configuration option <code>Interval</code> to the lowest it can be (e.g. <code>3</code> min). The more often you take readings, the less likely for data staleness to occur.</li> <li>Reduce <code>AutoTimer</code> configuration option <code>Interval</code> to the lowest it can be (e.g. <code>3</code> min). The more often you take readings, the less likely for data staleness to occur.</li>
</ul> </ul>
<h2 id="even-after-i-have-setup-everything-perfect-there-is-a-false-reading-especially-around-the-zero-crossing-roll-over-to-next-number">Even after I have setup everything perfect there is a false reading - especially around the zero crossing (roll over to next number)</h2> <h2 id="even-after-i-have-setup-everything-perfect-there-is-a-false-reading-especially-around-the-zero-crossing-roll-over-to-next-number"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> Even after I have setup everything perfect there is a false reading - especially around the zero crossing (roll over to next number)</h2>
<ul> <ul>
<li>The roll over behavior is different for the different meters. E.g.:</li> <li>The roll over behavior is different for the different meters. E.g.:</li>
<li>Rolling over start with different previous position (e.g. at 7, 8 or 9)</li> <li>Rolling over start with different previous position (e.g. at 7, 8 or 9)</li>
@@ -250,11 +243,11 @@
<li>To handle this, a parametrized setting would be needed. This is rather complicated to implement as subtle changes make a relevant difference. Currently this is not implemented. <li>To handle this, a parametrized setting would be needed. This is rather complicated to implement as subtle changes make a relevant difference. Currently this is not implemented.
So please be a bit patient with your meter :-)</li> So please be a bit patient with your meter :-)</li>
</ul> </ul>
<h2 id="pre-value">Pre-Value</h2> <h2 id="pre-value"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5</span> Pre-Value</h2>
<p>PreValue is here a bit missleading, because normally it is the same as the last value. In the next round of reading it will be used to check nagtive rates, high rates (MaxRateValue / MaxRateType) and CCheckDigitIncreaseConsistency (dig-class11 only). Either from a previous correctly identified value or manual setting by the user.</p> <p>PreValue is here a bit missleading, because normally it is the same as the last value. In the next round of reading it will be used to check nagtive rates, high rates (MaxRateValue / MaxRateType) and CCheckDigitIncreaseConsistency (dig-class11 only). Either from a previous correctly identified value or manual setting by the user.</p>
<p>If you use post processes, enable the pre-value. The pre-value must be set at first time. Set it to the current raw value. </p> <p>If you use post processes, enable the pre-value. The pre-value must be set at first time. Set it to the current raw value. </p>
<p>If the device runs in errors, the pre-value will not be updated, as long as the <code>preValueAgeStartup</code> time between the last valid value (or startup time) and current time is not exceeded. After it the preValue will be set again, if no other error occured. So the device can not run in an endless error, like high rate.</p> <p>If the device runs in errors, the pre-value will not be updated, as long as the <code>preValueAgeStartup</code> time between the last valid value (or startup time) and current time is not exceeded. After it the preValue will be set again, if no other error occured. So the device can not run in an endless error, like high rate.</p>
<h2 id="rate-too-high-read">"Rate too high - Read: ..."</h2> <h2 id="rate-too-high-read"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.6</span> "Rate too high - Read: ..."</h2>
<p>In configuration you can set the <code>MaxRateValue</code> and <code>MaxRateType</code>. The settings suppress improbably high values that can come from false readings. To do this, the value must be set correctly depending on your meter.</p> <p>In configuration you can set the <code>MaxRateValue</code> and <code>MaxRateType</code>. The settings suppress improbably high values that can come from false readings. To do this, the value must be set correctly depending on your meter.</p>
<p>Before doing this, you should be clear about the type of rating you want to use.</p> <p>Before doing this, you should be clear about the type of rating you want to use.</p>
<p>"Absolute change" is the interval between two readings - no matter how often the readings happen. </p> <p>"Absolute change" is the interval between two readings - no matter how often the readings happen. </p>
@@ -262,47 +255,34 @@
<p>If there is an interval of 5 minutes between readings and a MaxRateValue of 1, an error "Rate too high - Read: ..." if </p> <p>If there is an interval of 5 minutes between readings and a MaxRateValue of 1, an error "Rate too high - Read: ..." if </p>
<p>Absolute change: the difference is &gt; 1</p> <p>Absolute change: the difference is &gt; 1</p>
<p>RateChange: the difference is &gt; 1 / 5</p> <p>RateChange: the difference is &gt; 1 / 5</p>
<h1 id="train-on-my-own-images">Train on my own images</h1> <h1 id="train-on-my-own-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.</span> Train on my own images</h1>
<p>Look at <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Learn-models-with-your-own-images/">Learn models with your own images</a></p> <p>Look at <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Learn-models-with-your-own-images/">Learn models with your own images</a></p>
<p>and</p> <p>and</p>
<p><a href="https://github.com/haverland/Tenth-of-step-of-a-meter-digit/wiki/Cookbook-running-the-jupyter-notebook-with-my-own-data">Cookbook running the jupyter notebook with my own data</a>.</p> <p><a href="https://github.com/haverland/Tenth-of-step-of-a-meter-digit/wiki/Cookbook-running-the-jupyter-notebook-with-my-own-data">Cookbook running the jupyter notebook with my own data</a>.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Best-Practice/" class="btn btn-neutral float-left" title="Best Practice"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Best-Practice/" title="Best Practice"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Reference-Image/" class="btn btn-neutral float-right" title="Reference Image">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Reference-Image/" title="Reference Image">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Best-Practice/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Reference-Image/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Best-Practice/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Reference-Image/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -315,6 +295,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Frequent-Reboots/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Frequent-Reboots/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Basic hardware/config issues - AI on the Edge Device</title> <title>Basic hardware/config issues - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Basic hardware/config issues"; var mkdocs_page_name = "Basic hardware/config issues";
var mkdocs_page_input_path = "Frequent-Reboots.md"; var mkdocs_page_input_path = "Frequent-Reboots.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Frequent-Reboots/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Frequent-Reboots/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -180,7 +176,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -196,29 +192,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Troubleshooting &raquo;</li> <li>Troubleshooting »</li>
<li class="breadcrumb-item active">Basic hardware/config issues</li> <li class="breadcrumb-item active">Basic hardware/config issues</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Frequent-Reboots.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Frequent-Reboots.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="basic-hardware-configuration-issues"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Basic hardware / configuration issues</h1>
<h1 id="basic-hardware-configuration-issues">Basic hardware / configuration issues</h1>
<p>If the device is behaving eratically or not running as expected you can use the following tools trying to identify the root cause:</p> <p>If the device is behaving eratically or not running as expected you can use the following tools trying to identify the root cause:</p>
<ol> <ol>
<li>Internal logging (<code>config.ini</code>) <li>Internal logging (<code>config.ini</code>)
@@ -233,7 +226,7 @@
<li>Repeating boot loops (reoccuring, always stop working after same precondition)</li> <li>Repeating boot loops (reoccuring, always stop working after same precondition)</li>
</ol> </ol>
<hr/> <hr/>
<h3 id="sporadic-random-reboots">Sporadic random reboots</h3> <h3 id="sporadic-random-reboots"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1</span> Sporadic random reboots</h3>
<p>Sporadic random reboots could have the following reasons:</p> <p>Sporadic random reboots could have the following reasons:</p>
<ul> <ul>
<li>In general: Unstable system due to software issues (e.g. overload during HTML access, ...) <li>In general: Unstable system due to software issues (e.g. overload during HTML access, ...)
@@ -242,7 +235,7 @@
--&gt; The power supply need to stable to ensure proper operation of the device. If it's not stable the device tents to sporadic reboots (brownout detection)</li> --&gt; The power supply need to stable to ensure proper operation of the device. If it's not stable the device tents to sporadic reboots (brownout detection)</li>
</ul> </ul>
<p>In general: There are several mechanisms in the firmware (like saving previous values), to have a "smooth" reboot without too many notable disturbance.</p> <p>In general: There are several mechanisms in the firmware (like saving previous values), to have a "smooth" reboot without too many notable disturbance.</p>
<h5 id="system-instabilities">System instabilities</h5> <h5 id="system-instabilities"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.0.1</span> System instabilities</h5>
<p>If your system is sometimes running smoothly over several runs and sometimes reboots obviously randomly, you have an partially unstable device. </p> <p>If your system is sometimes running smoothly over several runs and sometimes reboots obviously randomly, you have an partially unstable device. </p>
<p>You can check this in the standard log file on the SD card:</p> <p>You can check this in the standard log file on the SD card:</p>
<pre><code>2021-12-26T06:34:09: task_autodoFlow - round done <pre><code>2021-12-26T06:34:09: task_autodoFlow - round done
@@ -251,7 +244,7 @@
</code></pre> </code></pre>
<p>Here you see, that the round #23 is starting, so obviously there were no reboots in the last 22 rounds. There is hardware (ESP32CAM), where only 2-3 stable rounds are possible and others, where way more than 100 rounds without any reboots is possible. <p>Here you see, that the round #23 is starting, so obviously there were no reboots in the last 22 rounds. There is hardware (ESP32CAM), where only 2-3 stable rounds are possible and others, where way more than 100 rounds without any reboots is possible.
There is noting you can do about it, beside testing different hardware.</p> There is noting you can do about it, beside testing different hardware.</p>
<h4 id="overload-during-html-access">Overload during HTML access</h4> <h4 id="overload-during-html-access"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.1</span> Overload during HTML access</h4>
<p>If you frequently access the web server over HTML requests, the firmware tends to reboot. This especially happens during the first run and when the ESP32 is busy with the digitization flow. </p> <p>If you frequently access the web server over HTML requests, the firmware tends to reboot. This especially happens during the first run and when the ESP32 is busy with the digitization flow. </p>
<p>The reason for this are running out of memory during a flow, minor memory leakage in combination with missing error handling.</p> <p>The reason for this are running out of memory during a flow, minor memory leakage in combination with missing error handling.</p>
<p>There is noting you can do about this kind of reboot, beside two thing:</p> <p>There is noting you can do about this kind of reboot, beside two thing:</p>
@@ -259,10 +252,10 @@ There is noting you can do about it, beside testing different hardware.</p>
<li>Support the firmware development with improved and tested part of code</li> <li>Support the firmware development with improved and tested part of code</li>
<li>Be patient :-)</li> <li>Be patient :-)</li>
</ol> </ol>
<h5 id="bad-or-insufficient-power-supply">Bad or insufficient power supply</h5> <h5 id="bad-or-insufficient-power-supply"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1.1.1</span> Bad or insufficient power supply</h5>
<p>A good and stabilized power supply is essential to have error free operation. The device is quite picky in terms of proper power supply. Especially the wifi module have some load spikes which the power supply needs to cover. If the power is not stable enough, the brwonout mechanism is protecting against strange behaviour and force a reboot whenever the voltage drops below a specific level. You can see this in random reboots which indication is logfile: --&gt; Reset reason: Brownout</p> <p>A good and stabilized power supply is essential to have error free operation. The device is quite picky in terms of proper power supply. Especially the wifi module have some load spikes which the power supply needs to cover. If the power is not stable enough, the brwonout mechanism is protecting against strange behaviour and force a reboot whenever the voltage drops below a specific level. You can see this in random reboots which indication is logfile: --&gt; Reset reason: Brownout</p>
<hr/> <hr/>
<h3 id="repeating-boot-loops">Repeating boot loops</h3> <h3 id="repeating-boot-loops"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2</span> Repeating boot loops</h3>
<p>Repeating boot loops at the same situation during the flow has a systematic problem either in the hardware or the configuration. It usually happens during initialization state or processing the first round as there all needed parts of the firmware have been loaded for the first time.</p> <p>Repeating boot loops at the same situation during the flow has a systematic problem either in the hardware or the configuration. It usually happens during initialization state or processing the first round as there all needed parts of the firmware have been loaded for the first time.</p>
<p>To identify the root cause the logfiles, the reduced web interface, the red board LED or the serial log of the UART interface (no remote access, USB access needed) is helpful. </p> <p>To identify the root cause the logfiles, the reduced web interface, the red board LED or the serial log of the UART interface (no remote access, USB access needed) is helpful. </p>
<p>Possible issues:</p> <p>Possible issues:</p>
@@ -271,21 +264,21 @@ There is noting you can do about it, beside testing different hardware.</p>
<li>RAM related issues</li> <li>RAM related issues</li>
<li>Configuration related issues</li> <li>Configuration related issues</li>
</ul> </ul>
<h5 id="sd-card-related-issues">SD card related issues</h5> <h5 id="sd-card-related-issues"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.1</span> SD card related issues</h5>
<p>The ESP32CAM is a little bit "picky" with the supported SD cards. Due to the limited availability of GPIOs the SD card can only be accessed via 1-wire mode. Therefore not all SD cards are supported. The following error cases can occur:</p> <p>The ESP32CAM is a little bit "picky" with the supported SD cards. Due to the limited availability of GPIOs the SD card can only be accessed via 1-wire mode. Therefore not all SD cards are supported. The following error cases can occur:</p>
<h6 id="sd-card-wrong-filesystem-only-fat32-is-supported">SD card: Wrong filesystem (only FAT32 is supported)</h6> <h6 id="sd-card-wrong-filesystem-only-fat32-is-supported"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.1.1</span> SD card: Wrong filesystem (only FAT32 is supported)</h6>
<p>If this SD card error is detected only the following indications are available. No web interface will be accessible.</p> <p>If this SD card error is detected only the following indications are available. No web interface will be accessible.</p>
<ul> <ul>
<li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li> <li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li>
<li>Error messages on serial log (UART interface)</li> <li>Error messages on serial log (UART interface)</li>
</ul> </ul>
<h6 id="sd-card-not-detected-not-supported">SD card not detected / not supported</h6> <h6 id="sd-card-not-detected-not-supported"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.1.2</span> SD card not detected / not supported</h6>
<p>If this SD card error is detected the following indication are available. No web interface will be accessible.</p> <p>If this SD card error is detected the following indication are available. No web interface will be accessible.</p>
<ul> <ul>
<li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li> <li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li>
<li>Error messages on serial log (UART interface)</li> <li>Error messages on serial log (UART interface)</li>
</ul> </ul>
<h6 id="sd-card-detected-but-files-are-not-readable-writeable">SD card detected but files are not readable / writeable</h6> <h6 id="sd-card-detected-but-files-are-not-readable-writeable"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.1.3</span> SD card detected but files are not readable / writeable</h6>
<p>The SD card is detected, but the files cannot be read or written. A basic SD card check for SD reading / writing is performed on every boot. This not 100% guarantee that SD card is working but it's at least a indication.</p> <p>The SD card is detected, but the files cannot be read or written. A basic SD card check for SD reading / writing is performed on every boot. This not 100% guarantee that SD card is working but it's at least a indication.</p>
<p>If this SD card error is detected the following indications are available:</p> <p>If this SD card error is detected the following indications are available:</p>
<ul> <ul>
@@ -294,10 +287,10 @@ There is noting you can do about it, beside testing different hardware.</p>
<li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li> <li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li>
<li>Error messages on serial log (UART interface)</li> <li>Error messages on serial log (UART interface)</li>
</ul> </ul>
<h5 id="ram-related-issues">RAM related issues</h5> <h5 id="ram-related-issues"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.2</span> RAM related issues</h5>
<p>In order to run the firmware, 4 MB of external RAM (PSRAM) are mandatory. Usually, the ESP32CAM is equipped with 8MB (64Mbit) PSRAM chip, whereof only 4MB can be used effectively (direct addressable). <p>In order to run the firmware, 4 MB of external RAM (PSRAM) are mandatory. Usually, the ESP32CAM is equipped with 8MB (64Mbit) PSRAM chip, whereof only 4MB can be used effectively (direct addressable).
Unfortunately, there is hardware around, where no PSRAM or only 2MB of PSRAM is present - <strong>even if you have bought a device where a 8MB PSRAM was promoted</strong>. These modules are not suiable for this firmware because the external RAM is needed to handle the CNN files and camera images. There is nothing to do, than to buy a new ESP32CAM with <strong>really</strong> 64MBit of PSRAM. </p> Unfortunately, there is hardware around, where no PSRAM or only 2MB of PSRAM is present - <strong>even if you have bought a device where a 8MB PSRAM was promoted</strong>. These modules are not suiable for this firmware because the external RAM is needed to handle the CNN files and camera images. There is nothing to do, than to buy a new ESP32CAM with <strong>really</strong> 64MBit of PSRAM. </p>
<h6 id="too-less-external-ram-psram">Too less external RAM (PSRAM)</h6> <h6 id="too-less-external-ram-psram"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.2.1</span> Too less external RAM (PSRAM)</h6>
<p>During the boot process the available RAM is going to be checked.</p> <p>During the boot process the available RAM is going to be checked.</p>
<p>If there is too less RAM (PSRAM or total HEAP &lt; 4MB) detected, the follwoing indications are available:</p> <p>If there is too less RAM (PSRAM or total HEAP &lt; 4MB) detected, the follwoing indications are available:</p>
<ul> <ul>
@@ -306,8 +299,8 @@ Unfortunately, there is hardware around, where no PSRAM or only 2MB of PSRAM is
<li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li> <li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li>
<li>Error messages on serial log (UART interface)</li> <li>Error messages on serial log (UART interface)</li>
</ul> </ul>
<h5 id="configuration-related-issues">Configuration related issues</h5> <h5 id="configuration-related-issues"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.3</span> Configuration related issues</h5>
<h6 id="folders-and-files-missing">Folders and files missing</h6> <h6 id="folders-and-files-missing"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.3.1</span> Folders and files missing</h6>
<p>Most of the relevant folders and files are checked during boot. The complete list can be found here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Error-Codes/">Error codes on reduced webinterface</a></p> <p>Most of the relevant folders and files are checked during boot. The complete list can be found here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Error-Codes/">Error codes on reduced webinterface</a></p>
<p>If a relevant folder or file is missing the following indications are available:</p> <p>If a relevant folder or file is missing the following indications are available:</p>
<ul> <ul>
@@ -316,7 +309,7 @@ Unfortunately, there is hardware around, where no PSRAM or only 2MB of PSRAM is
<li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li> <li>Red board LED is blinking. The blinking codes are described here: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/">Status LED Blinkcodes</a></li>
<li>Error messages on serial log (UART interface)</li> <li>Error messages on serial log (UART interface)</li>
</ul> </ul>
<h6 id="cnn-model-file-not-available-corrupt">CNN model file not available / corrupt</h6> <h6 id="cnn-model-file-not-available-corrupt"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2.0.3.2</span> CNN model file not available / corrupt</h6>
<p>Additionally for operation CNN model files on SD card are mandatory, one CNN model file for analog counter and for for digit numbers each.</p> <p>Additionally for operation CNN model files on SD card are mandatory, one CNN model file for analog counter and for for digit numbers each.</p>
<ul> <ul>
<li><code>/config/XXXXX.tflite</code> (XXXXX is the file name, that is written in the <code>config.ini</code>)</li> <li><code>/config/XXXXX.tflite</code> (XXXXX is the file name, that is written in the <code>config.ini</code>)</li>
@@ -352,43 +345,30 @@ Unfortunately, there is hardware around, where no PSRAM or only 2MB of PSRAM is
<li><code>[0d00h05m12s] 2023-03-27T12:25:14 [TFLITE] CTfLiteClass::ReadFileToModel: /sdcard/config/ana-cont_1105_s2_q.tflite</code> <li><code>[0d00h05m12s] 2023-03-27T12:25:14 [TFLITE] CTfLiteClass::ReadFileToModel: /sdcard/config/ana-cont_1105_s2_q.tflite</code>
--&gt; model file found: config OK</li> --&gt; model file found: config OK</li>
</ul> </ul>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Error-Debugging/" class="btn btn-neutral float-left" title="Often observed issues"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Error-Debugging/" title="Often observed issues"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Demo-Mode/" class="btn btn-neutral float-right" title="Demo mode">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Demo-Mode/" title="Demo mode">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Error-Debugging/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Demo-Mode/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Error-Debugging/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Demo-Mode/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -401,6 +381,5 @@ Unfortunately, there is hardware around, where no PSRAM or only 2MB of PSRAM is
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Hardware-Compatibility/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Hardware-Compatibility/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Hardware Compatibility - AI on the Edge Device</title> <title>Hardware Compatibility - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Hardware Compatibility"; var mkdocs_page_name = "Hardware Compatibility";
var mkdocs_page_input_path = "Hardware-Compatibility.md"; var mkdocs_page_input_path = "Hardware-Compatibility.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Hardware-Compatibility/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Hardware-Compatibility/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul class="current"> <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -142,7 +138,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -158,30 +154,27 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Getting Started &raquo;</li> <li>Getting Started »</li>
<li class="breadcrumb-item active">Hardware Compatibility</li> <li class="breadcrumb-item active">Hardware Compatibility</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Hardware-Compatibility.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Hardware-Compatibility.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="hardware-compatibility"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Hardware Compatibility</h1>
<h1 id="hardware-compatibility">Hardware Compatibility</h1> <h3 id="general-remark"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1</span> General Remark</h3>
<h3 id="general-remark">General Remark</h3>
<p>Although a board looks similar, it can have major differences, e.g.:</p> <p>Although a board looks similar, it can have major differences, e.g.:</p>
<ul> <ul>
<li>Processor</li> <li>Processor</li>
@@ -198,7 +191,7 @@
<p>This can cause different Power Consumption, Power Requirements, compatibility issues, etc.</p> <p>This can cause different Power Consumption, Power Requirements, compatibility issues, etc.</p>
<p>Most manufacturers and sellers buy what's cheap today on the Asian markets. In the end, it looks like it is sometimes a trial and error approach which ESP32-CAM Module works reliably.</p> <p>Most manufacturers and sellers buy what's cheap today on the Asian markets. In the end, it looks like it is sometimes a trial and error approach which ESP32-CAM Module works reliably.</p>
<p>Below you find some remarks and experiences from the community:</p> <p>Below you find some remarks and experiences from the community:</p>
<h1 id="esp32-core-itself">ESP32 core itself</h1> <h1 id="esp32-core-itself"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.</span> ESP32 core itself</h1>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -215,7 +208,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h1 id="psram">PSRAM</h1> <h1 id="psram"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.</span> PSRAM</h1>
<p>There seems to be a lot of "fake" chips, or maybe wrongly configured ESP32 Boards.</p> <p>There seems to be a lot of "fake" chips, or maybe wrongly configured ESP32 Boards.</p>
<p>For AP MEMORY, all "real" APS<strong>64</strong>04*3SQR chips should work.</p> <p>For AP MEMORY, all "real" APS<strong>64</strong>04*3SQR chips should work.</p>
<p>For ESP PSRAM, all "real" PSRAM<strong>64</strong>* should work.</p> <p>For ESP PSRAM, all "real" PSRAM<strong>64</strong>* should work.</p>
@@ -317,7 +310,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h1 id="ov2640-camera">OV2640 - Camera</h1> <h1 id="ov2640-camera"><span class="enumerate-headings-plugin enumerate-heading-plugin">4.</span> OV2640 - Camera</h1>
<p>The experience with the camera only is based on single modules. It is well possible, that this module had a damage overall and other modules of the same type will work. Give it a try and report to me!</p> <p>The experience with the camera only is based on single modules. It is well possible, that this module had a damage overall and other modules of the same type will work. Give it a try and report to me!</p>
<table> <table>
<thead> <thead>
@@ -341,11 +334,11 @@
<tr> <tr>
<td>DC-26 / 40-V3</td> <td>DC-26 / 40-V3</td>
<td></td> <td></td>
<td>✔️ 3x<br> ❌ 1x</td> <td>✔️ 3x<br/> ❌ 1x</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h1 id="esp32-modules">ESP32 Modules</h1> <h1 id="esp32-modules"><span class="enumerate-headings-plugin enumerate-heading-plugin">5.</span> ESP32 Modules</h1>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -356,22 +349,22 @@
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>ESP32CAM / Different versions on the market!<br>Especially the PSRAM is sometimes labeled wrong<br>(Label: 4MB, Real: only 2 MB --&gt; will not work!)</td> <td>ESP32CAM / Different versions on the market!<br/>Especially the PSRAM is sometimes labeled wrong<br/>(Label: 4MB, Real: only 2 MB --&gt; will not work!)</td>
<td></td> <td></td>
<td>✔️<br />with &gt;=4 MB PSRAM!</td> <td>✔️<br>with &gt;=4 MB PSRAM!</br></td>
</tr> </tr>
<tr> <tr>
<td>ESP32-S3-EYE<br />No Flash LED, pins different used (e.g. LCD display)</td> <td>ESP32-S3-EYE<br>No Flash LED, pins different used (e.g. LCD display)</br></td>
<td></td> <td></td>
<td><strong>NOT OKAY</strong></td> <td><strong>NOT OKAY</strong></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h1 id="sd-cards">SD Cards</h1> <h1 id="sd-cards"><span class="enumerate-headings-plugin enumerate-heading-plugin">6.</span> SD Cards</h1>
<p>Due to the limited free available GPIOs (due to all the extensions needed like: camera, SD card, LED-flash, ...) the SD card is connected in 1-wire mode. There are some cards, that are compatible with the esp32cam module for unknown reasons. <p>Due to the limited free available GPIOs (due to all the extensions needed like: camera, SD card, LED-flash, ...) the SD card is connected in 1-wire mode. There are some cards, that are compatible with the esp32cam module for unknown reasons.
It is observed, that smaller cards (up to 4 GB) tend to be more stable and larger cards have more problems. But quite some exceptions in the forums (4 GB cards not working, 16 GB cards working like a charm).</p> It is observed, that smaller cards (up to 4 GB) tend to be more stable and larger cards have more problems. But quite some exceptions in the forums (4 GB cards not working, 16 GB cards working like a charm).</p>
<h1 id="devices-known-to-work">Devices known to work</h1> <h1 id="devices-known-to-work"><span class="enumerate-headings-plugin enumerate-heading-plugin">7.</span> Devices known to work</h1>
<h3 id="modules-old-list-not-up-to-date-anymore">Modules (Old list, not up-to-date anymore):</h3> <h3 id="modules-old-list-not-up-to-date-anymore"><span class="enumerate-headings-plugin enumerate-heading-plugin">7.0.1</span> Modules (Old list, not up-to-date anymore):</h3>
<p>See <a href="https://github.com/jomjol/AI-on-the-edge-device/discussions/1732">https://github.com/jomjol/AI-on-the-edge-device/discussions/1732</a> for a more recent list.</p> <p>See <a href="https://github.com/jomjol/AI-on-the-edge-device/discussions/1732">https://github.com/jomjol/AI-on-the-edge-device/discussions/1732</a> for a more recent list.</p>
<ul> <ul>
<li> <li>
@@ -384,51 +377,38 @@ It is observed, that smaller cards (up to 4 GB) tend to be more stable and large
<p><a href="https://www.reichelt.de/entwicklerboards-esp32-kamera-2mp-25--debo-cam-esp32-p266036.html?PROVID=2788&amp;gclid=CjwKCAiAqaWdBhAvEiwAGAQlttJnV4azXWDYeaFUuNioMICh-jvxKp6Cifmcep9vvtoT2JRCDqBczRoC7Q0QAvD_BwE">https://www.reichelt.de/entwicklerboards-esp32-kamera-2mp-25--debo-cam-esp32-p266036.html?PROVID=2788&amp;gclid=CjwKCAiAqaWdBhAvEiwAGAQlttJnV4azXWDYeaFUuNioMICh-jvxKp6Cifmcep9vvtoT2JRCDqBczRoC7Q0QAvD_BwE</a> (27.12.2022)</p> <p><a href="https://www.reichelt.de/entwicklerboards-esp32-kamera-2mp-25--debo-cam-esp32-p266036.html?PROVID=2788&amp;gclid=CjwKCAiAqaWdBhAvEiwAGAQlttJnV4azXWDYeaFUuNioMICh-jvxKp6Cifmcep9vvtoT2JRCDqBczRoC7Q0QAvD_BwE">https://www.reichelt.de/entwicklerboards-esp32-kamera-2mp-25--debo-cam-esp32-p266036.html?PROVID=2788&amp;gclid=CjwKCAiAqaWdBhAvEiwAGAQlttJnV4azXWDYeaFUuNioMICh-jvxKp6Cifmcep9vvtoT2JRCDqBczRoC7Q0QAvD_BwE</a> (27.12.2022)</p>
</li> </li>
</ul> </ul>
<h3 id="sd-card">SD Card</h3> <h3 id="sd-card"><span class="enumerate-headings-plugin enumerate-heading-plugin">7.0.2</span> SD Card</h3>
<ul> <ul>
<li>Sandisk 2GB Micro SD Class 2 <a href="https://www.amazon.co.uk/gp/product/B000N3LL02/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&amp;psc=1">Sandisk 2GB</a> <li>Sandisk 2GB Micro SD Class 2 <a href="https://www.amazon.co.uk/gp/product/B000N3LL02/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&amp;psc=1">Sandisk 2GB</a>
AITRIP ESP32 and CAM <a href="https://www.amazon.co.uk/gp/product/B08X49P8P3/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1">ESP-32/CAM</a></li> AITRIP ESP32 and CAM <a href="https://www.amazon.co.uk/gp/product/B08X49P8P3/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1">ESP-32/CAM</a></li>
<li><a href="https://www.amazon.com/gp/product/B0948ZFTQZ">Amazon US - Aideepen ESP32-CAM W BT Board ESP32-CAM-MB Micro USB to Serial Port CH-340G with OV2640 2MP Camera Module Dual Mode</a> with <a href="https://www.amazon.com/gp/product/B07QYTP4VN">Amazon US - Cloudisk 5Pack 4GB Micro SD Card 4 GB MicroSD Memory Card Class6</a></li> <li><a href="https://www.amazon.com/gp/product/B0948ZFTQZ">Amazon US - Aideepen ESP32-CAM W BT Board ESP32-CAM-MB Micro USB to Serial Port CH-340G with OV2640 2MP Camera Module Dual Mode</a> with <a href="https://www.amazon.com/gp/product/B07QYTP4VN">Amazon US - Cloudisk 5Pack 4GB Micro SD Card 4 GB MicroSD Memory Card Class6</a></li>
</ul> </ul>
<h1 id="weak-wifi">Weak Wifi</h1> <h1 id="weak-wifi"><span class="enumerate-headings-plugin enumerate-heading-plugin">8.</span> Weak Wifi</h1>
<p>The ESP32-CAM supports an external antenna. It requires some soldering skills but can improve the connection quality. See <a href="https://randomnerdtutorials.com/esp32-cam-connect-external-antenna/">https://randomnerdtutorials.com/esp32-cam-connect-external-antenna/</a></p> <p>The ESP32-CAM supports an external antenna. It requires some soldering skills but can improve the connection quality. See <a href="https://randomnerdtutorials.com/esp32-cam-connect-external-antenna/">https://randomnerdtutorials.com/esp32-cam-connect-external-antenna/</a></p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../initial-setup/" class="btn btn-neutral float-left" title="Initial Setup"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../initial-setup/" title="Initial Setup"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Best-Practice/" class="btn btn-neutral float-right" title="Best Practice">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Best-Practice/" title="Best Practice">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../initial-setup/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Best-Practice/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../initial-setup/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Best-Practice/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -441,6 +421,5 @@ AITRIP ESP32 and CAM <a href="https://www.amazon.co.uk/gp/product/B08X49P8P3/ref
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Influx-DB/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Influx-DB/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Influx DB - AI on the Edge Device</title> <title>Influx DB - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Influx DB"; var mkdocs_page_name = "Influx DB";
var mkdocs_page_input_path = "Influx-DB.md"; var mkdocs_page_input_path = "Influx-DB.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Influx-DB/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Influx-DB/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -140,7 +136,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -156,68 +152,52 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>API's &raquo;</li> <li>API's »</li>
<li class="breadcrumb-item active">Influx DB</li> <li class="breadcrumb-item active">Influx DB</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Influx-DB.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Influx-DB.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="influx-db"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Influx DB</h1>
<h1 id="influx-db">Influx DB</h1>
<p>The device also supports direct sending of data to an Influx DB.</p> <p>The device also supports direct sending of data to an Influx DB.</p>
<p>‼️ Only Influx DB 1 is supported!</p> <p>‼️ Only Influx DB 1 is supported!</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../MQTT-API/" class="btn btn-neutral float-left" title="MQTT API"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../MQTT-API/" title="MQTT API"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Build-Instructions/" class="btn btn-neutral float-right" title="Build the Project">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Build-Instructions/" title="Build the Project">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../MQTT-API/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Build-Instructions/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../MQTT-API/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Build-Instructions/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -230,6 +210,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Installation - AI on the Edge Device</title> <title>Installation - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Installation"; var mkdocs_page_name = "Installation";
var mkdocs_page_input_path = "Installation.md"; var mkdocs_page_input_path = "Installation.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Installation/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Installation/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul class="current"> <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -182,7 +178,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -198,29 +194,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Getting Started &raquo;</li> <li>Getting Started »</li>
<li class="breadcrumb-item active">Installation</li> <li class="breadcrumb-item active">Installation</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Installation.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Installation.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="installation"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Installation</h1>
<h1 id="installation">Installation</h1>
<p>The installation requires multiple steps:</p> <p>The installation requires multiple steps:</p>
<ol> <ol>
<li>Get the right hardware and wire it up</li> <li>Get the right hardware and wire it up</li>
@@ -229,8 +222,8 @@
<li>Start it</li> <li>Start it</li>
</ol> </ol>
<p>For point 2 and 3 we provide multiple ways to do it. Pick the one that looks the easiest for you!</p> <p>For point 2 and 3 we provide multiple ways to do it. Pick the one that looks the easiest for you!</p>
<h2 id="1-hardware">1. Hardware</h2> <h2 id="1-hardware"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> 1. Hardware</h2>
<h3 id="esp32-cam">ESP32-CAM</h3> <h3 id="esp32-cam"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> ESP32-CAM</h3>
<ul> <ul>
<li>OV2640 camera module</li> <li>OV2640 camera module</li>
<li>Micro SD card slot </li> <li>Micro SD card slot </li>
@@ -238,31 +231,31 @@
</ul> </ul>
<p>It can be easily found on the typical internet stores, searching for ESP32-CAM for less than 10 EUR. <p>It can be easily found on the typical internet stores, searching for ESP32-CAM for less than 10 EUR.
How ever since the hardware is cheap and coming from China, you unluckily could pick a malfunctioning device. See <a href="../Hardware-Compatibility">Hardware Compatibility</a> for further advice! </p> How ever since the hardware is cheap and coming from China, you unluckily could pick a malfunctioning device. See <a href="../Hardware-Compatibility">Hardware Compatibility</a> for further advice! </p>
<h3 id="usb-uart-interface">USB-&gt;UART interface</h3> <h3 id="usb-uart-interface"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2</span> USB-&gt;UART interface</h3>
<p>For first time flashing the firmware a USB -&gt; UART connector is needed. Later firmware upgrades than can be flashed via OTA.</p> <p>For first time flashing the firmware a USB -&gt; UART connector is needed. Later firmware upgrades than can be flashed via OTA.</p>
<h3 id="power-supply">Power supply</h3> <h3 id="power-supply"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.3</span> Power supply</h3>
<p>For power supply a 5V source is needed. Most easily this can be done via a USB power supply. The power supply should support minimum 500mA. For buffering current peaks some users reported to use a large electrolytic capacitor like a 2200uF between ground and VCC.</p> <p>For power supply a 5V source is needed. Most easily this can be done via a USB power supply. The power supply should support minimum 500mA. For buffering current peaks some users reported to use a large electrolytic capacitor like a 2200uF between ground and VCC.</p>
<p><strong>‼️ Attention:</strong> in several internet forums there are problems reported, in case the ESP32-CAM is only supplied with 3.3V.</p> <p><strong>‼️ Attention:</strong> in several internet forums there are problems reported, in case the ESP32-CAM is only supplied with 3.3V.</p>
<h3 id="housing">Housing</h3> <h3 id="housing"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.4</span> Housing</h3>
<p>A small 3D-printable example for a very small case can be found in Thingiverse here: <a href="https://www.thingiverse.com/thing:4571627">https://www.thingiverse.com/thing:4571627</a></p> <p>A small 3D-printable example for a very small case can be found in Thingiverse here: <a href="https://www.thingiverse.com/thing:4571627">https://www.thingiverse.com/thing:4571627</a></p>
<p><img alt="" src="../img/main.jpg" style="width:200px" /> <p><img alt="" src="../img/main.jpg" style="width:200px">
<img alt="" src="../img/size.png" style="width:200px" /></p> <img alt="" src="../img/size.png" style="width:200px"/></img></p>
<p><strong>‼️ Attention</strong>: the focus of the OV2640 needs to be adjusted, as it is normally set from ~40cm to infinity. In order to get an image that is big enough, it needs to be changed to about 10cm. Therefore the sealing glue on the objective ring needs to be removed with a scalpel or sharp knife. Afterwards the objective can be rotated clockwise until the image is sharp again.</p> <p><strong>‼️ Attention</strong>: the focus of the OV2640 needs to be adjusted, as it is normally set from ~40cm to infinity. In order to get an image that is big enough, it needs to be changed to about 10cm. Therefore the sealing glue on the objective ring needs to be removed with a scalpel or sharp knife. Afterwards the objective can be rotated clockwise until the image is sharp again.</p>
<p><img alt="" src="../img/focus_adjustment.jpg" style="width:200px"/></p> <p><img alt="" src="../img/focus_adjustment.jpg" style="width:200px"/></p>
<h3 id="wiring">Wiring</h3> <h3 id="wiring"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.5</span> Wiring</h3>
<p>Beside the 5V power supply, only for the first flashing a connection to the USB-UART connector, including a short cut of GPIO0 to GND for bootloader start.</p> <p>Beside the 5V power supply, only for the first flashing a connection to the USB-UART connector, including a short cut of GPIO0 to GND for bootloader start.</p>
<p>A example for wiring can be found here:</p> <p>A example for wiring can be found here:</p>
<p><img alt="" src="../img/wiring.png"/></p> <p><img alt="" src="../img/wiring.png"/></p>
<p><img alt="" src="../img/progammer_manual.jpg"/></p> <p><img alt="" src="../img/progammer_manual.jpg"/></p>
<p>It is also possible to use external LEDs for the illumination instead of the internal flash LED. This is described <a href="../External-LED">here</a></p> <p>It is also possible to use external LEDs for the illumination instead of the internal flash LED. This is described <a href="../External-LED">here</a></p>
<h2 id="2-firmware">2. Firmware</h2> <h2 id="2-firmware"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> 2. Firmware</h2>
<h3 id="web-installer">Web Installer</h3> <h3 id="web-installer"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1</span> Web Installer</h3>
<p>There is a Web Installer available which will work right out of the web browser Edge and Chrome. <p>There is a Web Installer available which will work right out of the web browser Edge and Chrome.
You can access it with the following link: <a href="https://jomjol.github.io/AI-on-the-edge-device">Web Installer</a></p> You can access it with the following link: <a href="https://jomjol.github.io/AI-on-the-edge-device">Web Installer</a></p>
<p><strong>This is the preferred way for beginners</strong> as it also allows access to the USB Log:</p> <p><strong>This is the preferred way for beginners</strong> as it also allows access to the USB Log:</p>
<p><a href="../img/web-console.png"><img alt="" src="../img/web-console.png"/></a></p> <p><a href="../img/web-console.png"><img alt="" src="../img/web-console.png"/></a></p>
<h3 id="manual-flashing">Manual Flashing</h3> <h3 id="manual-flashing"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2</span> Manual Flashing</h3>
<h4 id="files">Files</h4> <h4 id="files"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2.1</span> Files</h4>
<p>Grab the firmware from the</p> <p>Grab the firmware from the</p>
<ul> <ul>
<li><a href="https://github.com/jomjol/AI-on-the-edge-device/releases">Releases page</a> (Stable, tested versions), or the</li> <li><a href="https://github.com/jomjol/AI-on-the-edge-device/releases">Releases page</a> (Stable, tested versions), or the</li>
@@ -274,7 +267,7 @@ You can access it with the following link: <a href="https://jomjol.github.io/AI-
<li>bootloader.bin</li> <li>bootloader.bin</li>
<li>firmware.bin</li> <li>firmware.bin</li>
</ul> </ul>
<h4 id="flashing-using-the-flash-tool-from-espressif-gui">Flashing using the Flash Tool from Espressif (GUI)</h4> <h4 id="flashing-using-the-flash-tool-from-espressif-gui"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2.2</span> Flashing using the Flash Tool from Espressif (GUI)</h4>
<p>Get the <a href="https://www.espressif.com/en/support/download/other-tools">Flash Download Tool</a> from Espressif.</p> <p>Get the <a href="https://www.espressif.com/en/support/download/other-tools">Flash Download Tool</a> from Espressif.</p>
<p>Download and extract the Flash tool, after starting choose "Developer Mode", then "ESP32-DownloadTool" and you are in the setup of the flashing tool. Connect the ESP32-CAM with the USB-UART connection and identify the COM-Port. </p> <p>Download and extract the Flash tool, after starting choose "Developer Mode", then "ESP32-DownloadTool" and you are in the setup of the flashing tool. Connect the ESP32-CAM with the USB-UART connection and identify the COM-Port. </p>
<p>‼️ <strong>Attention</strong>: if you are re-flashing the code again, it is strongly recommended to erase the flash memory before flashing the firmware. Especially if you used OTA in between, which might cause remaining information on the flash, to still boot from an old image in the OTA-area, which is not erased by a normal flash.</p> <p>‼️ <strong>Attention</strong>: if you are re-flashing the code again, it is strongly recommended to erase the flash memory before flashing the firmware. Especially if you used OTA in between, which might cause remaining information on the flash, to still boot from an old image in the OTA-area, which is not erased by a normal flash.</p>
@@ -302,7 +295,7 @@ You can access it with the following link: <a href="https://jomjol.github.io/AI-
</tbody> </tbody>
</table> </table>
<p><img alt="" src="../img/Flash_Settings.png"/></p> <p><img alt="" src="../img/Flash_Settings.png"/></p>
<h4 id="flashing-using-the-python-based-esptool-console">Flashing using the Python based esptool (Console)</h4> <h4 id="flashing-using-the-python-based-esptool-console"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2.3</span> Flashing using the Python based esptool (Console)</h4>
<p>For this you need a python environment (e.g. Anaconda in Win10). <p>For this you need a python environment (e.g. Anaconda in Win10).
Here you need to install the esptool:</p> Here you need to install the esptool:</p>
<pre><code>pip install esptool <pre><code>pip install esptool
@@ -317,12 +310,12 @@ esptool write_flash 0x01000 bootloader.bin 0x08000 partitions.bin 0x10000 firmwa
</ul> </ul>
<p>With some Python installations this may not work and youll receive an error, try <code>python -m pip install esptool</code> or <code>pip3 install esptool</code>.</p> <p>With some Python installations this may not work and youll receive an error, try <code>python -m pip install esptool</code> or <code>pip3 install esptool</code>.</p>
<p>Further recommendations can be found on the <a href="https://docs.espressif.com/projects/esptool/en/latest/esp32/installation.html">espressif webpage</a>.</p> <p>Further recommendations can be found on the <a href="https://docs.espressif.com/projects/esptool/en/latest/esp32/installation.html">espressif webpage</a>.</p>
<h2 id="3-sd-card">3. SD Card</h2> <h2 id="3-sd-card"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> 3. SD Card</h2>
<p>The software expects an SD card prepared with certain directory and file structure in order to work properly. <p>The software expects an SD card prepared with certain directory and file structure in order to work properly.
SD card most top directory should look like this:</p> SD card most top directory should look like this:</p>
<p><img alt="" src="../sd-card-content.png"/> </p> <p><img alt="" src="../sd-card-content.png"/> </p>
<p>This initial setup needs only to be done <strong>once</strong> as further updates (Firmware as well as SD card content) are possible with the <a href="../ota/">Over-The-Air Update</a> mechanism.</p> <p>This initial setup needs only to be done <strong>once</strong> as further updates (Firmware as well as SD card content) are possible with the <a href="../ota/">Over-The-Air Update</a> mechanism.</p>
<h4 id="notes">Notes</h4> <h4 id="notes"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.0.1</span> Notes</h4>
<ul> <ul>
<li>Due to the limited availability of GPIOs (OV2640, Flash-Light, PSRAM &amp; SD card) the communication mode to the SD card is limited to 1-line SD-Mode. It showed up, that this results in problems with very large SD-Cards (64GB, sometimes 32 GB) and some no name low cost SD-cards.</li> <li>Due to the limited availability of GPIOs (OV2640, Flash-Light, PSRAM &amp; SD card) the communication mode to the SD card is limited to 1-line SD-Mode. It showed up, that this results in problems with very large SD-Cards (64GB, sometimes 32 GB) and some no name low cost SD-cards.</li>
<li>There must be no partition table on the SD-card (no GPT, but only MBR for the single partition)</li> <li>There must be no partition table on the SD-card (no GPT, but only MBR for the single partition)</li>
@@ -331,7 +324,7 @@ SD card most top directory should look like this:</p>
</ul> </ul>
<p><strong>The ESP32 indicates problems with the SD card during startup with a fast, endless blinking.</strong> <p><strong>The ESP32 indicates problems with the SD card during startup with a fast, endless blinking.</strong>
<strong>In this case, please try another SD card.</strong> </p> <strong>In this case, please try another SD card.</strong> </p>
<h3 id="manual-setup-with-an-sd-card-reader-on-a-pc">Manual Setup with an SD Card Reader on a PC</h3> <h3 id="manual-setup-with-an-sd-card-reader-on-a-pc"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1</span> Manual Setup with an SD Card Reader on a PC</h3>
<ol> <ol>
<li>Take the <code>AI-on-the-edge-device__manual-setup__*.zip</code> from the <a href="https://github.com/jomjol/AI-on-the-edge-device/releases">Release</a> page.</li> <li>Take the <code>AI-on-the-edge-device__manual-setup__*.zip</code> from the <a href="https://github.com/jomjol/AI-on-the-edge-device/releases">Release</a> page.</li>
<li>Open it and extract the <code>sd-card.zip</code>.</li> <li>Open it and extract the <code>sd-card.zip</code>.</li>
@@ -344,7 +337,7 @@ SD card most top directory should look like this:</p>
</ol> </ol>
<p><strong>Note:</strong> The device provides a File Server which can be used to show, edit or delete the files on the SD card. For security reasons, the <code>wlan.ini</code> file is excluded from this and is hidden from external access to protect the password.</p> <p><strong>Note:</strong> The device provides a File Server which can be used to show, edit or delete the files on the SD card. For security reasons, the <code>wlan.ini</code> file is excluded from this and is hidden from external access to protect the password.</p>
<p>After this, you can insert the SD card into the ESP32 board and start it.</p> <p>After this, you can insert the SD card into the ESP32 board and start it.</p>
<h3 id="remote-setup-using-the-built-in-access-point">Remote Setup using the built-in Access Point</h3> <h3 id="remote-setup-using-the-built-in-access-point"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2</span> Remote Setup using the built-in Access Point</h3>
<p>On startup of the ESP32, it checks if the <code>wlan.ini</code> or the <code>config/config.ini</code> are available on the SD card. <p>On startup of the ESP32, it checks if the <code>wlan.ini</code> or the <code>config/config.ini</code> are available on the SD card.
If not, the ESP32 switches to a special mode. In this mode, it provides a Wifi Access Point which can be used to add the missing <code>wlan.ini</code> or the <code>config/config.ini</code> file.</p> If not, the ESP32 switches to a special mode. In this mode, it provides a Wifi Access Point which can be used to add the missing <code>wlan.ini</code> or the <code>config/config.ini</code> file.</p>
<ol> <ol>
@@ -381,7 +374,7 @@ A warning will show up if you have chosen a possible wrong file (without default
It will take up to 3 minutes. Afterwards you can find your device in the local network. Check your router for the IP. You can find it also in the USB Console output.</p> It will take up to 3 minutes. Afterwards you can find your device in the local network. Check your router for the IP. You can find it also in the USB Console output.</p>
</li> </li>
</ol> </ol>
<h2 id="4-initial-startup">4. Initial Startup</h2> <h2 id="4-initial-startup"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> 4. Initial Startup</h2>
<p>After the firmware is flashed and the SD card is setup properly, you can start it. <p>After the firmware is flashed and the SD card is setup properly, you can start it.
After power on the connection status is indicated by 3x blinking of the red on board LED.</p> After power on the connection status is indicated by 3x blinking of the red on board LED.</p>
<p>WLAN-Status indication:</p> <p>WLAN-Status indication:</p>
@@ -390,43 +383,30 @@ After power on the connection status is indicated by 3x blinking of the red on b
<li><strong>3 x</strong> slow blinking (1 second on/off): WLAN connection established</li> <li><strong>3 x</strong> slow blinking (1 second on/off): WLAN connection established</li>
</ul> </ul>
<p><strong>Note:</strong> It is normal that at first one or two times a pending connection is indicated.</p> <p><strong>Note:</strong> It is normal that at first one or two times a pending connection is indicated.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href=".." class="btn btn-neutral float-left" title="Welcome"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href=".." title="Welcome"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../initial-setup/" class="btn btn-neutral float-right" title="Initial Setup">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../initial-setup/" title="Initial Setup">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href=".." style="color: #fcfcfc">« Previous</a></span>
<span><a href="../initial-setup/" style="color: #fcfcfc">Next »</a></span>
<span><a href=".." style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../initial-setup/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -439,6 +419,5 @@ After power on the connection status is indicated by 3x blinking of the red on b
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Integration-Home-Assistant/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Integration-Home-Assistant/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Integration into Home Assistant - AI on the Edge Device</title> <title>Integration into Home Assistant - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Integration into Home Assistant"; var mkdocs_page_name = "Integration into Home Assistant";
var mkdocs_page_input_path = "Integration-Home-Assistant.md"; var mkdocs_page_input_path = "Integration-Home-Assistant.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Integration-Home-Assistant/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Integration-Home-Assistant/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -158,7 +154,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -174,29 +170,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Integration into Home Assistant</li> <li class="breadcrumb-item active">Integration into Home Assistant</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Integration-Home-Assistant.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Integration-Home-Assistant.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="integration-into-home-assistant"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Integration into Home Assistant</h1>
<h1 id="integration-into-home-assistant">Integration into Home Assistant</h1>
<p>There are 3 ways to get the data into your Home Assistant:</p> <p>There are 3 ways to get the data into your Home Assistant:</p>
<ol> <ol>
<li>Using MQTT (Automatically Setup Entities using Home Assistant MQTT Discovery)</li> <li>Using MQTT (Automatically Setup Entities using Home Assistant MQTT Discovery)</li>
@@ -204,7 +197,7 @@
<li>Using REST calls</li> <li>Using REST calls</li>
</ol> </ol>
<p>The first one is the easier way if you already have MQTT in use.</p> <p>The first one is the easier way if you already have MQTT in use.</p>
<h2 id="using-mqtt-automatically-setup-entities-using-home-assistant-mqtt-discovery">Using MQTT (Automatically Setup Entities using Home Assistant MQTT Discovery)</h2> <h2 id="using-mqtt-automatically-setup-entities-using-home-assistant-mqtt-discovery"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Using MQTT (Automatically Setup Entities using Home Assistant MQTT Discovery)</h2>
<p>‼️ This feature will be available with the next release!</p> <p>‼️ This feature will be available with the next release!</p>
<p>Starting with Version <code>&gt;12.0.1</code>, AI-on-the-edge-devices support Home Assistant Discovery.</p> <p>Starting with Version <code>&gt;12.0.1</code>, AI-on-the-edge-devices support Home Assistant Discovery.</p>
<ol> <ol>
@@ -219,13 +212,13 @@
<p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/199352538-ddcc3484-39ef-44f4-a853-53286807d30b.png"/> <p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/199352538-ddcc3484-39ef-44f4-a853-53286807d30b.png"/>
<img alt="grafik" src="https://user-images.githubusercontent.com/1783586/199352565-9b0ade28-cb43-47b4-821f-7909cad41a73.png"/> <img alt="grafik" src="https://user-images.githubusercontent.com/1783586/199352565-9b0ade28-cb43-47b4-821f-7909cad41a73.png"/>
<img alt="grafik" src="https://user-images.githubusercontent.com/1783586/199352619-217df627-4b87-4fa0-86a2-f5347c452fdb.png"/></p> <img alt="grafik" src="https://user-images.githubusercontent.com/1783586/199352619-217df627-4b87-4fa0-86a2-f5347c452fdb.png"/></p>
<h3 id="using-mqtt-manually-setup-entities">Using MQTT (Manually Setup Entities)</h3> <h3 id="using-mqtt-manually-setup-entities"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> Using MQTT (Manually Setup Entities)</h3>
<p>First make sure with an MQTT client (for example <a href="http://mqtt-explorer.com/">MQTT Explorer</a>) that MQTT works as expected and to get a list of the available topics!</p> <p>First make sure with an MQTT client (for example <a href="http://mqtt-explorer.com/">MQTT Explorer</a>) that MQTT works as expected and to get a list of the available topics!</p>
<p>Then add a sensor for each property:</p> <p>Then add a sensor for each property:</p>
<pre><code class="language-yaml">mqtt: <pre><code class="language-yaml">mqtt:
sensor: sensor:
- state_topic: &quot;wasserzaehler/main/value&quot; - state_topic: "wasserzaehler/main/value"
name: &quot;Watermeter Value&quot; name: "Watermeter Value"
unique_id: watermeter_value unique_id: watermeter_value
unit_of_measurement: 'm³' unit_of_measurement: 'm³'
state_class: total_increasing state_class: total_increasing
@@ -235,8 +228,8 @@
payload_available: connected payload_available: connected
payload_not_available: connection lost payload_not_available: connection lost
- state_topic: &quot;wasserzaehler/main/rate&quot; - state_topic: "wasserzaehler/main/rate"
name: &quot;Watermeter Rate&quot; name: "Watermeter Rate"
unique_id: watermeter_rate unique_id: watermeter_rate
unit_of_measurement: 'm³/min' unit_of_measurement: 'm³/min'
state_class: measurement state_class: measurement
@@ -246,22 +239,22 @@
payload_available: connected payload_available: connected
payload_not_available: connection lost payload_not_available: connection lost
- state_topic: &quot;wasserzaehler/main/error&quot; - state_topic: "wasserzaehler/main/error"
name: &quot;Watermeter Error&quot; name: "Watermeter Error"
unique_id: watermeter_error unique_id: watermeter_error
icon: &quot;mdi:water-alert&quot; icon: "mdi:water-alert"
availability_topic: wasserzaehler/connection availability_topic: wasserzaehler/connection
payload_available: connected payload_available: connected
payload_not_available: connection lost payload_not_available: connection lost
- state_topic: &quot;wasserzaehler/uptime&quot; - state_topic: "wasserzaehler/uptime"
name: &quot;Watermeter Uptime&quot; name: "Watermeter Uptime"
unique_id: watermeter_uptime unique_id: watermeter_uptime
unit_of_measurement: 's' unit_of_measurement: 's'
state_class: measurement state_class: measurement
device_class: duration device_class: duration
entity_category: diagnostic entity_category: diagnostic
icon: &quot;mdi:timer-outline&quot; icon: "mdi:timer-outline"
availability_topic: wasserzaehler/connection availability_topic: wasserzaehler/connection
payload_available: connected payload_available: connected
payload_not_available: connection lost payload_not_available: connection lost
@@ -283,12 +276,12 @@
<p>If you want to convert the <code></code> to <code>l</code>, use a template sensor:</p> <p>If you want to convert the <code></code> to <code>l</code>, use a template sensor:</p>
<pre><code class="language-yaml">template: <pre><code class="language-yaml">template:
- sensor: - sensor:
- name: &quot;Watermeter in l&quot; - name: "Watermeter in l"
unique_id: watermeter_in_l unique_id: watermeter_in_l
icon: &quot;mdi:gauge&quot; icon: "mdi:gauge"
state: &quot;{{ states('sensor.watermeter_value')|float(default=0) * 1000 }}&quot; # Convert 1 m3 =&gt; 1000 l state: "{{ states('sensor.watermeter_value')|float(default=0) * 1000 }}" # Convert 1 m3 =&gt; 1000 l
unit_of_measurement: l unit_of_measurement: l
availability: &quot;{{ states('sensor.watermeter_value') not in ['unknown', 'unavailable', 'none'] }}&quot; availability: "{{ states('sensor.watermeter_value') not in ['unknown', 'unavailable', 'none'] }}"
</code></pre> </code></pre>
<p>If you you want to have the consumption per day, you can use an <a href="https://www.home-assistant.io/integrations/utility_meter/">Utility Meter</a>. <p>If you you want to have the consumption per day, you can use an <a href="https://www.home-assistant.io/integrations/utility_meter/">Utility Meter</a>.
it is a helper and can be used to reset the total increasing values once a day</p> it is a helper and can be used to reset the total increasing values once a day</p>
@@ -302,39 +295,39 @@ it is a helper and can be used to reset the total increasing values once a day</
cycle: daily cycle: daily
</code></pre> </code></pre>
<p>Note that you also can add it using the UI.</p> <p>Note that you also can add it using the UI.</p>
<h3 id="examples">Examples</h3> <h3 id="examples"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2</span> Examples</h3>
<p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193472069-4135736e-e63a-4afb-8009-5b97aa5c9ac5.png"/></p> <p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193472069-4135736e-e63a-4afb-8009-5b97aa5c9ac5.png"/></p>
<p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193472091-1484aac4-ddc2-48ba-896c-28370963fc2d.png"/></p> <p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193472091-1484aac4-ddc2-48ba-896c-28370963fc2d.png"/></p>
<h3 id="statistics-graph">Statistics Graph</h3> <h3 id="statistics-graph"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.3</span> Statistics Graph</h3>
<p>Creating Statistics Graphs (e.g. usage per day) is easy using the <a href="https://www.home-assistant.io/home-energy-management/">Energy Dashboard</a>: <p>Creating Statistics Graphs (e.g. usage per day) is easy using the <a href="https://www.home-assistant.io/home-energy-management/">Energy Dashboard</a>:
<img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193471893-d8ab8f5f-0906-4076-8926-8b5a69a24bce.png"/></p> <img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193471893-d8ab8f5f-0906-4076-8926-8b5a69a24bce.png"/></p>
<p>Note that there seems to be a bug in the graph, see <a href="https://github.com/home-assistant/frontend/issues/13995">https://github.com/home-assistant/frontend/issues/13995</a>!</p> <p>Note that there seems to be a bug in the graph, see <a href="https://github.com/home-assistant/frontend/issues/13995">https://github.com/home-assistant/frontend/issues/13995</a>!</p>
<h3 id="influxdb-graphs">InfluxDb Graphs</h3> <h3 id="influxdb-graphs"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.4</span> InfluxDb Graphs</h3>
<p>See also <a href="../Influx-DB">Influx-DB</a>.</p> <p>See also <a href="../Influx-DB">Influx-DB</a>.</p>
<p>If you have setup InfluxDB already, it is also possible to fetch statistics from there, e.g. daily usage:</p> <p>If you have setup InfluxDB already, it is also possible to fetch statistics from there, e.g. daily usage:</p>
<pre><code>from(bucket: &quot;HomeAssistant&quot;) <pre><code>from(bucket: "HomeAssistant")
|&gt; range(start: v.timeRangeStart, stop: v.timeRangeStop) |&gt; range(start: v.timeRangeStart, stop: v.timeRangeStop)
|&gt; filter(fn: (r) =&gt; r[&quot;entity_id&quot;] == &quot;wasserverbrauch_tag&quot;) |&gt; filter(fn: (r) =&gt; r["entity_id"] == "wasserverbrauch_tag")
|&gt; filter(fn: (r) =&gt; r[&quot;_field&quot;] == &quot;value&quot;) |&gt; filter(fn: (r) =&gt; r["_field"] == "value")
|&gt; timeShift(duration: -1d) |&gt; timeShift(duration: -1d)
|&gt; aggregateWindow(every: 1d, fn: max, createEmpty: false) |&gt; aggregateWindow(every: 1d, fn: max, createEmpty: false)
|&gt; yield(name: &quot;mean&quot;) |&gt; yield(name: "mean")
</code></pre> </code></pre>
<p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193473347-c81fc301-c52f-4af0-9fcb-56fab12cacac.png"/></p> <p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193473347-c81fc301-c52f-4af0-9fcb-56fab12cacac.png"/></p>
<h2 id="using-rest">Using REST</h2> <h2 id="using-rest"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Using REST</h2>
<p>When using REST, Home Assistant has to periodically call an URL on the ESP32 which in return provides the requested data.</p> <p>When using REST, Home Assistant has to periodically call an URL on the ESP32 which in return provides the requested data.</p>
<p>See <a href="../REST-API">REST API</a> for a list of available URLs.</p> <p>See <a href="../REST-API">REST API</a> for a list of available URLs.</p>
<p>The most practical one is the <code>json</code> entrypoint which provides the most relevant data JSON formatted: <p>The most practical one is the <code>json</code> entrypoint which provides the most relevant data JSON formatted:
<code>http://&lt;IP&gt;/json</code> <code>http://&lt;IP&gt;/json</code>
This would return:</p> This would return:</p>
<pre><code class="language-JSON">{ <pre><code class="language-JSON">{
&quot;main&quot;: "main":
{ {
&quot;value&quot;: &quot;512.3020&quot;, "value": "512.3020",
&quot;raw&quot;: &quot;0512.3020&quot;, "raw": "0512.3020",
&quot;error&quot;: &quot;no error&quot;, "error": "no error",
&quot;rate&quot;: 0.000000, "rate": 0.000000,
&quot;timestamp&quot;: &quot;2022-10-02T20:32:06&quot; "timestamp": "2022-10-02T20:32:06"
[..] [..]
} }
} }
@@ -343,7 +336,7 @@ This would return:</p>
<pre><code class="language-yaml">sensor: <pre><code class="language-yaml">sensor:
- platform: rest - platform: rest
name: &quot;Gasmeter JSON&quot; name: "Gasmeter JSON"
resource: http://&lt;IP&gt;/json resource: http://&lt;IP&gt;/json
json_attributes: json_attributes:
- main - main
@@ -354,12 +347,12 @@ This would return:</p>
template: template:
sensor: sensor:
- name: &quot;Gasmeter Value from JSON&quot; - name: "Gasmeter Value from JSON"
unique_id: gas_meter_value_from_json unique_id: gas_meter_value_from_json
state: &quot;{{ state_attr('sensor.gasmeter_json','main')['value'] }}&quot; state: "{{ state_attr('sensor.gasmeter_json','main')['value'] }}"
unit_of_measurement: 'm³' unit_of_measurement: 'm³'
- name: &quot;Watermeter Value from JSON&quot; - name: "Watermeter Value from JSON"
unique_id: water_meter_value_from_json unique_id: water_meter_value_from_json
state: &gt;- state: &gt;-
{{ state_attr('sensor.watermeter_json','main')['value'] | float }} {{ state_attr('sensor.watermeter_json','main')['value'] | float }}
@@ -381,47 +374,34 @@ template:
icon: mdi:gauge icon: mdi:gauge
scan_interval : 120</code></p> scan_interval : 120</code></p>
<p>See also https://community.home-assistant.io/t/rest-sensor-nested-json/243420/9</p> <p>See also https://community.home-assistant.io/t/rest-sensor-nested-json/243420/9</p>
<h4 id="photo">Photo</h4> <h4 id="photo"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.0.1</span> Photo</h4>
<p>REST can also be used to show the photo of the last round:</p> <p>REST can also be used to show the photo of the last round:</p>
<p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193546075-b247942f-9106-47a4-a64b-42ff96dd9078.png"/></p> <p><img alt="grafik" src="https://user-images.githubusercontent.com/1783586/193546075-b247942f-9106-47a4-a64b-42ff96dd9078.png"/></p>
<p>To access it, use <code>http://&lt;IP&gt;/img_tmp/alg_roi.jpg</code> resp <code>http://&lt;IP&gt;/img_tmp/raw.jpg</code>.</p> <p>To access it, use <code>http://&lt;IP&gt;/img_tmp/alg_roi.jpg</code> resp <code>http://&lt;IP&gt;/img_tmp/raw.jpg</code>.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Parameters/" class="btn btn-neutral float-left" title="Parameters"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Parameters/" title="Parameters"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../External-LED/" class="btn btn-neutral float-right" title="External LED">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../External-LED/" title="External LED">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Parameters/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../External-LED/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Parameters/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../External-LED/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -434,6 +414,5 @@ template:
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Learn-models-with-your-own-images/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Learn-models-with-your-own-images/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Learn a model with your own images - AI on the Edge Device</title> <title>Learn a model with your own images - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Learn a model with your own images"; var mkdocs_page_name = "Learn a model with your own images";
var mkdocs_page_input_path = "Learn-models-with-your-own-images.md"; var mkdocs_page_input_path = "Learn-models-with-your-own-images.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Learn-models-with-your-own-images/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Learn-models-with-your-own-images/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -148,7 +144,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -164,34 +160,31 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Learn a model with your own images</li> <li class="breadcrumb-item active">Learn a model with your own images</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Learn-models-with-your-own-images.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Learn-models-with-your-own-images.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="learn-a-model-with-your-own-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Learn a model with your own images</h1>
<h1 id="learn-a-model-with-your-own-images">Learn a model with your own images</h1>
<p>Once you have collected and selected your own images (see <a href="../collect-new-images/">Collect images to improve the models</a>), you can train your very own model with them.</p> <p>Once you have collected and selected your own images (see <a href="../collect-new-images/">Collect images to improve the models</a>), you can train your very own model with them.</p>
<p><strong>This is an optional step and only suggested for advances users!</strong></p> <p><strong>This is an optional step and only suggested for advances users!</strong></p>
<p>For training the model you will need a python and Jupyter installation.</p> <p>For training the model you will need a python and Jupyter installation.</p>
<p>All current labeled images you can find under <a href="https://github.com/jomjol/neural-network-digital-counter-readout/tree/master/ziffer_sortiert_raw">ziffer_sortiert_raw</a></p> <p>All current labeled images you can find under <a href="https://github.com/jomjol/neural-network-digital-counter-readout/tree/master/ziffer_sortiert_raw">ziffer_sortiert_raw</a></p>
<h3 id="dig-class11-models-digits">dig-class11 models (digits)</h3> <h3 id="dig-class11-models-digits"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.1</span> dig-class11 models (digits)</h3>
<p>Fork and checkout <a href="https://github.com/jomjol/neural-network-digital-counter-readout">neural-network-digital-counter-readout</a>.</p> <p>Fork and checkout <a href="https://github.com/jomjol/neural-network-digital-counter-readout">neural-network-digital-counter-readout</a>.</p>
<p>Install all requirements for running the notebooks.</p> <p>Install all requirements for running the notebooks.</p>
<pre><code class="language-shell">pip install -r requirements.txt <pre><code class="language-shell">pip install -r requirements.txt
@@ -202,7 +195,7 @@
<li><a href="https://github.com/jomjol/neural-network-digital-counter-readout/blob/master/Train_CNN_Digital-Readout-Small-v2.ipynb">Train_CNN_Digital-Readout-Small-v2.ipynb</a></li> <li><a href="https://github.com/jomjol/neural-network-digital-counter-readout/blob/master/Train_CNN_Digital-Readout-Small-v2.ipynb">Train_CNN_Digital-Readout-Small-v2.ipynb</a></li>
</ol> </ol>
<p>It creates a dig-class11_xxxx_s2.tflite model, you can upload to the <code>config</code> folder on your device and test it. </p> <p>It creates a dig-class11_xxxx_s2.tflite model, you can upload to the <code>config</code> folder on your device and test it. </p>
<h3 id="dig-class100-dig-cont-models-digits">dig-class100 / dig-cont models (digits)</h3> <h3 id="dig-class100-dig-cont-models-digits"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.2</span> dig-class100 / dig-cont models (digits)</h3>
<p>Fork and checkout <a href="https://github.com/jomjol/neural-network-analog-needle-readout">neural-network-analog-needle-readout</a>.</p> <p>Fork and checkout <a href="https://github.com/jomjol/neural-network-analog-needle-readout">neural-network-analog-needle-readout</a>.</p>
<p>All labeled images you can find under <a href="https://github.com/haverland/Tenth-of-step-of-a-meter-digit/tree/master/images">Images</a></p> <p>All labeled images you can find under <a href="https://github.com/haverland/Tenth-of-step-of-a-meter-digit/tree/master/images">Images</a></p>
<p>Install all requirements for running the notebooks.</p> <p>Install all requirements for running the notebooks.</p>
@@ -210,7 +203,7 @@
</code></pre> </code></pre>
<p>Put your labeled images into <code>images/collected/&lt;typeofdevice&gt;/&lt;your_short&gt;/</code></p> <p>Put your labeled images into <code>images/collected/&lt;typeofdevice&gt;/&lt;your_short&gt;/</code></p>
<p>Run <a href="https://github.com/haverland/Tenth-of-step-of-a-meter-digit/blob/master/dig-class100-s2.ipynb">dig-class100-s2.ipynb</a>. The model to upload to your device you can find under '/output'.</p> <p>Run <a href="https://github.com/haverland/Tenth-of-step-of-a-meter-digit/blob/master/dig-class100-s2.ipynb">dig-class100-s2.ipynb</a>. The model to upload to your device you can find under '/output'.</p>
<h3 id="ana-class100ana-cont-models-analog-pointers">ana-class100/ana-cont models (analog pointers)</h3> <h3 id="ana-class100ana-cont-models-analog-pointers"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.0.3</span> ana-class100/ana-cont models (analog pointers)</h3>
<p>Fork and checkout <a href="https://github.com/jomjol/neural-network-analog-needle-readout">neural-network-analog-needle-readout</a>.</p> <p>Fork and checkout <a href="https://github.com/jomjol/neural-network-analog-needle-readout">neural-network-analog-needle-readout</a>.</p>
<p>All labeled images you can find under <a href="https://github.com/jomjol/neural-network-analog-needle-readout/tree/main/data_raw_all">data_raw_all</a></p> <p>All labeled images you can find under <a href="https://github.com/jomjol/neural-network-analog-needle-readout/tree/main/data_raw_all">data_raw_all</a></p>
<p>Install all requirements for running the notebooks.</p> <p>Install all requirements for running the notebooks.</p>
@@ -219,46 +212,33 @@
<p>Put your labeled images into <code>images/collected/&lt;typeofdevice&gt;/&lt;your_short&gt;/</code></p> <p>Put your labeled images into <code>images/collected/&lt;typeofdevice&gt;/&lt;your_short&gt;/</code></p>
<p>After every adding of images you need to run <a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/main/Image_Preparation.ipynb">Image_Preparation.ipynb</a> before you train the models.</p> <p>After every adding of images you need to run <a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/main/Image_Preparation.ipynb">Image_Preparation.ipynb</a> before you train the models.</p>
<p>Run <a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/main/Train_CNN_Analog-Readout_100-Small1_Dropout.ipynb">Train_CNN_Analog-Readout_100-Small1_Dropout.ipynb</a> and/or <a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/main/Train_CNN_Analog-Readout_Version-Small2.ipynb">Train_CNN_Analog-Readout_Version-Small2.ipynb</a>. The model to upload to your device you can find in the project folder.</p> <p>Run <a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/main/Train_CNN_Analog-Readout_100-Small1_Dropout.ipynb">Train_CNN_Analog-Readout_100-Small1_Dropout.ipynb</a> and/or <a href="https://github.com/jomjol/neural-network-analog-needle-readout/blob/main/Train_CNN_Analog-Readout_Version-Small2.ipynb">Train_CNN_Analog-Readout_Version-Small2.ipynb</a>. The model to upload to your device you can find in the project folder.</p>
<h2 id="share-your-images">Share your images</h2> <h2 id="share-your-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Share your images</h2>
<p>If the results are good you can share the images as pull-request. Please images only!</p> <p>If the results are good you can share the images as pull-request. Please images only!</p>
<p>See <a href="../collect-new-images/#share-your-images">Share your images</a> for details.</p> <p>See <a href="../collect-new-images/#share-your-images">Share your images</a> for details.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../collect-new-images/" class="btn btn-neutral float-left" title="Collect images to improve the models"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../collect-new-images/" title="Collect images to improve the models"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Correction%20Algorithm/" class="btn btn-neutral float-right" title="Correction Algorithm">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Correction%20Algorithm/" title="Correction Algorithm">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../collect-new-images/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Correction%20Algorithm/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../collect-new-images/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Correction%20Algorithm/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -271,6 +251,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/MQTT-API/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/MQTT-API/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>MQTT API - AI on the Edge Device</title> <title>MQTT API - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "MQTT API"; var mkdocs_page_name = "MQTT API";
var mkdocs_page_input_path = "MQTT-API.md"; var mkdocs_page_input_path = "MQTT-API.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/MQTT-API/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/MQTT-API/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -168,7 +164,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -184,29 +180,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>API's &raquo;</li> <li>API's »</li>
<li class="breadcrumb-item active">MQTT API</li> <li class="breadcrumb-item active">MQTT API</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/MQTT-API.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/MQTT-API.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="mqtt-api"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> MQTT API</h1>
<h1 id="mqtt-api">MQTT API</h1>
<p>The device is capable to register to a MQTT broker to publish data and subscribe to specific topics.</p> <p>The device is capable to register to a MQTT broker to publish data and subscribe to specific topics.</p>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
@@ -220,8 +213,8 @@
* User (optional) * User (optional)
* Password (optional) * Password (optional)
* RetainFlag (optional)</p> * RetainFlag (optional)</p>
<h2 id="published-topics">Published topics</h2> <h2 id="published-topics"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Published topics</h2>
<h3 id="status">Status</h3> <h3 id="status"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> Status</h3>
<p>The following overhead data are available under the main topic (i.e. <code>watermeter</code>):</p> <p>The following overhead data are available under the main topic (i.e. <code>watermeter</code>):</p>
<table> <table>
<thead> <thead>
@@ -269,7 +262,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h3 id="result">Result</h3> <h3 id="result"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2</span> Result</h3>
<p>The following calculation data are available under the sup-topic <code>main</code> (i.e. <code>watermeter/main</code>):</p> <p>The following calculation data are available under the sup-topic <code>main</code> (i.e. <code>watermeter/main</code>):</p>
<table> <table>
<thead> <thead>
@@ -321,18 +314,18 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h3 id="gpio">GPIO</h3> <h3 id="gpio"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.3</span> GPIO</h3>
<p><code>MainTopic</code>/{GPIO topic}, e.g. <code>watermeter/GPIO/GPIO12</code></p> <p><code>MainTopic</code>/{GPIO topic}, e.g. <code>watermeter/GPIO/GPIO12</code></p>
<h4 id="gpiogpiopinnumber">GPIO/GPIO{PinNumber}</h4> <h4 id="gpiogpiopinnumber"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.3.1</span> GPIO/GPIO{PinNumber}</h4>
<p>Depending on device configuration (<code>Settings</code> --&gt; <code>Configuration</code> --&gt; section <code>GPIO</code>)</p> <p>Depending on device configuration (<code>Settings</code> --&gt; <code>Configuration</code> --&gt; section <code>GPIO</code>)</p>
<h2 id="subscribed-topics">Subscribed topics</h2> <h2 id="subscribed-topics"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Subscribed topics</h2>
<p><code>MainTopic</code>/{subscribed topic}, e.g. <code>watermeter/ctrl/flow_start</code></p> <p><code>MainTopic</code>/{subscribed topic}, e.g. <code>watermeter/ctrl/flow_start</code></p>
<h3 id="control">Control</h3> <h3 id="control"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1</span> Control</h3>
<h4 id="ctrlflow_start">ctrl/flow_start</h4> <h4 id="ctrlflow_start"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1.1</span> ctrl/flow_start</h4>
<p>Trigger a flow start by publishing to this topic. <p>Trigger a flow start by publishing to this topic.
+ Payload: + Payload:
- any character, length &gt; 0</p> - any character, length &gt; 0</p>
<h4 id="ctrlset_prevalue">ctrl/set_prevalue</h4> <h4 id="ctrlset_prevalue"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1.2</span> ctrl/set_prevalue</h4>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>This feature is available since version <a href="https://github.com/jomjol/AI-on-the-edge-device/releases/tag/v15.2.0">15.2.0</a>.</p> <p>This feature is available since version <a href="https://github.com/jomjol/AI-on-the-edge-device/releases/tag/v15.2.0">15.2.0</a>.</p>
@@ -346,45 +339,32 @@
* `"numbersname":` Provide name of number sequence, e.g. `"main"` * `"numbersname":` Provide name of number sequence, e.g. `"main"`
* `"value":` Provide any negative number * `"value":` Provide any negative number
</code></pre> </code></pre>
<h4 id="gpiogpiopinnumber_1">GPIO/GPIO{PinNumber}</h4> <h4 id="gpiogpiopinnumber_1"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1.3</span> GPIO/GPIO{PinNumber}</h4>
<p>Depending on device configuration (<code>Settings</code> --&gt; <code>Configuration</code> --&gt; section <code>GPIO</code>)</p> <p>Depending on device configuration (<code>Settings</code> --&gt; <code>Configuration</code> --&gt; section <code>GPIO</code>)</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../REST-API/" class="btn btn-neutral float-left" title="REST API"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../REST-API/" title="REST API"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Influx-DB/" class="btn btn-neutral float-right" title="Influx DB">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Influx-DB/" title="Influx DB">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../REST-API/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Influx-DB/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../REST-API/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Influx-DB/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -397,6 +377,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Neural-Network-Types/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Neural-Network-Types/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Neural Network Types - AI on the Edge Device</title> <title>Neural Network Types - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Neural Network Types"; var mkdocs_page_name = "Neural Network Types";
var mkdocs_page_input_path = "Neural-Network-Types.md"; var mkdocs_page_input_path = "Neural-Network-Types.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Neural-Network-Types/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Neural-Network-Types/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -178,7 +174,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -194,35 +190,32 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Neural Network Types</li> <li class="breadcrumb-item active">Neural Network Types</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Neural-Network-Types.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Neural-Network-Types.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="neural-network-types"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Neural Network Types</h1>
<h1 id="neural-network-types">Neural Network Types</h1>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>For an overview, see <a href="../Choosing-the-Model">Choosing the Model</a>.</p> <p>For an overview, see <a href="../Choosing-the-Model">Choosing the Model</a>.</p>
</div> </div>
<p>This section is describing the different types of neural networks, that are used with the AI-on-the-edge approach and gives an introduction on how and where to use them. </p> <p>This section is describing the different types of neural networks, that are used with the AI-on-the-edge approach and gives an introduction on how and where to use them. </p>
<h2 id="overview-neural-network-type">Overview neural network type</h2> <h2 id="overview-neural-network-type"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Overview neural network type</h2>
<p>There are two <strong>types of input</strong>:</p> <p>There are two <strong>types of input</strong>:</p>
<ul> <ul>
<li> <li>
@@ -249,7 +242,7 @@
<li>For the continuous and 100 classes network especially for the digits, there are only a few types of digits trained up to now</li> <li>For the continuous and 100 classes network especially for the digits, there are only a few types of digits trained up to now</li>
<li>Therefore sometimes for the digits it is more effective to choose the simpler 11 classes network type (= default). </li> <li>Therefore sometimes for the digits it is more effective to choose the simpler 11 classes network type (= default). </li>
</ul> </ul>
<h2 id="naming-convention">Naming convention</h2> <h2 id="naming-convention"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Naming convention</h2>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -292,11 +285,11 @@
<li>s2 = Size 2 (Medium)</li> <li>s2 = Size 2 (Medium)</li>
<li>q = Quantized Version</li> <li>q = Quantized Version</li>
</ul> </ul>
<h2 id="overview-of-trained-types-and-details">Overview of trained types and details</h2> <h2 id="overview-of-trained-types-and-details"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Overview of trained types and details</h2>
<h3 id="analog-pointer-ana-cont_xxxtflite-ana-class100_xxxtflite">Analog Pointer ("ana-cont_XXX.tflite" &amp; "ana-class100_XXX.tflite")</h3> <h3 id="analog-pointer-ana-cont_xxxtflite-ana-class100_xxxtflite"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1</span> Analog Pointer ("ana-cont_XXX.tflite" &amp; "ana-class100_XXX.tflite")</h3>
<p>This is to transfer the direction of a pointer into a continuous number between 0 and 1, whereas 0 (=1) is the upwards position (12 o'clock), 0.25 corresponds to the 3 o'clock positions and so on. This network is a envelop for all different types of pointers. Currently there are no dedicated network trainings for specific types of pointers.</p> <p>This is to transfer the direction of a pointer into a continuous number between 0 and 1, whereas 0 (=1) is the upwards position (12 o'clock), 0.25 corresponds to the 3 o'clock positions and so on. This network is a envelop for all different types of pointers. Currently there are no dedicated network trainings for specific types of pointers.</p>
<p>There are two types of network structure, currently both are supported. The "class100" is a pure classification network, that might need a bit more accuracy in the labeling. "cont" is a no classic approach with a continuous output off only 2 neurons (details see below).</p> <p>There are two types of network structure, currently both are supported. The "class100" is a pure classification network, that might need a bit more accuracy in the labeling. "cont" is a no classic approach with a continuous output off only 2 neurons (details see below).</p>
<h4 id="types-of-counters-trained">Types of counters trained:</h4> <h4 id="types-of-counters-trained"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.1</span> Types of counters trained:</h4>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -321,18 +314,18 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h4 id="training-data-needs">Training data needs</h4> <h4 id="training-data-needs"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.2</span> Training data needs</h4>
<ul> <ul>
<li>Quadratic images, minimum size: 32x32 pixel</li> <li>Quadratic images, minimum size: 32x32 pixel</li>
<li>Typically 100 - 200 images with a resolution of 1/100 of the full rotation (every 0.1 value or 3.6°)</li> <li>Typically 100 - 200 images with a resolution of 1/100 of the full rotation (every 0.1 value or 3.6°)</li>
<li>Naming: x.y_ARBITRARY.jpg, where x.y = value 0.0 ... 9.9</li> <li>Naming: x.y_ARBITRARY.jpg, where x.y = value 0.0 ... 9.9</li>
</ul> </ul>
<h4 id="cnn-technical-details">CNN Technical details:</h4> <h4 id="cnn-technical-details"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.3</span> CNN Technical details:</h4>
<h5 id="input">Input</h5> <h5 id="input"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.3.1</span> Input</h5>
<ul> <ul>
<li>32 x 32 RGB images</li> <li>32 x 32 RGB images</li>
</ul> </ul>
<h5 id="output">Output</h5> <h5 id="output"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1.3.2</span> Output</h5>
<ul> <ul>
<li><strong>ana-cont</strong>_XXX.tflite:</li> <li><strong>ana-cont</strong>_XXX.tflite:</li>
<li>2 neurons with output in range [-1, 1] - representing a sinus / cosine encoding of the angle</li> <li>2 neurons with output in range [-1, 1] - representing a sinus / cosine encoding of the angle</li>
@@ -344,9 +337,9 @@
</li> </li>
<li>100 neurons representing the classes from 0.0, 0.1, ... 9.8, 9.9</li> <li>100 neurons representing the classes from 0.0, 0.1, ... 9.8, 9.9</li>
</ul> </ul>
<h3 id="digits-with-11-classes-dig-class11_xxxtflite">Digits with 11 classes ("dig-class11_XXX.tflite")</h3> <h3 id="digits-with-11-classes-dig-class11_xxxtflite"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2</span> Digits with 11 classes ("dig-class11_XXX.tflite")</h3>
<p>The digit type is a classical classification network, with 11 classes representing the numbers 0, 1, ... 9 and the special class "N". It is trained for the rolling ring of gas and electric meters. As there is sometime a status between two images, the special class "N" is representing Not-A-Number for the case, that the image cannot be unique classified to one number e.g. because it is between two digits. For this type the lowest amount of training data per type is needed, resulting in a large variety of type being already part of the training set.</p> <p>The digit type is a classical classification network, with 11 classes representing the numbers 0, 1, ... 9 and the special class "N". It is trained for the rolling ring of gas and electric meters. As there is sometime a status between two images, the special class "N" is representing Not-A-Number for the case, that the image cannot be unique classified to one number e.g. because it is between two digits. For this type the lowest amount of training data per type is needed, resulting in a large variety of type being already part of the training set.</p>
<h4 id="types-of-counters-trained_1">Types of counters trained:</h4> <h4 id="types-of-counters-trained_1"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2.1</span> Types of counters trained:</h4>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -389,7 +382,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h4 id="training-data-needs_1">Training data needs</h4> <h4 id="training-data-needs_1"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2.2</span> Training data needs</h4>
<ul> <ul>
<li>RGB images, with minimum size: 20x32 pixel</li> <li>RGB images, with minimum size: 20x32 pixel</li>
<li> <li>
@@ -399,20 +392,20 @@
<p>Naming: x_ARBITRARY.jpg, where x = value 0 ... 9 + N</p> <p>Naming: x_ARBITRARY.jpg, where x = value 0 ... 9 + N</p>
</li> </li>
</ul> </ul>
<h4 id="cnn-technical-details_1">CNN Technical details:</h4> <h4 id="cnn-technical-details_1"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2.3</span> CNN Technical details:</h4>
<h5 id="input_1">Input</h5> <h5 id="input_1"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2.3.1</span> Input</h5>
<ul> <ul>
<li>20 x 32 RGB images</li> <li>20 x 32 RGB images</li>
</ul> </ul>
<h5 id="output_1">Output</h5> <h5 id="output_1"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2.3.2</span> Output</h5>
<ul> <ul>
<li>11 neurons for image classification (last layer normalized to 1)</li> <li>11 neurons for image classification (last layer normalized to 1)</li>
<li>Neuron 0 to 9 represent the corresponding numbers "0" to "9"</li> <li>Neuron 0 to 9 represent the corresponding numbers "0" to "9"</li>
<li>Neuron 10 represents the "Not-A-Number" class, telling, that the image is not uniquely classified</li> <li>Neuron 10 represents the "Not-A-Number" class, telling, that the image is not uniquely classified</li>
</ul> </ul>
<h3 id="digits-with-rolling-results-dig-class100_xxxtflite-dig-cont_xxxtflite">Digits with rolling results ("dig-class100_XXX.tflite" &amp; "dig-cont_XXX.tflite")</h3> <h3 id="digits-with-rolling-results-dig-class100_xxxtflite-dig-cont_xxxtflite"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.3</span> Digits with rolling results ("dig-class100_XXX.tflite" &amp; "dig-cont_XXX.tflite")</h3>
<p>This type of network tries to overcome the problem, that there are intermediate values, when a rolling digit is between two numbers. Previous this was the "N" class. In this network type, there are also sub-digit values trained, so that the intermediate state can be used as additional information for the algorithms. </p> <p>This type of network tries to overcome the problem, that there are intermediate values, when a rolling digit is between two numbers. Previous this was the "N" class. In this network type, there are also sub-digit values trained, so that the intermediate state can be used as additional information for the algorithms. </p>
<h4 id="types-of-counters-trained_2">Types of counters trained:</h4> <h4 id="types-of-counters-trained_2"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.3.1</span> Types of counters trained:</h4>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -437,7 +430,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h4 id="training-data-needs_2">Training data needs</h4> <h4 id="training-data-needs_2"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.3.2</span> Training data needs</h4>
<ul> <ul>
<li>RGB images, with minimum size: 20x32 pixel</li> <li>RGB images, with minimum size: 20x32 pixel</li>
<li> <li>
@@ -447,12 +440,12 @@
<p>Naming: x.y_ARBITRARY.jpg, where x.y = 0.0, 0.1, ... 9.9 representing the intermediate state</p> <p>Naming: x.y_ARBITRARY.jpg, where x.y = 0.0, 0.1, ... 9.9 representing the intermediate state</p>
</li> </li>
</ul> </ul>
<h4 id="cnn-technical-details_2">CNN Technical details:</h4> <h4 id="cnn-technical-details_2"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.3.3</span> CNN Technical details:</h4>
<h5 id="input_2">Input</h5> <h5 id="input_2"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.3.3.1</span> Input</h5>
<ul> <ul>
<li>20 x 32 RGB images</li> <li>20 x 32 RGB images</li>
</ul> </ul>
<h5 id="output_2">Output</h5> <h5 id="output_2"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.3.3.2</span> Output</h5>
<ul> <ul>
<li><strong>dig-cont</strong>_XXX.tflite:</li> <li><strong>dig-cont</strong>_XXX.tflite:</li>
<li>10 neurons representing the digits 0, 1, ... 9. The intermediate values are represented by weighted normalized values of two neighboring output neurons</li> <li>10 neurons representing the digits 0, 1, ... 9. The intermediate values are represented by weighted normalized values of two neighboring output neurons</li>
@@ -464,43 +457,30 @@
</li> </li>
<li>100 neurons representing the classes from 0.0, 0.1, ... 9.8, 9.9</li> <li>100 neurons representing the classes from 0.0, 0.1, ... 9.8, 9.9</li>
</ul> </ul>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Correction%20Algorithm/" class="btn btn-neutral float-left" title="Correction Algorithm"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Correction%20Algorithm/" title="Correction Algorithm"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Additional-Information/" class="btn btn-neutral float-right" title="Additional Information">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Additional-Information/" title="Additional Information">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Correction%20Algorithm/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Additional-Information/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Correction%20Algorithm/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Additional-Information/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -513,6 +493,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/New-Releases-Notification/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/New-Releases-Notification/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Notification about new Releases - AI on the Edge Device</title> <title>Notification about new Releases - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Notification about new Releases"; var mkdocs_page_name = "Notification about new Releases";
var mkdocs_page_input_path = "New-Releases-Notification.md"; var mkdocs_page_input_path = "New-Releases-Notification.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/New-Releases-Notification/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/New-Releases-Notification/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -144,7 +140,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -160,82 +156,66 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Notification about new Releases</li> <li class="breadcrumb-item active">Notification about new Releases</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/New-Releases-Notification.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/New-Releases-Notification.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="notification-about-new-releases"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Notification about new Releases</h1>
<h1 id="notification-about-new-releases">Notification about new Releases</h1>
<p>Do you want to get notified about a new release? <p>Do you want to get notified about a new release?
There are several ways for it:</p> There are several ways for it:</p>
<h2 id="github-notifications">Github Notifications</h2> <h2 id="github-notifications"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Github Notifications</h2>
<p>You will need a Github Account for this!</p> <p>You will need a Github Account for this!</p>
<ol> <ol>
<li>Log into your Github account on <a href="https://github.com">Github</a>.</li> <li>Log into your Github account on <a href="https://github.com">Github</a>.</li>
<li>Go to <a href="https://github.com/jomjol/AI-on-the-edge-device">AI-on-the-edge-device</a>.</li> <li>Go to <a href="https://github.com/jomjol/AI-on-the-edge-device">AI-on-the-edge-device</a>.</li>
<li>On the top right side, click onto <code>Watch</code> and select <code>Custom</code>: <li>On the top right side, click onto <code>Watch</code> and select <code>Custom</code>:
<img alt="" src="../img/release-notification.png" /> </li> <img alt="" src="../img/release-notification.png"> </img></li>
<li>Select <code>Releases</code>.</li> <li>Select <code>Releases</code>.</li>
</ol> </ol>
<p>You will get an email when a new release gets created.</p> <p>You will get an email when a new release gets created.</p>
<p>See also <a href="https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions">Github Documentation</a>.</p> <p>See also <a href="https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions">Github Documentation</a>.</p>
<h2 id="codereleaseio">CodeRelease.io</h2> <h2 id="codereleaseio"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> CodeRelease.io</h2>
<p>Alternatively or if you do not want to create a Github account, <a href="https://coderelease.io">CodeRelease.io</a> can be an alternative.</p> <p>Alternatively or if you do not want to create a Github account, <a href="https://coderelease.io">CodeRelease.io</a> can be an alternative.</p>
<p>You also have to subscribe with an email address but no account is required.</p> <p>You also have to subscribe with an email address but no account is required.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Additional-Information/" class="btn btn-neutral float-left" title="Additional Information"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Additional-Information/" title="Additional Information"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Error-Codes/" class="btn btn-neutral float-right" title="Reduced webinterface (error codes)">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Error-Codes/" title="Reduced webinterface (error codes)">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Additional-Information/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Error-Codes/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Additional-Information/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Error-Codes/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -248,6 +228,5 @@ There are several ways for it:</p>
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/REST-API/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/REST-API/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>REST API - AI on the Edge Device</title> <title>REST API - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "REST API"; var mkdocs_page_name = "REST API";
var mkdocs_page_input_path = "REST-API.md"; var mkdocs_page_input_path = "REST-API.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/REST-API/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/REST-API/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -216,7 +212,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -232,36 +228,33 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>API's &raquo;</li> <li>API's »</li>
<li class="breadcrumb-item active">REST API</li> <li class="breadcrumb-item active">REST API</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/REST-API.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/REST-API.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="rest-api"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> REST API</h1>
<h1 id="rest-api">REST API</h1>
<p>Various information is directly accessible over specific REST calls.</p> <p>Various information is directly accessible over specific REST calls.</p>
<p>To use it, just append them to the IP, separated with a <code>/</code>, e.g. <code>http://192.168.1.1/json</code></p> <p>To use it, just append them to the IP, separated with a <code>/</code>, e.g. <code>http://192.168.1.1/json</code></p>
<p>Note: For more detailed information to the REST handler, have a look to the code in the repository: <a href="https://github.com/jomjol/AI-on-the-edge-device/search?q=camuri.uri">registered handlers</a></p> <p>Note: For more detailed information to the REST handler, have a look to the code in the repository: <a href="https://github.com/jomjol/AI-on-the-edge-device/search?q=camuri.uri">registered handlers</a></p>
<h2 id="control">Control</h2> <h2 id="control"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Control</h2>
<ul> <ul>
<li> <li>
<h3 id="flow_start">flow_start</h3> <h3 id="flow_start"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> flow_start</h3>
Trigger a flow start (if not running)<ul> Trigger a flow start (if not running)<ul>
<li>Payload:<ul> <li>Payload:<ul>
<li>No payload needed</li> <li>No payload needed</li>
@@ -270,7 +263,7 @@
</ul> </ul>
</li> </li>
<li> <li>
<h3 id="setprevalue">setPreValue</h3> <h3 id="setprevalue"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2</span> setPreValue</h3>
<p>Set the last valid value (previous value) to given value or the actual RAW value.</p> <p>Set the last valid value (previous value) to given value or the actual RAW value.</p>
<ul> <ul>
<li> <li>
@@ -291,7 +284,7 @@
</ul> </ul>
</li> </li>
<li> <li>
<h3 id="gpio">GPIO</h3> <h3 id="gpio"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.3</span> GPIO</h3>
</li> </li>
<li> <li>
<p>Control a GPIO output</p> <p>Control a GPIO output</p>
@@ -311,21 +304,21 @@
</ul> </ul>
</li> </li>
<li> <li>
<h3 id="ota">ota</h3> <h3 id="ota"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.4</span> ota</h3>
</li> </li>
<li> <li>
<h3 id="ota_pagehtml">ota_page.html</h3> <h3 id="ota_pagehtml"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.5</span> ota_page.html</h3>
<p>Opens the Over-The-Air update html page</p> <p>Opens the Over-The-Air update html page</p>
</li> </li>
<li> <li>
<h3 id="reboot">reboot</h3> <h3 id="reboot"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.6</span> reboot</h3>
<p>Trigger a reboot of the device</p> <p>Trigger a reboot of the device</p>
</li> </li>
</ul> </ul>
<h2 id="results">Results</h2> <h2 id="results"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Results</h2>
<ul> <ul>
<li> <li>
<h3 id="json">json</h3> <h3 id="json"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1</span> json</h3>
Show result in JSON syntax</li> Show result in JSON syntax</li>
<li> <li>
<p>Example: <p>Example:
@@ -342,7 +335,7 @@
}</code></p> }</code></p>
</li> </li>
<li> <li>
<h3 id="value">value</h3> <h3 id="value"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2</span> value</h3>
<p>Show single result values</p> <p>Show single result values</p>
</li> </li>
<li>The <code>value</code> entrypoint also support parameters:</li> <li>The <code>value</code> entrypoint also support parameters:</li>
@@ -353,144 +346,131 @@
<p><code>http://&lt;IP&gt;/value?all=true&amp;type=prevalue</code></p> <p><code>http://&lt;IP&gt;/value?all=true&amp;type=prevalue</code></p>
</li> </li>
<li> <li>
<h3 id="img_tmprawjpg">img_tmp/raw.jpg</h3> <h3 id="img_tmprawjpg"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.3</span> img_tmp/raw.jpg</h3>
<p>Capture and show a new raw image</p> <p>Capture and show a new raw image</p>
</li> </li>
<li> <li>
<h3 id="img_tmpalgjpg">img_tmp/alg.jpg</h3> <h3 id="img_tmpalgjpg"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.4</span> img_tmp/alg.jpg</h3>
<p>Show last aligned image</p> <p>Show last aligned image</p>
</li> </li>
<li> <li>
<h3 id="img_tmpalg_roijpg">img_tmp/alg_roi.jpg</h3> <h3 id="img_tmpalg_roijpg"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.5</span> img_tmp/alg_roi.jpg</h3>
<p>Show last aligned image including ROI overlay</p> <p>Show last aligned image including ROI overlay</p>
</li> </li>
</ul> </ul>
<h2 id="status">Status</h2> <h2 id="status"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Status</h2>
<ul> <ul>
<li> <li>
<h3 id="statusflow">statusflow</h3> <h3 id="statusflow"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.1</span> statusflow</h3>
Show the actual step of the flow incl. timestamp</li> Show the actual step of the flow incl. timestamp</li>
<li> <li>
<p>Example: <code>Take Image (15:56:34)</code></p> <p>Example: <code>Take Image (15:56:34)</code></p>
</li> </li>
<li> <li>
<h3 id="rssi">rssi</h3> <h3 id="rssi"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.2</span> rssi</h3>
<p>Show the WIFI signal strength (Unit: dBm)</p> <p>Show the WIFI signal strength (Unit: dBm)</p>
</li> </li>
<li> <li>
<p>Example: <code>-51</code></p> <p>Example: <code>-51</code></p>
</li> </li>
<li> <li>
<h3 id="cpu_temperature">cpu_temperature</h3> <h3 id="cpu_temperature"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.3</span> cpu_temperature</h3>
<p>Show the CPU temperature (Unit: °C)</p> <p>Show the CPU temperature (Unit: °C)</p>
</li> </li>
<li> <li>
<p>Example: <code>38</code></p> <p>Example: <code>38</code></p>
</li> </li>
<li> <li>
<h3 id="sysinfo">sysinfo</h3> <h3 id="sysinfo"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.4</span> sysinfo</h3>
<p>Show system infos in JSON syntax</p> <p>Show system infos in JSON syntax</p>
</li> </li>
<li> <li>
<p>Example: <code>[{"firmware": "","buildtime": "2023-01-25 12:41","gitbranch": "HEAD","gittag": "","gitrevision": "af13c68+","html": "Development-Branch: HEAD (Commit: af13c68+)","cputemp": "64","hostname": "WaterMeterTest","IPv4": "192.168.xxx.xxx","freeHeapMem": "2818330"}]</code></p> <p>Example: <code>[{"firmware": "","buildtime": "2023-01-25 12:41","gitbranch": "HEAD","gittag": "","gitrevision": "af13c68+","html": "Development-Branch: HEAD (Commit: af13c68+)","cputemp": "64","hostname": "WaterMeterTest","IPv4": "192.168.xxx.xxx","freeHeapMem": "2818330"}]</code></p>
</li> </li>
<li> <li>
<h3 id="starttime">starttime</h3> <h3 id="starttime"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.5</span> starttime</h3>
<p>Show starttime</p> <p>Show starttime</p>
</li> </li>
<li> <li>
<p>Example: <code>20230113-154634</code></p> <p>Example: <code>20230113-154634</code></p>
</li> </li>
<li> <li>
<h3 id="uptime">uptime</h3> <h3 id="uptime"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3.6</span> uptime</h3>
<p>Show uptime</p> <p>Show uptime</p>
</li> </li>
<li>Example: <code>0d 00h 15m 50s</code></li> <li>Example: <code>0d 00h 15m 50s</code></li>
</ul> </ul>
<h2 id="camera">Camera</h2> <h2 id="camera"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> Camera</h2>
<ul> <ul>
<li> <li>
<h3 id="lighton">lighton</h3> <h3 id="lighton"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4.1</span> lighton</h3>
<p>Switch the camera flashlight on </p> <p>Switch the camera flashlight on </p>
</li> </li>
<li> <li>
<h3 id="lightoff">lightoff</h3> <h3 id="lightoff"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4.2</span> lightoff</h3>
<p>Switch the camera flashlight off</p> <p>Switch the camera flashlight off</p>
</li> </li>
<li> <li>
<h3 id="capture">capture</h3> <h3 id="capture"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4.3</span> capture</h3>
<p>Capture a new image (without flashlight)</p> <p>Capture a new image (without flashlight)</p>
</li> </li>
<li> <li>
<h3 id="capture_with_flashlight">capture_with_flashlight</h3> <h3 id="capture_with_flashlight"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4.4</span> capture_with_flashlight</h3>
<p>Capture a new image with flashlight</p> <p>Capture a new image with flashlight</p>
</li> </li>
<li> <li>
<h3 id="save">save</h3> <h3 id="save"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4.5</span> save</h3>
<p>Save a new image to SD card</p> <p>Save a new image to SD card</p>
</li> </li>
<li>The <code>save</code> entrypoint also support parameters:</li> <li>The <code>save</code> entrypoint also support parameters:</li>
<li><code>http://&lt;IP&gt;/save?filename=test.jpg&amp;delay=1000</code></li> <li><code>http://&lt;IP&gt;/save?filename=test.jpg&amp;delay=1000</code></li>
</ul> </ul>
<h2 id="logs">Logs</h2> <h2 id="logs"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5</span> Logs</h2>
<ul> <ul>
<li> <li>
<h3 id="log">log</h3> <h3 id="log"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5.1</span> log</h3>
<p>Last part of todays log (last 80 kBytes))</p> <p>Last part of todays log (last 80 kBytes))</p>
</li> </li>
<li> <li>
<h3 id="logfileact">logfileact</h3> <h3 id="logfileact"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5.2</span> logfileact</h3>
<p>Full log of today</p> <p>Full log of today</p>
</li> </li>
<li> <li>
<h3 id="loghtml">log.html</h3> <h3 id="loghtml"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5.3</span> log.html</h3>
<p>Opens the log html page</p> <p>Opens the log html page</p>
</li> </li>
</ul> </ul>
<h2 id="diagnostics">Diagnostics</h2> <h2 id="diagnostics"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.6</span> Diagnostics</h2>
<ul> <ul>
<li> <li>
<h3 id="heap">heap</h3> <h3 id="heap"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.6.1</span> heap</h3>
print relevant memory (heap) information</li> print relevant memory (heap) information</li>
<li>Example: <code>Heap info: Heap Total: 1888926 | SPI Free: 1827431 | SPI Larg Block: 1802240 | SPI Min Free: 758155 | Int Free: 61495 | Int Larg Block: 55296 | Int Min Free: 36427</code></li> <li>Example: <code>Heap info: Heap Total: 1888926 | SPI Free: 1827431 | SPI Larg Block: 1802240 | SPI Min Free: 758155 | Int Free: 61495 | Int Larg Block: 55296 | Int Min Free: 36427</code></li>
</ul> </ul>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Demo-Mode/" class="btn btn-neutral float-left" title="Demo mode"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Demo-Mode/" title="Demo mode"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../MQTT-API/" class="btn btn-neutral float-right" title="MQTT API">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../MQTT-API/" title="MQTT API">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Demo-Mode/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../MQTT-API/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Demo-Mode/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../MQTT-API/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -503,6 +483,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/ROI-Configuration/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/ROI-Configuration/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>ROIs (Regions of Interest) - AI on the Edge Device</title> <title>ROIs (Regions of Interest) - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "ROIs (Regions of Interest)"; var mkdocs_page_name = "ROIs (Regions of Interest)";
var mkdocs_page_input_path = "ROI-Configuration.md"; var mkdocs_page_input_path = "ROI-Configuration.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/ROI-Configuration/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/ROI-Configuration/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -158,7 +154,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -174,29 +170,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Configuration &raquo;</li> <li>Configuration »</li>
<li class="breadcrumb-item active">ROIs (Regions of Interest)</li> <li class="breadcrumb-item active">ROIs (Regions of Interest)</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/ROI-Configuration.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/ROI-Configuration.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="rois-regions-of-interest"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> ROIs (Regions of Interest)</h1>
<h1 id="rois-regions-of-interest">ROIs (Regions of Interest)</h1>
<div class="admonition notes"> <div class="admonition notes">
<p class="admonition-title">Notes</p> <p class="admonition-title">Notes</p>
<p>You are using a neural network approach which is trained to fit as many different type of meters as possible. <p>You are using a neural network approach which is trained to fit as many different type of meters as possible.
@@ -214,13 +207,13 @@ There are several precautions to detect this. For details see the section <code>
<p>Have a look on the <a href="https://jomjol.github.io/neural-network-digital-counter-readout/">Digital Counters</a> resp. <a href="https://jomjol.github.io/neural-network-analog-needle-readout">Analog Needles</a> to check if your types are contained. If your number types are <strong>not</strong> contained, you should take the effort to record them so we can add them to the training data. See <a href="../Learn-models-with-your-own-images">Collect images to improve the models</a> on how to collect new training data.</p> <p>Have a look on the <a href="https://jomjol.github.io/neural-network-digital-counter-readout/">Digital Counters</a> resp. <a href="https://jomjol.github.io/neural-network-analog-needle-readout">Analog Needles</a> to check if your types are contained. If your number types are <strong>not</strong> contained, you should take the effort to record them so we can add them to the training data. See <a href="../Learn-models-with-your-own-images">Collect images to improve the models</a> on how to collect new training data.</p>
</li> </li>
</ol> </ol>
<h2 id="precondition">Precondition</h2> <h2 id="precondition"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Precondition</h2>
<p>Please make sure to have:</p> <p>Please make sure to have:</p>
<ol> <ol>
<li>Setup your camera properly and taken a good <a href="../Reference-Image">Reference Image</a>.</li> <li>Setup your camera properly and taken a good <a href="../Reference-Image">Reference Image</a>.</li>
<li>Selected good <a href="../Alignment">Alignment References</a>.</li> <li>Selected good <a href="../Alignment">Alignment References</a>.</li>
</ol> </ol>
<h2 id="define-the-rois">Define the ROIs</h2> <h2 id="define-the-rois"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Define the ROIs</h2>
<p>For each digit or analog pointer, a ROI must be defined.</p> <p>For each digit or analog pointer, a ROI must be defined.</p>
<p>You can even have multiple independent <strong>Numbers</strong> (eg. electerical meters mostly have 2 numbers for the high and low tariff). </p> <p>You can even have multiple independent <strong>Numbers</strong> (eg. electerical meters mostly have 2 numbers for the high and low tariff). </p>
<p>Depending if you have only one of those types, you can enable/disable <code>(1)</code> it on the top left corner: </p> <p>Depending if you have only one of those types, you can enable/disable <code>(1)</code> it on the top left corner: </p>
@@ -243,14 +236,14 @@ The ratio between <code>x</code> and <code>y</code> might need adjustment. But m
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>Don't forget to save the settings with "Save" and do not reboot at this stage.</p> <p>Don't forget to save the settings with "Save" and do not reboot at this stage.</p>
</div> </div>
<h3 id="analog-counters">Analog Counters</h3> <h3 id="analog-counters"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1</span> Analog Counters</h3>
<p>For analog counters the ROI setting is rather straight forward as the meter is usually quadratic with a clear center. <p>For analog counters the ROI setting is rather straight forward as the meter is usually quadratic with a clear center.
The circle should exactly fit to the outer size of the meter and the cross should be in the middle of the pointer.</p> The circle should exactly fit to the outer size of the meter and the cross should be in the middle of the pointer.</p>
<p>Here is an example with the details for the ROI <code>ana1</code>: </p> <p>Here is an example with the details for the ROI <code>ana1</code>: </p>
<p><img alt="" src="../img/initial_setup_3_analog_example.jpg" style="width:500px"/></p> <p><img alt="" src="../img/initial_setup_3_analog_example.jpg" style="width:500px"/></p>
<h3 id="digits">Digits</h3> <h3 id="digits"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2</span> Digits</h3>
<p>For the Digital Meters it is a little bit more complicated, as there are different options of digital models which can be choosen.</p> <p>For the Digital Meters it is a little bit more complicated, as there are different options of digital models which can be choosen.</p>
<h4 id="correct-size-for-roi">Correct Size for ROI</h4> <h4 id="correct-size-for-roi"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2.1</span> Correct Size for ROI</h4>
<p>First of all, choose the right size of the ROI. <p>First of all, choose the right size of the ROI.
The configuration of ROIs differs a bit on the selected model (see below). </p> The configuration of ROIs differs a bit on the selected model (see below). </p>
<p>If you are in the initial setup, the model will be selectable in the next step. By default it is a <code>dig-cont</code> resp. <code>ana-cont</code> model.</p> <p>If you are in the initial setup, the model will be selectable in the next step. By default it is a <code>dig-cont</code> resp. <code>ana-cont</code> model.</p>
@@ -270,7 +263,7 @@ The configuration of ROIs differs a bit on the selected model (see below). </p>
<p><strong>Disadvantage:</strong> only limited types of meter types are trained due to the high effort for the training data.</p> <p><strong>Disadvantage:</strong> only limited types of meter types are trained due to the high effort for the training data.</p>
</li> </li>
</ol> </ol>
<h4 id="how-to-setup-the-digit-rois-perfectly">How to setup the digit ROIs perfectly</h4> <h4 id="how-to-setup-the-digit-rois-perfectly"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2.2</span> How to setup the digit ROIs perfectly</h4>
<p>Details and the corresponding "perfect" setting is explained below. <p>Details and the corresponding "perfect" setting is explained below.
For a first run you can choose the following general settings: </p> For a first run you can choose the following general settings: </p>
<ul> <ul>
@@ -303,10 +296,10 @@ For a first run you can choose the following general settings: </p>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h5 id="setup-using-dig-class11-models">Setup using <code>dig-class11</code> models</h5> <h5 id="setup-using-dig-class11-models"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2.2.1</span> Setup using <code>dig-class11</code> models</h5>
<p><code>dig-class11</code> - Models recognize the <strong>complete digit only</strong>. Here it is not relevant if the ROI fits the Border of the digit window.</p> <p><code>dig-class11</code> - Models recognize the <strong>complete digit only</strong>. Here it is not relevant if the ROI fits the Border of the digit window.</p>
<p>For this model, there should be a border of <code>20%</code> of the image size around the number itself. This border is shown in the ROI setup image by the inner thinner rectangle. This rectangle should fit perfectly around the number when the number has not started to rotate to the next position: </p> <p>For this model, there should be a border of <code>20%</code> of the image size around the number itself. This border is shown in the ROI setup image by the inner thinner rectangle. This rectangle should fit perfectly around the number when the number has not started to rotate to the next position: </p>
<p><img width="300px" src=../img/ROI_drawing.jpg></p> <p><img src="../img/ROI_drawing.jpg" width="300px"/></p>
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -334,13 +327,13 @@ For a first run you can choose the following general settings: </p>
</tbody> </tbody>
</table> </table>
<p>If you have perfect alignment and still are not getting satisfying results, most probably your numbers are not part of the training data yet. See <a href="../Learn-models-with-your-own-images">Collect images to improve the models</a> on how to collect new training data.</p> <p>If you have perfect alignment and still are not getting satisfying results, most probably your numbers are not part of the training data yet. See <a href="../Learn-models-with-your-own-images">Collect images to improve the models</a> on how to collect new training data.</p>
<h5 id="setup-using-dig-class100-or-dig-cont-models">Setup using <code>dig-class100</code> or <code>dig-cont</code> Models</h5> <h5 id="setup-using-dig-class100-or-dig-cont-models"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2.2.2</span> Setup using <code>dig-class100</code> or <code>dig-cont</code> Models</h5>
<p>These models recognize the <strong>tenths</strong> (fractions) between the numbers. <p>These models recognize the <strong>tenths</strong> (fractions) between the numbers.
Those models require a different ROI setup; <strong>the height must be set differently and more accurately</strong>.</p> Those models require a different ROI setup; <strong>the height must be set differently and more accurately</strong>.</p>
<p>First, the width can be set like for a <code>dig-class11</code> model, i.e. <code>20%</code> margin left and right.</p> <p>First, the width can be set like for a <code>dig-class11</code> model, i.e. <code>20%</code> margin left and right.</p>
<p><img width="455" alt="ROI-setup" src="https://user-images.githubusercontent.com/412645/199028748-c48ef5bb-a8d4-4c77-9faf-763e6cf77351.png"></p> <p><img alt="ROI-setup" src="https://user-images.githubusercontent.com/412645/199028748-c48ef5bb-a8d4-4c77-9faf-763e6cf77351.png" width="455"/></p>
<p>The height of the outer rectangle should be set to the upper and lower edge of the number window. To achieve this, you might need to unlock the aspect ratio:</p> <p>The height of the outer rectangle should be set to the upper and lower edge of the number window. To achieve this, you might need to unlock the aspect ratio:</p>
<p><img width="168" alt="unlockAspectRatio" src="https://user-images.githubusercontent.com/412645/199028590-21708ff3-15a3-4415-89b1-c2affcfce003.png"></p> <p><img alt="unlockAspectRatio" src="https://user-images.githubusercontent.com/412645/199028590-21708ff3-15a3-4415-89b1-c2affcfce003.png" width="168"/></p>
<p>Here an example:</p> <p>Here an example:</p>
<table> <table>
<thead> <thead>
@@ -352,54 +345,41 @@ Those models require a different ROI setup; <strong>the height must be set diffe
<tbody> <tbody>
<tr> <tr>
<td>✔️ <strong>Okay</strong></td> <td>✔️ <strong>Okay</strong></td>
<td><img width="125" alt="dig-class100_OK" src="https://user-images.githubusercontent.com/412645/199028380-7623776e-59b9-4356-ab55-3852253609df.png"></td> <td><img alt="dig-class100_OK" src="https://user-images.githubusercontent.com/412645/199028380-7623776e-59b9-4356-ab55-3852253609df.png" width="125"/></td>
</tr> </tr>
<tr> <tr>
<td><strong>Not</strong> Okay</td> <td><strong>Not</strong> Okay</td>
<td><img width="125" alt="dig-class100_NOK" src="https://user-images.githubusercontent.com/412645/199028469-3a69ed31-e5c9-4038-a8dc-6d44a42437ed.png"></td> <td><img alt="dig-class100_NOK" src="https://user-images.githubusercontent.com/412645/199028469-3a69ed31-e5c9-4038-a8dc-6d44a42437ed.png" width="125"/></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h3 id="saving">Saving</h3> <h3 id="saving"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.3</span> Saving</h3>
<p>Once you are done, push <code>Save</code> to persist your setup.</p> <p>Once you are done, push <code>Save</code> to persist your setup.</p>
<p>A reboot is required to apply the changed configuration!</p> <p>A reboot is required to apply the changed configuration!</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Alignment/" class="btn btn-neutral float-left" title="Alignment References"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Alignment/" title="Alignment References"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Configuration/" class="btn btn-neutral float-right" title="Graphical Configuration">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Configuration/" title="Graphical Configuration">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Alignment/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Configuration/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Alignment/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Configuration/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -412,6 +392,5 @@ Those models require a different ROI setup; <strong>the height must be set diffe
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Reference-Image/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Reference-Image/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Reference Image - AI on the Edge Device</title> <title>Reference Image - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Reference Image"; var mkdocs_page_name = "Reference Image";
var mkdocs_page_input_path = "Reference-Image.md"; var mkdocs_page_input_path = "Reference-Image.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Reference-Image/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Reference-Image/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -146,7 +142,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -162,29 +158,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Configuration &raquo;</li> <li>Configuration »</li>
<li class="breadcrumb-item active">Reference Image</li> <li class="breadcrumb-item active">Reference Image</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Reference-Image.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Reference-Image.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="reference-image"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Reference Image</h1>
<h1 id="reference-image">Reference Image</h1>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>The Reference Image is the basis for the coordinate system of the ROIs. Therefore it is very important, to have a well aligned image, that is not rotated. </p> <p>The Reference Image is the basis for the coordinate system of the ROIs. Therefore it is very important, to have a well aligned image, that is not rotated. </p>
@@ -193,7 +186,7 @@
To define a new reference image push the button <code>"Create new Reference" (2)</code> and afterwards <code>"Take Image" (2)</code>. It might take some seconds for processing, then your actual camera image should be shown. To define a new reference image push the button <code>"Create new Reference" (2)</code> and afterwards <code>"Take Image" (2)</code>. It might take some seconds for processing, then your actual camera image should be shown.
Then play with the provided parameters to get a good result.</p> Then play with the provided parameters to get a good result.</p>
<p><img alt="" src="../img/initial_setup_1_reference_image.jpg" style="width:500px"/></p> <p><img alt="" src="../img/initial_setup_1_reference_image.jpg" style="width:500px"/></p>
<h2 id="focus">Focus</h2> <h2 id="focus"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Focus</h2>
<p>This is the first time, where you have access to the camera image. It most likely is out of focus and not sharp! <p>This is the first time, where you have access to the camera image. It most likely is out of focus and not sharp!
Ensure a sharp image of the camera by adjusting the focal length of the ESP OV2640 camera.</p> Ensure a sharp image of the camera by adjusting the focal length of the ESP OV2640 camera.</p>
<div class="admonition note"> <div class="admonition note">
@@ -217,7 +210,7 @@ Make sure <strong>not</strong> to rotate the whole camera as this can damage the
<p>This modification will render the camera unsuitable for general, web-cam type applications unless the focal length is changed back to the original setting.</p> <p>This modification will render the camera unsuitable for general, web-cam type applications unless the focal length is changed back to the original setting.</p>
</div> </div>
<p><img alt="" src="../img/focus_adjustment.jpg"/></p> <p><img alt="" src="../img/focus_adjustment.jpg"/></p>
<h2 id="correct-horizontal-alignment">Correct Horizontal Alignment</h2> <h2 id="correct-horizontal-alignment"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Correct Horizontal Alignment</h2>
<p>Ensure an <strong>exact horizontal alignment</strong> of the number:</p> <p>Ensure an <strong>exact horizontal alignment</strong> of the number:</p>
<table> <table>
<thead> <thead>
@@ -244,7 +237,7 @@ Therefore do this step later only with caution.</p>
<p>A reboot is not required at this point of time.</p> <p>A reboot is not required at this point of time.</p>
</div> </div>
<p>As next you should update the <a href="../Alignment/">Alignment References</a>.</p> <p>As next you should update the <a href="../Alignment/">Alignment References</a>.</p>
<h2 id="dealing-with-reflections">Dealing with Reflections</h2> <h2 id="dealing-with-reflections"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Dealing with Reflections</h2>
<p>Reflections can be caused by the flash LED and make it hard to provide a reliable detection. <p>Reflections can be caused by the flash LED and make it hard to provide a reliable detection.
There are various ways to deal with them:</p> There are various ways to deal with them:</p>
<ul> <ul>
@@ -253,43 +246,30 @@ There are various ways to deal with them:</p>
<li>Reduce the LED intensity.</li> <li>Reduce the LED intensity.</li>
<li>Use external LED stripes, eg <code>WS2812x</code>.</li> <li>Use external LED stripes, eg <code>WS2812x</code>.</li>
</ul> </ul>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../FAQs/" class="btn btn-neutral float-left" title="Frequently Asked Questions"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../FAQs/" title="Frequently Asked Questions"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Alignment/" class="btn btn-neutral float-right" title="Alignment References">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Alignment/" title="Alignment References">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../FAQs/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Alignment/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../FAQs/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Alignment/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -302,6 +282,5 @@ There are various ways to deal with them:</p>
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Release-creation/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Release-creation/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Preparing for Release - AI on the Edge Device</title> <title>Preparing for Release - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Preparing for Release"; var mkdocs_page_name = "Preparing for Release";
var mkdocs_page_input_path = "Release-creation.md"; var mkdocs_page_input_path = "Release-creation.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Release-creation/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Release-creation/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -138,7 +134,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1 current"><a class="reference internal current" href="./">Preparing for Release</a> <li class="toctree-l1 current"><a class="reference internal current" href="./">Preparing for Release</a>
<ul class="current"> <ul class="current">
@@ -158,34 +154,31 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Development &raquo;</li> <li>Development »</li>
<li class="breadcrumb-item active">Preparing for Release</li> <li class="breadcrumb-item active">Preparing for Release</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Release-creation.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Release-creation.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="preparing-for-release"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Preparing for Release</h1>
<h1 id="preparing-for-release">Preparing for Release</h1>
<ol> <ol>
<li><a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/Changelog.md">Changelog</a> is merged back from <code>master</code> branch to <code>rolling</code> branch (should be the last step of the previous release creation)</li> <li><a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/Changelog.md">Changelog</a> is merged back from <code>master</code> branch to <code>rolling</code> branch (should be the last step of the previous release creation)</li>
<li>All changes are documented in the <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/Changelog.md">Changelog</a> in <code>rolling</code> branch</li> <li>All changes are documented in the <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/Changelog.md">Changelog</a> in <code>rolling</code> branch</li>
</ol> </ol>
<h2 id="release-creation-steps">Release creation steps</h2> <h2 id="release-creation-steps"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Release creation steps</h2>
<ol> <ol>
<li>Merge<code>rolling</code> into <code>master</code> branch</li> <li>Merge<code>rolling</code> into <code>master</code> branch</li>
<li>Best to wait for the GitHub action to run successfully </li> <li>Best to wait for the GitHub action to run successfully </li>
@@ -207,43 +200,30 @@
<li>Merge master back in <code>rolling</code></li> <li>Merge master back in <code>rolling</code></li>
<li>Check that the <a href="">Web Installer</a> shows the right version</li> <li>Check that the <a href="">Web Installer</a> shows the right version</li>
</ol> </ol>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Testing/" class="btn btn-neutral float-left" title="Testing"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Testing/" title="Testing Option for VSCode"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../outdated--Integrated-Functions/" class="btn btn-neutral float-right" title="Integrated Functions">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../outdated--Integrated-Functions/" title="Integrated Functions">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Testing/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../outdated--Integrated-Functions/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Testing/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../outdated--Integrated-Functions/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -256,6 +236,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Board status LED (blink codes) - AI on the Edge Device</title> <title>Board status LED (blink codes) - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Board status LED (blink codes)"; var mkdocs_page_name = "Board status LED (blink codes)";
var mkdocs_page_input_path = "StatusLED-BlinkCodes.md"; var mkdocs_page_input_path = "StatusLED-BlinkCodes.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/StatusLED-BlinkCodes/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -140,7 +136,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -156,31 +152,28 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Troubleshooting &raquo;</li> <li>Troubleshooting »</li>
<li class="breadcrumb-item active">Board status LED (blink codes)</li> <li class="breadcrumb-item active">Board status LED (blink codes)</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/StatusLED-BlinkCodes.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/StatusLED-BlinkCodes.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<p>This page lists possible blink codes of the red LED located on the ESP32-CAM board, their meaning and possible solutions.</p> <p>This page lists possible blink codes of the red LED located on the ESP32-CAM board, their meaning and possible solutions.</p>
<p>The error code source definition can be found <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/code/components/jomjol_helper/statusled.h">here</a>.</p> <p>The error code source definition can be found <a href="https://github.com/jomjol/AI-on-the-edge-device/blob/rolling/code/components/jomjol_helper/statusled.h">here</a>.</p>
<h1 id="general-design-approach">General design approach:</h1> <h1 id="general-design-approach"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> General design approach:</h1>
<ul> <ul>
<li>250ms blink code to identify source</li> <li>250ms blink code to identify source</li>
<li>500ms defined LED off</li> <li>500ms defined LED off</li>
@@ -193,10 +186,10 @@
<thead> <thead>
<tr> <tr>
<th><strong>source</strong></th> <th><strong>source</strong></th>
<th>source <br> blink count</th> <th>source <br/> blink count</th>
<th>error / warning / status</th> <th>error / warning / status</th>
<th>status <br> blink count</th> <th>status <br/> blink count</th>
<th>repeat <br> infinite</th> <th>repeat <br/> infinite</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -358,144 +351,131 @@
<td>FLASHLIGHT</td> <td>FLASHLIGHT</td>
<td>N/A</td> <td>N/A</td>
<td>LED on when flashlight is on</td> <td>LED on when flashlight is on</td>
<td>solid, <br> no blink</td> <td>solid, <br/> no blink</td>
<td></td> <td></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<h1 id="error-warning">ERROR / WARNING</h1> <h1 id="error-warning"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.</span> ERROR / WARNING</h1>
<h2 id="source-wlan_conn-wlan-disconnected">Source WLAN_CONN: WLAN disconnected</h2> <h2 id="source-wlan_conn-wlan-disconnected"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.1</span> Source WLAN_CONN: WLAN disconnected</h2>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>Only warning indication, blink code repetition: 2x <p>Only warning indication, blink code repetition: 2x
--&gt; General info: <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code">WLAN disconnect reason code description</a></p> --&gt; General info: <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code">WLAN disconnect reason code description</a></p>
</div> </div>
<h3 id="wlan-disconnected-no-access-point"><code>WLAN disconnected (No Access Point)</code></h3> <h3 id="wlan-disconnected-no-access-point"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.1.1</span> <code>WLAN disconnected (No Access Point)</code></h3>
<p>WLAN connection is interrupted due to no access point in range.</p> <p>WLAN connection is interrupted due to no access point in range.</p>
<h3 id="wlan-disconnected-authentication-failure"><code>WLAN Disconnected (Authentication failure)</code></h3> <h3 id="wlan-disconnected-authentication-failure"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.1.2</span> <code>WLAN Disconnected (Authentication failure)</code></h3>
<p>WLAN connection is interrupted due to an authentication failure. If error repeats check WLAN config in WLAN.INI (username, password)</p> <p>WLAN connection is interrupted due to an authentication failure. If error repeats check WLAN config in WLAN.INI (username, password)</p>
<h3 id="wlan-disconnected-timeout"><code>WLAN Disconnected (Timeout)</code></h3> <h3 id="wlan-disconnected-timeout"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.1.3</span> <code>WLAN Disconnected (Timeout)</code></h3>
<p>WLAN connection is interrupted due to an timeout because no beacon from AP is received in a timely manner. Most probably access point is not available anymore or connection is not reliable.</p> <p>WLAN connection is interrupted due to an timeout because no beacon from AP is received in a timely manner. Most probably access point is not available anymore or connection is not reliable.</p>
<h3 id="wlan-disconnected-further-reasons"><code>WLAN Disconnected (Further reasons)</code></h3> <h3 id="wlan-disconnected-further-reasons"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.1.4</span> <code>WLAN Disconnected (Further reasons)</code></h3>
<p>WLAN connection is interrupted due to further reasons. Disconnect reason is printed in warining message. Please check serial console output or logfile from sd card (using another device to retrieve logfile /sdcard/log/message/). Please refer to this page to have additional infos in terms of WLAN disconnect reasons --&gt; <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code">WLAN disconnect reason code description</a></p> <p>WLAN connection is interrupted due to further reasons. Disconnect reason is printed in warining message. Please check serial console output or logfile from sd card (using another device to retrieve logfile /sdcard/log/message/). Please refer to this page to have additional infos in terms of WLAN disconnect reasons --&gt; <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code">WLAN disconnect reason code description</a></p>
<h2 id="source-wlan_init-wlan-initialization">Source WLAN_INIT: WLAN initialization</h2> <h2 id="source-wlan_init-wlan-initialization"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.2</span> Source WLAN_INIT: WLAN initialization</h2>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>All critical errors, regular boot not possible</p> <p>All critical errors, regular boot not possible</p>
</div> </div>
<h3 id="wlanini-empty-or-not-readable"><code>WLAN.ini empty or not readable</code></h3> <h3 id="wlanini-empty-or-not-readable"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.2.1</span> <code>WLAN.ini empty or not readable</code></h3>
<p>The WLAN.INI file is present but content is either not readable or no content present. Please check for further errors in terms of SD card readability or content of WLAN.INI which is located in /sdcard (most top folder od SD card) </p> <p>The WLAN.INI file is present but content is either not readable or no content present. Please check for further errors in terms of SD card readability or content of WLAN.INI which is located in /sdcard (most top folder od SD card) </p>
<h3 id="ssid-or-password-empty"><code>SSID or password empty</code></h3> <h3 id="ssid-or-password-empty"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.2.2</span> <code>SSID or password empty</code></h3>
<p>The mandatory parameters SSID (name of WIFI network) and / or password is empty. Please configure those parameters in WLAN.INI and try again.</p> <p>The mandatory parameters SSID (name of WIFI network) and / or password is empty. Please configure those parameters in WLAN.INI and try again.</p>
<h3 id="wifi-init-error-details-console"><code>WIFI init error (details console)</code></h3> <h3 id="wifi-init-error-details-console"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.2.3</span> <code>WIFI init error (details console)</code></h3>
<p>A general WIFI initialization error occured. Please check serial console output or logfile from sd card (using another device to retrieve logfile /sdcard/log/message/) </p> <p>A general WIFI initialization error occured. Please check serial console output or logfile from sd card (using another device to retrieve logfile /sdcard/log/message/) </p>
<h2 id="source-sdcard_init-sd-card-initialization">Source SDCARD_INIT: SD card initialization</h2> <h2 id="source-sdcard_init-sd-card-initialization"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.3</span> Source SDCARD_INIT: SD card initialization</h2>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>All critical errors, regular boot not possible</p> <p>All critical errors, regular boot not possible</p>
</div> </div>
<h3 id="sd-card-filesystem-mount-failed"><code>SD card filesystem mount failed</code></h3> <h3 id="sd-card-filesystem-mount-failed"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.3.1</span> <code>SD card filesystem mount failed</code></h3>
<p>Failed to mount FAT filesystem on SD card. Check SD card filesystem (only FAT supported) or try another card. Possible further infos: Please check serial console output.</p> <p>Failed to mount FAT filesystem on SD card. Check SD card filesystem (only FAT supported) or try another card. Possible further infos: Please check serial console output.</p>
<h3 id="sd-card-not-found-error-code-0x107"><code>SD card not found (Error code 0x107)</code></h3> <h3 id="sd-card-not-found-error-code-0x107"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.3.2</span> <code>SD card not found (Error code 0x107)</code></h3>
<p>SD card init failed. Check if SD card is properly inserted into SD card slot or try another card. Possible further infos: Please check serial console output.</p> <p>SD card init failed. Check if SD card is properly inserted into SD card slot or try another card. Possible further infos: Please check serial console output.</p>
<h3 id="sd-card-init-failed-details-console"><code>SD card init failed (details console)</code></h3> <h3 id="sd-card-init-failed-details-console"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.3.3</span> <code>SD card init failed (details console)</code></h3>
<p>A general SD card initialization error occured. Please check serial console output.</p> <p>A general SD card initialization error occured. Please check serial console output.</p>
<h2 id="source-sdcard_check-sd-card-basic-check">Source SDCARD_CHECK: SD card basic check</h2> <h2 id="source-sdcard_check-sd-card-basic-check"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.4</span> Source SDCARD_CHECK: SD card basic check</h2>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
</div> </div>
<p>All critical errors, normal boot not possible. Reduced WebUI is going to be loaded for further diagnostic possibilities or redo firmware update.</p> <p>All critical errors, normal boot not possible. Reduced WebUI is going to be loaded for further diagnostic possibilities or redo firmware update.</p>
<h3 id="file-creation-write-error"><code>File creation / write error</code></h3> <h3 id="file-creation-write-error"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.4.1</span> <code>File creation / write error</code></h3>
<p>A basic check of SD card is performed at boot. Failed to create the test file or writing content to the file failed. Most likely SD card is defective or not supported. Please check logs with log viewer in reduced web interface, serial console output or try another card.</p> <p>A basic check of SD card is performed at boot. Failed to create the test file or writing content to the file failed. Most likely SD card is defective or not supported. Please check logs with log viewer in reduced web interface, serial console output or try another card.</p>
<p>Recommendation: Format or try another card</p> <p>Recommendation: Format or try another card</p>
<h3 id="file-read-crc-verfication-error"><code>File read / CRC verfication error</code></h3> <h3 id="file-read-crc-verfication-error"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.4.2</span> <code>File read / CRC verfication error</code></h3>
<p>A basic check of SD card is performed at boot. Failed to read the test file or CRC of read back content failed. Most likely SD card is defective. Please check logs with log viewer in reduced web interface or serial console output for further error indication or try another card.</p> <p>A basic check of SD card is performed at boot. Failed to read the test file or CRC of read back content failed. Most likely SD card is defective. Please check logs with log viewer in reduced web interface or serial console output for further error indication or try another card.</p>
<p>Recommendation: Format or try another card</p> <p>Recommendation: Format or try another card</p>
<h3 id="file-delete-error"><code>File delete error</code></h3> <h3 id="file-delete-error"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.4.3</span> <code>File delete error</code></h3>
<p>A basic check of SD card is performed at boot. Failed to delelte the test file. Most likely SD card is defective. Please check logs with log viewer in reduced web interface or serial console output for further error indication or try another card.</p> <p>A basic check of SD card is performed at boot. Failed to delelte the test file. Most likely SD card is defective. Please check logs with log viewer in reduced web interface or serial console output for further error indication or try another card.</p>
<p>Recommendation: Format or try another card</p> <p>Recommendation: Format or try another card</p>
<h3 id="folder-file-presence-failed"><code>Folder / File presence failed</code></h3> <h3 id="folder-file-presence-failed"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.4.4</span> <code>Folder / File presence failed</code></h3>
<p>A basic check of SD card is performed at boot. One or more menadatory folder / file are not found on SD card. Please check logs with log viewer in reduced web interface or serial console output for further error indication.</p> <p>A basic check of SD card is performed at boot. One or more menadatory folder / file are not found on SD card. Please check logs with log viewer in reduced web interface or serial console output for further error indication.</p>
<p>Recommendation: Repeat installation using AI-on-the-edge-device__update__*.zip</p> <p>Recommendation: Repeat installation using AI-on-the-edge-device__update__*.zip</p>
<h2 id="source-cam_init-camera-initialization">Source CAM_INIT: Camera initialization</h2> <h2 id="source-cam_init-camera-initialization"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.5</span> Source CAM_INIT: Camera initialization</h2>
<h3 id="camera-init-failed-details-console"><code>Camera init failed (details console)</code></h3> <h3 id="camera-init-failed-details-console"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.5.1</span> <code>Camera init failed (details console)</code></h3>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>Critical error, normal boot not possible. Reduced WebUI is going to be loaded for further diagnostic possibilities or redo firmware update.</p> <p>Critical error, normal boot not possible. Reduced WebUI is going to be loaded for further diagnostic possibilities or redo firmware update.</p>
</div> </div>
<p>A general camera initialization error occured. Please check logs with log viewer in reduced web interface or serial console output for further error indication.</p> <p>A general camera initialization error occured. Please check logs with log viewer in reduced web interface or serial console output for further error indication.</p>
<p>Recommendation: Check for proper electrical connection, whether camera model is supported and whether power supply is sufficient.</p> <p>Recommendation: Check for proper electrical connection, whether camera model is supported and whether power supply is sufficient.</p>
<h3 id="camera-framebuffer-check-failed"><code>Camera framebuffer check failed</code></h3> <h3 id="camera-framebuffer-check-failed"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.5.2</span> <code>Camera framebuffer check failed</code></h3>
<p>The framebuffer of the camera was not readable. The firmware will trying to continue regular boot, but further errors can occur which block regular processing. Please check logs with logfile viewer if processing is behaving irregular.</p> <p>The framebuffer of the camera was not readable. The firmware will trying to continue regular boot, but further errors can occur which block regular processing. Please check logs with logfile viewer if processing is behaving irregular.</p>
<p>Recommendation: Check for proper electrical commenection, wether camera model is supported and wether power supply is suffcient.</p> <p>Recommendation: Check for proper electrical commenection, wether camera model is supported and wether power supply is suffcient.</p>
<h2 id="source-psram_init-external-ram-spi-ram-initialization">Source PSRAM_INIT: External RAM (SPI RAM) initialization</h2> <h2 id="source-psram_init-external-ram-spi-ram-initialization"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.6</span> Source PSRAM_INIT: External RAM (SPI RAM) initialization</h2>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>A critical errors, normal boot not possible. Reduced WebUI is going to be loaded for further diagnostic possibilities or redo firmware update.</p> <p>A critical errors, normal boot not possible. Reduced WebUI is going to be loaded for further diagnostic possibilities or redo firmware update.</p>
</div> </div>
<h3 id="spi-ram-init-failed-not-founddefective"><code>SPI RAM init failed: Not found/defective</code></h3> <h3 id="spi-ram-init-failed-not-founddefective"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.6.1</span> <code>SPI RAM init failed: Not found/defective</code></h3>
<p>External RAM (SPI RAM) initialization failed. Most likely external RAM not accessable or defective. Normal operation is not possible without having external RAM.</p> <p>External RAM (SPI RAM) initialization failed. Most likely external RAM not accessable or defective. Normal operation is not possible without having external RAM.</p>
<h3 id="external-spi-ram-4mb"><code>External SPI RAM &lt; 4MB</code></h3> <h3 id="external-spi-ram-4mb"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.6.2</span> <code>External SPI RAM &lt; 4MB</code></h3>
<p>External RAM (SPI RAM) initialization successful, but external RAM size is too small. A size of &gt;= 4MB is necessary to run this firmware. </p> <p>External RAM (SPI RAM) initialization successful, but external RAM size is too small. A size of &gt;= 4MB is necessary to run this firmware. </p>
<h3 id="total-heap-4mb"><code>Total heap &lt; 4MB</code></h3> <h3 id="total-heap-4mb"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.6.3</span> <code>Total heap &lt; 4MB</code></h3>
<p>Total available system memory (heap) is too small. A size of &gt;= 4MB is necessary to run this firmware. </p> <p>Total available system memory (heap) is too small. A size of &gt;= 4MB is necessary to run this firmware. </p>
<h2 id="source-time_check-external-ram-spi-ram-initialization">Source TIME_CHECK: External RAM (SPI RAM) initialization</h2> <h2 id="source-time_check-external-ram-spi-ram-initialization"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.7</span> Source TIME_CHECK: External RAM (SPI RAM) initialization</h2>
<h3 id="missing-time-sync-check-every-round"><code>Missing time sync (check every round)</code></h3> <h3 id="missing-time-sync-check-every-round"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.7.1</span> <code>Missing time sync (check every round)</code></h3>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>Only warning indication, blink code repetition: 2x</p> <p>Only warning indication, blink code repetition: 2x</p>
</div> </div>
<p>If system is configured to be synced with a NTP server the sync status is checked after every round (in state: "Flow finished". An warming message is also printed to log). If the time is not synced after serveral rounds, please check for proper configuration.</p> <p>If system is configured to be synced with a NTP server the sync status is checked after every round (in state: "Flow finished". An warming message is also printed to log). If the time is not synced after serveral rounds, please check for proper configuration.</p>
<h1 id="status">STATUS</h1> <h1 id="status"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.</span> STATUS</h1>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>All only status indication</p> <p>All only status indication</p>
</div> </div>
<h2 id="source-ota_or_ap-ota-update-access-point-mode">Source OTA_OR_AP: OTA Update / Access point mode</h2> <h2 id="source-ota_or_ap-ota-update-access-point-mode"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.1</span> Source OTA_OR_AP: OTA Update / Access point mode</h2>
<h3 id="ota-process-ongoing"><code>OTA process ongoing</code></h3> <h3 id="ota-process-ongoing"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.1.1</span> <code>OTA process ongoing</code></h3>
<p>An OTA is performed right now. Please wait until OTA is completed. System is rebooting automatically. If system is not coming up, please check serial console output.</p> <p>An OTA is performed right now. Please wait until OTA is completed. System is rebooting automatically. If system is not coming up, please check serial console output.</p>
<h3 id="soft-ap-started-for-remote-config"><code>Soft AP started (for remote config)</code></h3> <h3 id="soft-ap-started-for-remote-config"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.1.2</span> <code>Soft AP started (for remote config)</code></h3>
<p>The built-in access point functionality is started to perform initial remote remote setup. Further description: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/">Installtion --&gt; <code>Section Remote Setup using the built-in Access Point</code></a></p> <p>The built-in access point functionality is started to perform initial remote remote setup. Further description: <a href="https://jomjol.github.io/AI-on-the-edge-device-docs/Installation/">Installtion --&gt; <code>Section Remote Setup using the built-in Access Point</code></a></p>
<h2 id="source-flashlight-flashlight">Source FLASHLIGHT: Flashlight</h2> <h2 id="source-flashlight-flashlight"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.2</span> Source FLASHLIGHT: Flashlight</h2>
<h3 id="led-on-when-flashlight-is-on"><code>LED on when flashlight is on</code></h3> <h3 id="led-on-when-flashlight-is-on"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.2.1</span> <code>LED on when flashlight is on</code></h3>
<p>The LED is solid on as long the flashlight is on. This feature has lower priority than the other LED codes. Whenever another code occurs this feature will be overrided.</p> <p>The LED is solid on as long the flashlight is on. This feature has lower priority than the other LED codes. Whenever another code occurs this feature will be overrided.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Error-Codes/" class="btn btn-neutral float-left" title="Reduced webinterface (error codes)"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Error-Codes/" title="Reduced webinterface (error codes)"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../WLAN-disconnect-reason/" class="btn btn-neutral float-right" title="WLAN disconnect reasons">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../WLAN-disconnect-reason/" title="WLAN disconnect reasons">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Error-Codes/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../WLAN-disconnect-reason/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Error-Codes/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../WLAN-disconnect-reason/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -508,6 +488,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Testing/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Testing/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Testing - AI on the Edge Device</title> <title>Testing Option for VSCode - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Testing"; var mkdocs_page_name = "Testing Option for VSCode";
var mkdocs_page_input_path = "Testing.md"; var mkdocs_page_input_path = "Testing.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Testing/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Testing/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -138,8 +134,16 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1 current"><a class="reference internal current" href="./">Testing</a> <li class="toctree-l1 current"><a class="reference internal current" href="./">Testing Option for VSCode</a>
<ul class="current"> <ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#structure">Structure</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#include-my-my-own-test">Include my my own test</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#run-tests">Run tests</a>
</li>
<li class="toctree-l2"><a class="reference internal" href="#troubleshooting">Troubleshooting</a>
</li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
@@ -156,86 +160,70 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Development &raquo;</li> <li>Development »</li>
<li class="breadcrumb-item active">Testing</li> <li class="breadcrumb-item active">Testing Option for VSCode</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Testing.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Testing.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="testing-option-for-vscode"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Testing Option for VSCode</h1>
<h2 id="testing-option-for-vscode">Testing Option for VSCode</h2>
<p>You can test your functions directly on the device. </p> <p>You can test your functions directly on the device. </p>
<h2 id="structure">Structure</h2> <h2 id="structure"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Structure</h2>
<p>All tests are under directory "test" in the project and not compiled with default build option of platformio. The main function is in file <code>test_suite_controlflow.cpp</code>. In method <code>app_main()</code> you can add your own tests. </p> <p>All tests are under directory "test" in the project and not compiled with default build option of platformio. The main function is in file <code>test_suite_controlflow.cpp</code>. In method <code>app_main()</code> you can add your own tests. </p>
<p><img width="400" alt="image" src="https://user-images.githubusercontent.com/412645/209811778-7efe3b83-8954-4d3b-afa3-d3718fcd9058.png"></p> <p><img alt="image" src="https://user-images.githubusercontent.com/412645/209811778-7efe3b83-8954-4d3b-afa3-d3718fcd9058.png" width="400"/></p>
<h2 id="include-my-my-own-test">Include my my own test</h2> <h2 id="include-my-my-own-test"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Include my my own test</h2>
<p>In method <code>app_main()</code> of <code>test_suite_controlflow.cpp</code> you can add your own tests. Include your test-file in the top like</p> <p>In method <code>app_main()</code> of <code>test_suite_controlflow.cpp</code> you can add your own tests. Include your test-file in the top like</p>
<p><code>#include "components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp"</code></p> <p><code>#include "components/jomjol-flowcontroll/test_flow_postrocess_helper.cpp"</code></p>
<p>components is a subfolder of tests here. Not the components directory of root source.</p> <p>components is a subfolder of tests here. Not the components directory of root source.</p>
<p>In the bottom add your test function.</p> <p>In the bottom add your test function.</p>
<p><code>RUN_TEST(testNegative);</code></p> <p><code>RUN_TEST(testNegative);</code></p>
<p>Your test function should have a <code>TEST_ASSERT_EQUAL_*</code>. For more information look at <a href="https://docs.platformio.org/en/latest/advanced/unit-testing/frameworks/unity.html">unity-testing</a>. </p> <p>Your test function should have a <code>TEST_ASSERT_EQUAL_*</code>. For more information look at <a href="https://docs.platformio.org/en/latest/advanced/unit-testing/frameworks/unity.html">unity-testing</a>. </p>
<h2 id="run-tests">Run tests</h2> <h2 id="run-tests"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Run tests</h2>
<p>You will need a testing device. best with usb adapter. Before you upload your tests you will need to setup the device with initial setup procedure described in [[Installation]]</p> <p>You will need a testing device. best with usb adapter. Before you upload your tests you will need to setup the device with initial setup procedure described in [[Installation]]</p>
<p><img width="300" alt="image" src="https://user-images.githubusercontent.com/412645/209813215-e0ea7405-6ff4-48d0-8dab-97bfab6962af.png"></p> <p><img alt="image" src="https://user-images.githubusercontent.com/412645/209813215-e0ea7405-6ff4-48d0-8dab-97bfab6962af.png" width="300"/></p>
<p>Now you can use Visual Studio Code or a standard console to upload the test code. In VS Code (tab platformio) open <em>Advanced</em> and select <em>Test</em>.</p> <p>Now you can use Visual Studio Code or a standard console to upload the test code. In VS Code (tab platformio) open <em>Advanced</em> and select <em>Test</em>.</p>
<p><img width="467" alt="image" src="https://user-images.githubusercontent.com/412645/209813917-ea7fca50-2553-4acf-a8af-ecdac84a01ea.png"></p> <p><img alt="image" src="https://user-images.githubusercontent.com/412645/209813917-ea7fca50-2553-4acf-a8af-ecdac84a01ea.png" width="467"/></p>
<p>Alternatively you can run it in console/terminal with <code>platformio test --environment esp32cam</code>.</p> <p>Alternatively you can run it in console/terminal with <code>platformio test --environment esp32cam</code>.</p>
<p>In my environment the serial terminal not opens. I have to do it for myself. You will see much logging. If any test fails it logs it out. Else it logs all test passed in the end.</p> <p>In my environment the serial terminal not opens. I have to do it for myself. You will see much logging. If any test fails it logs it out. Else it logs all test passed in the end.</p>
<h2 id="troubleshooting">Troubleshooting</h2> <h2 id="troubleshooting"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> Troubleshooting</h2>
<p>If you test very much cases in one function, the device runs in Stack Overflow and an endless boot. Reduce the count of test cases or split the test function in multiple functions.</p> <p>If you test very much cases in one function, the device runs in Stack Overflow and an endless boot. Reduce the count of test cases or split the test function in multiple functions.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Upload-files-by-script/" class="btn btn-neutral float-left" title="Scripted File Upload"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Upload-files-by-script/" title="Scripted File Upload"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Release-creation/" class="btn btn-neutral float-right" title="Preparing for Release">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Release-creation/" title="Preparing for Release">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Upload-files-by-script/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Release-creation/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Upload-files-by-script/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Release-creation/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -248,6 +236,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Upload-files-by-script/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Upload-files-by-script/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Scripted File Upload - AI on the Edge Device</title> <title>Scripted File Upload - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Scripted File Upload"; var mkdocs_page_name = "Scripted File Upload";
var mkdocs_page_input_path = "Upload-files-by-script.md"; var mkdocs_page_input_path = "Upload-files-by-script.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Upload-files-by-script/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Upload-files-by-script/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -140,7 +136,7 @@
<ul class="current"> <ul class="current">
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -156,70 +152,54 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Development &raquo;</li> <li>Development »</li>
<li class="breadcrumb-item active">Scripted File Upload</li> <li class="breadcrumb-item active">Scripted File Upload</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Upload-files-by-script.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Upload-files-by-script.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="scripted-file-upload"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Scripted File Upload</h1>
<h1 id="scripted-file-upload">Scripted File Upload</h1>
<p>To upload a file e.g. using <code>curl</code>, you first have to delete it and then upload it:</p> <p>To upload a file e.g. using <code>curl</code>, you first have to delete it and then upload it:</p>
<pre><code>curl -d '' http://192.168.1.153/delete/html/index.html <pre><code>curl -d '' http://192.168.1.153/delete/html/index.html
curl --data-binary @ota_page.html http://192.168.1.153/upload/html/index.html curl --data-binary @ota_page.html http://192.168.1.153/upload/html/index.html
</code></pre> </code></pre>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Build-Instructions/" class="btn btn-neutral float-left" title="Build the Project"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Build-Instructions/" title="Build the Project"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Testing/" class="btn btn-neutral float-right" title="Testing">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Testing/" title="Testing Option for VSCode">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Build-Instructions/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Testing/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Build-Instructions/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Testing/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -232,6 +212,5 @@ curl --data-binary @ota_page.html http://192.168.1.153/upload/html/index.html
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/WLAN-disconnect-reason/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/WLAN-disconnect-reason/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>WLAN disconnect reasons - AI on the Edge Device</title> <title>WLAN disconnect reasons - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "WLAN disconnect reasons"; var mkdocs_page_name = "WLAN disconnect reasons";
var mkdocs_page_input_path = "WLAN-disconnect-reason.md"; var mkdocs_page_input_path = "WLAN-disconnect-reason.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/WLAN-disconnect-reason/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/WLAN-disconnect-reason/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -140,7 +136,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -156,68 +152,52 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Troubleshooting &raquo;</li> <li>Troubleshooting »</li>
<li class="breadcrumb-item active">WLAN disconnect reasons</li> <li class="breadcrumb-item active">WLAN disconnect reasons</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/WLAN-disconnect-reason.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/WLAN-disconnect-reason.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="wlan-disconnect-reasons"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> WLAN disconnect reasons</h1>
<h1 id="wlan-disconnect-reasons">WLAN disconnect reasons</h1>
<p>In the logfile the WLAN disconnect reason code are printed whenever a disconnect event occurs (WARNING LEVEL or higher).</p> <p>In the logfile the WLAN disconnect reason code are printed whenever a disconnect event occurs (WARNING LEVEL or higher).</p>
<p>Further information and additional description of reason codes can be found here: <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code">WLAN disconnect reason code description</a></p> <p>Further information and additional description of reason codes can be found here: <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code">WLAN disconnect reason code description</a></p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../StatusLED-BlinkCodes/" class="btn btn-neutral float-left" title="Board status LED (blink codes)"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../StatusLED-BlinkCodes/" title="Board status LED (blink codes)"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Error-Debugging/" class="btn btn-neutral float-right" title="Often observed issues">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Error-Debugging/" title="Often observed issues">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../StatusLED-BlinkCodes/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Error-Debugging/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../StatusLED-BlinkCodes/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Error-Debugging/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -230,6 +210,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/Watermeter-specific-analog---digital-transition/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/Watermeter-specific-analog---digital-transition/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Analog/Digital Transition on Water Meters - AI on the Edge Device</title> <title>Analog/Digital Transition on Water Meters - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Analog/Digital Transition on Water Meters"; var mkdocs_page_name = "Analog/Digital Transition on Water Meters";
var mkdocs_page_input_path = "Watermeter-specific-analog---digital-transition.md"; var mkdocs_page_input_path = "Watermeter-specific-analog---digital-transition.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/Watermeter-specific-analog---digital-transition/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/Watermeter-specific-analog---digital-transition/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -148,7 +144,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -164,81 +160,65 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Analog/Digital Transition on Water Meters</li> <li class="breadcrumb-item active">Analog/Digital Transition on Water Meters</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Watermeter-specific-analog---digital-transition.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/Watermeter-specific-analog---digital-transition.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="analogdigital-transition-on-water-meters"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Analog/Digital Transition on Water Meters</h1>
<h1 id="analogdigital-transition-on-water-meters">Analog/Digital Transition on Water Meters</h1>
<p>At first, for the most water meters the default configuration should be work. But the digit, especially the last digit differs in some devices.</p> <p>At first, for the most water meters the default configuration should be work. But the digit, especially the last digit differs in some devices.</p>
<h2 id="normal-transition">"Normal" transition</h2> <h2 id="normal-transition"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> "Normal" transition</h2>
<p>In most cases, the transition of the last digit starts when the analogue pointer is &gt; 9. </p> <p>In most cases, the transition of the last digit starts when the analogue pointer is &gt; 9. </p>
<p>Often the last digit "hangs" a bit on this devices and comes not over zero. So it is not easy to see which digit is correct. In the first example 4 or still 3? (3 is correct).</p> <p>Often the last digit "hangs" a bit on this devices and comes not over zero. So it is not easy to see which digit is correct. In the first example 4 or still 3? (3 is correct).</p>
<p><img width="122" alt="image" src="https://user-images.githubusercontent.com/412645/209808192-5ff67e9f-ea7c-4d82-a8e4-54b3643c7e24.png"> <p><img alt="image" src="https://user-images.githubusercontent.com/412645/209808192-5ff67e9f-ea7c-4d82-a8e4-54b3643c7e24.png" width="122"/>
<img width="122" alt="image" src="https://user-images.githubusercontent.com/412645/209808306-359cce2e-ec84-4390-82d1-6747e1ec056c.png"></p> <img alt="image" src="https://user-images.githubusercontent.com/412645/209808306-359cce2e-ec84-4390-82d1-6747e1ec056c.png" width="122"/></p>
<h2 id="early-transition">Early transition</h2> <h2 id="early-transition"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Early transition</h2>
<p>Some units start the transition very early or run with the analogue pointer. In the third example, is it a 3 or a 2?</p> <p>Some units start the transition very early or run with the analogue pointer. In the third example, is it a 3 or a 2?</p>
<p><img width="122" alt="image" src="https://user-images.githubusercontent.com/412645/209807685-658fb9bb-648a-4779-bc30-805eadc12083.png"> <p><img alt="image" src="https://user-images.githubusercontent.com/412645/209807685-658fb9bb-648a-4779-bc30-805eadc12083.png" width="122"/>
<img width="122" alt="image" src="https://user-images.githubusercontent.com/412645/209808972-448bb6d0-7b7e-4030-abb2-9c966ceffc4a.png"> <img alt="image" src="https://user-images.githubusercontent.com/412645/209808972-448bb6d0-7b7e-4030-abb2-9c966ceffc4a.png" width="122"/>
<img width="122" alt="image" src="https://user-images.githubusercontent.com/412645/209809116-d4acc5f2-ab5c-4304-9559-598b1dfc59c2.png"></p> <img alt="image" src="https://user-images.githubusercontent.com/412645/209809116-d4acc5f2-ab5c-4304-9559-598b1dfc59c2.png" width="122"/></p>
<h2 id="inaccuracies-in-image-recognition">Inaccuracies in image recognition</h2> <h2 id="inaccuracies-in-image-recognition"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Inaccuracies in image recognition</h2>
<p>The models for image recognition are good, but have inaccuracies in the range +/- 0.2. In order to obtain as many correct results as possible, a treatment is carried out in the post process in the range of 9.8-0.2 for the analogue pointer, which must start differently depending on the type of counter.</p> <p>The models for image recognition are good, but have inaccuracies in the range +/- 0.2. In order to obtain as many correct results as possible, a treatment is carried out in the post process in the range of 9.8-0.2 for the analogue pointer, which must start differently depending on the type of counter.</p>
<h2 id="how-to-configure-for-my-meter-type">How to configure for my meter type</h2> <h2 id="how-to-configure-for-my-meter-type"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> How to configure for my meter type</h2>
<p>If you have a devices with "normal" transition you should not have any issues. On devices with "early" transition, you can set the option <code>AnalogDigitalTransitionStart</code> to a value between 6 and 8.</p> <p>If you have a devices with "normal" transition you should not have any issues. On devices with "early" transition, you can set the option <code>AnalogDigitalTransitionStart</code> to a value between 6 and 8.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../rolling-installation/" class="btn btn-neutral float-left" title="Living on the Edge"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../rolling-installation/" title="Living on the Edge"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../collect-new-images/" class="btn btn-neutral float-right" title="Collect images to improve the models">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../collect-new-images/" title="Collect images to improve the models">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../rolling-installation/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../collect-new-images/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../rolling-installation/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../collect-new-images/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -251,6 +231,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/collect-new-images/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/collect-new-images/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Collect images to improve the models - AI on the Edge Device</title> <title>Collect images to improve the models - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Collect images to improve the models"; var mkdocs_page_name = "Collect images to improve the models";
var mkdocs_page_input_path = "collect-new-images.md"; var mkdocs_page_input_path = "collect-new-images.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/collect-new-images/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/collect-new-images/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -152,7 +148,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -168,35 +164,32 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Collect images to improve the models</li> <li class="breadcrumb-item active">Collect images to improve the models</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/collect-new-images.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/collect-new-images.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="collect-images-to-improve-the-models"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Collect images to improve the models</h1>
<h1 id="collect-images-to-improve-the-models">Collect images to improve the models</h1>
<p>If your device has new, different digits or pointers it might be that the existing models don't recognize them well. In such case you can collect your images and so we can train the model better. This helps you and also others as the models get more accurate. Adding more images also helps if you have a model that is already known, but the neural models do not produce good results.</p> <p>If your device has new, different digits or pointers it might be that the existing models don't recognize them well. In such case you can collect your images and so we can train the model better. This helps you and also others as the models get more accurate. Adding more images also helps if you have a model that is already known, but the neural models do not produce good results.</p>
<p>Experienced users can do the training also by themselves, see <a href="../Learn-models-with-your-own-images/">Learn a model with your own images</a>. </p> <p>Experienced users can do the training also by themselves, see <a href="../Learn-models-with-your-own-images/">Learn a model with your own images</a>. </p>
<h2 id="before-you-start">Before you start</h2> <h2 id="before-you-start"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Before you start</h2>
<p>Before you go ahead, please check if your digits/pointers are not yet contained in the training data. A visual overview is available at <a href="https://jomjol.github.io/neural-network-digital-counter-readout">digits</a> resp. <a href="https://jomjol.github.io/neural-network-analog-needle-readout/">pointers</a>.</p> <p>Before you go ahead, please check if your digits/pointers are not yet contained in the training data. A visual overview is available at <a href="https://jomjol.github.io/neural-network-digital-counter-readout">digits</a> resp. <a href="https://jomjol.github.io/neural-network-analog-needle-readout/">pointers</a>.</p>
<p>Poor recognition is often caused by blurred images, low contrast or incorrect setting of the ROIs. Therefore, check these possibilities first, as additional training will bring little improvement here. See <a href="../ROI-Configuration/">ROI Configuration</a> for details.</p> <p>Poor recognition is often caused by blurred images, low contrast or incorrect setting of the ROIs. Therefore, check these possibilities first, as additional training will bring little improvement here. See <a href="../ROI-Configuration/">ROI Configuration</a> for details.</p>
<h2 id="collecting-images">Collecting images</h2> <h2 id="collecting-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Collecting images</h2>
<p>The neural network is trained based on a set of images that have already been collected over time. If your digits are included or at least very similar to included images, the chance is very high that the neural network is working fine for you as well.</p> <p>The neural network is trained based on a set of images that have already been collected over time. If your digits are included or at least very similar to included images, the chance is very high that the neural network is working fine for you as well.</p>
<p>The neural network configuration is stored in the TensorFlow Lite format as <code>*.tfl</code> or <code>*.tflite</code> in the <code>/config</code> directory on the SD card. A model can be updated (or a new one added) by uploading the new file and activating it on the configuration page or in the config file <code>/config/config.ini</code>.</p> <p>The neural network configuration is stored in the TensorFlow Lite format as <code>*.tfl</code> or <code>*.tflite</code> in the <code>/config</code> directory on the SD card. A model can be updated (or a new one added) by uploading the new file and activating it on the configuration page or in the config file <code>/config/config.ini</code>.</p>
<p>In order to incorporate new digits a training set of images is required. The training images needs to be collected in the final setup with the help of the <code>Digits</code> or <code>Analog</code> log settings (not to be confused with the <code>Data</code> or <code>Debug</code> log). Enable the logging of the images on the configuration page or in the config file <code>/config/config.ini</code>:</p> <p>In order to incorporate new digits a training set of images is required. The training images needs to be collected in the final setup with the help of the <code>Digits</code> or <code>Analog</code> log settings (not to be confused with the <code>Data</code> or <code>Debug</code> log). Enable the logging of the images on the configuration page or in the config file <code>/config/config.ini</code>:</p>
@@ -204,14 +197,14 @@
<p>Now be patient! You have to wait until it has collected an image of each digit of every type. They will be placed on the SD card in the folder <code>/log/digit/</code> resp. <code>/log/analog/</code>.</p> <p>Now be patient! You have to wait until it has collected an image of each digit of every type. They will be placed on the SD card in the folder <code>/log/digit/</code> resp. <code>/log/analog/</code>.</p>
<p>After some days, there will be a lot of images, many of them very similar. Because of this, it is important to select only a subset of them for the model training.</p> <p>After some days, there will be a lot of images, many of them very similar. Because of this, it is important to select only a subset of them for the model training.</p>
<p>The tools shown below can help you with that.</p> <p>The tools shown below can help you with that.</p>
<h2 id="collecting-images-for-dig-class100dig-contana-class100">Collecting images for dig-class100/dig-cont/ana-class100</h2> <h2 id="collecting-images-for-dig-class100dig-contana-class100"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> Collecting images for dig-class100/dig-cont/ana-class100</h2>
<p>For digits use <a href="https://github.com/haverland/collectmeterdigits">Collectmeterdigits</a> resp. for pointers use <a href="https://github.com/haverland/collectmeteranalog">collectmeteranalog</a> to fetch the images from the device and select a subset of them. Please read the detailed instructions on the mentioned links for details!</p> <p>For digits use <a href="https://github.com/haverland/collectmeterdigits">Collectmeterdigits</a> resp. for pointers use <a href="https://github.com/haverland/collectmeteranalog">collectmeteranalog</a> to fetch the images from the device and select a subset of them. Please read the detailed instructions on the mentioned links for details!</p>
<p>If the fetching of the images is too slow for you, a faster way to get the images to your PC is to remove the SD-card from the ESP32 module and insert it into the card reader of yur PC. <p>If the fetching of the images is too slow for you, a faster way to get the images to your PC is to remove the SD-card from the ESP32 module and insert it into the card reader of yur PC.
Then search for two..three images of each digit (<strong>not more! :-)</strong>). You will have to make sure to label the images yourself matching the effective value they are supposed to show. </p> Then search for two..three images of each digit (<strong>not more! :-)</strong>). You will have to make sure to label the images yourself matching the effective value they are supposed to show. </p>
<h2 id="share-your-images">Share your images</h2> <h2 id="share-your-images"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> Share your images</h2>
<p>In most cases we will integrate your images in the training dataset of the models. Only if we fear a degradation of the models or you need a different behavior, we might not include the data in the standard models (see at bottom of page for reasons).</p> <p>In most cases we will integrate your images in the training dataset of the models. Only if we fear a degradation of the models or you need a different behavior, we might not include the data in the standard models (see at bottom of page for reasons).</p>
<p>To provide your images to us for training the model, open an <a href="https://github.com/jomjol/AI-on-the-edge-device/issues/new/choose">Github Issue</a> and append the zipped images ito it.</p> <p>To provide your images to us for training the model, open an <a href="https://github.com/jomjol/AI-on-the-edge-device/issues/new/choose">Github Issue</a> and append the zipped images ito it.</p>
<h3 id="images-can-be-rejected-if">Images can be rejected if</h3> <h3 id="images-can-be-rejected-if"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4.1</span> Images can be rejected if</h3>
<ul> <ul>
<li>You provide too many images. More than 1000 images of your device are really to much. </li> <li>You provide too many images. More than 1000 images of your device are really to much. </li>
<li>Images which are not good enough (see <a href="../ROI-Configuration/">ROI Configuration</a>) will be rejected. It would reduce the accuracy of the networks.</li> <li>Images which are not good enough (see <a href="../ROI-Configuration/">ROI Configuration</a>) will be rejected. It would reduce the accuracy of the networks.</li>
@@ -219,43 +212,30 @@ Then search for two..three images of each digit (<strong>not more! :-)</strong>)
<li>Images with too much blur are rejected.</li> <li>Images with too much blur are rejected.</li>
</ul> </ul>
<p>Our models are to small to recognize everything in any quality. So we use only images of medium or good quality.</p> <p>Our models are to small to recognize everything in any quality. So we use only images of medium or good quality.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Watermeter-specific-analog---digital-transition/" class="btn btn-neutral float-left" title="Analog/Digital Transition on Water Meters"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Watermeter-specific-analog---digital-transition/" title="Analog/Digital Transition on Water Meters"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Learn-models-with-your-own-images/" class="btn btn-neutral float-right" title="Learn a model with your own images">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Learn-models-with-your-own-images/" title="Learn a model with your own images">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Watermeter-specific-analog---digital-transition/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Learn-models-with-your-own-images/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Watermeter-specific-analog---digital-transition/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Learn-models-with-your-own-images/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -268,6 +248,5 @@ Then search for two..three images of each digit (<strong>not more! :-)</strong>)
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/data-logging/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/data-logging/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Data Logging - AI on the Edge Device</title> <title>Data Logging - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Data Logging"; var mkdocs_page_name = "Data Logging";
var mkdocs_page_input_path = "data-logging.md"; var mkdocs_page_input_path = "data-logging.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/data-logging/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/data-logging/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -142,7 +138,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -158,72 +154,56 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Data Logging</li> <li class="breadcrumb-item active">Data Logging</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/data-logging.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/data-logging.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="data-logging"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Data Logging</h1>
<h1 id="data-logging">Data Logging</h1>
<p>When Data Logging is enabled (See parameter <a href="../Parameters/#parameter-datalogactive"><code>DataLogActive</code></a>), <p>When Data Logging is enabled (See parameter <a href="../Parameters/#parameter-datalogactive"><code>DataLogActive</code></a>),
the results of every round gets written to the SD-Card.</p> the results of every round gets written to the SD-Card.</p>
<p>The data files are stored in <code>/log/data</code> on the SD-Card.</p> <p>The data files are stored in <code>/log/data</code> on the SD-Card.</p>
<h2 id="data-format">Data Format</h2> <h2 id="data-format"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Data Format</h2>
<p>The data is stored as CSV with the following columns: <p>The data is stored as CSV with the following columns:
<code>time</code>, <code>name-of-number</code>, <code>raw-value</code>, <code>return-value</code>, <code>pre-value</code>, <code>change-rate</code>, <code>change-absolute</code>, <code>error-text</code>, <code>cnn-digital</code>, <code>cnn-analog</code></p> <code>time</code>, <code>name-of-number</code>, <code>raw-value</code>, <code>return-value</code>, <code>pre-value</code>, <code>change-rate</code>, <code>change-absolute</code>, <code>error-text</code>, <code>cnn-digital</code>, <code>cnn-analog</code></p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../External-LED/" class="btn btn-neutral float-left" title="External LED"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../External-LED/" title="External LED"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../rolling-installation/" class="btn btn-neutral float-right" title="Living on the Edge">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../rolling-installation/" title="Living on the Edge">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../External-LED/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../rolling-installation/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../External-LED/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../rolling-installation/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -236,6 +216,5 @@ the results of every round gets written to the SD-Card.</p>
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/" rel="canonical"/>
<link rel="shortcut icon" href="img/favicon.ico" /> <link href="img/favicon.ico" rel="shortcut icon"/>
<title>Welcome - AI on the Edge Device</title> <title>Welcome - AI on the Edge Device</title>
<link rel="stylesheet" href="css/theme.css" /> <link href="css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="css/theme_extra.css" /> <link href="css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Welcome"; var mkdocs_page_name = "Welcome";
var mkdocs_page_input_path = "index.md"; var mkdocs_page_input_path = "index.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script> <script src="js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href="." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href="."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="./search.html" method="get"> <form action="./search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href=".">Welcome</a> <li class="toctree-l1 current"><a class="reference internal current" href=".">Welcome</a>
@@ -152,7 +148,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="Release-creation/">Preparing for Release</a>
</li> </li>
@@ -168,34 +164,31 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href=".">AI on the Edge Device</a> <a href=".">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href="." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href="."></a> »</li>
<li>Getting Started &raquo;</li> <li>Getting Started »</li>
<li class="breadcrumb-item active">Welcome</li> <li class="breadcrumb-item active">Welcome</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/index.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/index.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="welcome"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Welcome</h1>
<h1 id="welcome">Welcome</h1>
<p>Welcome to the AI-on-the-edge-device project!</p> <p>Welcome to the AI-on-the-edge-device project!</p>
<p>This is the documentation. For the source code, please head to <a href="https://github.com/jomjol/AI-on-the-edge-device">github.com/jomjol/AI-on-the-edge-device</a>.</p> <p>This is the documentation. For the source code, please head to <a href="https://github.com/jomjol/AI-on-the-edge-device">github.com/jomjol/AI-on-the-edge-device</a>.</p>
<p>Artificial intelligence based systems have been established in our everyday lives. Just think of speech or image recognition. Most of the systems rely on either powerful processors or a direct connection to the cloud for doing the calculations up there. With the increasing power of modern processors the AI systems are coming closer to the end user - which is usually called <strong>edge computing</strong>. <p>Artificial intelligence based systems have been established in our everyday lives. Just think of speech or image recognition. Most of the systems rely on either powerful processors or a direct connection to the cloud for doing the calculations up there. With the increasing power of modern processors the AI systems are coming closer to the end user - which is usually called <strong>edge computing</strong>.
Here this edge computing is brought into a practice-oriented example, where a AI network is implemented on a ESP32 device so: <strong>AI on the edge</strong>.</p> Here this edge computing is brought into a practice-oriented example, where a AI network is implemented on a ESP32 device so: <strong>AI on the edge</strong>.</p>
<h2 id="key-features">Key features</h2> <h2 id="key-features"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Key features</h2>
<ul> <ul>
<li>Tensorflow Lite (TFlite) integration - including easy to use wrapper</li> <li>Tensorflow Lite (TFlite) integration - including easy to use wrapper</li>
<li>Inline image processing (feature detection, alignment, ROI extraction)</li> <li>Inline image processing (feature detection, alignment, ROI extraction)</li>
@@ -208,15 +201,15 @@ Here this edge computing is brought into a practice-oriented example, where a AI
<li>MQTT</li> <li>MQTT</li>
<li>REST API</li> <li>REST API</li>
</ul> </ul>
<h2 id="idea">Idea</h2> <h2 id="idea"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Idea</h2>
<p><img alt="Idea" src="img/idea.jpg" style="width:600px"/></p> <p><img alt="Idea" src="img/idea.jpg" style="width:600px"/></p>
<h3 id="hardware">Hardware</h3> <h3 id="hardware"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.1</span> Hardware</h3>
<p><img alt="" src="img/watermeter_all.jpg" style="width:200px"/> <p><img alt="" src="img/watermeter_all.jpg" style="width:200px"/>
<img alt="" src="img/main.jpg" style="width:200px"/> <img alt="" src="img/main.jpg" style="width:200px"/>
<img alt="" src="img/size.png" style="width:200px"/></p> <img alt="" src="img/size.png" style="width:200px"/></p>
<h3 id="web-interface">Web interface</h3> <h3 id="web-interface"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.2</span> Web interface</h3>
<p><img alt="" src="img/watermeter.jpg" style="width:600px"/></p> <p><img alt="" src="img/watermeter.jpg" style="width:600px"/></p>
<h3 id="configuration-interface">Configuration Interface</h3> <h3 id="configuration-interface"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2.3</span> Configuration Interface</h3>
<p><img alt="" src="img/edit_reference.jpg" style="width:600px"/></p> <p><img alt="" src="img/edit_reference.jpg" style="width:600px"/></p>
<p><strong>Have fun in studying the new possibilities and ideas</strong></p> <p><strong>Have fun in studying the new possibilities and ideas</strong></p>
<p>This is about image recognition and digitalization, done totally on a cheap ESP32 board using artificial intelligence in form of convolutional neural networks (CNN). Everything, from image capture (OV2640), image preprocessing (auto alignment, ROI identification) all the way down to the image recognition (CNN structure) and result plausibility is done on a cheap 10 EUR device.</p> <p>This is about image recognition and digitalization, done totally on a cheap ESP32 board using artificial intelligence in form of convolutional neural networks (CNN). Everything, from image capture (OV2640), image preprocessing (auto alignment, ROI identification) all the way down to the image recognition (CNN structure) and result plausibility is done on a cheap 10 EUR device.</p>
@@ -224,40 +217,28 @@ Here this edge computing is brought into a practice-oriented example, where a AI
<p>The task to be demonstrated here is an automated readout of an analog water meter. The water consumption is to be recorded within a house automatization and the water meter is totally analog without any electronic interface. Therefore, the task is solved by regularly taking an image of the water meter and digitizing the reading.</p> <p>The task to be demonstrated here is an automated readout of an analog water meter. The water consumption is to be recorded within a house automatization and the water meter is totally analog without any electronic interface. Therefore, the task is solved by regularly taking an image of the water meter and digitizing the reading.</p>
<p>There are two types of CNN implemented, a classification network for reading the digital numbers and a single output network for digitalize the analog pointers for the sub digit readings.</p> <p>There are two types of CNN implemented, a classification network for reading the digital numbers and a single output network for digitalize the analog pointers for the sub digit readings.</p>
<p>This project is an evolution of the <a href="https://github.com/jomjol/water-meter-system-complete">water-meter-system-complete</a>, which uses ESP32-CAM just for taking the image and a 1GB-Docker image to run the neural network's backbone. Here everything is integrated in an ESP32-CAM module with 8MB of RAM and a SD card as data storage.</p> <p>This project is an evolution of the <a href="https://github.com/jomjol/water-meter-system-complete">water-meter-system-complete</a>, which uses ESP32-CAM just for taking the image and a 1GB-Docker image to run the neural network's backbone. Here everything is integrated in an ESP32-CAM module with 8MB of RAM and a SD card as data storage.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="Installation/" class="btn btn-neutral float-right" title="Installation">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="Installation/" title="Installation">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="Installation/" style="color: #fcfcfc">Next »</a></span>
<span><a href="Installation/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="js/jquery-3.6.0.min.js"></script> <script src="js/jquery-3.6.0.min.js"></script>
@@ -270,6 +251,5 @@ Here this edge computing is brought into a practice-oriented example, where a AI
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/initial-setup/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/initial-setup/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Initial Setup - AI on the Edge Device</title> <title>Initial Setup - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Initial Setup"; var mkdocs_page_name = "Initial Setup";
var mkdocs_page_input_path = "initial-setup.md"; var mkdocs_page_input_path = "initial-setup.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/initial-setup/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/initial-setup/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul class="current"> <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -144,7 +140,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -160,29 +156,26 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Getting Started &raquo;</li> <li>Getting Started »</li>
<li class="breadcrumb-item active">Initial Setup</li> <li class="breadcrumb-item active">Initial Setup</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/initial-setup.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/initial-setup.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="initial-setup"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Initial Setup</h1>
<h1 id="initial-setup">Initial Setup</h1>
<p>After setting up the device (firmware, SD card, WLAN) the device will connect to the wifi access point and start in an initial setup configuration:</p> <p>After setting up the device (firmware, SD card, WLAN) the device will connect to the wifi access point and start in an initial setup configuration:</p>
<p><img alt="" src="../img/setup_initial_welcome.png" style="width:500px"/></p> <p><img alt="" src="../img/setup_initial_welcome.png" style="width:500px"/></p>
<p>With the buttons on the top you can navigate through 5 steps which guide you through the necessary setup:</p> <p>With the buttons on the top you can navigate through 5 steps which guide you through the necessary setup:</p>
@@ -190,7 +183,7 @@
<li>Create the <a href="../Reference-Image/">Reference Image</a>. It is the base for the position referencing and the identification of the digits and counters.</li> <li>Create the <a href="../Reference-Image/">Reference Image</a>. It is the base for the position referencing and the identification of the digits and counters.</li>
<li>Define two unique <a href="../Alignment/">Reference Marks</a>. They is used to align the individual camera images and identify the absolute positions.</li> <li>Define two unique <a href="../Alignment/">Reference Marks</a>. They is used to align the individual camera images and identify the absolute positions.</li>
<li>Define <a href="../ROI-Configuration/">ROIs</a> for the Digits. They will be used to digitize the digit part of your meter. If your meter has no digits, this step can be skipped.</li> <li>Define <a href="../ROI-Configuration/">ROIs</a> for the Digits. They will be used to digitize the digit part of your meter. If your meter has no digits, this step can be skipped.</li>
<li>Define <a href="../ROI-Configuration/">ROIs</a> for the Analog Counters. (Only required in case your meter has analog counters)</li></li> <li>Define <a href="../ROI-Configuration/">ROIs</a> for the Analog Counters. (Only required in case your meter has analog counters)</li>
<li><a href="../Configuration/">General Settings</a>. Further configuration of your device.</li> <li><a href="../Configuration/">General Settings</a>. Further configuration of your device.</li>
</ol> </ol>
<p>All settings can be accessed later in the normal operation mode.</p> <p>All settings can be accessed later in the normal operation mode.</p>
@@ -198,10 +191,10 @@
<p class="admonition-title">Note</p> <p class="admonition-title">Note</p>
<p>Don't forget to save each step with "Save", and do not reboot at this stage.</p> <p>Don't forget to save each step with "Save", and do not reboot at this stage.</p>
</div> </div>
<h2 id="finish-the-setup-and-change-to-the-normal-operation-mode">Finish the Setup and change to the Normal Operation mode</h2> <h2 id="finish-the-setup-and-change-to-the-normal-operation-mode"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Finish the Setup and change to the Normal Operation mode</h2>
<p>With the last step <code>(1)</code> you leave the <strong>Setup Mode</strong> and reboot to the <strong>Normal Operation mode</strong>.</p> <p>With the last step <code>(1)</code> you leave the <strong>Setup Mode</strong> and reboot to the <strong>Normal Operation mode</strong>.</p>
<p><img alt="" src="../img/initial_setup_6_finish_reboot.jpg" style="width:500px"/></p> <p><img alt="" src="../img/initial_setup_6_finish_reboot.jpg" style="width:500px"/></p>
<h2 id="access-to-the-setup-pages-in-the-normal-operation-mode">Access to the Setup Pages in the Normal Operation mode</h2> <h2 id="access-to-the-setup-pages-in-the-normal-operation-mode"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Access to the Setup Pages in the Normal Operation mode</h2>
<p>You always can access all the settings during the normal operation mode via the <code>Settings</code> menu:</p> <p>You always can access all the settings during the normal operation mode via the <code>Settings</code> menu:</p>
<p><img alt="" src="../img/initial_setup_7_access_normal_mode.jpg" style="width:500px"/></p> <p><img alt="" src="../img/initial_setup_7_access_normal_mode.jpg" style="width:500px"/></p>
<ul> <ul>
@@ -210,43 +203,30 @@
<li><code>(3)</code> Update of the <a href="../Alignment/">Alignment Marks</a>.</li> <li><code>(3)</code> Update of the <a href="../Alignment/">Alignment Marks</a>.</li>
<li><code>(4)/(5)</code> Update of the <a href="../ROI-Configuration/">ROIs</a>.</li> <li><code>(4)/(5)</code> Update of the <a href="../ROI-Configuration/">ROIs</a>.</li>
</ul> </ul>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Installation/" class="btn btn-neutral float-left" title="Installation"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Installation/" title="Installation"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Hardware-Compatibility/" class="btn btn-neutral float-right" title="Hardware Compatibility">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Hardware-Compatibility/" title="Hardware Compatibility">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Installation/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Hardware-Compatibility/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Installation/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Hardware-Compatibility/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -259,6 +239,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/ota/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/ota/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Over-The-Air (OTA) Update - AI on the Edge Device</title> <title>Over-The-Air (OTA) Update - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Over-The-Air (OTA) Update"; var mkdocs_page_name = "Over-The-Air (OTA) Update";
var mkdocs_page_input_path = "ota.md"; var mkdocs_page_input_path = "ota.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/ota/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/ota/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -148,7 +144,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -164,47 +160,44 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Configuration &raquo;</li> <li>Configuration »</li>
<li class="breadcrumb-item active">Over-The-Air (OTA) Update</li> <li class="breadcrumb-item active">Over-The-Air (OTA) Update</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/ota.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/ota.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="over-the-air-ota-update"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Over-The-Air (OTA) Update</h1>
<h1 id="over-the-air-ota-update">Over-The-Air (OTA) Update</h1>
<p>You can do an OTA (over-the-air) update via the Web Interface. <p>You can do an OTA (over-the-air) update via the Web Interface.
Grab the firmware from the</p> Grab the firmware from the</p>
<ul> <ul>
<li><a href="https://github.com/jomjol/AI-on-the-edge-device/releases">Releases page</a> (Stable, tested versions), or the</li> <li><a href="https://github.com/jomjol/AI-on-the-edge-device/releases">Releases page</a> (Stable, tested versions), or the</li>
<li><a href="https://github.com/jomjol/AI-on-the-edge-device/actions?query=branch%3Arolling">Automatically build development branch</a> (experimental, untested versions). Please inform yourself on <a href="../rolling-installation">Living on the Edge</a> first!</li> <li><a href="https://github.com/jomjol/AI-on-the-edge-device/actions?query=branch%3Arolling">Automatically build development branch</a> (experimental, untested versions). Please inform yourself on <a href="../rolling-installation">Living on the Edge</a> first!</li>
</ul> </ul>
<h2 id="update-procedure">Update Procedure</h2> <h2 id="update-procedure"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Update Procedure</h2>
<ol> <ol>
<li>Create a backup of your configuration. Either use the Backup/Restore function of your device for this (menu <code>System &gt; Backup/Restore</code>) or back the files manually up using the File Server (menu <code>File Server</code>, folder <code>config</code>). It is recommended to at least save the config file <code>config.ini</code>!</li> <li>Create a backup of your configuration. Either use the Backup/Restore function of your device for this (menu <code>System &gt; Backup/Restore</code>) or back the files manually up using the File Server (menu <code>File Server</code>, folder <code>config</code>). It is recommended to at least save the config file <code>config.ini</code>!</li>
<li>Head to the menu <code>System &gt; OTA Update</code> and follow the instructions there.</li> <li>Head to the menu <code>System &gt; OTA Update</code> and follow the instructions there.</li>
</ol> </ol>
<p>If you do an update between major versions, it might be needed to modify the config file <code>config.ini</code> as it's syntax or context has changed. <p>If you do an update between major versions, it might be needed to modify the config file <code>config.ini</code> as it's syntax or context has changed.
To do so, go to the menu <code>Settings &gt; Configuration</code> (after the update completed and the device restarted) and check if it warns you about an unset parameter.</p> To do so, go to the menu <code>Settings &gt; Configuration</code> (after the update completed and the device restarted) and check if it warns you about an unset parameter.</p>
<h3 id="update-from-version-v1200-or-newer">Update from version <code>v12.0.0</code> or newer</h3> <h3 id="update-from-version-v1200-or-newer"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.1</span> Update from version <code>v12.0.0</code> or newer</h3>
<p>You can use the over the air update mechanism, which uploads the update via a ZIP files.</p> <p>You can use the over the air update mechanism, which uploads the update via a ZIP files.</p>
<p>The update file is located on the <a href="https://github.com/jomjol/AI-on-the-edge-device/releases">release page</a>. Please choose the zip file with the following naming: <code>AI-on-the-edge-device__update__*.zip</code></p> <p>The update file is located on the <a href="https://github.com/jomjol/AI-on-the-edge-device/releases">release page</a>. Please choose the zip file with the following naming: <code>AI-on-the-edge-device__update__*.zip</code></p>
<p>Go to the menu <code>System --&gt; OTA Update</code> and follow the instructions there. After a final automatic reboot you should have the new version running.</p> <p>Go to the menu <code>System --&gt; OTA Update</code> and follow the instructions there. After a final automatic reboot you should have the new version running.</p>
<h3 id="update-from-version-older-than-v1200">Update from version older than <code>v12.0.0</code></h3> <h3 id="update-from-version-older-than-v1200"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1.2</span> Update from version older than <code>v12.0.0</code></h3>
<p>If you update from an version older than 12.0.1, you should firstly update to version 12.0.1. Background are not fully backward compatible changes in the <code>config.ini</code>, that are taken care of in this version.</p> <p>If you update from an version older than 12.0.1, you should firstly update to version 12.0.1. Background are not fully backward compatible changes in the <code>config.ini</code>, that are taken care of in this version.</p>
<p>‼️ <strong>Make sure to read the instructions below carefully!</strong></p> <p>‼️ <strong>Make sure to read the instructions below carefully!</strong></p>
<ol> <ol>
@@ -237,43 +230,30 @@ To do so, go to the menu <code>Settings &gt; Configuration</code> (after the upd
</ol> </ol>
<p>‼️ <strong>If the system is working now without any issues, please open the configuration editor once and save the <code>config.ini</code>. This will update the file to the newest content</strong>‼️</p> <p>‼️ <strong>If the system is working now without any issues, please open the configuration editor once and save the <code>config.ini</code>. This will update the file to the newest content</strong>‼️</p>
<p>Now you can safely update to the newest version.</p> <p>Now you can safely update to the newest version.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Choosing-the-Model/" class="btn btn-neutral float-left" title="Model Selection"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Choosing-the-Model/" title="Model Selection"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Parameters/" class="btn btn-neutral float-right" title="Parameters">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Parameters/" title="Parameters">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Choosing-the-Model/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Parameters/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../Choosing-the-Model/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Parameters/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -286,6 +266,5 @@ To do so, go to the menu <code>Settings &gt; Configuration</code> (after the upd
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/outdated--Integrated-Functions/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/outdated--Integrated-Functions/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Integrated Functions - AI on the Edge Device</title> <title>Integrated Functions - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Integrated Functions"; var mkdocs_page_name = "Integrated Functions";
var mkdocs_page_input_path = "outdated--Integrated-Functions.md"; var mkdocs_page_input_path = "outdated--Integrated-Functions.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/outdated--Integrated-Functions/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/outdated--Integrated-Functions/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -138,7 +134,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -168,91 +164,76 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Old Pages (no longer maintained) &raquo;</li> <li>Old Pages (no longer maintained) »</li>
<li class="breadcrumb-item active">Integrated Functions</li> <li class="breadcrumb-item active">Integrated Functions</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/outdated--Integrated-Functions.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/outdated--Integrated-Functions.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="integrated-functions"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Integrated Functions</h1>
<h1 id="integrated-functions">Integrated Functions</h1>
<div class="admonition warning"> <div class="admonition warning">
<p class="admonition-title">Warning</p> <p class="admonition-title">Warning</p>
<p>This page no longer is maintained!</p> <p>This page no longer is maintained!</p>
</div> </div>
<h2 id="wasserzaehler">wasserzaehler</h2> <h2 id="wasserzaehler"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> wasserzaehler</h2>
<p><code>http://IP-ESP32/wasserzaehler.html</code></p> <p><code>http://IP-ESP32/wasserzaehler.html</code></p>
<p>This is the main purpose of this device. It returns the converted image as a number with different option. The output can be modified either by the configuration parameters or by HTML parameters.</p> <p>This is the main purpose of this device. It returns the converted image as a number with different option. The output can be modified either by the configuration parameters or by HTML parameters.</p>
<p>Details can be found here: tbd</p> <p>Details can be found here: tbd</p>
<h2 id="picture-server">Picture Server</h2> <h2 id="picture-server"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.2</span> Picture Server</h2>
<p><code>http://IP-ESP32/capture</code></p> <p><code>http://IP-ESP32/capture</code></p>
<p><code>http://IP-ESP32/capture_with_flashlight</code></p> <p><code>http://IP-ESP32/capture_with_flashlight</code></p>
<p>This is a implementation of the camera interface of https://github.com/jomjol/water-meter-picture-provider</p> <p>This is a implementation of the camera interface of https://github.com/jomjol/water-meter-picture-provider</p>
<p>It is fully compatible including the parameters (<code>quality</code>=..., <code>size=...</code> ) . This allows to use this ESP32 system in parallel to the corresponding docker system: https://github.com/jomjol/water-meter-system-complete, from which this project is basically the successor.</p> <p>It is fully compatible including the parameters (<code>quality</code>=..., <code>size=...</code> ) . This allows to use this ESP32 system in parallel to the corresponding docker system: https://github.com/jomjol/water-meter-system-complete, from which this project is basically the successor.</p>
<h2 id="file-server">File server</h2> <h2 id="file-server"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.3</span> File server</h2>
<p>Access: <code>http://IP-ESP32/fileserver/</code></p> <p>Access: <code>http://IP-ESP32/fileserver/</code></p>
<p>Simple file server, that allows viewing, upload, download and deleting of single files of the SD-card content.</p> <p>Simple file server, that allows viewing, upload, download and deleting of single files of the SD-card content.</p>
<p>The usage is self explaining. The file path or file can directly be accessed by the URL after file server.</p> <p>The usage is self explaining. The file path or file can directly be accessed by the URL after file server.</p>
<p>Example for <code>config.ini</code> : <code>http://IP-ESP/fileserver/config/config.ini</code></p> <p>Example for <code>config.ini</code> : <code>http://IP-ESP/fileserver/config/config.ini</code></p>
<h2 id="ota-update">OTA-Update</h2> <h2 id="ota-update"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.4</span> OTA-Update</h2>
<p><code>http://IP-ESP32/ota?file=firmware.bin</code></p> <p><code>http://IP-ESP32/ota?file=firmware.bin</code></p>
<p>Here an over the air update can be triggered. The firmware file is expected to be located in the sub directory <code>/firmware/</code> and can be uploaded with the file server. By the parameter <code>file</code> the name of the firmware file needs to be given.</p> <p>Here an over the air update can be triggered. The firmware file is expected to be located in the sub directory <code>/firmware/</code> and can be uploaded with the file server. By the parameter <code>file</code> the name of the firmware file needs to be given.</p>
<h2 id="reboot">Reboot</h2> <h2 id="reboot"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.5</span> Reboot</h2>
<p><code>http://IP-ESP32/reboot</code></p> <p><code>http://IP-ESP32/reboot</code></p>
<p>A reboot with a delay of 5 seconds is initiated, e.g. after firmware update.</p> <p>A reboot with a delay of 5 seconds is initiated, e.g. after firmware update.</p>
<p><strong>ATTENTION</strong>: currently this is not working properly - hardware power off is needed instead. <strong>Work in progress!</strong></p> <p><strong>ATTENTION</strong>: currently this is not working properly - hardware power off is needed instead. <strong>Work in progress!</strong></p>
<h2 id="simple-web-server">Simple Web Server</h2> <h2 id="simple-web-server"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.6</span> Simple Web Server</h2>
<p>If none of the above URLs are fitting, a very simple web server checks, if there is a fitting file from the sub directory <code>/html</code> <p>If none of the above URLs are fitting, a very simple web server checks, if there is a fitting file from the sub directory <code>/html</code>
This can be used for a very simple web server for information or simple web pages.</p> This can be used for a very simple web server for information or simple web pages.</p>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../Release-creation/" class="btn btn-neutral float-left" title="Preparing for Release"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../Release-creation/" title="Preparing for Release"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../Release-creation/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Release-creation/" style="color: #fcfcfc">&laquo; Previous</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -265,6 +246,5 @@ This can be used for a very simple web server for information or simple web page
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -1,45 +1,41 @@
<!DOCTYPE html> <!DOCTYPE html>
<html class="writer-html5" lang="en"> <html class="writer-html5" lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="canonical" href="https://jomjol.github.io/AI-on-the-edge-device-docs/rolling-installation/" /> <meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://jomjol.github.io/AI-on-the-edge-device-docs/rolling-installation/" rel="canonical"/>
<link rel="shortcut icon" href="../img/favicon.ico" /> <link href="../img/favicon.ico" rel="shortcut icon"/>
<title>Living on the Edge - AI on the Edge Device</title> <title>Living on the Edge - AI on the Edge Device</title>
<link rel="stylesheet" href="../css/theme.css" /> <link href="../css/theme.css" rel="stylesheet"/>
<link rel="stylesheet" href="../css/theme_extra.css" /> <link href="../css/theme_extra.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" rel="stylesheet"/>
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "Living on the Edge"; var mkdocs_page_name = "Living on the Edge";
var mkdocs_page_input_path = "rolling-installation.md"; var mkdocs_page_input_path = "rolling-installation.md";
var mkdocs_page_url = "/AI-on-the-edge-device-docs/rolling-installation/"; var mkdocs_page_url = "/AI-on-the-edge-device-docs/rolling-installation/";
</script> </script>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="../js/html5shiv.min.js"></script> <script src="../js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script> <script>hljs.highlightAll();</script>
</head> </head>
<body class="wy-body-for-nav" role="document"> <body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav"> <div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav"> <nav class="wy-nav-side stickynav" data-toggle="wy-nav-shift">
<div class="wy-side-scroll"> <div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="wy-side-nav-search">
<img src=https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png> <img src="https://jomjol.github.io/AI-on-the-edge-device-docs//img/logo.png"/>
<a href=".." class="icon icon-home"> AI on the Edge Device <a class="icon icon-home" href=".."> AI on the Edge Device
</a><div role="search"> </a><div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get"> <form action="../search.html" class="wy-form" id="rtd-search-form" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" /> <input aria-label="Search docs" name="q" placeholder="Search docs" title="Type search term here" type="text"/>
</form> </form>
</div> </div>
</div> </div>
<div aria-label="Navigation menu" class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation">
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption"><span class="caption-text">Getting Started</span></p> <p class="caption"><span class="caption-text">Getting Started</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome</a> <li class="toctree-l1"><a class="reference internal" href="..">Welcome</a>
@@ -142,7 +138,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="../Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="../Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="../Release-creation/">Preparing for Release</a>
</li> </li>
@@ -158,81 +154,65 @@
</div> </div>
</div> </div>
</nav> </nav>
<section class="wy-nav-content-wrap" data-toggle="wy-nav-shift">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav aria-label="Mobile navigation menu" class="wy-nav-top" role="navigation">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu"> <i class="fa fa-bars" data-toggle="wy-nav-top"></i>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">AI on the Edge Device</a> <a href="..">AI on the Edge Device</a>
</nav> </nav>
<div class="wy-nav-content"> <div class="wy-nav-content">
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation"> <div class="rst-content"><div aria-label="breadcrumbs navigation" role="navigation">
<ul class="wy-breadcrumbs"> <ul class="wy-breadcrumbs">
<li><a href=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li> <li><a aria-label="Docs" class="icon icon-home" href=".."></a> »</li>
<li>Advanced &raquo;</li> <li>Advanced »</li>
<li class="breadcrumb-item active">Living on the Edge</li> <li class="breadcrumb-item active">Living on the Edge</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/rolling-installation.md" class="icon icon-github"> Edit on GitHub</a> <a class="icon icon-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs/edit/main/docs/rolling-installation.md"> Edit on GitHub</a>
</li> </li>
</ul> </ul>
<hr/> <hr/>
</div> </div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div class="document" itemscope="itemscope" itemtype="http://schema.org/Article" role="main">
<div class="section" itemprop="articleBody"> <div class="section" itemprop="articleBody">
<h1 id="living-on-the-edge"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Living on the Edge</h1>
<h1 id="living-on-the-edge">Living on the Edge</h1>
<p>The <a href="https://github.com/jomjol/AI-on-the-edge-device">Github repository</a> contains multiple branches:</p> <p>The <a href="https://github.com/jomjol/AI-on-the-edge-device">Github repository</a> contains multiple branches:</p>
<ul> <ul>
<li>The <a href="https://github.com/jomjol/AI-on-the-edge-device/tree/master">master</a> branch contains the same firmware version as provided on the <a href="https://github.com/jomjol/AI-on-the-edge-device/releases">release page</a>.</li> <li>The <a href="https://github.com/jomjol/AI-on-the-edge-device/tree/master">master</a> branch contains the same firmware version as provided on the <a href="https://github.com/jomjol/AI-on-the-edge-device/releases">release page</a>.</li>
<li>The <a href="https://github.com/jomjol/AI-on-the-edge-device/tree/rolling">rolling</a> branch contains the <strong>latest</strong> version of the Firmware and the Web Interface. It might already contain a fix for your issue. But it is work in progress, don't expect it to work stable or be an improvement for your AI-on-the-edge-device! Also it might break the <a href="../ota">OTA Update</a> and thus require manual flashing over USB!</li> <li>The <a href="https://github.com/jomjol/AI-on-the-edge-device/tree/rolling">rolling</a> branch contains the <strong>latest</strong> version of the Firmware and the Web Interface. It might already contain a fix for your issue. But it is work in progress, don't expect it to work stable or be an improvement for your AI-on-the-edge-device! Also it might break the <a href="../ota">OTA Update</a> and thus require manual flashing over USB!</li>
<li>Any other branch is used to develop a feature or fix, only use them when you know what it is about!</li> <li>Any other branch is used to develop a feature or fix, only use them when you know what it is about!</li>
</ul> </ul>
<h2 id="i-still-want-to-try-it">I still want to try it</h2> <h2 id="i-still-want-to-try-it"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> I still want to try it</h2>
<p>Ok, then grab the latest <code>rolling</code> build from <a href="https://github.com/jomjol/AI-on-the-edge-device/actions/workflows/build.yaml?query=branch%3Arolling">Github Actions</a> Page and proceed as following:</p> <p>Ok, then grab the latest <code>rolling</code> build from <a href="https://github.com/jomjol/AI-on-the-edge-device/actions/workflows/build.yaml?query=branch%3Arolling">Github Actions</a> Page and proceed as following:</p>
<ol> <ol>
<li>Pick the most top successful (green) build: <li>Pick the most top successful (green) build:
<img alt="" src="../actions.png" /> </li> <img alt="" src="../actions.png"> </img></li>
<li>Scroll down and download the <code>AI-on-the-edge-device__update__*.zip</code>: <li>Scroll down and download the <code>AI-on-the-edge-device__update__*.zip</code>:
<img alt="" src="../update-artifact.png"/> </li> <img alt="" src="../update-artifact.png"/> </li>
<li>Flash the zip file using the <a href="../ota">OTA Update</a> page of your device.</li> <li>Flash the zip file using the <a href="../ota">OTA Update</a> page of your device.</li>
</ol> </ol>
</div> </div>
</div><footer> </div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation"> <div aria-label="Footer Navigation" class="rst-footer-buttons" role="navigation">
<a href="../data-logging/" class="btn btn-neutral float-left" title="Data Logging"><span class="icon icon-circle-arrow-left"></span> Previous</a> <a class="btn btn-neutral float-left" href="../data-logging/" title="Data Logging"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../Watermeter-specific-analog---digital-transition/" class="btn btn-neutral float-right" title="Analog/Digital Transition on Water Meters">Next <span class="icon icon-circle-arrow-right"></span></a> <a class="btn btn-neutral float-right" href="../Watermeter-specific-analog---digital-transition/" title="Analog/Digital Transition on Water Meters">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
<hr/> <hr/>
<div role="contentinfo"> <div role="contentinfo">
<!-- Copyright etc --> <!-- Copyright etc -->
</div> </div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer> </footer>
</div> </div>
</div> </div>
</section> </section>
</div> </div>
<div aria-label="Versions" class="rst-versions" role="note">
<div class="rst-versions" role="note" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span> <span>
<a href="https://github.com/jomjol/AI-on-the-edge-device-docs" class="fa fa-github" style="color: #fcfcfc"> GitHub</a> <a class="fa fa-github" href="https://github.com/jomjol/AI-on-the-edge-device-docs" style="color: #fcfcfc"> GitHub</a>
</span> </span>
<span><a href="../data-logging/" style="color: #fcfcfc">« Previous</a></span>
<span><a href="../Watermeter-specific-analog---digital-transition/" style="color: #fcfcfc">Next »</a></span>
<span><a href="../data-logging/" style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../Watermeter-specific-analog---digital-transition/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script src="../js/jquery-3.6.0.min.js"></script> <script src="../js/jquery-3.6.0.min.js"></script>
@@ -245,6 +225,5 @@
SphinxRtdTheme.Navigation.enable(true); SphinxRtdTheme.Navigation.enable(true);
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@@ -131,7 +131,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="./Upload-files-by-script/">Scripted File Upload</a> <li class="toctree-l1"><a class="reference internal" href="./Upload-files-by-script/">Scripted File Upload</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="./Testing/">Testing</a> <li class="toctree-l1"><a class="reference internal" href="./Testing/">Testing Option for VSCode</a>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="./Release-creation/">Preparing for Release</a> <li class="toctree-l1"><a class="reference internal" href="./Release-creation/">Preparing for Release</a>
</li> </li>

File diff suppressed because one or more lines are too long

Binary file not shown.