mirror of
https://github.com/jomjol/AI-on-the-edge-device-docs.git
synced 2025-12-06 11:36:53 +03:00
896 lines
36 KiB
HTML
896 lines
36 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/StatusLED-BlinkCodes/" rel="canonical"/>
|
|
<link href="../Error-Codes/" rel="prev"/>
|
|
<link href="../WLAN-disconnect-reason/" rel="next"/>
|
|
<link href="../img/favicon.ico" rel="icon"/>
|
|
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.35" name="generator"/>
|
|
<title>Board status LED (blink codes) - AI on the Edge Device</title>
|
|
<link href="../assets/stylesheets/main.35f28582.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="#general-design-approach">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">
|
|
|
|
Board status LED (blink codes)
|
|
|
|
</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.6.0 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.6.0 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--nested">
|
|
<input 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="false" 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">
|
|
<a class="md-nav__link" href="..">
|
|
<span class="md-ellipsis">
|
|
Welcome
|
|
</span>
|
|
</a>
|
|
</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--active md-nav__item--nested">
|
|
<input checked="" 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="true" 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 md-nav__item--active">
|
|
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
|
|
<a class="md-nav__link md-nav__link--active" href="./">
|
|
<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">
|
|
Preparing for Release
|
|
</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">
|
|
<a class="md-nav__link" href="..">
|
|
<span class="md-ellipsis">
|
|
Assorted Pages
|
|
</span>
|
|
</a>
|
|
</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">
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
<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>
|
|
<h1 id="general-design-approach"><span class="enumerate-headings-plugin enumerate-heading-plugin">1.</span> General design approach:</h1>
|
|
<ul>
|
|
<li>250ms blink code to identify source</li>
|
|
<li>500ms defined LED off</li>
|
|
<li>250ms blink code to identify error / status code</li>
|
|
<li>1,5s defined LED off to signal repetition</li>
|
|
<li>Repetition blink code: infinite for critical errors and status indication or 2x for warning indication</li>
|
|
<li>e.g. 3x blinks | 500ms LED off | 2x blinks --> error: SD card not found</li>
|
|
</ul>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th><strong>source</strong></th>
|
|
<th>source <br/> blink count</th>
|
|
<th>error / warning / status</th>
|
|
<th>status <br/> blink count</th>
|
|
<th>repeat <br/> infinite</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>WLAN_CONN</td>
|
|
<td>1</td>
|
|
<td>Disconnected (No Access Point)</td>
|
|
<td>1</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>WLAN_CONN</td>
|
|
<td>1</td>
|
|
<td>Disconnected (Authentication failure)</td>
|
|
<td>2</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>WLAN_CONN</td>
|
|
<td>1</td>
|
|
<td>Disconnected (Timeout)</td>
|
|
<td>3</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>WLAN_CONN</td>
|
|
<td>1</td>
|
|
<td>Disconnected (further reasons)</td>
|
|
<td>4</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>WLAN_INIT</td>
|
|
<td>2</td>
|
|
<td>WLAN.ini empty or not readable</td>
|
|
<td>1</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>WLAN_INIT</td>
|
|
<td>2</td>
|
|
<td>SSID or password empty</td>
|
|
<td>2</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>WLAN_INIT</td>
|
|
<td>2</td>
|
|
<td>WIFI init error (details console)</td>
|
|
<td>3</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SDCARD_INIT</td>
|
|
<td>3</td>
|
|
<td>SD card filesystem mount failed</td>
|
|
<td>1</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SDCARD_INIT</td>
|
|
<td>3</td>
|
|
<td>SD card not found (0x107)</td>
|
|
<td>2</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SDCARD_INIT</td>
|
|
<td>3</td>
|
|
<td>SD card init failed (details console)</td>
|
|
<td>3</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SDCARD_CHECK</td>
|
|
<td>4</td>
|
|
<td>Basic check: file creation/write error</td>
|
|
<td>1</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SDCARD_CHECK</td>
|
|
<td>4</td>
|
|
<td>Basic check: file read/CRC error</td>
|
|
<td>2</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SDCARD_CHECK</td>
|
|
<td>4</td>
|
|
<td>Basic check: file delete error</td>
|
|
<td>3</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SDCARD_CHECK</td>
|
|
<td>4</td>
|
|
<td>Basic check: folder/file presence</td>
|
|
<td>4</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CAM_INIT</td>
|
|
<td>5</td>
|
|
<td>Camera init failed (details console)</td>
|
|
<td>1</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CAM_INIT</td>
|
|
<td>5</td>
|
|
<td>Camera framebuffer check failed</td>
|
|
<td>2</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>PSRAM_INIT</td>
|
|
<td>6</td>
|
|
<td>RAM init failed: Not found/defective</td>
|
|
<td>1</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>PSRAM_INIT</td>
|
|
<td>6</td>
|
|
<td>External SPI RAM < 4MB</td>
|
|
<td>2</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>PSRAM_INIT</td>
|
|
<td>6</td>
|
|
<td>Total heap < 4MB</td>
|
|
<td>3</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TIME_CHECK</td>
|
|
<td>7</td>
|
|
<td>Missing time sync (check every round)</td>
|
|
<td>1</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>OTA_OR_AP</td>
|
|
<td>8</td>
|
|
<td>OTA process ongoing</td>
|
|
<td>1</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>OTA_OR_AP</td>
|
|
<td>8</td>
|
|
<td>Soft AP started (for remote config)</td>
|
|
<td>2</td>
|
|
<td>X</td>
|
|
</tr>
|
|
<tr>
|
|
<td>FLASHLIGHT</td>
|
|
<td>N/A</td>
|
|
<td>LED on when flashlight is on</td>
|
|
<td>solid, <br/> no blink</td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h1 id="error-warning"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.</span> ERROR / WARNING</h1>
|
|
<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">
|
|
<p class="admonition-title">Note</p>
|
|
<p>Only warning indication, blink code repetition: 2x
|
|
--> 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>
|
|
<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>
|
|
<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>
|
|
<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>
|
|
<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 --> <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"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.2</span> Source WLAN_INIT: WLAN initialization</h2>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>All critical errors, regular boot not possible</p>
|
|
</div>
|
|
<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>
|
|
<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>
|
|
<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>
|
|
<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">
|
|
<p class="admonition-title">Note</p>
|
|
<p>All critical errors, regular boot not possible</p>
|
|
</div>
|
|
<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>
|
|
<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>
|
|
<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>
|
|
<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">
|
|
<p class="admonition-title">Note</p>
|
|
</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>
|
|
<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>Recommendation: Format or try another card</p>
|
|
<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>Recommendation: Format or try another card</p>
|
|
<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>Recommendation: Format or try another card</p>
|
|
<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>Recommendation: Repeat installation using AI-on-the-edge-device__update__*.zip</p>
|
|
<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"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.5.1</span> <code>Camera init failed (details console)</code></h3>
|
|
<div class="admonition note">
|
|
<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>
|
|
</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>Recommendation: Check for proper electrical connection, whether camera model is supported and whether power supply is sufficient.</p>
|
|
<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>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"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.6</span> Source PSRAM_INIT: External RAM (SPI RAM) initialization</h2>
|
|
<div class="admonition note">
|
|
<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>
|
|
</div>
|
|
<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>
|
|
<h3 id="external-spi-ram-4mb"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.6.2</span> <code>External SPI RAM < 4MB</code></h3>
|
|
<p>External RAM (SPI RAM) initialization successful, but external RAM size is too small. A size of >= 4MB is necessary to run this firmware. </p>
|
|
<h3 id="total-heap-4mb"><span class="enumerate-headings-plugin enumerate-heading-plugin">2.6.3</span> <code>Total heap < 4MB</code></h3>
|
|
<p>Total available system memory (heap) is too small. A size of >= 4MB is necessary to run this firmware. </p>
|
|
<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"><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">
|
|
<p class="admonition-title">Note</p>
|
|
<p>Only warning indication, blink code repetition: 2x</p>
|
|
</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>
|
|
<h1 id="status"><span class="enumerate-headings-plugin enumerate-heading-plugin">3.</span> STATUS</h1>
|
|
<div class="admonition note">
|
|
<p class="admonition-title">Note</p>
|
|
<p>All only status indication</p>
|
|
</div>
|
|
<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"><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>
|
|
<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 --> <code>Section Remote Setup using the built-in Access Point</code></a></p>
|
|
<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"><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>
|
|
</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.56dfad97.min.js"></script>
|
|
</body>
|
|
</html> |