mirror of
https://github.com/jomjol/AI-on-the-edge-device-docs.git
synced 2025-12-06 19:46:56 +03:00
775 lines
28 KiB
HTML
775 lines
28 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html class="no-js" lang="en">
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<meta content="width=device-width,initial-scale=1" name="viewport"/>
|
|
<link href="https://jomjol.github.io/AI-on-the-edge-device-docs/" rel="canonical"/>
|
|
<link href="Installation/" rel="next"/>
|
|
<link href="img/favicon.ico" rel="icon"/>
|
|
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.49" name="generator"/>
|
|
<title>Welcome - AI on the Edge Device</title>
|
|
<link href="assets/stylesheets/main.6f8fc17f.min.css" rel="stylesheet"/>
|
|
<link href="assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
|
|
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
|
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback" rel="stylesheet"/>
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
</head>
|
|
<body data-md-color-accent="indigo" data-md-color-primary="blue" data-md-color-scheme="default" dir="ltr">
|
|
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
|
|
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
<a class="md-skip" href="#welcome">1.
|
|
Skip to content
|
|
</a>
|
|
</div>
|
|
<div data-md-component="announce">
|
|
</div>
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav aria-label="Header" class="md-header__inner md-grid">
|
|
<a aria-label="AI on the Edge Device" class="md-header__button md-logo" data-md-component="logo" href="." title="AI on the Edge Device">
|
|
<img alt="logo" src="img/logo.svg"/>
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
AI on the Edge Device
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Welcome
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<label class="md-header__button md-icon" for="__search">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
|
|
</label>
|
|
<nav aria-label="Search" class="md-search__options">
|
|
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
|
|
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
|
|
</button>
|
|
</nav>
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="md-header__source">
|
|
<a class="md-source" data-md-component="source" href="https://github.com/jomjol/AI-on-the-edge-device-docs" title="Go to repository">
|
|
<div class="md-source__icon md-icon">
|
|
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
GitHub
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
<div class="md-container" data-md-component="container">
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a aria-label="AI on the Edge Device" class="md-nav__button md-logo" data-md-component="logo" href="." title="AI on the Edge Device">
|
|
<img alt="logo" src="img/logo.svg"/>
|
|
</a>
|
|
AI on the Edge Device
|
|
</label>
|
|
<div class="md-nav__source">
|
|
<a class="md-source" data-md-component="source" href="https://github.com/jomjol/AI-on-the-edge-device-docs" title="Go to repository">
|
|
<div class="md-source__icon md-icon">
|
|
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
GitHub
|
|
</div>
|
|
</a>
|
|
</div>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Getting Started
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Getting Started
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item md-nav__item--active">
|
|
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
<span class="md-ellipsis">
|
|
Welcome
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<a class="md-nav__link md-nav__link--active" href=".">
|
|
<span class="md-ellipsis">
|
|
Welcome
|
|
</span>
|
|
</a>
|
|
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#key-features">1.1
|
|
<span class="md-ellipsis">
|
|
Key features
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#idea">1.2
|
|
<span class="md-ellipsis">
|
|
Idea
|
|
</span>
|
|
</a>
|
|
<nav aria-label="Idea" class="md-nav">
|
|
<ul class="md-nav__list">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#hardware">1.2.1
|
|
<span class="md-ellipsis">
|
|
Hardware
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#web-interface">1.2.2
|
|
<span class="md-ellipsis">
|
|
Web interface
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#configuration-interface">1.2.3
|
|
<span class="md-ellipsis">
|
|
Configuration Interface
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Installation/">
|
|
<span class="md-ellipsis">
|
|
Installation
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="initial-setup/">
|
|
<span class="md-ellipsis">
|
|
Initial Setup
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Hardware-Compatibility/">
|
|
<span class="md-ellipsis">
|
|
Hardware Compatibility
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Best-Practice/">
|
|
<span class="md-ellipsis">
|
|
Best Practice
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="FAQs/">
|
|
<span class="md-ellipsis">
|
|
Frequently Asked Questions
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_2" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Configuration
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_2_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Configuration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Reference-Image/">
|
|
<span class="md-ellipsis">
|
|
Reference Image
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Alignment/">
|
|
<span class="md-ellipsis">
|
|
Alignment References
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="ROI-Configuration/">
|
|
<span class="md-ellipsis">
|
|
ROIs (Regions of Interest)
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Configuration/">
|
|
<span class="md-ellipsis">
|
|
Graphical Configuration
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Choosing-the-Model/">
|
|
<span class="md-ellipsis">
|
|
Model Selection
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="ota/">
|
|
<span class="md-ellipsis">
|
|
Over-The-Air (OTA) Update
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_3" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Advanced
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_3_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Advanced
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Parameters/">
|
|
<span class="md-ellipsis">
|
|
Parameters
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Integration-Home-Assistant/">
|
|
<span class="md-ellipsis">
|
|
Integration into Home Assistant
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="External-LED/">
|
|
<span class="md-ellipsis">
|
|
External LED
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="data-logging/">
|
|
<span class="md-ellipsis">
|
|
Data Logging
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="rolling-installation/">
|
|
<span class="md-ellipsis">
|
|
Living on the Edge
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Watermeter-specific-analog---digital-transition/">
|
|
<span class="md-ellipsis">
|
|
Analog/Digital Transition on Water Meters
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="collect-new-images/">
|
|
<span class="md-ellipsis">
|
|
Collect images to improve the models
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Learn-models-with-your-own-images/">
|
|
<span class="md-ellipsis">
|
|
Learn a model with your own images
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Correction%20Algorithm/">
|
|
<span class="md-ellipsis">
|
|
Correction Algorithm
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Neural-Network-Types/">
|
|
<span class="md-ellipsis">
|
|
Neural Network Types
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Additional-Information/">
|
|
<span class="md-ellipsis">
|
|
Additional Information
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="New-Releases-Notification/">
|
|
<span class="md-ellipsis">
|
|
Notification about new Releases
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="prometheus-openmetrics/">
|
|
<span class="md-ellipsis">
|
|
Prometheus/OpenMetrics
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_4" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Troubleshooting
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_4_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Troubleshooting
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Error-Codes/">
|
|
<span class="md-ellipsis">
|
|
Reduced webinterface (error codes)
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="StatusLED-BlinkCodes/">
|
|
<span class="md-ellipsis">
|
|
Board status LED (blink codes)
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="WLAN-disconnect-reason/">
|
|
<span class="md-ellipsis">
|
|
WLAN disconnect reasons
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Error-Debugging/">
|
|
<span class="md-ellipsis">
|
|
Often observed issues
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Frequent-Reboots/">
|
|
<span class="md-ellipsis">
|
|
Basic hardware/config issues
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Demo-Mode/">
|
|
<span class="md-ellipsis">
|
|
Demo mode
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_5" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Quick Links
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_5_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Quick Links
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="https://github.com/jomjol/AI-on-the-edge-device/releases">
|
|
<span class="md-ellipsis">
|
|
Releases
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="https://jomjol.github.io/AI-on-the-edge-device/index.html">
|
|
<span class="md-ellipsis">
|
|
Web Installer/Console
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="https://github.com/jomjol/AI-on-the-edge-device/issues">
|
|
<span class="md-ellipsis">
|
|
Create an Issue
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="https://github.com/jomjol/AI-on-the-edge-device/discussions">
|
|
<span class="md-ellipsis">
|
|
Join a Discussion
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_6" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
API's
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_6_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
API's
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="REST-API/">
|
|
<span class="md-ellipsis">
|
|
REST API
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="MQTT-API/">
|
|
<span class="md-ellipsis">
|
|
MQTT API
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Influx-DB/">
|
|
<span class="md-ellipsis">
|
|
Influx DB
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Webhook/">
|
|
<span class="md-ellipsis">
|
|
Webhook
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_7" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Development
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_7_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_7">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Development
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Build-Instructions/">
|
|
<span class="md-ellipsis">
|
|
Build the Project
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Upload-files-by-script/">
|
|
<span class="md-ellipsis">
|
|
Scripted File Upload
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Testing/">
|
|
<span class="md-ellipsis">
|
|
Testing Option for VSCode
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Release-creation/">
|
|
<span class="md-ellipsis">
|
|
Release Procedure
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_8" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Old Pages (no longer maintained)
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_8_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Old Pages (no longer maintained)
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="outdated--Integrated-Functions/">
|
|
<span class="md-ellipsis">
|
|
Integrated Functions
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
<input class="md-nav__toggle md-toggle" id="__nav_9" type="checkbox"/>
|
|
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
|
<span class="md-ellipsis">
|
|
Assorted Pages
|
|
</span>
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav aria-expanded="false" aria-labelledby="__nav_9_label" class="md-nav" data-md-level="1">
|
|
<label class="md-nav__title" for="__nav_9">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Assorted Pages
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="Password-Protection/">
|
|
<span class="md-ellipsis">
|
|
Password Protection of the Web Interface and REST API
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#key-features">1.1
|
|
<span class="md-ellipsis">
|
|
Key features
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#idea">1.2
|
|
<span class="md-ellipsis">
|
|
Idea
|
|
</span>
|
|
</a>
|
|
<nav aria-label="Idea" class="md-nav">
|
|
<ul class="md-nav__list">
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#hardware">1.2.1
|
|
<span class="md-ellipsis">
|
|
Hardware
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#web-interface">1.2.2
|
|
<span class="md-ellipsis">
|
|
Web interface
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<li class="md-nav__item">
|
|
<a class="md-nav__link" href="#configuration-interface">1.2.3
|
|
<span class="md-ellipsis">
|
|
Configuration Interface
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
<h1 id="welcome"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> Welcome</h1>
|
|
<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>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>
|
|
<h2 id="key-features"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.1</span> Key features</h2>
|
|
<ul>
|
|
<li>Tensorflow Lite (TFlite) integration - including easy to use wrapper</li>
|
|
<li>Inline image processing (feature detection, alignment, ROI extraction)</li>
|
|
<li><strong>Small</strong> and <strong>cheap</strong> device (3x4.5x2 cm³, < 10 EUR)</li>
|
|
<li>Camera and illumination integrated</li>
|
|
<li>Web surface to administrate and control</li>
|
|
<li>OTA-Interface to update directly through the web interface</li>
|
|
<li>Full integration into Home Assistant</li>
|
|
<li>Support for Influx DB 1 and 2</li>
|
|
<li>MQTT</li>
|
|
<li>REST API</li>
|
|
</ul>
|
|
<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>
|
|
<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">
|
|
<img alt="" src="img/main.jpg" style="width:200px"/>
|
|
<img alt="" src="img/size.png" style="width:200px"/></img></p>
|
|
<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>
|
|
<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><strong>Have fun in studying the new possibilities and ideas</strong></p>
|
|
<p>This is about image recognition and digitization, 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 all is integrated in an easy to do setup and use environment, taking care for all the background processing and handling, including regular job scheduler. The user interface is an integrated web server, that can be easily adjusted and offers the data as an API in different options.</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>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>
|
|
<h1 id="additional-tutorials"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.</span> Additional Tutorials</h1>
|
|
<p>A lot of people created useful Youtube videos which might help you getting started.
|
|
Here a small selection:</p>
|
|
<ul>
|
|
<li><a href="https://www.youtube.com/watch?v=HKBofb1cnNc">youtube.com/watch?v=HKBofb1cnNc</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=yyf0ORNLCk4">youtube.com/watch?v=yyf0ORNLCk4</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=XxmTubGek6M">youtube.com/watch?v=XxmTubGek6M</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=mDIJEyElkAU">youtube.com/watch?v=mDIJEyElkAU</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=SssiPkyKVVs">youtube.com/watch?v=SssiPkyKVVs</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=MAHE_QyHZFQ">youtube.com/watch?v=MAHE_QyHZFQ</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=Uap_6bwtILQ">youtube.com/watch?v=Uap_6bwtILQ</a></li>
|
|
</ul>
|
|
</article>
|
|
</div>
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
</main>
|
|
<footer class="md-footer">
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
|
|
Material for MkDocs
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
<script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
<script src="assets/javascripts/bundle.88dd0f4e.min.js"></script>
|
|
</body>
|
|
</html> |