Compare commits
14 Commits
b2aefd84cb
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
566a323fda | ||
|
|
655c815934 | ||
|
|
aff5d0e55e | ||
|
|
cb5ce59d66 | ||
|
|
f79c0b15f6 | ||
|
|
073eaa8018 | ||
|
|
b778275e86 | ||
|
|
f1e4301531 | ||
|
|
e3a3356ef3 | ||
|
|
0d1c1a79e6 | ||
|
|
0067273831 | ||
|
|
2cfe219898 | ||
|
|
38bb41a52a | ||
|
|
68a6ee1e39 |
4
.github/workflows/hugo_publisher.yml
vendored
@@ -49,7 +49,7 @@ jobs:
|
|||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Cache node modules
|
- name: Cache node modules
|
||||||
uses: actions/cache@v5.0.3
|
uses: actions/cache@v5.0.4
|
||||||
env:
|
env:
|
||||||
cache-name: cache-node-modules-v1
|
cache-name: cache-node-modules-v1
|
||||||
with:
|
with:
|
||||||
@@ -81,7 +81,7 @@ jobs:
|
|||||||
timezoneMacos: Europe/Rome
|
timezoneMacos: Europe/Rome
|
||||||
|
|
||||||
- name: Cache built website
|
- name: Cache built website
|
||||||
uses: actions/cache@v5.0.3
|
uses: actions/cache@v5.0.4
|
||||||
env:
|
env:
|
||||||
cache-name: cache-website-v1
|
cache-name: cache-website-v1
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -48,3 +48,9 @@ strong {
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.footnotes {
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.7 MiB |
@@ -1,37 +0,0 @@
|
|||||||
---
|
|
||||||
title: "And Now I Start Tinkering With Hardware"
|
|
||||||
date: 2025-06-02T00:21:52+02:00
|
|
||||||
draft: true
|
|
||||||
feature_link: "https://www.midjourney.com/home/"
|
|
||||||
feature_text: "by IA Midjourney"
|
|
||||||
description: Some idea to start some software-hardware software
|
|
||||||
isStarred: false
|
|
||||||
tags:
|
|
||||||
- hacking
|
|
||||||
- coding
|
|
||||||
- micropython
|
|
||||||
categories:
|
|
||||||
- tinkering
|
|
||||||
images:
|
|
||||||
keywords:
|
|
||||||
series:
|
|
||||||
reply:
|
|
||||||
repost:
|
|
||||||
like:
|
|
||||||
rsvp:
|
|
||||||
bookmark:
|
|
||||||
|
|
||||||
comments:
|
|
||||||
host: mastodon.social
|
|
||||||
username: fundor333
|
|
||||||
id:
|
|
||||||
---
|
|
||||||
|
|
||||||
[Programming hardware displays the easy way - using MicroPython and LVGL](https://2025.pycon.it/en/event/programming-hardware-displays-the-easy-way-using-micropython-and-lvgl)
|
|
||||||
|
|
||||||
[Buying a Seven Year Old Refurbished Kobo eReader](https://eclecticpassions.net/blog/refurbished-ereader-kobo-aura-one/)
|
|
||||||
|
|
||||||
[SSH into KOreader (Kobo eReader) from macOS](https://www.burgeonlab.com/2024/ssh-into-koreader-kobo-ereader-from-macos/)
|
|
||||||
|
|
||||||
[Booting DietPi from SSD on a Raspberry Pi 4B 8GB](https://www.burgeonlab.com/2023/booting-dietpi-from-ssd-on-a-raspberry-pi-4b-8gb/)
|
|
||||||
nh
|
|
||||||
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 3.8 MiB |
|
After Width: | Height: | Size: 3.3 MiB |
@@ -1,23 +1,182 @@
|
|||||||
---
|
---
|
||||||
title: "Starting My Home Automation Experiment"
|
title: Starting My Home Automation Experiment
|
||||||
date: 2026-03-29T20:46:01+02:00
|
date: 2026-03-30 08:46:01+02:00
|
||||||
draft: true
|
feature_link: https://www.midjourney.com/home/
|
||||||
feature_link: "https://www.midjourney.com/home/"
|
feature_text: by IA Midjourney
|
||||||
feature_text: "by IA Midjourney"
|
description: I am starting a Home Automation in my home and this is how I start it
|
||||||
description: "I am starting a Home Automation in my home and this is how I start it"
|
|
||||||
tags:
|
tags:
|
||||||
- home-automation
|
- home-automation
|
||||||
- hacking
|
- hacking
|
||||||
- self-hosting
|
- self-hosting
|
||||||
|
- raspberry-pi
|
||||||
|
- home-assistant
|
||||||
categories:
|
categories:
|
||||||
- tinkering
|
- tinkering
|
||||||
series:
|
series:
|
||||||
- My Home Automation Lab
|
- My Home Automation Lab
|
||||||
|
syndication:
|
||||||
|
- https://mastodon.social/@fundor333/116318298830055707
|
||||||
|
comments:
|
||||||
|
host: mastodon.social
|
||||||
|
username: fundor333
|
||||||
|
id: '116318298830055707'
|
||||||
---
|
---
|
||||||
|
|
||||||
And some time ago I installed the Fiber[^1] in my home and I want to use in the best way, so I start to rework all my local network and I think about adding some home automation.
|
And some time ago I installed the __*FIBER*__[^1] in my home and I want to use in the best way, so I start to rework all my local network and I think about adding some home automation.
|
||||||
|
|
||||||
[^1]: I pay a company to install it and clean after.
|
[^1]: I pay a company to install it and I clean after.
|
||||||
|
|
||||||
{{< xkcd 1966 >}}
|
{{< xkcd 1931 >}}
|
||||||
|
|
||||||
|
## What do I need?
|
||||||
|
|
||||||
|
First I search for understand what I need to have for build my personal home automation. So serching on the web I found I need:
|
||||||
|
|
||||||
|
- A brain/core/server for coordinate all the stuffs
|
||||||
|
- A software for the brain, for the automation and other stuff
|
||||||
|
- A router for adding the brain to the network for update and other stuff
|
||||||
|
- Dongle/sensor/tech for connectivity with the sensors and smart stuff (one for protocol)
|
||||||
|
- The smart stuff (light bulb, sensor, timer, endpoint api...)
|
||||||
|
|
||||||
|
So I need to choose which protocol I want in my home... And I don't know...
|
||||||
|
|
||||||
|
So I change the point of view:
|
||||||
|
|
||||||
|
- I want to use good smart stuff but I don't want to pay too much
|
||||||
|
- I want something Open Source so I am not bind to a company
|
||||||
|
- I want something offline or/and on MY HOME SERVER
|
||||||
|
|
||||||
|
### The protocols
|
||||||
|
|
||||||
|
Searching for the protocols I choose Thread[^thread-standard] and Zigbee[^zigbee].
|
||||||
|
One reason is because they are the most used protocol for communication and more easy to find online (Amazon) and offline (Ikea and othe local shop).
|
||||||
|
|
||||||
|
For starting I will implement only Thread because the more easy tech for me are all Matter over Thread so I start with Thread.
|
||||||
|
|
||||||
|
From the infographic I found, I need to implement Matter[^matter-standard] also because Matter is the top stuff for an Home Assistant.
|
||||||
|

|
||||||
|
|
||||||
|
[^matter-standard]: [Matter Standard](https://csa-iot.org/all-solutions/matter/)
|
||||||
|
[^thread-standard]: [Thread Standard](https://threadgroup.org/)
|
||||||
|
[^zigbee]: [Zigbee Standard](https://csa-iot.org/all-solutions/zigbee/)
|
||||||
|
|
||||||
|
### The software
|
||||||
|
|
||||||
|
Now I want a software, Open Source, which I can support Thread and Matter (and also Zigbee) and I found a software (Open Source) wich support all I need: Home Assistant[^home-assistant].
|
||||||
|
|
||||||
|
It support Matter[^matter-home-assistant], Thread[^thread-home-assistant] and Zigbee[^zigbee-home-automation] and I can put it in a RaspberryPi or other server.
|
||||||
|
|
||||||
|
[^home-assistant]: [Home Assistant](https://www.home-assistant.io/)
|
||||||
|
[^matter-home-assistant]: [Home Assistant Matter](https://www.home-assistant.io/integrations/matter/)
|
||||||
|
[^thread-home-assistant]: [Home Assistant Thread](https://www.home-assistant.io/integrations/thread/)
|
||||||
|
[^zigbee-home-automation]: [Zigbee Home Automation](https://www.home-assistant.io/integrations/zha/)
|
||||||
|
|
||||||
|
## Hardware
|
||||||
|
|
||||||
|
So I start to make a list of what I have and what I need.
|
||||||
|
Some things I buy online, some things come from some tech market and some come form the shoes box of my old stuff...
|
||||||
|
|
||||||
|
I only write about the real things but if I use cable or other "standard stuff" I don't write about it.
|
||||||
|
So yes I bought some usb extention and some network cable but they aren't important for this post.
|
||||||
|
|
||||||
|
### Core/Brain Stuff
|
||||||
|
|
||||||
|
First I need the Brain for the project
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
From what I read in the Home Assistant[^home-assistant] documentation I need some type of server with some gadget connected to them.
|
||||||
|
|
||||||
|
So I search and got a RaspberryPi 4B[^raspberry].
|
||||||
|

|
||||||
|
|
||||||
|
[^raspberry]: [RaspberryPi 4B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/)
|
||||||
|
|
||||||
|
I also bought a microSD with 64GB of memory (I am on a budget for this project) as an Hard Disk for the "server".
|
||||||
|
|
||||||
|
Searching in my closet and in some shoes boxes I found a case[^case] for RaspberryPi with active cooling system (and LGB light)
|
||||||
|
|
||||||
|
[^case]: [Raspberry Pi 4B Case from Owootecc](https://www.amazon.it/dp/B07YJGWPQL)
|
||||||
|
|
||||||
|
So I flash the microSD with the Home Assistant software. Thanks to the Raspberry Pi Software[^iso] choosing the right iso and flash it in the SD was a walk in the park.
|
||||||
|
|
||||||
|
[^iso]: [Raspberry Pi software](https://www.raspberrypi.com/software/)
|
||||||
|
|
||||||
|
After the flashing I set it up and add to my local network and check for update.
|
||||||
|
|
||||||
|
So the brain is ready!
|
||||||
|
|
||||||
|
### Sensor form Ikea
|
||||||
|
|
||||||
|
I went to Ikea for some stuff and some Swedish meatballs and I came back with an Ikea Alpstuga[^ikea].
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
It is a timer, air sensor with CO2 and PM2.5 sensor and output all of them and an Air Quality value.
|
||||||
|
|
||||||
|
[^ikea]: [Ikea Alpstuga](https://www.ikea.com/it/it/p/alpstuga-sensore-della-qualita-dellaria-smart-50604187/)
|
||||||
|
|
||||||
|
The only bad thing about it is the color but for the price I don't complain.
|
||||||
|
|
||||||
|
So after coming home I found it didn't work.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
As is the RaspberryPi 4B do not support Thread or Zigbee without some type of specialized antenna...
|
||||||
|
I was understanding that the software use the wifi module of the RaspberryPi as a Zigbee/Thread emitter/reciver but no so I search on Amazon for the dongle for Thread.
|
||||||
|
|
||||||
|
### Antenna
|
||||||
|
|
||||||
|
I bought a Usb dongle[^antenna] for connecting the RaspberryPi and the other gadget in the house (for now only the Ikea one)
|
||||||
|
|
||||||
|
[^antenna]: [SONOFF Zigbee 3.0 USB Dongle Plus MG24](https://www.amazon.it/dp/B0FMJD288B)
|
||||||
|
|
||||||
|
[^antenna]
|
||||||
|
|
||||||
|
This antenna is a little special: you can flash it for changing it form Zigbee to Thread and vice versa so I start to config it.
|
||||||
|
|
||||||
|
#### Setup the Antenna
|
||||||
|
|
||||||
|
First I flash the antenna. I need to port from Zigbee to Thread[^flash_firmware] and with the online tool it was so easy I thought I did something wrong.
|
||||||
|
|
||||||
|
[^flash_firmware]: [Sonoff dongle flasher/](https://dongle.sonoff.tech/sonoff-dongle-flasher/)
|
||||||
|
|
||||||
|
After this I connect the dongle and start to config the Home Assistant.
|
||||||
|
|
||||||
|
First I need to have installed Thread from "Add Integration" and it showed an empty list of device. This is correct because I didn't have a Thread router installed.
|
||||||
|
|
||||||
|
So we add a OpenRouter. How? Installing from the officials app of mine Home Assistant.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
After this I edit the config in this way (the device was auto-finded) and I set this for my device. [^note]
|
||||||
|
|
||||||
|
[^note]: This config work for me, it can not work for you
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
For checking if all was ok I went and seach in the log for the OpenThread for a specific line.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
After this I went to check if the Thread integration showed the Ikea sensor and it didn't show... Why? Because I am STUPID.
|
||||||
|
|
||||||
|
#### Setup the last little things
|
||||||
|
|
||||||
|
Alpstuga (my air sensor) is not Thread, is Matter over Thread, so I need to add the thing with the Matter integration. And with this last integration the system worked!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
I am happy of this system? No. Why? I have the wrong time on the Alpstuga.
|
||||||
|
|
||||||
|
This thing I don't understand so I search online for understand how can I fix the time on the device.
|
||||||
|
|
||||||
|
I find this is a common problem with the Alpstuga device and someone made a Hacs[^hacs] plugin[^matter-time-synk] wich add a cron and a button for sync the Home Assistant's clock. I also add the plugin for integrate my Playstation Network in my Home Assistant[^psnetwork].
|
||||||
|
|
||||||
|
[^hacs]: [Home Assistant Hacs](https://www.hacs.xyz/)
|
||||||
|
[^matter-time-synk]: [Matter time synk](https://github.com/Loweack/Matter-Time-Sync/)
|
||||||
|
[^psnetwork]: [PlayStation Network Home Assistant](https://www.home-assistant.io/integrations/playstation_network/)
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
For now this is what I had done but I want to have automation (for now I don't have any) and some stuff for lower the gas bill so there will be more post about my smart home.
|
||||||
|
|||||||
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 326 KiB |
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 3.5 MiB |
|
After Width: | Height: | Size: 140 KiB |
|
After Width: | Height: | Size: 3.4 MiB |
BIN
content/weeknotes/2026/14/cover.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
33
content/weeknotes/2026/14/index.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: "Week Note Nº 14/2026"
|
||||||
|
date: "2026-03-30T09:00:00+01:00"
|
||||||
|
lastmod: "2026-03-30T09:00:00+01:00"
|
||||||
|
tags: ["weeknote"]
|
||||||
|
type : "weeknote"
|
||||||
|
summary: "Personal notes for week 14 of 2026"
|
||||||
|
description: "Personal notes for week 14 of 2026"
|
||||||
|
draft: False
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
## New post from my blog
|
||||||
|
- [Week Note Nº 13/2026](https://fundor333.com/weeknotes/2026/13/?utm_source=fundor333.com)
|
||||||
|
|
||||||
|
## My Links
|
||||||
|
- [My blog](https://www.fundor333.com)
|
||||||
|
- [My newsletter](https://newsletter.digitaltearoom.com)
|
||||||
|
- [Support me](https://ko-fi.com/fundor333)
|
||||||
|
|
||||||
|
## Anime and manga's stats
|
||||||
|
|
||||||
|
### **Anime**
|
||||||
|
- Total anime watched: **105**
|
||||||
|
- Total anime watched time: **706h 22m**
|
||||||
|
- Total anime watched episodes: **1708**
|
||||||
|
- Top 5 anime genres: 🏷️ Action, 🏷️ Adventure, 🏷️ Fantasy, 🏷️ Supernatural, 🏷️ Drama
|
||||||
|
|
||||||
|
### **Manga**
|
||||||
|
- Total manga read: **269**
|
||||||
|
- Total manga read chapters: **27385**
|
||||||
|
- Total manga read volumes: **612**
|
||||||
|
- Top 5 manga genres: 🏷️ Fantasy, 🏷️ Action, 🏷️ Adventure, 🏷️ Comedy, 🏷️ Drama
|
||||||
7
data/syndication/583f3c656d6a2c5b4c6afd7d63e30c2c.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"syndication": [
|
||||||
|
"https://bsky.app/profile/fundor333.bsky.social/post/3mdgrz4agzg23",
|
||||||
|
"https://mastodon.social/@fundor333/115969377077180224"
|
||||||
|
],
|
||||||
|
"source": "https://fundor333.com/micro/2026/01/making-htmx-stuffs/"
|
||||||
|
}
|
||||||
6
data/syndication/853da2e01e05f502d81968f125b665da.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"syndication": [
|
||||||
|
"https://mastodon.social/@fundor333/115963459189684445"
|
||||||
|
],
|
||||||
|
"source": "https://fundor333.com/post/2026/why-do-i-disinstall-poetry-and-use-only-uv-/"
|
||||||
|
}
|
||||||
7
data/syndication/ce9aeac929c309d69c744329dfdfdba0.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"syndication": [
|
||||||
|
"https://mastodon.social/@fundor333/116318298830055707",
|
||||||
|
"https://news.ycombinator.com/item?id=47573957"
|
||||||
|
],
|
||||||
|
"source": "https://fundor333.com/post/2026/starting-my-home-automation-experiment/"
|
||||||
|
}
|
||||||
9
package-lock.json
generated
@@ -147,7 +147,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"baseline-browser-mapping": "^2.9.0",
|
"baseline-browser-mapping": "^2.9.0",
|
||||||
"caniuse-lite": "^1.0.30001759",
|
"caniuse-lite": "^1.0.30001759",
|
||||||
@@ -163,9 +162,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001781",
|
"version": "1.0.30001782",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001782.tgz",
|
||||||
"integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==",
|
"integrity": "sha512-dZcaJLJeDMh4rELYFw1tvSn1bhZWYFOt468FcbHHxx/Z/dFidd1I6ciyFdi3iwfQCyOjqo9upF6lGQYtMiJWxw==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -514,7 +513,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.11",
|
"nanoid": "^3.3.11",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
@@ -753,7 +751,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
|
||||||
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -16,26 +16,48 @@ click==8.3.1
|
|||||||
# weeknotebot
|
# weeknotebot
|
||||||
colorama==0.4.6 ; sys_platform == 'win32'
|
colorama==0.4.6 ; sys_platform == 'win32'
|
||||||
# via click
|
# via click
|
||||||
|
contourpy==1.3.3
|
||||||
|
# via matplotlib
|
||||||
|
cycler==0.12.1
|
||||||
|
# via matplotlib
|
||||||
feedparser==6.0.12
|
feedparser==6.0.12
|
||||||
# via
|
# via
|
||||||
# fundor333-github-io
|
# fundor333-github-io
|
||||||
# weeknotebot
|
# weeknotebot
|
||||||
|
fonttools==4.62.1
|
||||||
|
# via matplotlib
|
||||||
idna==3.11
|
idna==3.11
|
||||||
# via requests
|
# via requests
|
||||||
|
kiwisolver==1.5.0
|
||||||
|
# via matplotlib
|
||||||
lxml==6.0.2
|
lxml==6.0.2
|
||||||
# via fundor333-github-io
|
# via fundor333-github-io
|
||||||
markdown-it-py==4.0.0
|
markdown-it-py==4.0.0
|
||||||
# via rich
|
# via rich
|
||||||
marshmallow==3.26.2
|
marshmallow==3.26.2
|
||||||
# via weeknotebot
|
# via weeknotebot
|
||||||
|
matplotlib==3.10.8
|
||||||
|
# via fundor333-github-io
|
||||||
mdurl==0.1.2
|
mdurl==0.1.2
|
||||||
# via markdown-it-py
|
# via markdown-it-py
|
||||||
|
numpy==2.4.4
|
||||||
|
# via
|
||||||
|
# contourpy
|
||||||
|
# matplotlib
|
||||||
packaging==26.0
|
packaging==26.0
|
||||||
# via marshmallow
|
# via
|
||||||
|
# marshmallow
|
||||||
|
# matplotlib
|
||||||
pillow==12.1.1
|
pillow==12.1.1
|
||||||
# via fundor333-github-io
|
# via
|
||||||
|
# fundor333-github-io
|
||||||
|
# matplotlib
|
||||||
pygments==2.20.0
|
pygments==2.20.0
|
||||||
# via rich
|
# via rich
|
||||||
|
pyparsing==3.3.2
|
||||||
|
# via matplotlib
|
||||||
|
python-dateutil==2.9.0.post0
|
||||||
|
# via matplotlib
|
||||||
python-dotenv==1.2.2
|
python-dotenv==1.2.2
|
||||||
# via fundor333-github-io
|
# via fundor333-github-io
|
||||||
python-frontmatter==1.1.0
|
python-frontmatter==1.1.0
|
||||||
@@ -56,6 +78,8 @@ sgmllib3k==1.0.0
|
|||||||
# via feedparser
|
# via feedparser
|
||||||
shellingham==1.5.4
|
shellingham==1.5.4
|
||||||
# via typer
|
# via typer
|
||||||
|
six==1.17.0
|
||||||
|
# via python-dateutil
|
||||||
soupsieve==2.8.3
|
soupsieve==2.8.3
|
||||||
# via beautifulsoup4
|
# via beautifulsoup4
|
||||||
typer==0.24.1
|
typer==0.24.1
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"Target":"add.min.855eeee13cf87b04c5f2dc5d26fbb0ee43b90357d4d210186eebe753d1055101.css","MediaType":"text/css","Data":{"Integrity":"sha256-hV7u4Tz4ewTF8txdJvuw7kO5A1fU0hAYbuvnU9EFUQE="}}
|
{"Target":"add.min.ccd2b4b9ceb675fabadad53f60dfdfc15f8c9ac2e9f43bdadc77c75132bd005f.css","MediaType":"text/css","Data":{"Integrity":"sha256-zNK0uc62dfq62tU/YN/fwV+MmsLp9Dva3HfHUTK9AF8="}}
|
||||||
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 245 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 231 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 258 KiB |
|
Before Width: | Height: | Size: 370 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 471 KiB |
|
Before Width: | Height: | Size: 301 KiB After Width: | Height: | Size: 231 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 490 KiB After Width: | Height: | Size: 386 KiB |
|
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 305 KiB |
|
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 370 KiB |
|
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 258 KiB After Width: | Height: | Size: 317 KiB |
|
Before Width: | Height: | Size: 386 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 245 KiB |
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 317 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 500 KiB |
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 298 KiB After Width: | Height: | Size: 301 KiB |
|
Before Width: | Height: | Size: 265 KiB After Width: | Height: | Size: 530 KiB |
|
Before Width: | Height: | Size: 322 KiB After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 471 KiB After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 265 KiB |
|
Before Width: | Height: | Size: 500 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 305 KiB After Width: | Height: | Size: 298 KiB |
|
Before Width: | Height: | Size: 470 KiB After Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 490 KiB |
|
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 470 KiB |
|
Before Width: | Height: | Size: 338 KiB After Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 338 KiB |
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 322 KiB |
|
Before Width: | Height: | Size: 244 KiB After Width: | Height: | Size: 110 KiB |
22
uv.lock
generated
@@ -367,19 +367,19 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fonttools"
|
name = "fonttools"
|
||||||
version = "4.62.0"
|
version = "4.62.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/5a/96/686339e0fda8142b7ebed39af53f4a5694602a729662f42a6209e3be91d0/fonttools-4.62.0.tar.gz", hash = "sha256:0dc477c12b8076b4eb9af2e440421b0433ffa9e1dcb39e0640a6c94665ed1098", size = 3579521, upload-time = "2026-03-09T16:50:06.217Z" }
|
sdist = { url = "https://files.pythonhosted.org/packages/9a/08/7012b00a9a5874311b639c3920270c36ee0c445b69d9989a85e5c92ebcb0/fonttools-4.62.1.tar.gz", hash = "sha256:e54c75fd6041f1122476776880f7c3c3295ffa31962dc6ebe2543c00dca58b5d", size = 3580737, upload-time = "2026-03-13T13:54:25.52Z" }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/ab/9d/7ad1ffc080619f67d0b1e0fa6a0578f0be077404f13fd8e448d1616a94a3/fonttools-4.62.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:22bde4dc12a9e09b5ced77f3b5053d96cf10c4976c6ac0dee293418ef289d221", size = 2870004, upload-time = "2026-03-09T16:48:50.837Z" },
|
{ url = "https://files.pythonhosted.org/packages/47/d4/dbacced3953544b9a93088cc10ef2b596d348c983d5c67a404fa41ec51ba/fonttools-4.62.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:90365821debbd7db678809c7491ca4acd1e0779b9624cdc6ddaf1f31992bf974", size = 2870219, upload-time = "2026-03-13T13:52:53.664Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/4d/8b/ba59069a490f61b737e064c3129453dbd28ee38e81d56af0d04d7e6b4de4/fonttools-4.62.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7199c73b326bad892f1cb53ffdd002128bfd58a89b8f662204fbf1daf8d62e85", size = 2414662, upload-time = "2026-03-09T16:48:53.295Z" },
|
{ url = "https://files.pythonhosted.org/packages/66/9e/a769c8e99b81e5a87ab7e5e7236684de4e96246aae17274e5347d11ebd78/fonttools-4.62.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12859ff0b47dd20f110804c3e0d0970f7b832f561630cd879969011541a464a9", size = 2414891, upload-time = "2026-03-13T13:52:56.493Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/8c/8c/c52a4310de58deeac7e9ea800892aec09b00bb3eb0c53265b31ec02be115/fonttools-4.62.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d732938633681d6e2324e601b79e93f7f72395ec8681f9cdae5a8c08bc167e72", size = 5032975, upload-time = "2026-03-09T16:48:55.718Z" },
|
{ url = "https://files.pythonhosted.org/packages/69/64/f19a9e3911968c37e1e620e14dfc5778299e1474f72f4e57c5ec771d9489/fonttools-4.62.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c125ffa00c3d9003cdaaf7f2c79e6e535628093e14b5de1dccb08859b680936", size = 5033197, upload-time = "2026-03-13T13:52:59.179Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/0b/a1/d16318232964d786907b9b3613b8409f74cf0be2da400854509d3a864e43/fonttools-4.62.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:31a804c16d76038cc4e3826e07678efb0a02dc4f15396ea8e07088adbfb2578e", size = 4988544, upload-time = "2026-03-09T16:48:57.715Z" },
|
{ url = "https://files.pythonhosted.org/packages/9b/8a/99c8b3c3888c5c474c08dbfd7c8899786de9604b727fcefb055b42c84bba/fonttools-4.62.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:149f7d84afca659d1a97e39a4778794a2f83bf344c5ee5134e09995086cc2392", size = 4988768, upload-time = "2026-03-13T13:53:02.761Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/b2/8d/7e745ca3e65852adc5e52a83dc213fe1b07d61cb5b394970fcd4b1199d1e/fonttools-4.62.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:090e74ac86e68c20150e665ef8e7e0c20cb9f8b395302c9419fa2e4d332c3b51", size = 4971296, upload-time = "2026-03-09T16:48:59.678Z" },
|
{ url = "https://files.pythonhosted.org/packages/d1/c6/0f904540d3e6ab463c1243a0d803504826a11604c72dd58c2949796a1762/fonttools-4.62.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0aa72c43a601cfa9273bb1ae0518f1acadc01ee181a6fc60cd758d7fdadffc04", size = 4971512, upload-time = "2026-03-13T13:53:05.678Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/e6/d4/b717a4874175146029ca1517e85474b1af80c9d9a306fc3161e71485eea5/fonttools-4.62.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8f086120e8be9e99ca1288aa5ce519833f93fe0ec6ebad2380c1dee18781f0b5", size = 5122503, upload-time = "2026-03-09T16:49:02.464Z" },
|
{ url = "https://files.pythonhosted.org/packages/29/0b/5cbef6588dc9bd6b5c9ad6a4d5a8ca384d0cea089da31711bbeb4f9654a6/fonttools-4.62.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:19177c8d96c7c36359266e571c5173bcee9157b59cfc8cb0153c5673dc5a3a7d", size = 5122723, upload-time = "2026-03-13T13:53:08.662Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/cb/4b/92cfcba4bf8373f51c49c5ae4b512ead6fbda7d61a0e8c35a369d0db40a0/fonttools-4.62.0-cp312-cp312-win32.whl", hash = "sha256:37a73e5e38fd05c637daede6ffed5f3496096be7df6e4a3198d32af038f87527", size = 2281060, upload-time = "2026-03-09T16:49:04.385Z" },
|
{ url = "https://files.pythonhosted.org/packages/4a/47/b3a5342d381595ef439adec67848bed561ab7fdb1019fa522e82101b7d9c/fonttools-4.62.1-cp312-cp312-win32.whl", hash = "sha256:a24decd24d60744ee8b4679d38e88b8303d86772053afc29b19d23bb8207803c", size = 2281278, upload-time = "2026-03-13T13:53:10.998Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/cd/06/cc96468781a4dc8ae2f14f16f32b32f69bde18cb9384aad27ccc7adf76f7/fonttools-4.62.0-cp312-cp312-win_amd64.whl", hash = "sha256:658ab837c878c4d2a652fcbb319547ea41693890e6434cf619e66f79387af3b8", size = 2331193, upload-time = "2026-03-09T16:49:06.598Z" },
|
{ url = "https://files.pythonhosted.org/packages/28/b1/0c2ab56a16f409c6c8a68816e6af707827ad5d629634691ff60a52879792/fonttools-4.62.1-cp312-cp312-win_amd64.whl", hash = "sha256:9e7863e10b3de72376280b515d35b14f5eeed639d1aa7824f4cf06779ec65e42", size = 2331414, upload-time = "2026-03-13T13:53:13.992Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/9c/57/c2487c281dde03abb2dec244fd67059b8d118bd30a653cbf69e94084cb23/fonttools-4.62.0-py3-none-any.whl", hash = "sha256:75064f19a10c50c74b336aa5ebe7b1f89fd0fb5255807bfd4b0c6317098f4af3", size = 1152427, upload-time = "2026-03-09T16:50:04.074Z" },
|
{ url = "https://files.pythonhosted.org/packages/fd/ba/56147c165442cc5ba7e82ecf301c9a68353cede498185869e6e02b4c264f/fonttools-4.62.1-py3-none-any.whl", hash = "sha256:7487782e2113861f4ddcc07c3436450659e3caa5e470b27dc2177cade2d8e7fd", size = 1152647, upload-time = "2026-03-13T13:54:22.735Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||