mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
63 lines
51 KiB
HTML
63 lines
51 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<meta name="generator" content="Docusaurus v2.0.0-alpha.70">
|
|
<link rel="alternate" type="application/rss+xml" href="/frigate/blog/rss.xml" title="Frigate Blog RSS Feed">
|
|
<link rel="alternate" type="application/atom+xml" href="/frigate/blog/atom.xml" title="Frigate Blog Atom Feed">
|
|
<link rel="search" type="application/opensearchdescription+xml" title="Frigate" href="/frigate/opensearch.xml"><title data-react-helmet="true">Integration with Home Assistant | Frigate</title><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Integration with Home Assistant | Frigate"><meta data-react-helmet="true" name="description" content="The best way to integrate with Home Assistant is to use the official integration."><meta data-react-helmet="true" property="og:description" content="The best way to integrate with Home Assistant is to use the official integration."><meta data-react-helmet="true" property="og:url" content="https://blakeblackshear.github.io/frigate/usage/home-assistant"><link data-react-helmet="true" rel="shortcut icon" href="/frigate/img/favicon.ico"><link data-react-helmet="true" rel="preconnect" href="https://BH4D9OD16A-dsn.algolia.net" crossorigin="anonymous"><link data-react-helmet="true" rel="canonical" href="https://blakeblackshear.github.io/frigate/usage/home-assistant"><link rel="stylesheet" href="/frigate/styles.4dd8d972.css">
|
|
<link rel="preload" href="/frigate/styles.0df63e1c.js" as="script">
|
|
<link rel="preload" href="/frigate/runtime~main.a90fd004.js" as="script">
|
|
<link rel="preload" href="/frigate/main.b6b2d1f0.js" as="script">
|
|
<link rel="preload" href="/frigate/1.d4a988ac.js" as="script">
|
|
<link rel="preload" href="/frigate/2.cbe00df1.js" as="script">
|
|
<link rel="preload" href="/frigate/28.fabd8c68.js" as="script">
|
|
<link rel="preload" href="/frigate/31.3f82c6fa.js" as="script">
|
|
<link rel="preload" href="/frigate/935f2afb.06dae20f.js" as="script">
|
|
<link rel="preload" href="/frigate/17896441.da8a454f.js" as="script">
|
|
<link rel="preload" href="/frigate/064d4f6f.b0a87eb4.js" as="script">
|
|
</head>
|
|
<body>
|
|
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
|
|
<nav aria-label="Skip navigation links"><button type="button" tabindex="0" class="skipToContent_11B0">Skip to main content</button></nav><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><div aria-label="Navigation bar toggle" class="navbar__toggle" role="button" tabindex="0"><svg aria-label="Menu" width="30" height="30" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></div><a class="navbar__brand" href="/frigate/"><img src="/frigate/img/logo.svg" alt="Frigate" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/frigate/img/logo-dark.svg" alt="Frigate" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Frigate</strong></a><a class="navbar__item navbar__link" href="/frigate/">Docs</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/blakeblackshear/frigate" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><div class="react-toggle react-toggle--disabled displayOnlyInLargeViewport_2N3Q"><div class="react-toggle-track"><div class="react-toggle-track-check"><span class="toggle_3NWk">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_3NWk">🌞</span></div></div><div class="react-toggle-thumb"></div><input type="checkbox" disabled="" aria-label="Dark mode toggle" class="react-toggle-screenreader-only"></div><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><div class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></div></button></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/frigate/"><img src="/frigate/img/logo.svg" alt="Frigate" class="themedImage_YANc themedImage--light_3CMI navbar__logo"><img src="/frigate/img/logo-dark.svg" alt="Frigate" class="themedImage_YANc themedImage--dark_3ARp navbar__logo"><strong class="navbar__title">Frigate</strong></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/frigate/">Docs</a></li><li class="menu__list-item"><a href="https://github.com/blakeblackshear/frigate" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li></ul></div></div></div></nav><div class="main-wrapper"><div class="docPage_vMrn"><div class="docSidebarContainer_3Ak5" role="complementary"><div class="sidebar_3gvy"><div class="menu menu--responsive thin-scrollbar menu_1yIk"><button aria-label="Open Menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg aria-label="Menu" class="sidebarMenuIcon_1CUI" width="24" height="24" viewBox="0 0 30 30" role="img" focusable="false"><title>Menu</title><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Frigate</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/">Features</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/how-it-works">How it works</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/hardware">Recommended hardware</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/installation">Installation</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/troubleshooting">Troubleshooting and FAQ</a></li></ul></li><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Configuration</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/index">Configuration</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/cameras">Cameras</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/optimizing">Optimizing performance</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/detectors">Detectors</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/false_positives">Reducing false positives</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/objects">Available objects</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/configuration/advanced">Advanced</a></li></ul></li><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Usage</a><ul class="menu__list"><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/frigate/usage/home-assistant">Home Assistant</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/usage/web">Web Interface</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/usage/api">HTTP API</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/usage/mqtt">MQTT</a></li></ul></li><li class="menu__list-item"><a class="menu__link menuLinkText_yu3-">Development</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/frigate/contributing">Contributing</a></li></ul></li></ul></div><button type="button" title="Collapse sidebar" aria-label="Collapse sidebar" class="button button--secondary button--outline collapseSidebarButton_2WRA"><svg width="20" height="20" role="img" class="collapseSidebarButtonIcon_CoMu"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></div></div><main class="docMainContainer_2iGs"><div class="container padding-vert--lg docItemWrapper_1bxp"><div class="row"><div class="col docItemCol_U38p"><div class="docItemContainer_a7m4"><article><header><h1 class="docTitle_Oumm">Integration with Home Assistant</h1></header><div class="markdown"><p>The best way to integrate with Home Assistant is to use the <a href="https://github.com/blakeblackshear/frigate-hass-integration" target="_blank" rel="noopener noreferrer">official integration</a>.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="installation"></a>Installation<a class="hash-link" href="#installation" title="Direct link to heading">#</a></h2><p>Available via HACS as a <a href="https://hacs.xyz/docs/faq/custom_repositories" target="_blank" rel="noopener noreferrer">custom repository</a>. To install:</p><ul><li>Add the custom repository:</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Home Assistant > HACS > Integrations > [...] > Custom Repositories</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Repository URL</td><td><a href="https://github.com/blakeblackshear/frigate-hass-integration" target="_blank" rel="noopener noreferrer">https://github.com/blakeblackshear/frigate-hass-integration</a></td></tr><tr><td>Category</td><td>Integration</td></tr></tbody></table><ul><li>Use <a href="https://hacs.xyz/" target="_blank" rel="noopener noreferrer">HACS</a> to install the integration:</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Home Assistant > HACS > Integrations > "Explore & Add Integrations" > Frigate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><ul><li>Restart Home Assistant.</li><li>Then add/configure the integration:</li></ul><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Home Assistant > Configuration > Integrations > Add Integration > Frigate</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Note: You will also need
|
|
<a href="https://www.home-assistant.io/integrations/media_source/" target="_blank" rel="noopener noreferrer">media_source</a> enabled
|
|
in your Home Assistant configuration for the Media Browser to appear.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="configuration"></a>Configuration<a class="hash-link" href="#configuration" title="Direct link to heading">#</a></h2><p>When configuring the integration, you will be asked for the following parameters:</p><table><thead><tr><th>Variable</th><th>Description</th></tr></thead><tbody><tr><td>URL</td><td>The <code>URL</code> of your frigate instance, the URL you use to access Frigate in the browser. This may look like <code>http://<host>:5000/</code>. If you are using HassOS with the addon, the URL should be <code>http://ccab4aaf-frigate:5000</code> (or <code>http://ccab4aaf-frigate-beta:5000</code> if your are using the beta version of the addon). Live streams required port 1935, see <a href="#streams">RTMP streams</a></td></tr></tbody></table><a name="options"></a>## Options<div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Home Assistant > Configuration > Integrations > Frigate > Options</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td>RTMP URL Template</td><td>A <a href="https://jinja.palletsprojects.com/" target="_blank" rel="noopener noreferrer">jinja2</a> template that is used to override the standard RTMP stream URL (e.g. for use with reverse proxies). This option is only shown to users who have <a href="https://www.home-assistant.io/blog/2019/07/17/release-96/#advanced-mode" target="_blank" rel="noopener noreferrer">advanced mode</a> enabled. See <a href="#streams">RTMP streams</a> below.</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="entities-provided"></a>Entities Provided<a class="hash-link" href="#entities-provided" title="Direct link to heading">#</a></h2><table><thead><tr><th>Platform</th><th>Description</th></tr></thead><tbody><tr><td><code>camera</code></td><td>Live camera stream (requires RTMP), camera for image of the last detected object.</td></tr><tr><td><code>sensor</code></td><td>States to monitor Frigate performance, object counts for all zones and cameras.</td></tr><tr><td><code>switch</code></td><td>Switch entities to toggle detection, clips and snapshots.</td></tr><tr><td><code>binary_sensor</code></td><td>A "motion" binary sensor entity per camera/zone/object.</td></tr></tbody></table><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="media-browser-support"></a>Media Browser Support<a class="hash-link" href="#media-browser-support" title="Direct link to heading">#</a></h2><p>The integration provides:</p><ul><li>Rich UI with thumbnails for browsing event clips</li><li>Rich UI for browsing 24/7 recordings by month, day, camera, time</li></ul><p>This is accessible via "Media Browser" on the left menu panel in Home Assistant.</p><a name="api"></a>## API<ul><li>Notification API with public facing endpoints for images in notifications</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="notifications"></a>Notifications<a class="hash-link" href="#notifications" title="Direct link to heading">#</a></h3><p>Frigate publishes event information in the form of a change feed via MQTT. This
|
|
allows lots of customization for notifications to meet your needs. Event changes
|
|
are published with <code>before</code> and <code>after</code> information as shown
|
|
<a href="#frigateevents">here</a>. Note that some people may not want to expose frigate to
|
|
the web, so you can leverage the HA API that frigate custom_integration ties
|
|
into (which is exposed to the web, and thus can be used for mobile notifications
|
|
etc):</p><p>To load an image taken by frigate from Home Assistants API see below:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://HA_URL/api/frigate/notifications/<event-id>/thumbnail.jpg</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>To load a video clip taken by frigate from Home Assistants API :</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://HA_URL/api/frigate/notifications/<event-id>/<camera>/clip.mp4</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Here is a simple example of a notification automation of events which will update the existing notification for each change. This means the image you see in the notification will update as frigate finds a "better" image.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">automation</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">alias</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> Notify of events</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">trigger</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">platform</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> mqtt</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">topic</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> frigate/events</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">service</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> notify.mobile_app_pixel_3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data_template</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">message</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'A {{trigger.payload_json["after"]["label"]}} was detected.'</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'https://your.public.hass.address.com/api/frigate/notifications/{{trigger.payload_json["after"]["id"]}}/thumbnail.jpg?format=android'</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">tag</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'{{trigger.payload_json["after"]["id"]}}'</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">automation</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">alias</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> When a person enters a zone named yard</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">trigger</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">platform</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> mqtt</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">topic</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> frigate/events</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">condition</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ trigger.payload_json['after']['label'] == 'person' }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ 'yard' in trigger.payload_json['after']['entered_zones'] }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">service</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> notify.mobile_app_pixel_3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data_template</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">message</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"A {{trigger.payload_json['after']['label']}} has entered the yard."</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"https://url.com/api/frigate/notifications/{{trigger.payload_json['after']['id']}}/thumbnail.jpg"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">tag</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{trigger.payload_json['after']['id']}}"</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">alias</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> When a person leaves a zone named yard</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">trigger</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">platform</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> mqtt</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">topic</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> frigate/events</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">condition</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ trigger.payload_json['after']['label'] == 'person' }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ 'yard' in trigger.payload_json['before']['current_zones'] }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ not 'yard' in trigger.payload_json['after']['current_zones'] }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">service</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> notify.mobile_app_pixel_3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data_template</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">message</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"A {{trigger.payload_json['after']['label']}} has left the yard."</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"https://url.com/api/frigate/notifications/{{trigger.payload_json['after']['id']}}/thumbnail.jpg"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">tag</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{trigger.payload_json['after']['id']}}"</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">alias</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> Notify for dogs in the front with a high top score</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">trigger</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">platform</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> mqtt</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">topic</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> frigate/events</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">condition</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ trigger.payload_json['after']['label'] == 'dog' }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ trigger.payload_json['after']['camera'] == 'front' }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{ trigger.payload_json['after']['top_score'] > 0.98 }}"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">service</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> notify.mobile_app_pixel_3</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data_template</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">message</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"High confidence dog detection."</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"https://url.com/api/frigate/notifications/{{trigger.payload_json['after']['id']}}/thumbnail.jpg"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">tag</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"{{trigger.payload_json['after']['id']}}"</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>If you are using telegram, you can fetch the image directly from Frigate:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-yaml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">automation</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">alias</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> Notify of events</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">trigger</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">platform</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> mqtt</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">topic</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> frigate/events</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">service</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> notify.telegram_full</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data_template</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">message</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'A {{trigger.payload_json["after"]["label"]}} was detected.'</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">data</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">photo</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># this url should work for addon users</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token key atrule">url</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'http://ccab4aaf-frigate:5000/api/events/{{trigger.payload_json["after"]["id"]}}/thumbnail.jpg'</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token key atrule">caption</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'A {{trigger.payload_json["after"]["label"]}} was detected on {{ trigger.payload_json["after"]["camera"] }} camera'</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><a name="streams"></a>## RTMP stream<p>In order for the live streams to function they need to be accessible on the RTMP
|
|
port (default: <code>1935</code>) at <code><frigatehost>:1935</code>. Home Assistant will directly
|
|
connect to that streaming port when the live camera is viewed.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="rtmp-url-template"></a>RTMP URL Template<a class="hash-link" href="#rtmp-url-template" title="Direct link to heading">#</a></h4><p>For advanced usecases, this behavior can be changed with the <a href="#options">RTMP URL
|
|
template</a> option. When set, this string will override the default stream
|
|
address that is derived from the default behavior described above. This option supports
|
|
<a href="https://jinja.palletsprojects.com/" target="_blank" rel="noopener noreferrer">jinja2 templates</a> and has the <code>camera</code> dict
|
|
variables from <a href="https://blakeblackshear.github.io/frigate/usage/api#apiconfig" target="_blank" rel="noopener noreferrer">Frigate API</a>
|
|
available for the template. Note that no Home Assistant state is available to the
|
|
template, only the camera dict from Frigate.</p><p>This is potentially useful when Frigate is behind a reverse proxy, and/or when
|
|
the default stream port is otherwise not accessible to Home Assistant (e.g.
|
|
firewall rules).</p><h6><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="rtmp-url-template-examples"></a>RTMP URL Template Examples<a class="hash-link" href="#rtmp-url-template-examples" title="Direct link to heading">#</a></h6><p>Use a different port number:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">rtmp://<frigate_host>:2000/live/front_door</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Use the camera name in the stream URL:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">rtmp://<frigate_host>:2000/live/{{ name }}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><p>Use the camera name in the stream URL, converting it to lowercase first:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">rtmp://<frigate_host>:2000/live/{{ name|lower }}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="multiple-instance-support"></a>Multiple Instance Support<a class="hash-link" href="#multiple-instance-support" title="Direct link to heading">#</a></h2><p>The Frigate integration seamlessly supports the use of multiple Frigate servers. </p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="requirements-for-multiple-instances"></a>Requirements for Multiple Instances<a class="hash-link" href="#requirements-for-multiple-instances" title="Direct link to heading">#</a></h3><p>In order for multiple Frigate instances to function correctly, the
|
|
<code>topic_prefix</code> and <code>client_id</code> parameters must be set differently per server.
|
|
See <a href="https://blakeblackshear.github.io/frigate/configuration/index#mqtt" target="_blank" rel="noopener noreferrer">MQTT
|
|
configuration</a>
|
|
for how to set these.</p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="api-urls"></a>API URLs<a class="hash-link" href="#api-urls" title="Direct link to heading">#</a></h4><p>When multiple Frigate instances are configured, <a href="#api">API</a> URLs should include an
|
|
identifier to tell Home Assistant which Frigate instance to refer to. The
|
|
identifier used is the MQTT <code>client_id</code> paremeter included in the configuration,
|
|
and is used like so:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://HA_URL/api/frigate/<client-id>/notifications/<event-id>/thumbnail.jpg</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-undefined codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">https://HA_URL/api/frigate/<client-id>/clips/front_door-1624599978.427826-976jaa.mp4</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="default-treatment"></a>Default Treatment<a class="hash-link" href="#default-treatment" title="Direct link to heading">#</a></h4><p>When a single Frigate instance is configured, the <code>client-id</code> parameter need not
|
|
be specified in URLs/identifiers -- that single instance is assumed. When
|
|
multiple Frigate instances are configured, the user <strong>must</strong> explicitly specify
|
|
which server they are referring to.</p></div></article><div class="margin-vert--xl"><div class="row"><div class="col"><a href="https://github.com/blakeblackshear/frigate/edit/master/docs/docs/usage/home-assistant.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="1.2em" width="1.2em" preserveAspectRatio="xMidYMid meet" role="img" viewBox="0 0 40 40" class="iconEdit_2LL7"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></div></div><div class="margin-vert--lg"><nav class="pagination-nav" aria-label="Blog list page navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/frigate/configuration/advanced"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Advanced</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/frigate/usage/web"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Web Interface »</div></a></div></nav></div></div></div><div class="col col--3"><div class="tableOfContents_2xL- thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#installation" class="table-of-contents__link">Installation</a></li><li><a href="#configuration" class="table-of-contents__link">Configuration</a></li><li><a href="#entities-provided" class="table-of-contents__link">Entities Provided</a></li><li><a href="#media-browser-support" class="table-of-contents__link">Media Browser Support</a><ul><li><a href="#notifications" class="table-of-contents__link">Notifications</a></li></ul></li><li><a href="#multiple-instance-support" class="table-of-contents__link">Multiple Instance Support</a><ul><li><a href="#requirements-for-multiple-instances" class="table-of-contents__link">Requirements for Multiple Instances</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://github.com/blakeblackshear/frigate" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li><li class="footer__item"><a href="https://github.com/blakeblackshear/frigate/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discussions</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2021 Blake Blackshear</div></div></div></footer></div>
|
|
<script src="/frigate/styles.0df63e1c.js"></script>
|
|
<script src="/frigate/runtime~main.a90fd004.js"></script>
|
|
<script src="/frigate/main.b6b2d1f0.js"></script>
|
|
<script src="/frigate/1.d4a988ac.js"></script>
|
|
<script src="/frigate/2.cbe00df1.js"></script>
|
|
<script src="/frigate/28.fabd8c68.js"></script>
|
|
<script src="/frigate/31.3f82c6fa.js"></script>
|
|
<script src="/frigate/935f2afb.06dae20f.js"></script>
|
|
<script src="/frigate/17896441.da8a454f.js"></script>
|
|
<script src="/frigate/064d4f6f.b0a87eb4.js"></script>
|
|
</body>
|
|
</html> |