Bigger overhaul. Updated the Part 2 Home Assistant Birdnet post. Added some menus and tags.
@ -84,6 +84,11 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="./posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
BIN
public/birdnet-homeassistant-part2.png
Normal file
|
After Width: | Height: | Size: 434 KiB |
@ -85,6 +85,11 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="./posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
@ -94,6 +99,9 @@ if (!doNotTrack) {
|
||||
</header>
|
||||
|
||||
<ul class="terms-tags">
|
||||
<li>
|
||||
<a href="./categories/tutorial.html">Tutorial <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
</li>
|
||||
</ul>
|
||||
</main>
|
||||
|
||||
|
||||
@ -5,6 +5,16 @@
|
||||
<link>/categories.html</link>
|
||||
<description>Recent content in Categories on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Tutorial</title>
|
||||
<link>/categories/tutorial.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/categories/tutorial.html</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
|
||||
189
public/categories/tutorial.html
Normal file
@ -0,0 +1,189 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Tutorial | Norm-working Packets 💾</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="A semi-technical blog & series of experiences working in tech and my homelab">
|
||||
<meta name="author" content="Norm Rasmussen">
|
||||
<link rel="canonical" href="../categories/tutorial.html">
|
||||
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="../favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="../rsmsncircles.ico">
|
||||
<link rel="apple-touch-icon" href="../apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="../safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="../categories/tutorial/index.xml">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Tutorial" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/categories/tutorial.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Tutorial"/>
|
||||
<meta name="twitter:description" content="A semi-technical blog & series of experiences working in tech and my homelab"/>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list dark" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="../" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
Tutorial
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../birdnet-homeassistant-part2.png" alt="Part 2 of my foray into HomeAssistant dashboard featuring BirdNET-Pi Sensors">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>BirdNET-PI & HomeAssistant: Part 2
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="../">Norm-working Packets 💾</a></span>
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
20
public/categories/tutorial/index.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Tutorial on Norm-working Packets 💾</title>
|
||||
<link>/categories/tutorial.html</link>
|
||||
<description>Recent content in Tutorial on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/categories/tutorial/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>BirdNET-PI & HomeAssistant: Part 2</title>
|
||||
<link>/posts/birdnet_homeassistant_part2.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant_part2.html</guid>
|
||||
<description>A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!</description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
10
public/categories/tutorial/page/1.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>/categories/tutorial.html</title>
|
||||
<link rel="canonical" href="../../../categories/tutorial.html">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=../../../categories/tutorial.html">
|
||||
</head>
|
||||
</html>
|
||||
BIN
public/hugo-nginx-trouble.png
Normal file
|
After Width: | Height: | Size: 212 KiB |
@ -99,6 +99,11 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="./posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
@ -136,6 +141,36 @@ if (!doNotTrack) {
|
||||
</footer>
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./birdnet-homeassistant-part2.png" alt="Part 2 of my foray into HomeAssistant dashboard featuring BirdNET-Pi Sensors">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>BirdNET-PI & HomeAssistant: Part 2
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="./posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./birdnet-homeassistant.png" alt="BirdNET-Pi and HomeAssistant: Happier together!">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>This is Part One of a Two Part Series. You can find Part Two, here.
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used. I’m a big fan of any sort of passive intake of information and had been looking around for various citizen science-style projects that can capture information from the world around me....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 10 min · 1953 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="./posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./multiple-git-cover-img.png" alt="git commands">
|
||||
</figure>
|
||||
@ -152,6 +187,8 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./hugo-nginx-trouble.png" alt="Hugo Logo, Nginx Logo, Tired Face emoji">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Trouble Hosting Hugo with Nginx
|
||||
</h2>
|
||||
|
||||
@ -6,7 +6,25 @@
|
||||
<description>Recent content on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Fri, 22 Sep 2023 15:07:10 -0400</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>BirdNET-PI & HomeAssistant: Part 2</title>
|
||||
<link>/posts/birdnet_homeassistant_part2.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant_part2.html</guid>
|
||||
<description>A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</title>
|
||||
<link>/posts/birdnet_homeassistant.html</link>
|
||||
<pubDate>Sat, 30 Sep 2023 11:21:55 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant.html</guid>
|
||||
<description>Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Pushing a Single Local Git Repo to Multiple Remote Repos</title>
|
||||
<link>/posts/multiple_git_remotes.html</link>
|
||||
|
||||
@ -100,16 +100,51 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="./posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="./">Home</a></div>
|
||||
<h1>
|
||||
Posts
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./birdnet-homeassistant-part2.png" alt="Part 2 of my foray into HomeAssistant dashboard featuring BirdNET-Pi Sensors">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>BirdNET-PI & HomeAssistant: Part 2
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="./posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./birdnet-homeassistant.png" alt="BirdNET-Pi and HomeAssistant: Happier together!">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>This is Part One of a Two Part Series. You can find Part Two, here.
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used. I’m a big fan of any sort of passive intake of information and had been looking around for various citizen science-style projects that can capture information from the world around me....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 10 min · 1953 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="./posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./multiple-git-cover-img.png" alt="git commands">
|
||||
</figure>
|
||||
@ -126,6 +161,8 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="./hugo-nginx-trouble.png" alt="Hugo Logo, Nginx Logo, Tired Face emoji">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Trouble Hosting Hugo with Nginx
|
||||
</h2>
|
||||
|
||||
959
public/posts/birdnet_homeassistant_part2.html
Normal file
BIN
public/posts/img/birdnet-homeassistant-birdseen-sensor.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/posts/img/birdnet-homeassistant-dash-full.png
Normal file
|
After Width: | Height: | Size: 250 KiB |
BIN
public/posts/img/birdnet-homeassistant-data-card.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/posts/img/birdnet-homeassistant-description-card.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
public/posts/img/birdnet-homeassistant-overview-card.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
public/posts/img/birdnet-homeassistant-weather-card.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
@ -6,7 +6,25 @@
|
||||
<description>Recent content in Posts on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Fri, 22 Sep 2023 15:07:10 -0400</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>BirdNET-PI & HomeAssistant: Part 2</title>
|
||||
<link>/posts/birdnet_homeassistant_part2.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant_part2.html</guid>
|
||||
<description>A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</title>
|
||||
<link>/posts/birdnet_homeassistant.html</link>
|
||||
<pubDate>Sat, 30 Sep 2023 11:21:55 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant.html</guid>
|
||||
<description>Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Pushing a Single Local Git Repo to Multiple Remote Repos</title>
|
||||
<link>/posts/multiple_git_remotes.html</link>
|
||||
|
||||
@ -138,6 +138,11 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
@ -216,6 +221,11 @@ there twice, once for <code>(push)</code> and once for <code>(fetch)</code>.</p>
|
||||
<li><a href="../tags/commandline.html">commandline</a></li>
|
||||
</ul>
|
||||
<nav class="paginav">
|
||||
<a class="prev" href="../posts/birdnet_homeassistant.html">
|
||||
<span class="title">« Prev</span>
|
||||
<br>
|
||||
<span>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</span>
|
||||
</a>
|
||||
<a class="next" href="../posts/hosting_hugo_troubles.html">
|
||||
<span class="title">Next »</span>
|
||||
<br>
|
||||
@ -223,6 +233,60 @@ there twice, once for <code>(push)</code> and once for <code>(fetch)</code>.</p>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos&url=%2fposts%2fmultiple_git_remotes.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url=%2fposts%2fmultiple_git_remotes.html&title=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos&summary=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos&source=%2fposts%2fmultiple_git_remotes.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on reddit"
|
||||
href="https://reddit.com/submit?url=%2fposts%2fmultiple_git_remotes.html&title=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on facebook"
|
||||
href="https://facebook.com/sharer/sharer.php?u=%2fposts%2fmultiple_git_remotes.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on whatsapp"
|
||||
href="https://api.whatsapp.com/send?text=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos%20-%20%2fposts%2fmultiple_git_remotes.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on telegram"
|
||||
href="https://telegram.me/share/url?text=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos&url=%2fposts%2fmultiple_git_remotes.html">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Pushing a Single Local Git Repo to Multiple Remote Repos on ycombinator"
|
||||
href="https://news.ycombinator.com/submitlink?t=Pushing%20a%20Single%20Local%20Git%20Repo%20to%20Multiple%20Remote%20Repos&u=%2fposts%2fmultiple_git_remotes.html">
|
||||
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<path
|
||||
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -138,6 +138,11 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
@ -464,6 +469,60 @@ paste them from the <a href="https://github.com/NginxProxyManager/nginx-proxy-ma
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx&url=%2fposts%2fnpm_to_nginx_tutorial.html&hashtags=git%2cbackups%2ccommandline">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url=%2fposts%2fnpm_to_nginx_tutorial.html&title=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx&summary=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx&source=%2fposts%2fnpm_to_nginx_tutorial.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on reddit"
|
||||
href="https://reddit.com/submit?url=%2fposts%2fnpm_to_nginx_tutorial.html&title=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on facebook"
|
||||
href="https://facebook.com/sharer/sharer.php?u=%2fposts%2fnpm_to_nginx_tutorial.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on whatsapp"
|
||||
href="https://api.whatsapp.com/send?text=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx%20-%20%2fposts%2fnpm_to_nginx_tutorial.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on telegram"
|
||||
href="https://telegram.me/share/url?text=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx&url=%2fposts%2fnpm_to_nginx_tutorial.html">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share Tutorial: Move from NginxProxyManager to Nginx on ycombinator"
|
||||
href="https://news.ycombinator.com/submitlink?t=Tutorial%3a%20Move%20from%20NginxProxyManager%20to%20Nginx&u=%2fposts%2fnpm_to_nginx_tutorial.html">
|
||||
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<path
|
||||
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -138,6 +138,11 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
@ -190,6 +195,60 @@ such a regular basis, I need to ensure the project pulls from Meshtastic command
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="share-buttons">
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on twitter"
|
||||
href="https://twitter.com/intent/tweet/?text=My%20First%20Merged%20PR%21&url=%2fposts%2fwhiptail-first-merged-pr.html&hashtags=git%2copensource%2cdiy">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on linkedin"
|
||||
href="https://www.linkedin.com/shareArticle?mini=true&url=%2fposts%2fwhiptail-first-merged-pr.html&title=My%20First%20Merged%20PR%21&summary=My%20First%20Merged%20PR%21&source=%2fposts%2fwhiptail-first-merged-pr.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on reddit"
|
||||
href="https://reddit.com/submit?url=%2fposts%2fwhiptail-first-merged-pr.html&title=My%20First%20Merged%20PR%21">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on facebook"
|
||||
href="https://facebook.com/sharer/sharer.php?u=%2fposts%2fwhiptail-first-merged-pr.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on whatsapp"
|
||||
href="https://api.whatsapp.com/send?text=My%20First%20Merged%20PR%21%20-%20%2fposts%2fwhiptail-first-merged-pr.html">
|
||||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on telegram"
|
||||
href="https://telegram.me/share/url?text=My%20First%20Merged%20PR%21&url=%2fposts%2fwhiptail-first-merged-pr.html">
|
||||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||||
<path
|
||||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||||
</svg>
|
||||
</a>
|
||||
<a target="_blank" rel="noopener noreferrer" aria-label="share My First Merged PR! on ycombinator"
|
||||
href="https://news.ycombinator.com/submitlink?t=My%20First%20Merged%20PR%21&u=%2fposts%2fwhiptail-first-merged-pr.html">
|
||||
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||||
<path
|
||||
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
3
public/robots.txt
Normal file
@ -0,0 +1,3 @@
|
||||
User-agent: *
|
||||
Disallow:
|
||||
Sitemap: /sitemap.xml
|
||||
175
public/series.html
Normal file
@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Series | Norm-working Packets 💾</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="A semi-technical blog & series of experiences working in tech and my homelab">
|
||||
<meta name="author" content="Norm Rasmussen">
|
||||
<link rel="canonical" href="./series.html">
|
||||
<link crossorigin="anonymous" href="./assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="./favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="./favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="./rsmsncircles.ico">
|
||||
<link rel="apple-touch-icon" href="./apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="./safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="./series/index.xml">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="Series" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/series.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="Series"/>
|
||||
<meta name="twitter:description" content="A semi-technical blog & series of experiences working in tech and my homelab"/>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list dark" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="./" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="./posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<h1>Series</h1>
|
||||
</header>
|
||||
|
||||
<ul class="terms-tags">
|
||||
</ul>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="./">Norm-working Packets 💾</a></span>
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
10
public/series/index.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Series on Norm-working Packets 💾</title>
|
||||
<link>/series.html</link>
|
||||
<description>Recent content in Series on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language><atom:link href="/series/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
||||
@ -2,6 +2,39 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>/posts/birdnet_homeassistant_part2.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/categories.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/diy.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/homeassistant.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/posts.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/selfhosted.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/categories/tutorial.html</loc>
|
||||
<lastmod>2023-10-04T10:35:23-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/posts/birdnet_homeassistant.html</loc>
|
||||
<lastmod>2023-09-30T11:21:55-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/python.html</loc>
|
||||
<lastmod>2023-09-30T11:21:55-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/backups.html</loc>
|
||||
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
|
||||
</url><url>
|
||||
@ -10,27 +43,15 @@
|
||||
</url><url>
|
||||
<loc>/tags/git.html</loc>
|
||||
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/</loc>
|
||||
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/posts.html</loc>
|
||||
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/posts/multiple_git_remotes.html</loc>
|
||||
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags.html</loc>
|
||||
<lastmod>2023-09-22T15:07:10-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/posts/hosting_hugo_troubles.html</loc>
|
||||
<lastmod>2023-09-20T11:33:22-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/posts/npm_to_nginx_tutorial.html</loc>
|
||||
<lastmod>2023-08-05T15:23:51-05:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/tags/diy.html</loc>
|
||||
<lastmod>2022-09-01T13:25:02-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/posts/whiptail-first-merged-pr.html</loc>
|
||||
<lastmod>2022-09-01T13:25:02-04:00</lastmod>
|
||||
@ -38,6 +59,6 @@
|
||||
<loc>/tags/opensource.html</loc>
|
||||
<lastmod>2022-09-01T13:25:02-04:00</lastmod>
|
||||
</url><url>
|
||||
<loc>/categories.html</loc>
|
||||
<loc>/series.html</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
|
||||
@ -85,6 +85,11 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="./posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
@ -101,14 +106,23 @@ if (!doNotTrack) {
|
||||
<a href="./tags/commandline.html">commandline <sup><strong><sup>3</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./tags/diy.html">diy <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
<a href="./tags/diy.html">diy <sup><strong><sup>3</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./tags/git.html">git <sup><strong><sup>4</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./tags/homeassistant.html">homeassistant <sup><strong><sup>2</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./tags/opensource.html">opensource <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./tags/python.html">python <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="./tags/selfhosted.html">selfhosted <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
</li>
|
||||
</ul>
|
||||
</main>
|
||||
|
||||
|
||||
@ -85,11 +85,16 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
backups
|
||||
</h1>
|
||||
@ -111,6 +116,8 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
</article>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../hugo-nginx-trouble.png" alt="Hugo Logo, Nginx Logo, Tired Face emoji">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Trouble Hosting Hugo with Nginx
|
||||
</h2>
|
||||
|
||||
@ -85,11 +85,16 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
commandline
|
||||
</h1>
|
||||
@ -111,6 +116,8 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
</article>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../hugo-nginx-trouble.png" alt="Hugo Logo, Nginx Logo, Tired Face emoji">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Trouble Hosting Hugo with Nginx
|
||||
</h2>
|
||||
|
||||
@ -85,16 +85,51 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
diy
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../birdnet-homeassistant-part2.png" alt="Part 2 of my foray into HomeAssistant dashboard featuring BirdNET-Pi Sensors">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>BirdNET-PI & HomeAssistant: Part 2
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../birdnet-homeassistant.png" alt="BirdNET-Pi and HomeAssistant: Happier together!">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>This is Part One of a Two Part Series. You can find Part Two, here.
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used. I’m a big fan of any sort of passive intake of information and had been looking around for various citizen science-style projects that can capture information from the world around me....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 10 min · 1953 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="../posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../merged-pr-accepted.png" alt="Git Pull Request with an arrow pointing to a check mark">
|
||||
</figure>
|
||||
|
||||
@ -6,7 +6,25 @@
|
||||
<description>Recent content in diy on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 01 Sep 2022 13:25:02 -0400</lastBuildDate><atom:link href="/tags/diy/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/tags/diy/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>BirdNET-PI & HomeAssistant: Part 2</title>
|
||||
<link>/posts/birdnet_homeassistant_part2.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant_part2.html</guid>
|
||||
<description>A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</title>
|
||||
<link>/posts/birdnet_homeassistant.html</link>
|
||||
<pubDate>Sat, 30 Sep 2023 11:21:55 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant.html</guid>
|
||||
<description>Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>My First Merged PR!</title>
|
||||
<link>/posts/whiptail-first-merged-pr.html</link>
|
||||
|
||||
@ -85,11 +85,16 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
git
|
||||
</h1>
|
||||
@ -111,6 +116,8 @@ I really enjoy self-hosting services that I use everyday. One of those includes
|
||||
</article>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../hugo-nginx-trouble.png" alt="Hugo Logo, Nginx Logo, Tired Face emoji">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>Trouble Hosting Hugo with Nginx
|
||||
</h2>
|
||||
|
||||
@ -85,16 +85,36 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
homeassistant
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../birdnet-homeassistant-part2.png" alt="Part 2 of my foray into HomeAssistant dashboard featuring BirdNET-Pi Sensors">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>BirdNET-PI & HomeAssistant: Part 2
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../birdnet-homeassistant.png" alt="BirdNET-Pi and HomeAssistant: Happier together!">
|
||||
</figure>
|
||||
@ -106,7 +126,7 @@ if (!doNotTrack) {
|
||||
<p>This is Part One of a Two Part Series. You can find Part Two, here.
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used. I’m a big fan of any sort of passive intake of information and had been looking around for various citizen science-style projects that can capture information from the world around me....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-25 12:51:55 -0400 EDT'>September 25, 2023</span> · 10 min · 1953 words · Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 10 min · 1953 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="../posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -6,11 +6,20 @@
|
||||
<description>Recent content in homeassistant on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Mon, 25 Sep 2023 12:51:55 -0400</lastBuildDate><atom:link href="/tags/homeassistant/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/tags/homeassistant/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>BirdNET-PI & HomeAssistant: Part 2</title>
|
||||
<link>/posts/birdnet_homeassistant_part2.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant_part2.html</guid>
|
||||
<description>A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</title>
|
||||
<link>/posts/birdnet_homeassistant.html</link>
|
||||
<pubDate>Mon, 25 Sep 2023 12:51:55 -0400</pubDate>
|
||||
<pubDate>Sat, 30 Sep 2023 11:21:55 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant.html</guid>
|
||||
<description>Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.</description>
|
||||
|
||||
@ -6,7 +6,43 @@
|
||||
<description>Recent content in Tags on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Fri, 22 Sep 2023 15:07:10 -0400</lastBuildDate><atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>diy</title>
|
||||
<link>/tags/diy.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/tags/diy.html</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>homeassistant</title>
|
||||
<link>/tags/homeassistant.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/tags/homeassistant.html</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>selfhosted</title>
|
||||
<link>/tags/selfhosted.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/tags/selfhosted.html</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>python</title>
|
||||
<link>/tags/python.html</link>
|
||||
<pubDate>Sat, 30 Sep 2023 11:21:55 -0400</pubDate>
|
||||
|
||||
<guid>/tags/python.html</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>backups</title>
|
||||
<link>/tags/backups.html</link>
|
||||
@ -34,15 +70,6 @@
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>diy</title>
|
||||
<link>/tags/diy.html</link>
|
||||
<pubDate>Thu, 01 Sep 2022 13:25:02 -0400</pubDate>
|
||||
|
||||
<guid>/tags/diy.html</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>opensource</title>
|
||||
<link>/tags/opensource.html</link>
|
||||
|
||||
@ -85,11 +85,16 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
opensource
|
||||
</h1>
|
||||
|
||||
@ -85,11 +85,16 @@ if (!doNotTrack) {
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
python
|
||||
</h1>
|
||||
@ -106,7 +111,7 @@ if (!doNotTrack) {
|
||||
<p>This is Part One of a Two Part Series. You can find Part Two, here.
|
||||
What you will need BirdNET-Pi HomeAssistant AppDaemon MQTT Broker (I use Mosquitto) Background In early 2023, at the height of the Raspberry Pi shortage I felt like a king with an extra Rpi laying around, not being used. I’m a big fan of any sort of passive intake of information and had been looking around for various citizen science-style projects that can capture information from the world around me....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-09-25 12:51:55 -0400 EDT'>September 25, 2023</span> · 10 min · 1953 words · Me</footer>
|
||||
<footer class="entry-footer"><span title='2023-09-30 11:21:55 -0400 EDT'>September 30, 2023</span> · 10 min · 1953 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to Creating a BirdNetPi Dashboard in HomeAssistant - Part 1" href="../posts/birdnet_homeassistant.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
@ -6,11 +6,11 @@
|
||||
<description>Recent content in python on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Mon, 25 Sep 2023 12:51:55 -0400</lastBuildDate><atom:link href="/tags/python/index.xml" rel="self" type="application/rss+xml" />
|
||||
<lastBuildDate>Sat, 30 Sep 2023 11:21:55 -0400</lastBuildDate><atom:link href="/tags/python/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Creating a BirdNetPi Dashboard in HomeAssistant - Part 1</title>
|
||||
<link>/posts/birdnet_homeassistant.html</link>
|
||||
<pubDate>Mon, 25 Sep 2023 12:51:55 -0400</pubDate>
|
||||
<pubDate>Sat, 30 Sep 2023 11:21:55 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant.html</guid>
|
||||
<description>Learn how to take BirdNET-Pi Detections to create and display entities in HomeAssistant.</description>
|
||||
|
||||
189
public/tags/selfhosted.html
Normal file
@ -0,0 +1,189 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>selfhosted | Norm-working Packets 💾</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="A semi-technical blog & series of experiences working in tech and my homelab">
|
||||
<meta name="author" content="Norm Rasmussen">
|
||||
<link rel="canonical" href="../tags/selfhosted.html">
|
||||
<link crossorigin="anonymous" href="../assets/css/stylesheet.5cfc680b1eeaeef9efbced92d46c2a9e876b72ee14fba85846afc4cff9e6e6f8.css" integrity="sha256-XPxoCx7q7vnvvO2S1Gwqnodrcu4U+6hYRq/Ez/nm5vg=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="../favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="../rsmsncircles.ico">
|
||||
<link rel="apple-touch-icon" href="../apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="../safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="../tags/selfhosted/index.xml">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X8VR5M0K20"></script>
|
||||
<script>
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-X8VR5M0K20', { 'anonymize_ip': false });
|
||||
}
|
||||
</script>
|
||||
<meta property="og:title" content="selfhosted" />
|
||||
<meta property="og:description" content="A semi-technical blog & series of experiences working in tech and my homelab" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="/tags/selfhosted.html" /><meta property="og:site_name" content="Norm-working Packets" />
|
||||
|
||||
<meta name="twitter:card" content="summary"/>
|
||||
<meta name="twitter:title" content="selfhosted"/>
|
||||
<meta name="twitter:description" content="A semi-technical blog & series of experiences working in tech and my homelab"/>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list dark" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="../" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="../posts.html" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header"><div class="breadcrumbs"><a href="../">Home</a></div>
|
||||
<h1>
|
||||
selfhosted
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<figure class="entry-cover"><img loading="lazy" src="../birdnet-homeassistant-part2.png" alt="Part 2 of my foray into HomeAssistant dashboard featuring BirdNET-Pi Sensors">
|
||||
</figure>
|
||||
<header class="entry-header">
|
||||
<h2>BirdNET-PI & HomeAssistant: Part 2
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Checking for Entities If you’re following up on this from my first post, you’ve already added your AppDaemon script and confirmed that the AppDaemon logs don’t show any errors. Now is the true test if it’s working: do you have the new sensors in HomeAssistant?!
|
||||
The best way to do this is by just type e from any screen in the HomeAssistant UI! That will bring up a list of entities....</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2023-10-04 10:35:23 -0400 EDT'>October 4, 2023</span> · 10 min · 1986 words · Me</footer>
|
||||
<a class="entry-link" aria-label="post link to BirdNET-PI & HomeAssistant: Part 2" href="../posts/birdnet_homeassistant_part2.html"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2023 <a href="../">Norm-working Packets 💾</a></span>
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
20
public/tags/selfhosted/index.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>selfhosted on Norm-working Packets 💾</title>
|
||||
<link>/tags/selfhosted.html</link>
|
||||
<description>Recent content in selfhosted on Norm-working Packets 💾</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Wed, 04 Oct 2023 10:35:23 -0400</lastBuildDate><atom:link href="/tags/selfhosted/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>BirdNET-PI & HomeAssistant: Part 2</title>
|
||||
<link>/posts/birdnet_homeassistant_part2.html</link>
|
||||
<pubDate>Wed, 04 Oct 2023 10:35:23 -0400</pubDate>
|
||||
|
||||
<guid>/posts/birdnet_homeassistant_part2.html</guid>
|
||||
<description>A Follow up from the previous post, this tutorial takes all the sensors we created and loads them into a beautiful dashboard!</description>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
10
public/tags/selfhosted/page/1.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>/tags/selfhosted.html</title>
|
||||
<link rel="canonical" href="../../../tags/selfhosted.html">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=../../../tags/selfhosted.html">
|
||||
</head>
|
||||
</html>
|
||||