Merge branch 'master' of https://github.com/akrigator/hassio-addons
1
.github/paths-filter.yml
vendored
@@ -5,6 +5,7 @@ addons_updater: addons_updater/config.* # Image : yes
|
||||
arpspoof: arpspoof/config.* # Image : yes
|
||||
autobrr: autobrr/config.* # Image : yes
|
||||
baikal: baikal/config.* # Image : yes
|
||||
battybirdnet-pi: battybirdnet-pi/config.* # Image : yes
|
||||
bazarr: bazarr/config.* # Image : yes
|
||||
binance-trading-bot: binance-trading-bot/config.* # Image : yes
|
||||
birdnet-go: birdnet-go/config.* # Image : yes
|
||||
|
||||
556
.github/stars.svg
vendored
|
Before Width: | Height: | Size: 261 KiB After Width: | Height: | Size: 269 KiB |
2
.github/starsevol.svg
vendored
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 135 KiB |
BIN
.github/stats.png
vendored
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
.github/stats_addons.png
vendored
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.1 KiB |
1
.github/workflows/daily_README.yaml
vendored
@@ -7,6 +7,7 @@ on:
|
||||
workflow_dispatch: null
|
||||
jobs:
|
||||
README_updater:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
|
||||
1
.github/workflows/helper_stats_graphs.yaml
vendored
@@ -7,6 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
stats_graphs:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
|
||||
3
.github/workflows/onpush_builder.yaml
vendored
@@ -16,6 +16,7 @@ on:
|
||||
|
||||
jobs:
|
||||
correct_path_filters:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: ↩️ Checkout
|
||||
@@ -169,7 +170,7 @@ jobs:
|
||||
- name: Build ${{ matrix.addon }} add-on
|
||||
id: builderstep
|
||||
if: steps.check.outputs.build_arch == 'true'
|
||||
uses: home-assistant/builder@master
|
||||
uses: home-assistant/builder@2024.03.5
|
||||
env:
|
||||
CAS_API_KEY: ${{ secrets.CAS_API_KEY }}
|
||||
with:
|
||||
|
||||
2
.github/workflows/weekly-supelinter.yaml
vendored
@@ -14,6 +14,7 @@ on:
|
||||
|
||||
jobs:
|
||||
make-executable:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
@@ -63,6 +64,7 @@ jobs:
|
||||
|
||||
check_crlf:
|
||||
name: Check CRLF action
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
2
.github/workflows/weekly_crlftolf.yaml
vendored
@@ -8,6 +8,7 @@ on:
|
||||
|
||||
jobs:
|
||||
crlf-to-lf:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository contents
|
||||
@@ -24,6 +25,7 @@ jobs:
|
||||
|
||||
fix-crlf:
|
||||
name: Fix CRLF Endings
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-latest # Use a Linux runner
|
||||
steps:
|
||||
- name: Checkout repository contents
|
||||
|
||||
1
.github/workflows/weekly_reduceimagesize.yml
vendored
@@ -9,6 +9,7 @@ on:
|
||||
|
||||
jobs:
|
||||
calibre:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
name: calibreapp/image-actions
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
1
.github/workflows/weekly_sortjson.yaml
vendored
@@ -9,6 +9,7 @@ on:
|
||||
|
||||
jobs:
|
||||
sort_json:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
|
||||
1
.github/workflows/weekly_stats.yaml
vendored
@@ -8,6 +8,7 @@ on:
|
||||
|
||||
jobs:
|
||||
stats_updater:
|
||||
if: github.repository_owner == 'alexbelgium'
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
|
||||
144
README.md
@@ -44,20 +44,20 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
|
||||
### Number of addons
|
||||
|
||||
- In the repository : 92
|
||||
- Installed : 80926
|
||||
- In the repository : 93
|
||||
- Installed : 86596
|
||||
|
||||
### Top 3
|
||||
|
||||
1. Portainer (11142x)
|
||||
2. Filebrowser (9880x)
|
||||
3. Arpspoof (2505x)
|
||||
1. Portainer (16729x)
|
||||
2. Filebrowser (11150x)
|
||||
3. Sabnzbd (5295x)
|
||||
|
||||
### Architectures used
|
||||
|
||||
- amd64: 58%
|
||||
- aarch64: 34%
|
||||
- armv7: 8%
|
||||
- amd64: 61%
|
||||
- aarch64: 31%
|
||||
- armv7: 7%
|
||||
|
||||
### Total downloads evolution
|
||||
|
||||
@@ -75,8 +75,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
|
||||
## Add-ons provided by this repository
|
||||
|
||||
|
||||
✓ [Arpspoof (2505x)](arpspoof/) : block internet connection for local network devices
|
||||
✓ [Arpspoof](arpspoof/) : block internet connection for local network devices
|
||||
|
||||
  
|
||||

|
||||
@@ -95,7 +94,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Baikal](baikal/) : Calendar+Contacts server
|
||||
✓ [Baikal](baikal/) : Calendar+Contacts server
|
||||
|
||||
  
|
||||

|
||||
@@ -103,7 +102,19 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Bazarr NAS](bazarr/) : Companion application to Sonarr and Radarr to download subtitles
|
||||
✓  [BattyBirdNET-Pi](battybirdnet-pi/) : A realtime acoustic bat & bird classification system for the Raspberry Pi 4/5 built on BattyBirdNET-Analyzer
|
||||
|
||||
  
|
||||

|
||||
![aarch64][aarch64-badge]
|
||||
![amd64no][amd64no-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
![ingress][ingress-badge]
|
||||
![mqtt][mqtt-badge]
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Bazarr NAS](bazarr/) : Companion application to Sonarr and Radarr to download subtitles
|
||||
|
||||
  
|
||||

|
||||
@@ -147,7 +158,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Booksonic-air](booksonic_air/) : platform for accessing the audiobooks you own wherever you are
|
||||
✓ [Booksonic-air](booksonic_air/) : platform for accessing the audiobooks you own wherever you are
|
||||
|
||||
  
|
||||

|
||||
@@ -157,7 +168,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Browserless Chromium](browserless_chrome/) : Chromium as a service container
|
||||
✓ [Browserless Chromium](browserless_chrome/) : Chromium as a service container
|
||||
|
||||
  
|
||||

|
||||
@@ -187,7 +198,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Castsponsorskip](sponsorblockcast/) : Skip YouTube ads and sponsorships on all local Google Cast devices
|
||||
✓ [Castsponsorskip](sponsorblockcast/) : Skip YouTube ads and sponsorships on all local Google Cast devices
|
||||
|
||||
  
|
||||

|
||||
@@ -195,7 +206,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Changedetection.io](changedetection.io/) : web page monitoring, notification and change detection
|
||||
✓ [Changedetection.io](changedetection.io/) : web page monitoring, notification and change detection
|
||||
|
||||
  
|
||||

|
||||
@@ -235,7 +246,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Elasticsearch server](elasticsearch/) : Free and Open, Distributed, RESTful Search Engine
|
||||
✓ [Elasticsearch server](elasticsearch/) : Free and Open, Distributed, RESTful Search Engine
|
||||
|
||||
  
|
||||
![aarch64][aarch64-badge]
|
||||
@@ -253,7 +264,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Epic Games Free](epicgamesfree/) : Automatically login and redeem promotional free games from Epic Games Store
|
||||
✓ [Epic Games Free](epicgamesfree/) : Automatically login and redeem promotional free games from Epic Games Store
|
||||
|
||||
  
|
||||

|
||||
@@ -261,7 +272,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓  [Filebrowser (9880x)](filebrowser/) : filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files
|
||||
✓  [Filebrowser (11150x)](filebrowser/) : filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files
|
||||
|
||||
  
|
||||

|
||||
@@ -272,7 +283,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Firefly iii](fireflyiii/) : A free and open source personal finance manager
|
||||
✓ [Firefly iii](fireflyiii/) : A free and open source personal finance manager
|
||||
|
||||
  
|
||||

|
||||
@@ -281,7 +292,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![armv7][armv7-badge]
|
||||
![MariaDB][mariadb-badge]
|
||||
|
||||
✓ [Firefly iii Data Importer](fireflyiii_data_importer/) : Data importer for Firefly III (separate addon)
|
||||
✓ [Firefly iii Data Importer](fireflyiii_data_importer/) : Data importer for Firefly III (separate addon)
|
||||
|
||||
  
|
||||

|
||||
@@ -289,14 +300,14 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Firefly iii FinTS Importer](fireflyiii_fints_importer/) : Import financial transactions from your FinTS enabled bank into Firefly III
|
||||
✓ [Firefly iii FinTS Importer](fireflyiii_fints_importer/) : Import financial transactions from your FinTS enabled bank into Firefly III
|
||||
|
||||
  
|
||||
![aarch64][aarch64-badge]
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [FlareSolverr](flaresolverr/) : Proxy server to bypass Cloudflare protection
|
||||
✓ [FlareSolverr](flaresolverr/) : Proxy server to bypass Cloudflare protection
|
||||
|
||||
  
|
||||

|
||||
@@ -304,7 +315,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Flexget](flexget/) : FlexGet is a multipurpose automation tool for all of your media
|
||||
✓ [Flexget](flexget/) : FlexGet is a multipurpose automation tool for all of your media
|
||||
|
||||
  
|
||||

|
||||
@@ -312,7 +323,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Free Games Claimer (NoVNC not working)](free_games_claimer/) : automatically claims free games on the Epic Games Store, Amazon Prime Gaming and GOG
|
||||
✓ [Free Games Claimer (NoVNC not working)](free_games_claimer/) : automatically claims free games on the Epic Games Store, Amazon Prime Gaming and GOG
|
||||
|
||||
  
|
||||

|
||||
@@ -320,7 +331,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Gazpar2mqtt](gazpar2mqtt/) : fetch GRDF data and publish data to a mqtt broker
|
||||
✓ [Gazpar2mqtt](gazpar2mqtt/) : fetch GRDF data and publish data to a mqtt broker
|
||||
|
||||
  
|
||||

|
||||
@@ -329,7 +340,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![armv7][armv7-badge]
|
||||
![mqtt][mqtt-badge]
|
||||
|
||||
✓ [Gitea](gitea/) : Gitea for Home Assistant
|
||||
✓ [Gitea](gitea/) : Gitea for Home Assistant
|
||||
|
||||
  
|
||||

|
||||
@@ -337,7 +348,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Grav web server](grav/) : Fast, Simple, and Flexible, file-based Web-platform
|
||||
✓ [Grav web server](grav/) : Fast, Simple, and Flexible, file-based Web-platform
|
||||
|
||||
  
|
||||

|
||||
@@ -365,7 +376,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Inadyn](inadyn/) : Inadyn is a small and simple Dynamic DNS, DDNS, client with HTTPS support. A large number of dynamic dns providers are supported (https://github.com/troglobit/inadyn#supported-providers). For those that are not, you can use a custom provider as per this project's documentation (https://github.com/nalipaz/hassio-addons/blob/master/README.md)
|
||||
✓ [Inadyn](inadyn/) : Inadyn is a small and simple Dynamic DNS, DDNS, client with HTTPS support. A large number of dynamic dns providers are supported (https://github.com/troglobit/inadyn#supported-providers). For those that are not, you can use a custom provider as per this project's documentation (https://github.com/nalipaz/hassio-addons/blob/master/README.md)
|
||||
|
||||
  
|
||||

|
||||
@@ -373,7 +384,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Jackett NAS](jackett/) : Translates queries from apps (Sonarr, Sickrage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software
|
||||
✓ [Jackett NAS](jackett/) : Translates queries from apps (Sonarr, Sickrage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software
|
||||
|
||||
  
|
||||

|
||||
@@ -394,7 +405,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Jellyseerr](jellyseerr/) : fork of overseerr for jellyfin support
|
||||
✓ [Jellyseerr](jellyseerr/) : fork of overseerr for jellyfin support
|
||||
|
||||
  
|
||||

|
||||
@@ -411,7 +422,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![armv7][armv7-badge]
|
||||
![ingress][ingress-badge]
|
||||
|
||||
✓ [Joplin Server](joplin/) : Self-hosted open source note-taking application
|
||||
✓ [Joplin Server](joplin/) : Self-hosted open source note-taking application
|
||||
|
||||
  
|
||||

|
||||
@@ -419,7 +430,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Kometa](kometa/) : Python script to update metadata information for movies, shows, and collections as well as automatically build collections
|
||||
✓ [Kometa](kometa/) : Python script to update metadata information for movies, shows, and collections as well as automatically build collections
|
||||
|
||||
  
|
||||

|
||||
@@ -427,7 +438,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Lidarr NAS](lidarr/) : Music collection manager for Usenet and BitTorrent users
|
||||
✓ [Lidarr NAS](lidarr/) : Music collection manager for Usenet and BitTorrent users
|
||||
|
||||
  
|
||||

|
||||
@@ -437,7 +448,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Linkwarden](linkwarden/) : collaborative bookmark manager to collect, organize, and preserve webpages and articles
|
||||
✓ [Linkwarden](linkwarden/) : collaborative bookmark manager to collect, organize, and preserve webpages and articles
|
||||
|
||||
  
|
||||

|
||||
@@ -473,7 +484,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![ingress][ingress-badge]
|
||||
![mqtt][mqtt-badge]
|
||||
|
||||
✓ [Mylar3](mylar3/) : Automated comic book downloader for use with NZB and torrents
|
||||
✓ [Mylar3](mylar3/) : Automated comic book downloader for use with NZB and torrents
|
||||
|
||||
  
|
||||

|
||||
@@ -483,7 +494,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Navidrome](navidrome/) : Navidrome for Home Assistant
|
||||
✓ [Navidrome](navidrome/) : Navidrome for Home Assistant
|
||||
|
||||
  
|
||||

|
||||
@@ -513,7 +524,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Omada](omada/) : TP-Link Omada Controller
|
||||
✓ [Omada](omada/) : TP-Link Omada Controller
|
||||
|
||||
  
|
||||

|
||||
@@ -521,7 +532,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Omada v3.2](omada_v3/) : TP-Link Omada Controller
|
||||
✓ [Omada v3.2](omada_v3/) : TP-Link Omada Controller
|
||||
|
||||
  
|
||||

|
||||
@@ -529,7 +540,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Ombi](ombi/) : Self-hosted Plex Request and user management system
|
||||
✓ [Ombi](ombi/) : Self-hosted Plex Request and user management system
|
||||
|
||||
  
|
||||

|
||||
@@ -537,7 +548,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Openproject](openproject/) : Openproject for Home Assistant
|
||||
✓ [Openproject](openproject/) : Openproject for Home Assistant
|
||||
|
||||
  
|
||||

|
||||
@@ -545,7 +556,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Organizr](organizr/) : An HTPC/Homelab services organizer that is written in PHP
|
||||
✓ [Organizr](organizr/) : An HTPC/Homelab services organizer that is written in PHP
|
||||
|
||||
  
|
||||

|
||||
@@ -553,7 +564,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Overseerr](overseerr/) : Request management and media discovery tool built to work with your existing Plex ecosystem
|
||||
✓ [Overseerr](overseerr/) : Request management and media discovery tool built to work with your existing Plex ecosystem
|
||||
|
||||
  
|
||||

|
||||
@@ -561,7 +572,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Papermerge](papermerge/) : Open source document management system (DMS)
|
||||
✓ [Papermerge](papermerge/) : Open source document management system (DMS)
|
||||
|
||||
  
|
||||

|
||||
@@ -582,7 +593,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Piwigo](piwigo/) : Piwigo is a photo gallery software for the web
|
||||
✓ [Piwigo](piwigo/) : Piwigo is a photo gallery software for the web
|
||||
|
||||
  
|
||||

|
||||
@@ -592,7 +603,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Plex NAS](plex/) : Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices
|
||||
✓ [Plex NAS](plex/) : Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices
|
||||
|
||||
  
|
||||

|
||||
@@ -602,7 +613,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓  [Portainer (11142x)](portainer/) : Manage your Docker environment with ease
|
||||
✓  [Portainer (16729x)](portainer/) : Manage your Docker environment with ease
|
||||
|
||||
  
|
||||

|
||||
@@ -611,7 +622,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![armv7][armv7-badge]
|
||||
![ingress][ingress-badge]
|
||||
|
||||
✓ [Portainer (11142x) Agent](portainer_agent/) : An agent used to manage all the resources in a Swarm cluster
|
||||
✓ [Portainer (16729x) Agent](portainer_agent/) : An agent used to manage all the resources in a Swarm cluster
|
||||
|
||||
  
|
||||

|
||||
@@ -620,7 +631,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![armv7][armv7-badge]
|
||||
![full_access][full_access-badge]
|
||||
|
||||
✓ [Postgres 15](postgres/) : Postgres 15 with pgvecto.rs support
|
||||
✓ [Postgres 15](postgres/) : Postgres 15 with pgvecto.rs support
|
||||
|
||||
  
|
||||

|
||||
@@ -628,7 +639,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Prowlarr NAS](prowlarr/) : Torrent Trackers and Usenet indexers offering complete management ofSonarr, Radarr, Lidarr, and Readarr indexers with no per app setup required
|
||||
✓ [Prowlarr NAS](prowlarr/) : Torrent Trackers and Usenet indexers offering complete management ofSonarr, Radarr, Lidarr, and Readarr indexers with no per app setup required
|
||||
|
||||
  
|
||||

|
||||
@@ -660,14 +671,14 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Repository Updater](addons_updater/) : Automatic addons update by aligning version tag with upstream releases
|
||||
✓ [Repository Updater](addons_updater/) : Automatic addons update by aligning version tag with upstream releases
|
||||
|
||||
  
|
||||
![aarch64][aarch64-badge]
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Requestrr](requestrr/) : Chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat
|
||||
✓ [Requestrr](requestrr/) : Chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat
|
||||
|
||||
  
|
||||

|
||||
@@ -686,7 +697,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓  [Sabnzbd](sabnzbd/) : Makes Usenet as simple and streamlined as possible by automating everything we can
|
||||
✓  [Sabnzbd (5295x)](sabnzbd/) : Makes Usenet as simple and streamlined as possible by automating everything we can
|
||||
|
||||
  
|
||||

|
||||
@@ -726,13 +737,14 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Signalk Server](signalk/) : An implementation of a Signal K central server for boats
|
||||
✓ [Signalk Server](signalk/) : An implementation of a Signal K central server for boats
|
||||
|
||||
  
|
||||

|
||||
![aarch64][aarch64-badge]
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
![full_access][full_access-badge]
|
||||
|
||||
✓  [Sonarr](sonarr/) : Can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them
|
||||
|
||||
@@ -774,7 +786,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Teamspeak server](teamspeak/) : voice communication for online gaming, education and training
|
||||
✓ [Teamspeak server](teamspeak/) : voice communication for online gaming, education and training
|
||||
|
||||
  
|
||||
![aarch64][aarch64-badge]
|
||||
@@ -803,7 +815,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Ubooquity](ubooquity/) : Free, lightweight, and easy-to-use home server for your comics and ebooks
|
||||
✓ [Ubooquity](ubooquity/) : Free, lightweight, and easy-to-use home server for your comics and ebooks
|
||||
|
||||
  
|
||||

|
||||
@@ -813,7 +825,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Unpackerr](unpackerr/) : Unpacks RARd files for Sonarr, Lidarr and Radarr
|
||||
✓ [Unpackerr](unpackerr/) : Unpacks RARd files for Sonarr, Lidarr and Radarr
|
||||
|
||||
  
|
||||

|
||||
@@ -834,7 +846,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Webtrees](webtrees/) : web's leading on-line collaborative genealogy application
|
||||
✓ [Webtrees](webtrees/) : web's leading on-line collaborative genealogy application
|
||||
|
||||
  
|
||||

|
||||
@@ -845,7 +857,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [Wger](wger/) : manage your personal workouts, weight and diet plans
|
||||
✓ [Wger](wger/) : manage your personal workouts, weight and diet plans
|
||||
|
||||
  
|
||||

|
||||
@@ -853,7 +865,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7no][armv7no-badge]
|
||||
|
||||
✓ [Whatsapper](whatsapper/) : Whatsapper for Home Assistant
|
||||
✓ [Whatsapper](whatsapper/) : Whatsapper for Home Assistant
|
||||
|
||||
  
|
||||

|
||||
@@ -870,7 +882,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![armv7][armv7-badge]
|
||||
![ingress][ingress-badge]
|
||||
|
||||
✓ [Xteve](xteve/) : M3U Proxy for Plex DVR and Emby Live TV
|
||||
✓ [Xteve](xteve/) : M3U Proxy for Plex DVR and Emby Live TV
|
||||
|
||||
  
|
||||

|
||||
@@ -878,7 +890,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [Zoneminder](zoneminder/) : A full-featured, open source, state-of-the-art video surveillance software system
|
||||
✓ [Zoneminder](zoneminder/) : A full-featured, open source, state-of-the-art video surveillance software system
|
||||
|
||||
  
|
||||

|
||||
@@ -898,7 +910,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [zzz_archived - Paperless NGX](zzz_archived_paperless_ngx/) : Scan, index and archive all your physical documents
|
||||
✓ [zzz_archived - Paperless NGX](zzz_archived_paperless_ngx/) : Scan, index and archive all your physical documents
|
||||
|
||||
  
|
||||

|
||||
@@ -909,7 +921,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [zzz_archived - Vaultwarden](zzz_archived_bitwarden/) : Deprecated - please use community version
|
||||
✓ [zzz_archived - Vaultwarden](zzz_archived_bitwarden/) : Deprecated - please use community version
|
||||
|
||||
  
|
||||

|
||||
@@ -917,7 +929,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![amd64][amd64-badge]
|
||||
![armv7][armv7-badge]
|
||||
|
||||
✓ [zzz_archived : Code-server (VScode)](zzz_archived_code-server/) : Deprecated : Code-server is VS Code running on a remote server, accessible through the browser
|
||||
✓ [zzz_archived : Code-server (VScode)](zzz_archived_code-server/) : Deprecated : Code-server is VS Code running on a remote server, accessible through the browser
|
||||
|
||||
  
|
||||

|
||||
@@ -927,7 +939,7 @@ If you want to do add the repository manually, please follow the procedure highl
|
||||
![smb][smb-badge]
|
||||
![localdisks][localdisks-badge]
|
||||
|
||||
✓ [zzz_archived - Plex meta manager](zzz_archived_plex_meta_manager/) : Deprecated : renamed to Kometa
|
||||
✓ [zzz_archived - Plex meta manager](zzz_archived_plex_meta_manager/) : Deprecated : renamed to Kometa
|
||||
|
||||
  
|
||||

|
||||
|
||||
187
Stats
@@ -1,93 +1,94 @@
|
||||
2024-07-05 2024-06-28 2024-06-21 2024-06-14 2024-06-07 2024-05-31 2024-05-24 2024-05-24 2024-05-17 2024-05-10 2024-05-03 2024-04-26 2024-04-19 2024-04-12 2024-04-05 2024-03-29 2024-03-22 2024-03-15 2024-03-08 2024-03-01 2024-02-16 2024-02-09 2024-02-02 2024-01-26 2024-01-19 2024-01-12 2024-01-05 2023-12-22 2023-12-15 2023-12-08 2023-11-24 2023-11-17 2023-11-10 2023-11-03 2023-10-27 2023-10-20 2023-10-13 2023-10-06 2023-09-29 2023-09-22 2023-09-15 2023-09-08 2023-09-01 2023-08-25 2023-08-18 2023-08-11 2023-08-04 2023-07-28 2023-07-21 2023-07-14 2023-07-07 2023-06-30 2023-06-23 2023-06-16 2023-06-09 2023-06-02 2023-05-26 2023-05-19 2023-05-12 2023-05-05 2023-04-28 2023-04-21 2023-04-14 2023-04-07 2023-03-31 2023-03-24 2023-03-17 2023-03-10 2023-03-03 2023-02-24 2023-02-17 2023-02-10 2023-02-03 2023-01-27 2023-01-21 2023-01-13 2023-01-06 2022-12-30 2022-12-24 2022-12-16 2022-12-09 2022-12-08 Date
|
||||
80926 72882 71830 70159 69833 67653 69012 69005 70922 69934 66029 66168 66686 64308 67070 65017 73318 76478 73677 74019 70426 62241 55701 53744 52326 49500 48175 42473 42336 39905 34679 46033 42786 42795 40675 39766 38360 36480 37779 40026 39455 41790 43334 50337 49386 48913 46173 43611 43648 42982 41225 38304 38828 30434 30232 30051 32193 31615 29210 26192 19917 20377 19409 19253 18223 18044 16127 15701 14436 13970 13610 14133 12886 12065 11500 10919 9777 7647 7966 4937 3908 3691 TOTAL
|
||||
11142 8709 7725 7470 7186 6864 6583 6582 6246 5910 5512 5013 4412 5496 5045 4389 12880 12601 12221 11881 10434 7402 5947 5571 5139 4655 4160 3131 2395 2557 2129 5838 5509 5176 4858 4541 4136 3752 3228 3684 3192 5490 5246 4979 4713 4452 4159 3836 3472 3016 4488 4238 4010 3585 3255 2851 3665 3335 2880 3319 2766 4137 3852 3527 3207 2848 2476 2542 2400 2836 2366 3080 2786 2538 2238 1987 1630 1327 1176 847 588 555 portainer
|
||||
9880 9545 9204 8880 8509 8102 7701 7701 7265 6739 6139 5257 6152 5411 9957 9569 9181 8879 8506 8131 7318 6854 6384 5921 5304 4283 4406 3468 5309 4756 3599 6078 5712 5363 5001 4643 4144 3597 4034 3492 4252 3817 3241 8250 8000 7767 7521 7293 7034 6803 6575 6325 6136 5808 5613 5426 5247 5029 4775 4482 4212 3978 3759 3498 3263 3035 2810 2532 2229 1960 1569 2036 1730 1356 1359 1359 1070 888 727 477 285 264 filebrowser
|
||||
2505 2487 2464 2450 2440 2423 2407 2407 2384 2349 2303 2264 2222 2190 2150 2095 2068 2031 1999 1974 1910 1883 1845 1813 1780 1736 1693 1612 1574 1546 1469 1429 1378 1343 1321 1301 1277 1260 1239 1223 1199 1191 1178 1167 1122 1079 1036 1001 959 915 841 787 778 647 635 622 618 589 527 451 353 326 313 300 289 277 262 252 240 227 218 193 183 168 142 126 98 88 75 39 30 29 arpspoof
|
||||
2357 2342 2327 2310 2299 2289 2268 2268 2249 2215 2165 2131 2088 2053 2010 1967 1936 1903 1867 1837 1767 1733 1693 1656 1626 1578 1540 1468 1429 1388 1314 1285 1253 1208 1183 1176 1163 1152 1141 1134 1125 1113 1105 1084 1038 995 949 907 867 827 759 707 700 577 568 557 544 519 461 389 283 261 249 238 231 219 210 195 189 179 166 152 133 123 108 98 80 66 51 23 15 14 xteve
|
||||
2290 2283 2275 2262 2252 2241 2234 2234 2205 2180 2142 2105 2076 2030 1989 1939 1910 1884 1855 1830 1780 1737 1692 1669 1642 1605 1564 1494 1452 1414 1345 1318 1279 1245 1213 1208 1196 1185 1176 1168 1153 1141 1137 1129 1084 1045 1000 960 919 877 805 749 741 608 595 582 577 541 481 414 313 288 275 263 249 240 231 214 200 190 171 157 148 134 110 100 85 78 70 37 25 22 organizr
|
||||
2213 814 726 627 609 775 652 651 2399 2319 2230 2155 2068 1983 1896 1811 1727 1643 1565 1462 1259 1167 1071 971 860 768 660 460 351 344 358 373 330 692 630 570 487 426 1712 1662 1590 1542 1500 1457 1373 1302 1234 1154 1075 995 896 818 788 619 561 523 461 375 261 205 495 448 409 353 291 331 285 274 254 173 262 268 268 251 193 193 225 172 181 156 201 196 jellyfin
|
||||
2080 2063 2044 2032 2009 1985 1968 1968 1946 1910 1853 1801 1755 1702 1655 1599 1562 1514 1484 1460 1380 1342 1298 1260 1219 1173 1125 1032 995 957 869 825 766 723 687 659 636 619 608 588 576 552 540 529 477 415 364 306 255 200 119 864 836 693 659 637 621 586 516 434 302 271 235 212 178 144 121 76 188 170 121 148 113 223 174 119 117 123 104 45 19 14 zoneminder
|
||||
2007 2001 1990 1986 1979 1967 1961 1961 1941 1909 1872 1828 1796 1762 1724 1676 1650 1626 1607 1583 1534 1508 1483 1463 1436 1401 1378 1297 1259 1218 1156 1117 1083 1054 1037 1023 1017 1007 1003 1000 994 988 982 977 946 909 867 829 785 747 679 628 617 489 480 472 462 432 376 310 215 189 177 170 166 158 153 138 126 114 104 89 87 82 64 52 46 43 37 19 13 13 teamspeak
|
||||
1822 130 118 105 97 150 145 145 113 103 273 250 224 200 167 142 107 212 192 175 130 104 196 171 149 122 356 299 277 256 213 188 166 135 114 105 93 77 105 99 94 85 78 104 81 83 84 77 72 94 85 58 103 50 49 47 61 82 94 120 49 44 31 33 28 31 27 23 20 16 11 7 2 - - - - - - - - - sabnzbd
|
||||
1808 1806 1804 1799 1796 1793 1785 1785 1768 1739 1693 1658 1620 1596 1555 1514 1486 1467 1441 1419 1377 1350 1328 1304 1279 1236 1209 1151 1128 1098 1035 1005 968 931 912 908 905 900 895 893 889 888 879 874 843 810 777 742 708 676 615 563 560 438 436 431 427 396 344 279 188 169 150 143 139 133 123 105 83 125 117 108 92 89 68 53 47 38 29 13 7 7 gazpar2mqtt
|
||||
1754 1750 1739 1730 1726 1723 1721 1721 1711 1685 1649 1621 1589 1559 1524 1485 1448 1430 1407 1382 1342 1313 1288 1264 1237 1209 1176 1106 1079 1048 994 970 929 903 889 885 883 878 869 866 858 856 853 850 817 784 749 711 675 645 580 519 509 385 381 372 366 335 287 227 136 119 110 106 98 89 82 71 67 62 56 49 44 37 68 68 57 41 37 19 10 9 ubooquity
|
||||
1466 1430 1381 1346 1303 1266 1233 1232 1151 1091 1008 940 880 806 732 628 530 5291 5234 5190 4304 1538 380 500 412 312 700 568 509 427 424 348 333 387 322 281 232 254 219 228 196 161 198 208 770 723 674 621 571 521 431 363 343 205 187 172 156 104 338 263 152 113 92 74 54 35 14 - - - - - - - - - - - - - - - sponsorblockcast
|
||||
1455 1450 1442 1439 1434 1432 1425 1425 1407 1381 1347 1316 1284 1250 1215 1176 1142 1118 1094 1069 1020 992 966 940 905 877 842 775 750 723 667 634 594 564 547 540 536 529 521 516 514 512 508 501 464 427 391 356 314 277 209 159 153 29 287 280 277 248 197 130 34 39 26 55 46 42 37 29 22 26 55 51 43 37 44 44 40 31 30 12 8 7 tdarr
|
||||
1455 1445 1443 1430 1423 1417 1409 1409 1396 1375 1355 1326 1298 1269 1248 1219 1197 1180 1151 1132 1077 1056 1025 1010 991 968 935 879 858 832 788 764 741 720 706 702 698 687 681 676 670 662 659 649 620 590 559 529 503 478 422 385 376 292 279 269 260 232 193 146 76 47 61 49 35 39 31 17 9 - - - - - - - - - - - - - binance_trading_bot
|
||||
1417 1321 1214 1112 981 1255 1165 1165 1059 933 801 647 1201 1063 887 1843 1734 1654 1540 1439 1180 1009 832 615 803 787 557 181 428 826 472 819 643 582 819 712 590 485 894 828 739 638 1466 1404 1300 1216 1123 1019 916 817 672 526 610 384 352 1101 1049 963 847 694 481 709 627 556 461 359 363 504 363 293 364 340 340 325 323 323 337 312 407 266 240 225 qbittorrent
|
||||
1357 1314 1258 1179 1093 548 2125 2125 2052 1970 1870 1794 1714 1654 1561 1466 1383 1282 1092 910 927 1710 1628 1527 1419 1289 1169 916 951 831 477 1416 1310 1145 1001 874 811 755 653 860 797 726 640 511 860 753 639 533 1392 1321 1240 1163 1124 965 939 910 887 836 761 656 515 492 834 803 755 709 672 607 450 490 416 365 279 254 504 397 403 272 289 35 59 39 myelectricaldata
|
||||
1346 1346 1346 1346 1346 1346 1346 1346 1334 1314 1280 1256 1228 1194 1169 1143 1123 1101 1085 1071 1036 1020 1004 988 962 947 923 875 853 831 783 759 728 704 691 691 691 691 691 691 691 691 691 691 659 629 599 569 539 508 446 398 398 278 278 275 275 251 203 143 53 38 31 31 31 31 31 31 30 30 120 110 99 91 68 65 53 42 35 16 11 9 papermerge
|
||||
1345 1310 1255 1202 1163 1115 1071 1071 999 950 886 831 764 708 633 537 467 399 322 243 341 263 170 690 629 561 493 376 313 252 128 164 254 194 158 130 95 69 51 37 72 29 289 274 226 183 141 102 62 16 223 166 163 31 18 5 - - - - - - - - - - - - - - - - - - - - - - - - - - postgres
|
||||
1338 1327 1321 1315 1309 1303 1292 1292 1282 1256 1231 1210 1188 1166 1142 1111 1092 1072 1043 1026 976 956 933 912 896 877 853 810 793 772 730 707 680 663 647 641 637 635 628 621 615 610 607 597 571 545 523 498 474 449 404 369 363 276 269 263 251 225 189 146 83 70 62 59 54 49 41 26 90 85 86 78 72 69 52 47 45 31 31 13 7 7 elasticsearch
|
||||
1297 1271 1246 1234 1222 1207 1194 1194 1182 1154 1128 1100 1076 1056 1026 991 963 948 924 898 859 832 807 779 758 723 695 627 599 566 516 486 450 418 402 386 377 357 340 328 318 302 296 283 245 207 169 131 308 280 226 183 166 562 550 541 522 477 417 348 242 221 209 196 186 180 171 145 144 133 119 102 103 150 132 119 99 73 64 33 27 27 overseerr
|
||||
1227 1205 1178 1146 1126 1097 1076 1076 1044 1001 951 907 866 824 788 736 696 664 617 574 498 466 410 364 311 262 202 369 317 245 129 224 169 715 685 653 621 597 573 553 519 490 465 440 399 358 301 255 196 146 77 22 124 40 26 37 6 - - - - - - - - - - - - - - - - - - - - - - - - - free_games_claimer
|
||||
1155 1136 1099 1064 1037 993 962 961 905 860 809 756 705 652 582 506 412 1111 1054 1013 923 877 835 789 732 687 631 531 490 453 322 357 547 492 453 420 350 302 247 242 199 169 137 415 352 660 606 554 506 456 367 281 404 279 291 215 394 345 272 137 235 373 337 306 282 232 284 228 298 268 243 201 170 122 188 144 176 150 131 91 59 57 guacamole
|
||||
1045 382 370 378 394 388 483 483 417 416 460 379 428 23 433 430 436 426 352 356 403 457 460 457 474 485 468 454 518 439 377 430 422 336 384 391 65 65 65 65 65 65 65 65 35 1424 1360 1294 1246 1191 1107 1033 1008 865 829 803 773 722 639 546 425 380 346 320 283 247 246 288 248 191 243 192 192 217 146 146 121 90 88 55 37 35 sonarr_nas
|
||||
1038 1034 1019 1006 998 988 983 983 966 938 903 873 833 791 748 698 661 629 603 573 520 478 440 412 382 346 305 237 201 164 87 184 138 196 168 156 147 133 124 117 109 96 91 767 725 685 650 613 579 539 471 416 406 278 270 249 242 215 154 75 103 76 54 259 251 240 232 218 216 204 199 180 168 148 135 119 97 82 72 41 32 29 whoogle-search
|
||||
1034 1028 1024 1014 1008 999 993 993 978 952 909 877 844 809 774 724 693 673 641 614 554 518 482 454 424 384 341 276 236 206 146 106 73 35 11 8 6 1 546 535 527 519 512 504 467 436 404 365 326 285 217 163 157 30 59 48 44 291 240 174 77 51 40 34 32 54 46 38 29 22 38 34 19 25 61 61 50 49 43 21 17 17 seafile
|
||||
1028 1021 1015 1015 1008 1004 1002 1002 975 959 924 889 859 827 789 750 714 694 674 648 607 577 554 528 511 476 442 377 348 317 248 216 180 149 128 119 110 104 98 92 85 75 64 608 570 529 482 448 410 376 307 258 250 118 109 91 82 341 287 220 121 103 90 88 84 80 73 59 93 92 87 81 73 65 50 40 39 30 24 9 4 4 ombi
|
||||
992 977 956 947 938 918 901 901 883 844 798 763 715 683 638 586 546 520 485 456 386 347 311 272 244 198 133 218 170 135 372 325 281 228 200 182 165 157 144 135 111 83 1008 994 954 904 863 824 772 735 657 594 577 444 422 414 397 360 297 222 109 95 256 245 233 216 204 183 162 148 140 117 90 72 145 145 126 80 97 67 54 54 transmission_openvpn
|
||||
887 883 882 875 868 860 856 856 834 806 766 728 695 659 622 585 560 534 511 489 436 405 371 339 300 276 242 169 132 99 33 98 59 531 500 488 476 476 475 473 467 462 462 461 431 401 366 336 304 271 202 153 152 30 28 19 334 306 256 194 101 88 82 76 74 71 67 63 61 55 55 51 50 48 34 33 31 32 32 20 18 18 joal
|
||||
886 873 860 841 828 813 791 791 770 738 697 656 621 587 555 518 485 458 422 400 329 288 249 217 182 385 335 256 219 193 116 155 113 143 274 252 238 215 201 185 172 156 129 137 149 139 46 139 144 154 152 108 146 111 101 61 103 46 111 99 102 84 21 107 94 84 101 105 88 51 23 66 10 86 22 22 73 72 81 69 73 69 calibre_web
|
||||
822 803 780 765 743 725 712 712 686 665 634 607 579 541 504 467 440 410 382 354 285 250 203 159 266 227 185 247 218 187 86 213 157 166 129 173 156 140 117 450 433 421 409 386 344 306 257 215 164 272 199 129 331 194 184 171 153 247 177 97 203 180 151 138 120 104 108 150 133 116 96 159 149 130 105 85 69 74 81 48 24 23 joplin
|
||||
811 804 793 783 780 776 768 768 753 728 686 654 625 587 552 507 477 453 426 399 344 322 292 261 239 215 189 115 79 43 194 166 130 93 78 75 63 58 49 831 824 821 819 806 767 728 695 664 632 599 534 485 474 348 344 335 328 297 248 188 88 71 62 59 54 51 41 31 27 79 70 63 56 46 29 25 55 49 45 27 23 22 spotweb
|
||||
799 654 690 629 718 632 730 730 641 477 327 627 716 622 809 705 595 554 648 583 619 519 286 6 972 914 853 732 689 641 533 485 421 347 289 233 808 771 732 710 680 660 631 607 567 520 468 415 372 330 258 197 168 175 142 230 203 153 169 321 231 185 129 606 588 562 542 501 465 434 404 373 368 328 276 192 142 7 90 53 38 35 mealie
|
||||
778 764 745 721 700 676 655 655 609 571 512 451 399 344 289 208 645 601 560 524 450 404 346 289 228 147 714 624 564 521 419 380 323 270 231 200 173 144 218 200 177 158 140 394 350 301 250 205 139 466 376 315 298 149 133 531 520 478 417 328 216 186 170 155 138 121 88 303 282 266 241 221 198 168 148 125 102 87 80 45 21 19 addons_updater
|
||||
761 752 740 737 730 712 698 698 679 656 614 578 547 514 477 433 401 377 339 309 264 230 206 175 142 106 47 386 351 321 249 212 171 134 107 97 83 77 71 568 563 556 551 548 505 469 431 393 358 324 260 206 199 69 63 55 407 373 323 255 157 137 126 120 114 109 104 98 91 86 79 78 74 71 59 46 40 34 29 12 7 7 inadyn
|
||||
749 733 720 707 694 683 678 678 665 642 612 585 564 538 510 473 451 431 414 393 346 318 295 267 231 207 188 126 100 138 74 98 53 267 248 234 214 206 195 189 186 178 171 162 129 94 50 548 510 485 435 399 395 307 304 293 290 274 236 184 115 94 81 76 66 52 43 169 153 143 138 131 119 111 89 75 65 55 46 29 17 15 wger
|
||||
740 488 538 352 732 65 65 65 45 31 9 1160 1016 883 730 1132 1001 867 625 1101 836 665 798 653 479 339 619 457 546 315 302 760 579 750 620 443 453 545 403 455 342 211 353 203 429 700 576 419 500 653 653 545 456 558 499 404 758 649 497 310 481 367 209 298 299 359 394 249 365 269 316 429 325 238 468 468 405 328 283 193 124 94 nextcloud_ocr
|
||||
738 648 1184 1137 1102 1061 1015 1015 941 850 772 679 593 499 716 602 499 390 82 1556 1399 1331 1255 1164 1085 995 885 673 525 412 1073 989 910 836 771 719 668 628 572 513 452 380 354 285 267 265 291 272 271 280 283 234 316 313 246 225 233 263 271 321 319 216 211 213 221 274 203 206 277 145 202 333 260 277 254 254 294 218 282 205 204 195 transmission_ls
|
||||
707 679 654 630 605 577 554 554 516 473 423 377 325 274 125 1223 1190 1165 1111 1075 994 953 910 868 824 778 728 640 600 553 483 438 378 330 281 252 224 200 169 152 118 96 65 115 85 55 109 80 984 928 841 778 758 610 579 562 544 496 427 342 226 183 149 140 143 130 137 156 125 97 113 118 152 127 122 122 120 86 122 79 67 65 webtop_kde
|
||||
678 590 1025 970 921 863 814 814 718 619 84 839 764 687 562 586 584 595 501 501 511 773 675 579 696 583 782 539 522 543 1171 1097 1007 918 855 785 726 673 615 573 503 447 463 659 583 485 623 537 452 622 531 441 492 465 567 496 392 596 490 620 472 711 651 561 472 692 642 565 495 397 374 437 353 493 407 393 377 98 359 91 321 313 epicgamesfree
|
||||
651 634 620 603 579 560 539 539 482 438 384 335 282 31 352 279 329 271 362 305 334 268 162 250 468 419 374 272 215 216 336 289 234 187 151 116 251 233 218 208 189 167 223 193 452 411 365 320 266 209 196 150 240 99 176 145 179 407 339 251 259 232 211 194 169 139 200 167 150 123 143 132 184 157 93 114 94 73 52 44 34 32 tandoor_recipes
|
||||
565 560 558 553 551 548 544 544 533 513 487 470 449 430 409 385 365 352 335 318 281 259 240 215 199 178 160 109 91 71 26 85 54 68 53 49 39 36 27 584 580 579 575 572 549 525 503 477 454 429 381 342 339 255 254 250 246 225 192 150 88 76 68 63 60 58 55 50 47 45 41 39 33 29 20 16 8 24 18 5 7 7 fireflyiii_fints_importer
|
||||
532 491 433 489 410 503 436 436 450 449 532 449 461 554 457 530 443 443 398 475 384 439 446 549 461 535 441 495 425 504 337 376 385 374 343 346 385 324 367 312 232 316 413 358 352 353 348 339 437 364 400 303 364 260 310 306 404 326 354 432 288 279 250 254 307 243 252 236 226 196 225 281 231 243 288 288 237 181 298 226 195 195 plex_nas
|
||||
521 488 461 424 393 344 476 476 414 347 512 456 403 355 401 334 133 119 576 541 447 410 358 295 264 448 389 299 251 302 211 414 353 302 262 247 217 187 157 192 166 135 498 476 419 364 309 262 199 143 296 229 207 53 47 28 41 - - - - - - - - - - - - - - - - - - - - - - - - - portainer_agent
|
||||
473 439 402 375 347 312 273 273 202 148 158 878 828 762 702 625 552 493 419 359 224 128 46 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - whatsapper
|
||||
425 357 335 456 420 382 597 597 530 477 392 553 489 405 471 388 469 383 556 496 347 437 359 443 367 374 343 448 388 337 179 395 316 336 271 357 302 257 238 270 232 244 329 281 412 348 283 272 442 382 286 222 293 262 224 340 313 251 386 287 220 217 217 249 224 215 226 214 395 371 339 300 287 251 207 169 163 144 110 68 47 47 fireflyiii
|
||||
411 369 544 519 497 454 409 409 559 510 449 370 804 758 706 644 594 543 440 357 863 797 756 703 643 582 497 590 518 447 387 513 443 343 442 386 414 362 299 519 481 451 420 376 704 640 567 497 436 354 599 529 491 341 286 291 291 267 503 411 280 382 347 322 281 250 86 290 257 222 235 191 186 208 200 200 128 95 91 47 31 29 radarr_nas
|
||||
409 393 366 350 331 315 287 287 241 339 293 239 290 246 227 232 231 453 408 373 307 250 230 416 383 352 307 231 221 217 146 216 171 125 213 191 229 206 161 201 173 283 262 235 175 334 278 228 176 484 413 357 342 215 204 187 164 467 406 331 227 198 174 147 114 147 130 184 179 157 135 114 107 114 102 102 87 72 61 33 22 20 cloudcommander
|
||||
340 335 321 304 290 279 265 265 213 182 133 618 576 545 508 446 410 382 351 324 260 221 163 127 83 13 32 267 223 186 112 78 36 1065 1044 1031 1023 1011 1006 998 989 982 979 973 937 897 864 827 789 750 685 633 623 498 489 483 471 438 383 317 223 203 193 190 183 171 165 154 149 143 132 122 118 104 85 76 67 56 49 24 20 18 baikal
|
||||
336 251 270 459 397 343 279 278 323 255 250 398 329 263 252 221 205 207 188 203 315 250 552 495 442 380 314 208 145 138 62 160 147 149 105 137 90 92 69 35 105 98 82 111 103 87 97 92 94 92 35 205 194 100 80 54 74 74 174 124 42 34 46 58 53 70 60 48 21 23 29 22 29 28 2 2 0 - - - - - immich
|
||||
335 331 327 326 324 322 315 315 276 248 213 181 150 120 82 39 1349 1322 1284 1267 1224 1197 1172 1144 1119 1091 1069 1019 994 973 921 887 856 829 815 810 804 802 801 797 795 790 787 785 751 715 679 647 613 579 511 461 457 335 331 324 322 298 247 184 91 75 67 64 63 60 60 58 55 52 51 49 45 41 28 24 25 22 18 4 1 1 requestrr
|
||||
329 326 324 316 307 297 290 290 260 236 207 177 148 119 89 57 30 10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - comixed
|
||||
319 329 391 371 347 309 545 545 497 462 405 354 296 526 480 424 382 330 245 238 396 346 299 223 157 343 297 200 167 221 124 183 265 228 194 181 163 150 136 131 125 118 251 241 206 152 191 146 356 314 243 184 171 129 114 99 384 352 293 226 130 111 95 88 100 94 82 146 138 128 117 112 100 90 70 56 44 39 34 11 7 6 flaresolverr
|
||||
315 292 268 236 474 439 416 416 377 340 297 256 202 345 307 259 205 274 229 645 568 541 501 457 433 392 345 256 218 180 100 274 230 196 166 484 470 453 438 426 419 404 385 371 332 300 271 242 208 179 124 79 503 411 391 371 363 335 289 233 159 131 131 266 256 237 225 203 184 171 150 150 136 113 91 89 71 43 60 38 22 20 scrutiny-fa
|
||||
304 285 249 210 245 226 251 251 1141 1107 1059 1018 970 922 874 815 776 738 695 669 599 560 527 494 466 426 371 284 235 168 163 186 254 213 180 137 423 406 384 371 359 339 332 318 288 255 197 135 398 350 288 246 235 126 269 247 228 191 133 207 108 121 278 261 246 225 214 112 170 152 126 96 91 87 143 143 121 112 103 78 81 81 photoprism
|
||||
301 299 295 295 293 293 293 293 258 244 209 185 152 128 94 64 48 184 162 146 103 79 54 40 97 70 41 121 98 76 28 105 75 48 35 34 29 27 25 22 21 20 17 52 120 87 50 390 359 327 263 214 211 90 87 84 81 56 189 129 38 26 20 17 17 46 43 40 34 28 27 23 21 20 25 25 24 22 19 6 3 3 mylar3
|
||||
297 294 281 270 262 253 238 238 196 168 130 204 172 133 456 408 376 360 323 302 249 218 188 156 120 469 432 360 332 296 227 188 156 121 101 94 88 77 66 87 79 72 57 70 84 88 88 83 83 107 104 47 184 54 60 60 79 94 198 131 68 52 46 44 41 55 53 47 51 44 53 44 37 56 59 45 42 33 63 33 32 31 plex-media-manager
|
||||
288 282 279 276 274 266 256 256 235 206 172 134 92 179 136 95 682 655 626 589 513 481 443 405 343 302 269 198 160 125 46 187 128 81 57 112 109 99 90 87 75 71 67 66 29 187 150 115 74 644 571 518 510 386 384 376 374 352 301 240 145 113 107 106 101 97 90 84 74 64 67 61 56 51 29 29 20 8 44 28 26 26 webtrees
|
||||
281 276 269 258 253 247 241 241 222 204 179 154 131 116 92 68 50 24 138 125 95 74 52 52 80 58 35 197 179 156 118 94 72 53 41 39 31 25 18 22 16 103 100 92 67 41 60 38 213 191 145 112 108 21 213 209 205 188 153 111 47 37 30 27 36 35 28 21 29 26 22 23 17 25 32 32 21 22 20 11 9 9 unpackerr
|
||||
278 382 343 317 275 257 374 374 333 283 360 293 325 262 366 314 261 24 215 324 212 332 286 237 300 249 343 234 307 262 129 193 127 252 196 189 125 181 171 151 172 976 968 953 927 881 841 800 757 718 666 616 598 501 477 453 436 396 350 291 219 187 148 161 186 150 145 86 127 83 155 124 112 127 115 115 125 98 112 86 107 69 calibre
|
||||
275 267 263 266 268 269 303 303 310 296 305 298 304 306 309 296 300 302 250 250 284 311 311 331 344 340 352 323 299 308 270 300 296 290 272 257 264 257 252 244 244 245 235 268 254 254 253 230 251 261 253 214 256 226 212 201 237 241 244 273 183 186 177 170 168 173 168 157 146 123 148 151 120 138 129 129 120 114 142 100 114 113 prowlarr
|
||||
261 258 251 250 246 236 230 230 189 163 117 73 256 216 183 147 122 100 58 157 98 64 186 155 125 102 72 70 594 563 494 459 429 395 377 371 362 354 351 347 341 333 331 325 286 248 202 160 120 82 300 250 244 115 113 107 99 67 267 201 100 84 67 59 47 39 35 25 17 15 38 32 23 26 32 32 22 19 53 33 27 26 piwigo
|
||||
260 195 230 204 217 185 129 128 264 200 9 723 668 606 559 501 456 409 340 279 152 171 104 367 326 275 212 270 230 185 86 219 164 288 244 203 164 112 128 171 134 676 654 633 590 546 509 461 418 380 301 253 230 133 113 87 413 377 330 266 188 158 126 109 95 79 119 92 66 42 277 270 243 225 193 164 139 109 97 61 43 40 browserless_chrome
|
||||
246 221 264 249 225 201 117 117 279 227 215 211 257 212 298 250 222 186 261 229 156 244 195 154 186 143 168 177 138 109 80 102 91 38 99 65 50 48 31 36 17 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - changedetection.io
|
||||
243 228 206 192 168 149 135 135 102 73 254 220 185 143 111 53 21 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - linkwarden
|
||||
242 234 235 245 253 239 283 282 275 275 287 267 268 279 286 253 274 272 234 222 2600 1318 270 257 258 211 268 250 236 241 215 229 237 221 205 203 187 195 195 194 195 195 192 237 231 219 224 219 233 244 241 189 247 188 193 187 220 184 239 253 183 177 181 171 169 161 159 154 148 110 134 140 111 129 118 118 94 106 136 104 95 95 jackett_nas
|
||||
218 209 197 182 159 318 305 305 276 253 221 180 252 218 166 142 140 171 127 32 170 141 167 129 209 183 148 134 56 133 65 83 160 130 109 97 84 85 76 91 77 133 113 94 129 92 132 101 85 117 61 310 299 215 209 203 189 163 114 134 102 68 20 69 62 94 87 74 59 45 79 72 63 53 39 57 38 45 32 21 14 12 gitea
|
||||
187 167 150 126 353 337 326 326 283 244 205 167 125 237 209 174 128 220 164 606 540 497 460 420 386 345 308 237 200 150 70 220 177 144 114 797 792 778 770 757 751 740 732 717 684 658 631 603 575 545 497 459 442 348 335 320 313 290 248 188 112 91 104 158 144 132 119 103 81 130 127 112 97 74 81 81 67 48 84 58 58 58 scrutiny
|
||||
184 154 131 148 129 362 340 340 284 246 205 159 1035 987 951 900 859 829 801 754 665 629 599 568 529 493 443 376 342 313 239 204 166 130 107 99 88 79 66 52 57 44 37 610 561 521 480 440 399 357 281 228 223 88 78 65 55 102 45 26 - - - - - - - - - - - - - - - - - - - - - - jellyseerr
|
||||
179 172 163 147 614 608 597 597 561 521 484 447 413 385 350 308 270 241 187 153 173 473 435 404 374 338 302 217 176 128 120 259 214 172 143 183 160 151 144 128 359 352 343 331 293 251 201 145 154 253 174 445 441 311 299 287 268 227 169 206 101 158 140 132 122 117 106 98 127 120 117 107 93 80 84 84 49 103 98 75 69 68 bazarr
|
||||
179 165 151 144 157 142 188 188 179 191 185 177 170 240 181 182 153 211 147 114 109 197 177 173 170 164 158 164 200 157 115 135 142 134 128 120 124 82 107 115 126 102 100 129 136 555 509 463 420 380 309 250 239 105 131 108 127 228 159 181 112 108 90 105 286 266 248 221 200 179 161 123 107 85 150 150 145 127 99 60 72 66 emby
|
||||
156 149 143 138 131 122 110 110 215 188 147 110 365 330 292 248 216 185 148 120 385 355 318 296 262 234 199 131 334 295 228 191 150 120 94 81 105 97 94 91 84 79 77 110 116 111 104 101 110 139 133 77 205 76 55 71 141 109 224 150 82 76 66 64 75 69 60 60 62 50 67 58 43 65 58 58 52 42 68 51 45 44 lidarr_nas
|
||||
141 150 177 162 225 215 195 195 191 318 292 257 218 318 287 238 339 282 381 465 478 403 378 402 375 445 370 350 352 319 150 1274 1214 1155 1121 1094 1070 1043 1025 1003 979 956 942 922 868 814 764 709 657 605 511 433 400 238 311 284 252 227 137 301 244 187 351 322 301 262 236 202 158 111 176 148 152 108 134 134 123 84 104 57 86 80 paperless_ng
|
||||
140 247 237 227 211 194 173 173 128 317 274 219 267 215 150 2 314 281 237 181 190 241 197 206 327 287 225 307 267 228 147 243 197 136 225 212 198 184 162 151 135 127 122 328 285 239 194 141 222 180 114 253 243 110 427 419 414 382 327 256 156 134 120 99 86 95 177 156 131 132 118 103 84 83 77 73 62 51 47 23 16 15 fireflyiii_data_importer
|
||||
133 133 133 129 128 128 128 128 110 86 344 320 293 262 227 201 175 155 133 119 92 69 43 24 1 319 287 213 184 145 75 95 181 145 122 116 105 96 77 71 60 50 218 212 175 138 88 130 87 628 556 499 491 367 362 353 343 314 260 193 90 63 50 51 207 193 186 167 160 149 140 133 119 103 80 64 50 39 26 7 4 4 vaultwarden
|
||||
126 111 96 75 143 128 113 113 66 1929 1888 1853 1821 1790 1754 1705 1684 1660 1631 1603 1532 1495 1457 1431 1393 1352 1310 1240 1202 1168 1107 1067 1033 994 976 971 962 952 939 933 928 923 917 906 870 837 797 757 719 680 615 566 556 435 426 412 406 377 323 259 162 142 128 117 108 94 83 76 61 57 55 45 39 31 37 37 19 11 28 12 10 8 resiliosync
|
||||
119 113 107 101 92 87 75 75 240 225 190 167 151 131 101 72 282 266 246 226 182 158 132 114 97 72 301 254 227 207 154 125 100 72 53 44 39 266 262 256 247 239 230 219 182 146 108 67 265 229 163 109 103 58 45 126 114 84 236 170 75 56 42 35 30 13 9 42 27 98 87 73 72 65 45 38 55 48 43 21 10 9 grav
|
||||
102 86 95 155 152 146 134 134 123 220 179 137 133 265 223 192 159 178 158 292 171 233 167 389 342 290 229 265 209 154 102 290 227 169 120 186 155 125 110 326 306 290 267 244 195 144 202 143 305 255 166 208 176 195 181 152 128 371 305 232 118 194 161 140 119 88 98 146 119 104 139 121 98 75 155 155 134 110 95 82 17 17 code_server
|
||||
84 82 73 67 70 66 446 446 413 391 350 322 293 268 237 184 131 113 77 55 50 86 81 165 136 112 85 83 161 119 53 129 91 132 105 89 86 73 64 63 57 58 52 93 116 70 74 73 73 331 269 216 203 80 77 72 61 263 211 144 49 39 99 87 78 72 69 63 54 28 17 20 17 22 69 62 41 28 45 18 7 5 myelectricaldata_dev
|
||||
78 73 79 72 78 81 97 97 89 99 92 96 90 92 95 86 80 85 57 76 87 96 90 86 91 109 143 92 105 69 103 148 153 149 165 134 160 124 332 332 332 332 332 332 312 292 272 252 232 212 170 138 138 58 58 111 119 128 142 166 110 109 112 105 103 97 108 95 115 76 82 75 79 84 127 105 93 88 78 53 51 51 omada
|
||||
66 61 62 61 60 61 92 92 1885 1858 1824 1786 1759 1714 1677 1638 1618 1595 1565 1544 1494 1456 1420 1392 1360 1322 1283 1219 1187 1156 1111 1078 1048 1018 990 984 977 968 957 952 950 944 941 936 894 856 819 781 747 711 645 594 584 458 449 443 440 405 352 292 194 174 160 154 150 146 138 129 115 112 109 100 94 72 62 62 76 61 84 57 50 50 nzbget
|
||||
65 36 37 47 3 28 33 33 34 82 19 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - birdnet-pi
|
||||
60 77 67 67 75 68 124 124 96 140 105 85 114 20 120 103 106 98 107 87 129 102 99 115 114 116 115 118 107 134 67 146 115 82 82 83 89 90 79 90 82 79 76 106 99 97 95 88 87 110 111 72 111 79 71 64 84 105 116 143 79 70 57 58 56 71 65 60 59 49 60 48 54 62 52 52 43 39 65 49 42 41 readarr_nas
|
||||
58 49 34 27 19 10 20 20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openproject
|
||||
52 42 149 140 130 115 108 108 72 157 117 83 161 117 80 149 128 106 59 98 99 62 61 54 218 186 145 70 89 55 30 92 52 35 30 24 40 40 27 40 186 173 163 154 113 73 337 299 262 222 151 99 87 68 64 52 47 132 76 133 36 29 21 14 22 13 1 - - - - - - - - - - - - - - - autobrr
|
||||
48 37 35 37 37 39 80 80 54 73 62 69 117 96 64 57 58 57 61 41 55 64 64 52 54 60 45 48 43 50 35 626 592 559 544 540 536 531 529 525 520 517 511 511 474 437 400 359 325 283 217 167 161 35 35 31 106 73 86 111 52 41 29 45 32 38 32 33 32 30 31 36 26 37 30 23 20 24 38 22 26 26 flexget
|
||||
31 24 17 3 4 - 17 17 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - navidrome
|
||||
28 34 35 46 2 49 151 151 111 70 68 15 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - birdnet-go
|
||||
25 28 25 20 69 64 58 58 35 80 53 36 34 37 64 39 37 56 30 48 31 50 33 31 34 32 79 32 36 31 29 40 38 31 31 17 21 15 29 13 14 18 22 323 299 277 251 229 206 184 139 103 94 8 5 14 33 42 52 70 28 20 13 11 17 13 15 17 17 10 19 17 14 27 43 38 34 30 24 7 13 11 omada_v3
|
||||
19 19 27 41 28 18 122 122 93 61 36 46 27 28 28 21 42 21 6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - codex
|
||||
2 50 31 13 12 8 38 38 109 87 54 34 32 105 76 45 19 25 178 160 117 92 75 51 22 172 146 94 68 46 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - signalk
|
||||
- - - - - - - - - - - - - - 43 35 23 17 8 22 11 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - overleaf
|
||||
2024-08-02 2024-07-26 2024-07-19 2024-07-12 2024-07-05 2024-06-28 2024-06-21 2024-06-14 2024-06-07 2024-05-31 2024-05-24 2024-05-24 2024-05-17 2024-05-10 2024-05-03 2024-04-26 2024-04-19 2024-04-12 2024-04-05 2024-03-29 2024-03-22 2024-03-15 2024-03-08 2024-03-01 2024-02-16 2024-02-09 2024-02-02 2024-01-26 2024-01-19 2024-01-12 2024-01-05 2023-12-22 2023-12-15 2023-12-08 2023-11-24 2023-11-17 2023-11-10 2023-11-03 2023-10-27 2023-10-20 2023-10-13 2023-10-06 2023-09-29 2023-09-22 2023-09-15 2023-09-08 2023-09-01 2023-08-25 2023-08-18 2023-08-11 2023-08-04 2023-07-28 2023-07-21 2023-07-14 2023-07-07 2023-06-30 2023-06-23 2023-06-16 2023-06-09 2023-06-02 2023-05-26 2023-05-19 2023-05-12 2023-05-05 2023-04-28 2023-04-21 2023-04-14 2023-04-07 2023-03-31 2023-03-24 2023-03-17 2023-03-10 2023-03-03 2023-02-24 2023-02-17 2023-02-10 2023-02-03 2023-01-27 2023-01-21 2023-01-13 2023-01-06 2022-12-30 2022-12-24 2022-12-16 2022-12-09 2022-12-08 Date
|
||||
86596 92746 94295 90039 80926 72882 71830 70159 69833 67653 69012 69005 70922 69934 66029 66168 66686 64308 67070 65017 73318 76478 73677 74019 70426 62241 55701 53744 52326 49500 48175 42473 42336 39905 34679 46033 42786 42795 40675 39766 38360 36480 37779 40026 39455 41790 43334 50337 49386 48913 46173 43611 43648 42982 41225 38304 38828 30434 30232 30051 32193 31615 29210 26192 19917 20377 19409 19253 18223 18044 16127 15701 14436 13970 13610 14133 12886 12065 11500 10919 9777 7647 7966 4937 3908 3691 TOTAL
|
||||
16729 16499 16274 14119 11142 8709 7725 7470 7186 6864 6583 6582 6246 5910 5512 5013 4412 5496 5045 4389 12880 12601 12221 11881 10434 7402 5947 5571 5139 4655 4160 3131 2395 2557 2129 5838 5509 5176 4858 4541 4136 3752 3228 3684 3192 5490 5246 4979 4713 4452 4159 3836 3472 3016 4488 4238 4010 3585 3255 2851 3665 3335 2880 3319 2766 4137 3852 3527 3207 2848 2476 2542 2400 2836 2366 3080 2786 2538 2238 1987 1630 1327 1176 847 588 555 portainer
|
||||
11150 10830 10519 10206 9880 9545 9204 8880 8509 8102 7701 7701 7265 6739 6139 5257 6152 5411 9957 9569 9181 8879 8506 8131 7318 6854 6384 5921 5304 4283 4406 3468 5309 4756 3599 6078 5712 5363 5001 4643 4144 3597 4034 3492 4252 3817 3241 8250 8000 7767 7521 7293 7034 6803 6575 6325 6136 5808 5613 5426 5247 5029 4775 4482 4212 3978 3759 3498 3263 3035 2810 2532 2229 1960 1569 2036 1730 1356 1359 1359 1070 888 727 477 285 264 filebrowser
|
||||
5295 5289 5283 3973 1822 130 118 105 97 150 145 145 113 103 273 250 224 200 167 142 107 212 192 175 130 104 196 171 149 122 356 299 277 256 213 188 166 135 114 105 93 77 105 99 94 85 78 104 81 83 84 77 72 94 85 58 103 50 49 47 61 82 94 120 49 44 31 33 28 31 27 23 20 16 11 7 2 - - - - - - - - - sabnzbd
|
||||
2561 2548 2530 2517 2505 2487 2464 2450 2440 2423 2407 2407 2384 2349 2303 2264 2222 2190 2150 2095 2068 2031 1999 1974 1910 1883 1845 1813 1780 1736 1693 1612 1574 1546 1469 1429 1378 1343 1321 1301 1277 1260 1239 1223 1199 1191 1178 1167 1122 1079 1036 1001 959 915 841 787 778 647 635 622 618 589 527 451 353 326 313 300 289 277 262 252 240 227 218 193 183 168 142 126 98 88 75 39 30 29 arpspoof
|
||||
2404 2391 2381 2367 2357 2342 2327 2310 2299 2289 2268 2268 2249 2215 2165 2131 2088 2053 2010 1967 1936 1903 1867 1837 1767 1733 1693 1656 1626 1578 1540 1468 1429 1388 1314 1285 1253 1208 1183 1176 1163 1152 1141 1134 1125 1113 1105 1084 1038 995 949 907 867 827 759 707 700 577 568 557 544 519 461 389 283 261 249 238 231 219 210 195 189 179 166 152 133 123 108 98 80 66 51 23 15 14 xteve
|
||||
2336 2324 2315 2303 2290 2283 2275 2262 2252 2241 2234 2234 2205 2180 2142 2105 2076 2030 1989 1939 1910 1884 1855 1830 1780 1737 1692 1669 1642 1605 1564 1494 1452 1414 1345 1318 1279 1245 1213 1208 1196 1185 1176 1168 1153 1141 1137 1129 1084 1045 1000 960 919 877 805 749 741 608 595 582 577 541 481 414 313 288 275 263 249 240 231 214 200 190 171 157 148 134 110 100 85 78 70 37 25 22 organizr
|
||||
2174 2158 2129 2107 2080 2063 2044 2032 2009 1985 1968 1968 1946 1910 1853 1801 1755 1702 1655 1599 1562 1514 1484 1460 1380 1342 1298 1260 1219 1173 1125 1032 995 957 869 825 766 723 687 659 636 619 608 588 576 552 540 529 477 415 364 306 255 200 119 864 836 693 659 637 621 586 516 434 302 271 235 212 178 144 121 76 188 170 121 148 113 223 174 119 117 123 104 45 19 14 zoneminder
|
||||
2049 2038 2030 2021 2007 2001 1990 1986 1979 1967 1961 1961 1941 1909 1872 1828 1796 1762 1724 1676 1650 1626 1607 1583 1534 1508 1483 1463 1436 1401 1378 1297 1259 1218 1156 1117 1083 1054 1037 1023 1017 1007 1003 1000 994 988 982 977 946 909 867 829 785 747 679 628 617 489 480 472 462 432 376 310 215 189 177 170 166 158 153 138 126 114 104 89 87 82 64 52 46 43 37 19 13 13 teamspeak
|
||||
1824 1822 1818 1812 1808 1806 1804 1799 1796 1793 1785 1785 1768 1739 1693 1658 1620 1596 1555 1514 1486 1467 1441 1419 1377 1350 1328 1304 1279 1236 1209 1151 1128 1098 1035 1005 968 931 912 908 905 900 895 893 889 888 879 874 843 810 777 742 708 676 615 563 560 438 436 431 427 396 344 279 188 169 150 143 139 133 123 105 83 125 117 108 92 89 68 53 47 38 29 13 7 7 gazpar2mqtt
|
||||
1779 1774 1768 1764 1754 1750 1739 1730 1726 1723 1721 1721 1711 1685 1649 1621 1589 1559 1524 1485 1448 1430 1407 1382 1342 1313 1288 1264 1237 1209 1176 1106 1079 1048 994 970 929 903 889 885 883 878 869 866 858 856 853 850 817 784 749 711 675 645 580 519 509 385 381 372 366 335 287 227 136 119 110 106 98 89 82 71 67 62 56 49 44 37 68 68 57 41 37 19 10 9 ubooquity
|
||||
1711 1640 1561 1508 1417 1321 1214 1112 981 1255 1165 1165 1059 933 801 647 1201 1063 887 1843 1734 1654 1540 1439 1180 1009 832 615 803 787 557 181 428 826 472 819 643 582 819 712 590 485 894 828 739 638 1466 1404 1300 1216 1123 1019 916 817 672 526 610 384 352 1101 1049 963 847 694 481 709 627 556 461 359 363 504 363 293 364 340 340 325 323 323 337 312 407 266 240 225 qbittorrent
|
||||
1626 1581 1534 1510 1466 1430 1381 1346 1303 1266 1233 1232 1151 1091 1008 940 880 806 732 628 530 5291 5234 5190 4304 1538 380 500 412 312 700 568 509 427 424 348 333 387 322 281 232 254 219 228 196 161 198 208 770 723 674 621 571 521 431 363 343 205 187 172 156 104 338 263 152 113 92 74 54 35 14 - - - - - - - - - - - - - - - sponsorblockcast
|
||||
1611 1513 1435 1394 1345 1310 1255 1202 1163 1115 1071 1071 999 950 886 831 764 708 633 537 467 399 322 243 341 263 170 690 629 561 493 376 313 252 128 164 254 194 158 130 95 69 51 37 72 29 289 274 226 183 141 102 62 16 223 166 163 31 18 5 - - - - - - - - - - - - - - - - - - - - - - - - - - postgres
|
||||
1525 1477 1447 1412 1357 1314 1258 1179 1093 548 2125 2125 2052 1970 1870 1794 1714 1654 1561 1466 1383 1282 1092 910 927 1710 1628 1527 1419 1289 1169 916 951 831 477 1416 1310 1145 1001 874 811 755 653 860 797 726 640 511 860 753 639 533 1392 1321 1240 1163 1124 965 939 910 887 836 761 656 515 492 834 803 755 709 672 607 450 490 416 365 279 254 504 397 403 272 289 35 59 39 myelectricaldata
|
||||
1491 1481 1476 1470 1455 1445 1443 1430 1423 1417 1409 1409 1396 1375 1355 1326 1298 1269 1248 1219 1197 1180 1151 1132 1077 1056 1025 1010 991 968 935 879 858 832 788 764 741 720 706 702 698 687 681 676 670 662 659 649 620 590 559 529 503 478 422 385 376 292 279 269 260 232 193 146 76 47 61 49 35 39 31 17 9 - - - - - - - - - - - - - binance_trading_bot
|
||||
1482 1474 1471 1463 1455 1450 1442 1439 1434 1432 1425 1425 1407 1381 1347 1316 1284 1250 1215 1176 1142 1118 1094 1069 1020 992 966 940 905 877 842 775 750 723 667 634 594 564 547 540 536 529 521 516 514 512 508 501 464 427 391 356 314 277 209 159 153 29 287 280 277 248 197 130 34 39 26 55 46 42 37 29 22 26 55 51 43 37 44 44 40 31 30 12 8 7 tdarr
|
||||
1407 1382 1357 1322 1297 1271 1246 1234 1222 1207 1194 1194 1182 1154 1128 1100 1076 1056 1026 991 963 948 924 898 859 832 807 779 758 723 695 627 599 566 516 486 450 418 402 386 377 357 340 328 318 302 296 283 245 207 169 131 308 280 226 183 166 562 550 541 522 477 417 348 242 221 209 196 186 180 171 145 144 133 119 102 103 150 132 119 99 73 64 33 27 27 overseerr
|
||||
1346 1346 1346 1346 1346 1346 1346 1346 1346 1346 1346 1346 1334 1314 1280 1256 1228 1194 1169 1143 1123 1101 1085 1071 1036 1020 1004 988 962 947 923 875 853 831 783 759 728 704 691 691 691 691 691 691 691 691 691 691 659 629 599 569 539 508 446 398 398 278 278 275 275 251 203 143 53 38 31 31 31 31 31 31 30 30 120 110 99 91 68 65 53 42 35 16 11 9 papermerge
|
||||
1319 1296 1275 1249 1227 1205 1178 1146 1126 1097 1076 1076 1044 1001 951 907 866 824 788 736 696 664 617 574 498 466 410 364 311 262 202 369 317 245 129 224 169 715 685 653 621 597 573 553 519 490 465 440 399 358 301 255 196 146 77 22 124 40 26 37 6 - - - - - - - - - - - - - - - - - - - - - - - - - free_games_claimer
|
||||
1273 1233 1208 1185 1155 1136 1099 1064 1037 993 962 961 905 860 809 756 705 652 582 506 412 1111 1054 1013 923 877 835 789 732 687 631 531 490 453 322 357 547 492 453 420 350 302 247 242 199 169 137 415 352 660 606 554 506 456 367 281 404 279 291 215 394 345 272 137 235 373 337 306 282 232 284 228 298 268 243 201 170 122 188 144 176 150 131 91 59 57 guacamole
|
||||
1082 1069 1061 1057 1034 1028 1024 1014 1008 999 993 993 978 952 909 877 844 809 774 724 693 673 641 614 554 518 482 454 424 384 341 276 236 206 146 106 73 35 11 8 6 1 546 535 527 519 512 504 467 436 404 365 326 285 217 163 157 30 59 48 44 291 240 174 77 51 40 34 32 54 46 38 29 22 38 34 19 25 61 61 50 49 43 21 17 17 seafile
|
||||
1080 1056 1050 1043 1038 1034 1019 1006 998 988 983 983 966 938 903 873 833 791 748 698 661 629 603 573 520 478 440 412 382 346 305 237 201 164 87 184 138 196 168 156 147 133 124 117 109 96 91 767 725 685 650 613 579 539 471 416 406 278 270 249 242 215 154 75 103 76 54 259 251 240 232 218 216 204 199 180 168 148 135 119 97 82 72 41 32 29 whoogle-search
|
||||
1064 978 889 765 799 654 690 629 718 632 730 730 641 477 327 627 716 622 809 705 595 554 648 583 619 519 286 6 972 914 853 732 689 641 533 485 421 347 289 233 808 771 732 710 680 660 631 607 567 520 468 415 372 330 258 197 168 175 142 230 203 153 169 321 231 185 129 606 588 562 542 501 465 434 404 373 368 328 276 192 142 7 90 53 38 35 mealie
|
||||
1054 1038 1029 1013 992 977 956 947 938 918 901 901 883 844 798 763 715 683 638 586 546 520 485 456 386 347 311 272 244 198 133 218 170 135 372 325 281 228 200 182 165 157 144 135 111 83 1008 994 954 904 863 824 772 735 657 594 577 444 422 414 397 360 297 222 109 95 256 245 233 216 204 183 162 148 140 117 90 72 145 145 126 80 97 67 54 54 transmission_openvpn
|
||||
948 903 849 800 738 648 1184 1137 1102 1061 1015 1015 941 850 772 679 593 499 716 602 499 390 82 1556 1399 1331 1255 1164 1085 995 885 673 525 412 1073 989 910 836 771 719 668 628 572 513 452 380 354 285 267 265 291 272 271 280 283 234 316 313 246 225 233 263 271 321 319 216 211 213 221 274 203 206 277 145 202 333 260 277 254 254 294 218 282 205 204 195 transmission_ls
|
||||
900 897 895 892 887 883 882 875 868 860 856 856 834 806 766 728 695 659 622 585 560 534 511 489 436 405 371 339 300 276 242 169 132 99 33 98 59 531 500 488 476 476 475 473 467 462 462 461 431 401 366 336 304 271 202 153 152 30 28 19 334 306 256 194 101 88 82 76 74 71 67 63 61 55 55 51 50 48 34 33 31 32 32 20 18 18 joal
|
||||
840 835 830 819 811 804 793 783 780 776 768 768 753 728 686 654 625 587 552 507 477 453 426 399 344 322 292 261 239 215 189 115 79 43 194 166 130 93 78 75 63 58 49 831 824 821 819 806 767 728 695 664 632 599 534 485 474 348 344 335 328 297 248 188 88 71 62 59 54 51 41 31 27 79 70 63 56 46 29 25 55 49 45 27 23 22 spotweb
|
||||
837 830 809 797 778 764 745 721 700 676 655 655 609 571 512 451 399 344 289 208 645 601 560 524 450 404 346 289 228 147 714 624 564 521 419 380 323 270 231 200 173 144 218 200 177 158 140 394 350 301 250 205 139 466 376 315 298 149 133 531 520 478 417 328 216 186 170 155 138 121 88 303 282 266 241 221 198 168 148 125 102 87 80 45 21 19 addons_updater
|
||||
806 788 774 767 749 733 720 707 694 683 678 678 665 642 612 585 564 538 510 473 451 431 414 393 346 318 295 267 231 207 188 126 100 138 74 98 53 267 248 234 214 206 195 189 186 178 171 162 129 94 50 548 510 485 435 399 395 307 304 293 290 274 236 184 115 94 81 76 66 52 43 169 153 143 138 131 119 111 89 75 65 55 46 29 17 15 wger
|
||||
805 771 744 723 707 679 654 630 605 577 554 554 516 473 423 377 325 274 125 1223 1190 1165 1111 1075 994 953 910 868 824 778 728 640 600 553 483 438 378 330 281 252 224 200 169 152 118 96 65 115 85 55 109 80 984 928 841 778 758 610 579 562 544 496 427 342 226 183 149 140 143 130 137 156 125 97 113 118 152 127 122 122 120 86 122 79 67 65 webtop_kde
|
||||
788 781 776 769 761 752 740 737 730 712 698 698 679 656 614 578 547 514 477 433 401 377 339 309 264 230 206 175 142 106 47 386 351 321 249 212 171 134 107 97 83 77 71 568 563 556 551 548 505 469 431 393 358 324 260 206 199 69 63 55 407 373 323 255 157 137 126 120 114 109 104 98 91 86 79 78 74 71 59 46 40 34 29 12 7 7 inadyn
|
||||
752 1073 986 897 740 488 538 352 732 65 65 65 45 31 9 1160 1016 883 730 1132 1001 867 625 1101 836 665 798 653 479 339 619 457 546 315 302 760 579 750 620 443 453 545 403 455 342 211 353 203 429 700 576 419 500 653 653 545 456 558 499 404 758 649 497 310 481 367 209 298 299 359 394 249 365 269 316 429 325 238 468 468 405 328 283 193 124 94 nextcloud_ocr
|
||||
671 579 781 718 678 590 1025 970 921 863 814 814 718 619 84 839 764 687 562 586 584 595 501 501 511 773 675 579 696 583 782 539 522 543 1171 1097 1007 918 855 785 726 673 615 573 503 447 463 659 583 485 623 537 452 622 531 441 492 465 567 496 392 596 490 620 472 711 651 561 472 692 642 565 495 397 374 437 353 493 407 393 377 98 359 91 321 313 epicgamesfree
|
||||
652 5900 5837 4452 2213 814 726 627 609 775 652 651 2399 2319 2230 2155 2068 1983 1896 1811 1727 1643 1565 1462 1259 1167 1071 971 860 768 660 460 351 344 358 373 330 692 630 570 487 426 1712 1662 1590 1542 1500 1457 1373 1302 1234 1154 1075 995 896 818 788 619 561 523 461 375 261 205 495 448 409 353 291 331 285 274 254 173 262 268 268 251 193 193 225 172 181 156 201 196 jellyfin
|
||||
612 594 558 535 521 488 461 424 393 344 476 476 414 347 512 456 403 355 401 334 133 119 576 541 447 410 358 295 264 448 389 299 251 302 211 414 353 302 262 247 217 187 157 192 166 135 498 476 419 364 309 262 199 143 296 229 207 53 47 28 41 - - - - - - - - - - - - - - - - - - - - - - - - - portainer_agent
|
||||
583 580 577 574 565 560 558 553 551 548 544 544 533 513 487 470 449 430 409 385 365 352 335 318 281 259 240 215 199 178 160 109 91 71 26 85 54 68 53 49 39 36 27 584 580 579 575 572 549 525 503 477 454 429 381 342 339 255 254 250 246 225 192 150 88 76 68 63 60 58 55 50 47 45 41 39 33 29 20 16 8 24 18 5 7 7 fireflyiii_fints_importer
|
||||
450 412 377 348 319 329 391 371 347 309 545 545 497 462 405 354 296 526 480 424 382 330 245 238 396 346 299 223 157 343 297 200 167 221 124 183 265 228 194 181 163 150 136 131 125 118 251 241 206 152 191 146 356 314 243 184 171 129 114 99 384 352 293 226 130 111 95 88 100 94 82 146 138 128 117 112 100 90 70 56 44 39 34 11 7 6 flaresolverr
|
||||
411 417 415 415 532 491 433 489 410 503 436 436 450 449 532 449 461 554 457 530 443 443 398 475 384 439 446 549 461 535 441 495 425 504 337 376 385 374 343 346 385 324 367 312 232 316 413 358 352 353 348 339 437 364 400 303 364 260 310 306 404 326 354 432 288 279 250 254 307 243 252 236 226 196 225 281 231 243 288 288 237 181 298 226 195 195 plex_nas
|
||||
376 368 362 354 340 335 321 304 290 279 265 265 213 182 133 618 576 545 508 446 410 382 351 324 260 221 163 127 83 13 32 267 223 186 112 78 36 1065 1044 1031 1023 1011 1006 998 989 982 979 973 937 897 864 827 789 750 685 633 623 498 489 483 471 438 383 317 223 203 193 190 183 171 165 154 149 143 132 122 118 104 85 76 67 56 49 24 20 18 baikal
|
||||
364 385 1510 2162 1045 382 370 378 394 388 483 483 417 416 460 379 428 23 433 430 436 426 352 356 403 457 460 457 474 485 468 454 518 439 377 430 422 336 384 391 65 65 65 65 65 65 65 65 35 1424 1360 1294 1246 1191 1107 1033 1008 865 829 803 773 722 639 546 425 380 346 320 283 247 246 288 248 191 243 192 192 217 146 146 121 90 88 55 37 35 sonarr_nas
|
||||
349 345 339 332 329 326 324 316 307 297 290 290 260 236 207 177 148 119 89 57 30 10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - comixed
|
||||
344 342 340 337 335 331 327 326 324 322 315 315 276 248 213 181 150 120 82 39 1349 1322 1284 1267 1224 1197 1172 1144 1119 1091 1069 1019 994 973 921 887 856 829 815 810 804 802 801 797 795 790 787 785 751 715 679 647 613 579 511 461 457 335 331 324 322 298 247 184 91 75 67 64 63 60 60 58 55 52 51 49 45 41 28 24 25 22 18 4 1 1 requestrr
|
||||
341 496 473 449 411 369 544 519 497 454 409 409 559 510 449 370 804 758 706 644 594 543 440 357 863 797 756 703 643 582 497 590 518 447 387 513 443 343 442 386 414 362 299 519 481 451 420 376 704 640 567 497 436 354 599 529 491 341 286 291 291 267 503 411 280 382 347 322 281 250 86 290 257 222 235 191 186 208 200 200 128 95 91 47 31 29 radarr_nas
|
||||
341 310 270 684 651 634 620 603 579 560 539 539 482 438 384 335 282 31 352 279 329 271 362 305 334 268 162 250 468 419 374 272 215 216 336 289 234 187 151 116 251 233 218 208 189 167 223 193 452 411 365 320 266 209 196 150 240 99 176 145 179 407 339 251 259 232 211 194 169 139 200 167 150 123 143 132 184 157 93 114 94 73 52 44 34 32 tandoor_recipes
|
||||
335 292 261 315 278 382 343 317 275 257 374 374 333 283 360 293 325 262 366 314 261 24 215 324 212 332 286 237 300 249 343 234 307 262 129 193 127 252 196 189 125 181 171 151 172 976 968 953 927 881 841 800 757 718 666 616 598 501 477 453 436 396 350 291 219 187 148 161 186 150 145 86 127 83 155 124 112 127 115 115 125 98 112 86 107 69 calibre
|
||||
333 326 312 307 297 294 281 270 262 253 238 238 196 168 130 204 172 133 456 408 376 360 323 302 249 218 188 156 120 469 432 360 332 296 227 188 156 121 101 94 88 77 66 87 79 72 57 70 84 88 88 83 83 107 104 47 184 54 60 60 79 94 198 131 68 52 46 44 41 55 53 47 51 44 53 44 37 56 59 45 42 33 63 33 32 31 plex-media-manager
|
||||
327 323 313 303 288 282 279 276 274 266 256 256 235 206 172 134 92 179 136 95 682 655 626 589 513 481 443 405 343 302 269 198 160 125 46 187 128 81 57 112 109 99 90 87 75 71 67 66 29 187 150 115 74 644 571 518 510 386 384 376 374 352 301 240 145 113 107 106 101 97 90 84 74 64 67 61 56 51 29 29 20 8 44 28 26 26 webtrees
|
||||
315 312 308 307 301 299 295 295 293 293 293 293 258 244 209 185 152 128 94 64 48 184 162 146 103 79 54 40 97 70 41 121 98 76 28 105 75 48 35 34 29 27 25 22 21 20 17 52 120 87 50 390 359 327 263 214 211 90 87 84 81 56 189 129 38 26 20 17 17 46 43 40 34 28 27 23 21 20 25 25 24 22 19 6 3 3 mylar3
|
||||
305 285 260 225 409 393 366 350 331 315 287 287 241 339 293 239 290 246 227 232 231 453 408 373 307 250 230 416 383 352 307 231 221 217 146 216 171 125 213 191 229 206 161 201 173 283 262 235 175 334 278 228 176 484 413 357 342 215 204 187 164 467 406 331 227 198 174 147 114 147 130 184 179 157 135 114 107 114 102 102 87 72 61 33 22 20 cloudcommander
|
||||
296 268 230 320 304 285 249 210 245 226 251 251 1141 1107 1059 1018 970 922 874 815 776 738 695 669 599 560 527 494 466 426 371 284 235 168 163 186 254 213 180 137 423 406 384 371 359 339 332 318 288 255 197 135 398 350 288 246 235 126 269 247 228 191 133 207 108 121 278 261 246 225 214 112 170 152 126 96 91 87 143 143 121 112 103 78 81 81 photoprism
|
||||
290 288 301 304 336 251 270 459 397 343 279 278 323 255 250 398 329 263 252 221 205 207 188 203 315 250 552 495 442 380 314 208 145 138 62 160 147 149 105 137 90 92 69 35 105 98 82 111 103 87 97 92 94 92 35 205 194 100 80 54 74 74 174 124 42 34 46 58 53 70 60 48 21 23 29 22 29 28 2 2 0 - - - - - immich
|
||||
279 260 221 902 886 873 860 841 828 813 791 791 770 738 697 656 621 587 555 518 485 458 422 400 329 288 249 217 182 385 335 256 219 193 116 155 113 143 274 252 238 215 201 185 172 156 129 137 149 139 46 139 144 154 152 108 146 111 101 61 103 46 111 99 102 84 21 107 94 84 101 105 88 51 23 66 10 86 22 22 73 72 81 69 73 69 calibre_web
|
||||
259 264 256 255 275 267 263 266 268 269 303 303 310 296 305 298 304 306 309 296 300 302 250 250 284 311 311 331 344 340 352 323 299 308 270 300 296 290 272 257 264 257 252 244 244 245 235 268 254 254 253 230 251 261 253 214 256 226 212 201 237 241 244 273 183 186 177 170 168 173 168 157 146 123 148 151 120 138 129 129 120 114 142 100 114 113 prowlarr
|
||||
252 193 254 217 260 195 230 204 217 185 129 128 264 200 9 723 668 606 559 501 456 409 340 279 152 171 104 367 326 275 212 270 230 185 86 219 164 288 244 203 164 112 128 171 134 676 654 633 590 546 509 461 418 380 301 253 230 133 113 87 413 377 330 266 188 158 126 109 95 79 119 92 66 42 277 270 243 225 193 164 139 109 97 61 43 40 browserless_chrome
|
||||
245 235 220 205 184 154 131 148 129 362 340 340 284 246 205 159 1035 987 951 900 859 829 801 754 665 629 599 568 529 493 443 376 342 313 239 204 166 130 107 99 88 79 66 52 57 44 37 610 561 521 480 440 399 357 281 228 223 88 78 65 55 102 45 26 - - - - - - - - - - - - - - - - - - - - - - jellyseerr
|
||||
240 374 361 339 315 292 268 236 474 439 416 416 377 340 297 256 202 345 307 259 205 274 229 645 568 541 501 457 433 392 345 256 218 180 100 274 230 196 166 484 470 453 438 426 419 404 385 371 332 300 271 242 208 179 124 79 503 411 391 371 363 335 289 233 159 131 131 266 256 237 225 203 184 171 150 150 136 113 91 89 71 43 60 38 22 20 scrutiny-fa
|
||||
228 238 233 230 242 234 235 245 253 239 283 282 275 275 287 267 268 279 286 253 274 272 234 222 2600 1318 270 257 258 211 268 250 236 241 215 229 237 221 205 203 187 195 195 194 195 195 192 237 231 219 224 219 233 244 241 189 247 188 193 187 220 184 239 253 183 177 181 171 169 161 159 154 148 110 134 140 111 129 118 118 94 106 136 104 95 95 jackett_nas
|
||||
208 202 195 190 179 172 163 147 614 608 597 597 561 521 484 447 413 385 350 308 270 241 187 153 173 473 435 404 374 338 302 217 176 128 120 259 214 172 143 183 160 151 144 128 359 352 343 331 293 251 201 145 154 253 174 445 441 311 299 287 268 227 169 206 101 158 140 132 122 117 106 98 127 120 117 107 93 80 84 84 49 103 98 75 69 68 bazarr
|
||||
202 192 175 157 218 209 197 182 159 318 305 305 276 253 221 180 252 218 166 142 140 171 127 32 170 141 167 129 209 183 148 134 56 133 65 83 160 130 109 97 84 85 76 91 77 133 113 94 129 92 132 101 85 117 61 310 299 215 209 203 189 163 114 134 102 68 20 69 62 94 87 74 59 45 79 72 63 53 39 57 38 45 32 21 14 12 gitea
|
||||
200 190 174 160 140 247 237 227 211 194 173 173 128 317 274 219 267 215 150 2 314 281 237 181 190 241 197 206 327 287 225 307 267 228 147 243 197 136 225 212 198 184 162 151 135 127 122 328 285 239 194 141 222 180 114 253 243 110 427 419 414 382 327 256 156 134 120 99 86 95 177 156 131 132 118 103 84 83 77 73 62 51 47 23 16 15 fireflyiii_data_importer
|
||||
186 875 860 841 822 803 780 765 743 725 712 712 686 665 634 607 579 541 504 467 440 410 382 354 285 250 203 159 266 227 185 247 218 187 86 213 157 166 129 173 156 140 117 450 433 421 409 386 344 306 257 215 164 272 199 129 331 194 184 171 153 247 177 97 203 180 151 138 120 104 108 150 133 116 96 159 149 130 105 85 69 74 81 48 24 23 joplin
|
||||
175 128 216 126 246 221 264 249 225 201 117 117 279 227 215 211 257 212 298 250 222 186 261 229 156 244 195 154 186 143 168 177 138 109 80 102 91 38 99 65 50 48 31 36 17 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - changedetection.io
|
||||
166 165 269 215 179 165 151 144 157 142 188 188 179 191 185 177 170 240 181 182 153 211 147 114 109 197 177 173 170 164 158 164 200 157 115 135 142 134 128 120 124 82 107 115 126 102 100 129 136 555 509 463 420 380 309 250 239 105 131 108 127 228 159 181 112 108 90 105 286 266 248 221 200 179 161 123 107 85 150 150 145 127 99 60 72 66 emby
|
||||
160 156 151 142 126 111 96 75 143 128 113 113 66 1929 1888 1853 1821 1790 1754 1705 1684 1660 1631 1603 1532 1495 1457 1431 1393 1352 1310 1240 1202 1168 1107 1067 1033 994 976 971 962 952 939 933 928 923 917 906 870 837 797 757 719 680 615 566 556 435 426 412 406 377 323 259 162 142 128 117 108 94 83 76 61 57 55 45 39 31 37 37 19 11 28 12 10 8 resiliosync
|
||||
142 58 86 24 473 439 402 375 347 312 273 273 202 148 158 878 828 762 702 625 552 493 419 359 224 128 46 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - whatsapper
|
||||
136 230 210 201 187 167 150 126 353 337 326 326 283 244 205 167 125 237 209 174 128 220 164 606 540 497 460 420 386 345 308 237 200 150 70 220 177 144 114 797 792 778 770 757 751 740 732 717 684 658 631 603 575 545 497 459 442 348 335 320 313 290 248 188 112 91 104 158 144 132 119 103 81 130 127 112 97 74 81 81 67 48 84 58 58 58 scrutiny
|
||||
136 134 129 123 119 113 107 101 92 87 75 75 240 225 190 167 151 131 101 72 282 266 246 226 182 158 132 114 97 72 301 254 227 207 154 125 100 72 53 44 39 266 262 256 247 239 230 219 182 146 108 67 265 229 163 109 103 58 45 126 114 84 236 170 75 56 42 35 30 13 9 42 27 98 87 73 72 65 45 38 55 48 43 21 10 9 grav
|
||||
124 153 136 152 141 150 177 162 225 215 195 195 191 318 292 257 218 318 287 238 339 282 381 465 478 403 378 402 375 445 370 350 352 319 150 1274 1214 1155 1121 1094 1070 1043 1025 1003 979 956 942 922 868 814 764 709 657 605 511 433 400 238 311 284 252 227 137 301 244 187 351 322 301 262 236 202 158 111 176 148 152 108 134 134 123 84 104 57 86 80 paperless_ng
|
||||
116 86 289 258 243 228 206 192 168 149 135 135 102 73 254 220 185 143 111 53 21 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - linkwarden
|
||||
109 94 89 108 102 86 95 155 152 146 134 134 123 220 179 137 133 265 223 192 159 178 158 292 171 233 167 389 342 290 229 265 209 154 102 290 227 169 120 186 155 125 110 326 306 290 267 244 195 144 202 143 305 255 166 208 176 195 181 152 128 371 305 232 118 194 161 140 119 88 98 146 119 104 139 121 98 75 155 155 134 110 95 82 17 17 code_server
|
||||
102 95 91 90 84 82 73 67 70 66 446 446 413 391 350 322 293 268 237 184 131 113 77 55 50 86 81 165 136 112 85 83 161 119 53 129 91 132 105 89 86 73 64 63 57 58 52 93 116 70 74 73 73 331 269 216 203 80 77 72 61 263 211 144 49 39 99 87 78 72 69 63 54 28 17 20 17 22 69 62 41 28 45 18 7 5 myelectricaldata_dev
|
||||
99 93 80 72 58 49 34 27 19 10 20 20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - openproject
|
||||
77 74 174 163 156 149 143 138 131 122 110 110 215 188 147 110 365 330 292 248 216 185 148 120 385 355 318 296 262 234 199 131 334 295 228 191 150 120 94 81 105 97 94 91 84 79 77 110 116 111 104 101 110 139 133 77 205 76 55 71 141 109 224 150 82 76 66 64 75 69 60 60 62 50 67 58 43 65 58 58 52 42 68 51 45 44 lidarr_nas
|
||||
77 68 58 55 65 36 37 47 3 28 33 33 34 82 19 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - birdnet-pi
|
||||
77 64 55 45 28 34 35 46 2 49 151 151 111 70 68 15 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - birdnet-go
|
||||
77 532 498 469 425 357 335 456 420 382 597 597 530 477 392 553 489 405 471 388 469 383 556 496 347 437 359 443 367 374 343 448 388 337 179 395 316 336 271 357 302 257 238 270 232 244 329 281 412 348 283 272 442 382 286 222 293 262 224 340 313 251 386 287 220 217 217 249 224 215 226 214 395 371 339 300 287 251 207 169 163 144 110 68 47 47 fireflyiii
|
||||
77 1046 1036 1032 1028 1021 1015 1015 1008 1004 1002 1002 975 959 924 889 859 827 789 750 714 694 674 648 607 577 554 528 511 476 442 377 348 317 248 216 180 149 128 119 110 104 98 92 85 75 64 608 570 529 482 448 410 376 307 258 250 118 109 91 82 341 287 220 121 103 90 88 84 80 73 59 93 92 87 81 73 65 50 40 39 30 24 9 4 4 ombi
|
||||
77 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - battybirdnet-pi
|
||||
69 60 50 44 31 24 17 3 4 - 17 17 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - navidrome
|
||||
66 63 60 58 66 61 62 61 60 61 92 92 1885 1858 1824 1786 1759 1714 1677 1638 1618 1595 1565 1544 1494 1456 1420 1392 1360 1322 1283 1219 1187 1156 1111 1078 1048 1018 990 984 977 968 957 952 950 944 941 936 894 856 819 781 747 711 645 594 584 458 449 443 440 405 352 292 194 174 160 154 150 146 138 129 115 112 109 100 94 72 62 62 76 61 84 57 50 50 nzbget
|
||||
66 36 1348 1341 1338 1327 1321 1315 1309 1303 1292 1292 1282 1256 1231 1210 1188 1166 1142 1111 1092 1072 1043 1026 976 956 933 912 896 877 853 810 793 772 730 707 680 663 647 641 637 635 628 621 615 610 607 597 571 545 523 498 474 449 404 369 363 276 269 263 251 225 189 146 83 70 62 59 54 49 41 26 90 85 86 78 72 69 52 47 45 31 31 13 7 7 elasticsearch
|
||||
63 77 73 75 78 73 79 72 78 81 97 97 89 99 92 96 90 92 95 86 80 85 57 76 87 96 90 86 91 109 143 92 105 69 103 148 153 149 165 134 160 124 332 332 332 332 332 332 312 292 272 252 232 212 170 138 138 58 58 111 119 128 142 166 110 109 112 105 103 97 108 95 115 76 82 75 79 84 127 105 93 88 78 53 51 51 omada
|
||||
61 65 71 59 60 77 67 67 75 68 124 124 96 140 105 85 114 20 120 103 106 98 107 87 129 102 99 115 114 116 115 118 107 134 67 146 115 82 82 83 89 90 79 90 82 79 76 106 99 97 95 88 87 110 111 72 111 79 71 64 84 105 116 143 79 70 57 58 56 71 65 60 59 49 60 48 54 62 52 52 43 39 65 49 42 41 readarr_nas
|
||||
55 49 36 281 281 276 269 258 253 247 241 241 222 204 179 154 131 116 92 68 50 24 138 125 95 74 52 52 80 58 35 197 179 156 118 94 72 53 41 39 31 25 18 22 16 103 100 92 67 41 60 38 213 191 145 112 108 21 213 209 205 188 153 111 47 37 30 27 36 35 28 21 29 26 22 23 17 25 32 32 21 22 20 11 9 9 unpackerr
|
||||
44 35 266 264 261 258 251 250 246 236 230 230 189 163 117 73 256 216 183 147 122 100 58 157 98 64 186 155 125 102 72 70 594 563 494 459 429 395 377 371 362 354 351 347 341 333 331 325 286 248 202 160 120 82 300 250 244 115 113 107 99 67 267 201 100 84 67 59 47 39 35 25 17 15 38 32 23 26 32 32 22 19 53 33 27 26 piwigo
|
||||
42 82 71 67 52 42 149 140 130 115 108 108 72 157 117 83 161 117 80 149 128 106 59 98 99 62 61 54 218 186 145 70 89 55 30 92 52 35 30 24 40 40 27 40 186 173 163 154 113 73 337 299 262 222 151 99 87 68 64 52 47 132 76 133 36 29 21 14 22 13 1 - - - - - - - - - - - - - - - autobrr
|
||||
42 36 37 55 48 37 35 37 37 39 80 80 54 73 62 69 117 96 64 57 58 57 61 41 55 64 64 52 54 60 45 48 43 50 35 626 592 559 544 540 536 531 529 525 520 517 511 511 474 437 400 359 325 283 217 167 161 35 35 31 106 73 86 111 52 41 29 45 32 38 32 33 32 30 31 36 26 37 30 23 20 24 38 22 26 26 flexget
|
||||
39 36 32 30 25 28 25 20 69 64 58 58 35 80 53 36 34 37 64 39 37 56 30 48 31 50 33 31 34 32 79 32 36 31 29 40 38 31 31 17 21 15 29 13 14 18 22 323 299 277 251 229 206 184 139 103 94 8 5 14 33 42 52 70 28 20 13 11 17 13 15 17 17 10 19 17 14 27 43 38 34 30 24 7 13 11 omada_v3
|
||||
34 33 31 134 133 133 133 129 128 128 128 128 110 86 344 320 293 262 227 201 175 155 133 119 92 69 43 24 1 319 287 213 184 145 75 95 181 145 122 116 105 96 77 71 60 50 218 212 175 138 88 130 87 628 556 499 491 367 362 353 343 314 260 193 90 63 50 51 207 193 186 167 160 149 140 133 119 103 80 64 50 39 26 7 4 4 vaultwarden
|
||||
24 20 13 7 2 50 31 13 12 8 38 38 109 87 54 34 32 105 76 45 19 25 178 160 117 92 75 51 22 172 146 94 68 46 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - signalk
|
||||
22 18 18 22 19 19 27 41 28 18 122 122 93 61 36 46 27 28 28 21 42 21 6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - codex
|
||||
- - - - - - - - - - - - - - - - - - 43 35 23 17 8 22 11 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - overleaf
|
||||
|
||||
181
Stats2
@@ -1,93 +1,94 @@
|
||||
Name Total armv7 amd64 aarch64
|
||||
------------------------------
|
||||
paperless_ng 141 - 78 63
|
||||
code_server 102 7 61 34
|
||||
vaultwarden 133 28 60 45
|
||||
zoneminder 2080 343 1045 692
|
||||
xteve 2357 457 1107 793
|
||||
whoogle-search 1038 200 484 354
|
||||
whatsapper 473 - 289 184
|
||||
wger 749 - 455 294
|
||||
webtrees 288 53 141 94
|
||||
webtop_kde 707 - 474 233
|
||||
unpackerr 281 - 162 119
|
||||
ubooquity 1754 450 713 591
|
||||
transmission_openvpn 992 147 486 359
|
||||
transmission_ls 738 8 483 247
|
||||
teamspeak 2007 466 845 696
|
||||
tdarr 1455 350 626 479
|
||||
tandoor_recipes 651 56 386 209
|
||||
spotweb 811 191 374 246
|
||||
sponsorblockcast 1466 113 811 542
|
||||
sonarr_nas 1045 1 925 119
|
||||
signalk 2 1 1 0
|
||||
seafile 1034 230 468 336
|
||||
scrutiny-fa 315 - 208 107
|
||||
scrutiny 187 - 130 57
|
||||
sabnzbd 1822 - 1781 41
|
||||
resiliosync 126 - 71 55
|
||||
requestrr 335 87 133 115
|
||||
readarr_nas 60 - 49 11
|
||||
radarr_nas 411 4 281 126
|
||||
qbittorrent 1417 - 882 535
|
||||
prowlarr 275 - 188 87
|
||||
postgres 1345 116 743 486
|
||||
portainer_agent 521 4 342 175
|
||||
portainer 11142 206 7756 3180
|
||||
plex-media-manager 297 32 179 86
|
||||
plex_nas 532 2 337 193
|
||||
piwigo 261 47 130 84
|
||||
photoprism 304 - 193 111
|
||||
paperless_ng 124 - 72 52
|
||||
code_server 109 6 62 41
|
||||
vaultwarden 34 0 24 10
|
||||
zoneminder 2174 343 1100 731
|
||||
xteve 2404 457 1137 810
|
||||
whoogle-search 1080 200 514 366
|
||||
whatsapper 142 - 91 51
|
||||
wger 806 - 498 308
|
||||
webtrees 327 53 161 113
|
||||
webtop_kde 805 - 531 274
|
||||
unpackerr 55 - 37 18
|
||||
ubooquity 1779 450 731 598
|
||||
transmission_openvpn 1054 147 524 383
|
||||
transmission_ls 948 10 607 331
|
||||
teamspeak 2049 466 871 712
|
||||
tdarr 1482 350 646 486
|
||||
tandoor_recipes 341 4 235 102
|
||||
spotweb 840 191 392 257
|
||||
sponsorblockcast 1626 113 906 607
|
||||
sonarr_nas 364 1 254 109
|
||||
signalk 24 3 6 15
|
||||
seafile 1082 230 500 352
|
||||
scrutiny-fa 240 - 160 80
|
||||
scrutiny 136 - 97 39
|
||||
sabnzbd 5295 - 5240 55
|
||||
resiliosync 160 - 90 70
|
||||
requestrr 344 87 139 118
|
||||
readarr_nas 61 - 45 16
|
||||
radarr_nas 341 0 239 102
|
||||
qbittorrent 1711 - 1057 654
|
||||
prowlarr 259 - 176 83
|
||||
postgres 1611 116 926 569
|
||||
portainer_agent 612 5 398 209
|
||||
portainer 16729 219 12918 3592
|
||||
plex-media-manager 333 33 200 100
|
||||
plex_nas 411 2 258 151
|
||||
piwigo 44 1 28 15
|
||||
photoprism 296 - 181 115
|
||||
papermerge 1346 446 460 440
|
||||
overseerr 1297 - 800 497
|
||||
organizr 2290 463 1074 753
|
||||
openproject 58 - 39 19
|
||||
ombi 1028 221 467 340
|
||||
omada_v3 25 - 15 10
|
||||
omada 78 - 49 29
|
||||
nzbget 66 0 44 22
|
||||
nextcloud_ocr 740 - 430 310
|
||||
navidrome 31 - 19 12
|
||||
mylar3 301 85 120 96
|
||||
mealie 799 - 539 260
|
||||
linkwarden 243 - 142 101
|
||||
lidarr_nas 156 11 104 41
|
||||
joplin 822 - 493 329
|
||||
joal 887 201 238 448
|
||||
jellyseerr 184 0 129 55
|
||||
jellyfin 2213 3 1975 235
|
||||
jackett_nas 242 2 168 72
|
||||
inadyn 761 144 365 252
|
||||
immich 336 - 222 114
|
||||
guacamole 1155 - 787 368
|
||||
grav 119 - 73 46
|
||||
gitea 218 - 130 88
|
||||
gazpar2mqtt 1808 467 676 665
|
||||
free_games_claimer 1227 - 689 538
|
||||
flexget 48 - 29 19
|
||||
flaresolverr 319 3 202 114
|
||||
fireflyiii_fints_importer 565 - 310 255
|
||||
fireflyiii_data_importer 140 1 88 51
|
||||
fireflyiii 425 4 269 152
|
||||
filebrowser 9880 225 5820 3835
|
||||
epicgamesfree 678 - 439 239
|
||||
myelectricaldata_dev 84 2 41 41
|
||||
myelectricaldata 1357 36 734 587
|
||||
emby 179 2 115 62
|
||||
elasticsearch 1338 - 755 583
|
||||
comixed 329 - 118 211
|
||||
codex 19 - 10 9
|
||||
cloudcommander 409 - 271 138
|
||||
changedetection.io 246 - 151 95
|
||||
calibre_web 886 - 497 389
|
||||
calibre 278 - 169 109
|
||||
browserless_chrome 260 - 173 87
|
||||
calibre_web 886 - 497 389
|
||||
birdnet-pi 65 - 41 24
|
||||
birdnet-go 28 - 21 7
|
||||
binance_trading_bot 1455 - 803 652
|
||||
bazarr 179 0 130 49
|
||||
baikal 340 42 152 146
|
||||
autobrr 52 0 33 19
|
||||
arpspoof 2505 478 1204 823
|
||||
addons_updater 778 88 383 307
|
||||
overseerr 1407 - 868 539
|
||||
organizr 2336 463 1114 759
|
||||
openproject 99 - 68 31
|
||||
ombi 77 0 61 16
|
||||
omada_v3 39 - 25 14
|
||||
omada 63 - 44 19
|
||||
nzbget 66 0 45 21
|
||||
nextcloud_ocr 752 - 443 309
|
||||
navidrome 69 - 44 25
|
||||
mylar3 315 85 131 99
|
||||
mealie 1064 - 721 343
|
||||
linkwarden 116 - 68 48
|
||||
lidarr_nas 77 0 57 20
|
||||
joplin 186 - 124 62
|
||||
joal 900 201 248 451
|
||||
jellyseerr 245 0 176 69
|
||||
jellyfin 652 3 429 220
|
||||
jackett_nas 228 1 166 61
|
||||
inadyn 788 144 384 260
|
||||
immich 290 - 206 84
|
||||
guacamole 1273 - 863 410
|
||||
grav 136 - 83 53
|
||||
gitea 202 - 113 89
|
||||
gazpar2mqtt 1824 467 682 675
|
||||
free_games_claimer 1319 - 741 578
|
||||
flexget 42 - 26 16
|
||||
flaresolverr 450 3 283 164
|
||||
fireflyiii_fints_importer 583 - 318 265
|
||||
fireflyiii_data_importer 200 1 126 73
|
||||
fireflyiii 77 0 45 32
|
||||
filebrowser 11150 259 6593 4298
|
||||
epicgamesfree 671 - 434 237
|
||||
myelectricaldata_dev 102 3 50 49
|
||||
myelectricaldata 1525 41 824 660
|
||||
emby 166 2 99 65
|
||||
elasticsearch 66 - 49 17
|
||||
comixed 349 - 135 214
|
||||
codex 22 - 15 7
|
||||
cloudcommander 305 - 214 91
|
||||
changedetection.io 175 - 105 70
|
||||
calibre_web 279 - 172 107
|
||||
calibre 335 - 203 132
|
||||
browserless_chrome 252 - 170 82
|
||||
calibre_web 279 - 172 107
|
||||
birdnet-pi 77 - 45 32
|
||||
birdnet-go 77 - 58 19
|
||||
binance_trading_bot 1491 - 825 666
|
||||
bazarr 208 0 150 58
|
||||
battybirdnet-pi 6 - - 6
|
||||
baikal 376 43 174 159
|
||||
autobrr 42 0 28 14
|
||||
arpspoof 2561 478 1240 843
|
||||
addons_updater 837 90 413 334
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -1,4 +1,7 @@
|
||||
|
||||
## 1.44.0 (27-07-2024)
|
||||
- Update to latest version from autobrr/autobrr (changelog : https://github.com/autobrr/autobrr/releases)
|
||||
|
||||
## 1.43.0 (22-06-2024)
|
||||
- Update to latest version from autobrr/autobrr (changelog : https://github.com/autobrr/autobrr/releases)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
ARG BUILD_FROM
|
||||
ARG BUILD_VERSION
|
||||
ARG BUILD_UPSTREAM="1.43.0"
|
||||
ARG BUILD_UPSTREAM="1.44.0"
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
##################
|
||||
|
||||
@@ -112,5 +112,5 @@
|
||||
"slug": "autobrr",
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/autobrr",
|
||||
"version": "1.43.0"
|
||||
"version": "1.44.0"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"last_update": "22-06-2024",
|
||||
"last_update": "27-07-2024",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "autborr",
|
||||
"source": "github",
|
||||
"upstream_repo": "autobrr/autobrr",
|
||||
"upstream_version": "1.43.0"
|
||||
"upstream_version": "1.44.0"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
## 0.9.5_updated (06-08-2024)
|
||||
- Minor bugs fixed
|
||||
|
||||
## 0.9.5 (27-04-2024)
|
||||
- Update to latest version from ckulka/baikal-docker (changelog : https://github.com/ckulka/baikal-docker/releases)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"build_from": {
|
||||
"aarch64": "ckulka/baikal:nginx",
|
||||
"amd64": "ckulka/baikal:nginx",
|
||||
"armv7": "ckulka/baikal:nginx"
|
||||
"aarch64": "ghcr.io/mralucarddante/baikal-docker-hass:latest",
|
||||
"amd64": "ghcr.io/mralucarddante/baikal-docker-hass:latest",
|
||||
"armv7": "ghcr.io/mralucarddante/baikal-docker-hass:latest"
|
||||
},
|
||||
"codenotary": {
|
||||
"signer": "alexandrep.github@gmail.com"
|
||||
|
||||
@@ -82,6 +82,6 @@
|
||||
"slug": "baikal",
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons",
|
||||
"version": "0.9.5",
|
||||
"version": "0.9.5_updated",
|
||||
"webui": "[PROTO:ssl]://[HOST]:[PORT:80]"
|
||||
}
|
||||
|
||||
BIN
baikal/stats.png
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
3
battybirdnet-pi/CHANGELOG.md
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
## 0.1 (27-07-2024)
|
||||
- Initial build
|
||||
205
battybirdnet-pi/Dockerfile
Normal file
@@ -0,0 +1,205 @@
|
||||
#============================#
|
||||
# ALEXBELGIUM'S DOCKERFILE #
|
||||
#============================#
|
||||
# _.------.
|
||||
# _.-` ('>.-`"""-.
|
||||
# '.--'` _'` _ .--.)
|
||||
# -' '-.-';` `
|
||||
# ' - _.' ``'--.
|
||||
# '---` .-'""`
|
||||
# /`
|
||||
#=== Home Assistant Addon ===#
|
||||
|
||||
#################
|
||||
# 1 Build Image #
|
||||
#################
|
||||
|
||||
ARG BUILD_VERSION
|
||||
ARG BUILD_FROM
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
ENV DEBIAN_FRONTEND="noninteractive" \
|
||||
BIRDNET_USER="pi" \
|
||||
USER="pi" \
|
||||
PUID=1000 \
|
||||
PGID=1000 \
|
||||
HOME="/home/pi" \
|
||||
XDG_RUNTIME_DIR="/run/user/1000" \
|
||||
PYTHON_VIRTUAL_ENV="/home/pi/BirdNET-Pi/birdnet/bin/python3" \
|
||||
my_dir=/home/pi/BirdNET-Pi/scripts
|
||||
|
||||
# Global LSIO modifications
|
||||
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_lsio.sh" "/ha_lsio.sh"
|
||||
ARG CONFIGLOCATION="/config"
|
||||
RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
# hadolint ignore=DL3015,SC2016
|
||||
RUN \
|
||||
# Install dependencies
|
||||
echo "Install dependencies" && \
|
||||
apt-get update -y && apt-get install curl gcc python3-dev git jq sudo php-mbstring procps -y && \
|
||||
\
|
||||
# Correct for systemctl
|
||||
curl -f -L -s -S https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl3.py -o /bin/systemctl && \
|
||||
chmod a+x /bin/systemctl && \
|
||||
\
|
||||
# Change user to pi and create /home/pi
|
||||
echo "setting users" && \
|
||||
if id abc >/dev/null 2>&1; then groupmod -o -g 101 abc && usermod -o -u 101 abc; fi && \
|
||||
groupadd --non-unique -g 1000 "$USER" && \
|
||||
useradd --non-unique --uid 1000 --gid 1000 -m "$USER" && \
|
||||
\
|
||||
# Ensure permissions
|
||||
echo "setting permissions" && \
|
||||
echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||
mkdir -p /home/"$USER"/.config/matplotlib && \
|
||||
chown -R "$USER":"$USER" /home/"$USER" && \
|
||||
git config --global --add safe.directory '*' && \
|
||||
\
|
||||
# Download installer
|
||||
curl -f -L -s -S "https://raw.githubusercontent.com/rdz-oss/BattyBirdNET-Pi/main/newinstaller.sh" -o /newinstaller.sh && \
|
||||
chmod 777 /newinstaller.sh && \
|
||||
\
|
||||
# Use installer to modify other scripts
|
||||
#######################################
|
||||
# Define file
|
||||
sed -i "1a /./newinstallermod.sh" /newinstaller.sh && \
|
||||
echo '#!/bin/bash' >> /newinstallermod.sh && \
|
||||
# Remove all instances of sudo from all other scripts
|
||||
echo 'for file in $(grep -srl "sudo" $HOME/BirdNET-Pi/scripts); do sed -i "s|sudo ||" "$file"; done' >> /newinstallermod.sh && \
|
||||
echo 'for file in $(grep -srl "my_dir" $HOME/BirdNET-Pi/scripts); do sed -i "s|\$my_dir|/config|" "$file"; done' >> /newinstallermod.sh && \
|
||||
# Disable pulseaudio
|
||||
echo 'for file in $(grep -srl "pulseaudio --start" $HOME/BirdNET-Pi/scripts); do sed -i "/pulseaudio --start/d" "$file"; done' >> /newinstallermod.sh && \
|
||||
# Set permission
|
||||
chmod +x /newinstallermod.sh && \
|
||||
\
|
||||
# Modify installer
|
||||
##################
|
||||
# Avoid rebooting at end of installation
|
||||
sed -i "/reboot/d" /newinstaller.sh && \
|
||||
# Use apt-get as without user action
|
||||
sed -i "s|apt |apt-get |g" /newinstaller.sh && \
|
||||
# Ensure chmod
|
||||
sed -i "/git clone/a chown -R 1000:1000 $HOME" /newinstaller.sh && \
|
||||
# Remove all instances of sudo from the newinstaller
|
||||
sed -i -e "s|== 0|== 7|g" -e "s|sudo -n true|true|g" -e "s|sudo -K|true|g" /newinstaller.sh && \
|
||||
\
|
||||
# Execute installer
|
||||
/./newinstaller.sh && \
|
||||
\
|
||||
# Install dateparser
|
||||
$PYTHON_VIRTUAL_ENV /usr/bin/pip3 install dateparser && \
|
||||
\
|
||||
# Adapt for lsio usage of /app
|
||||
if [ -d /app ]; then rm -r /app; fi && \
|
||||
ln -s /home/"$USER" /app && \
|
||||
chown -R "$USER":"$USER" /home/"$USER" /app && \
|
||||
\
|
||||
# Give access to caddy for files owned by the user, to allow files modification
|
||||
groupmod -o -g 1000 caddy && usermod -o -u 1000 caddy && \
|
||||
\
|
||||
# Cleanup
|
||||
apt-get clean all && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
##################
|
||||
# 2 Modify Image #
|
||||
##################
|
||||
|
||||
# Set S6 wait time
|
||||
ENV S6_CMD_WAIT_FOR_SERVICES=1 \
|
||||
S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \
|
||||
S6_SERVICES_GRACETIME=0
|
||||
|
||||
##################
|
||||
# 3 Install apps #
|
||||
##################
|
||||
|
||||
# Add rootfs
|
||||
COPY rootfs/ /
|
||||
|
||||
# Uses /bin for compatibility purposes
|
||||
# hadolint ignore=DL4005
|
||||
RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \
|
||||
if [ ! -f /bin/bash ] && [ -f /usr/bin/bash ]; then ln -s /usr/bin/bash /bin/bash; fi
|
||||
|
||||
# Modules
|
||||
ARG MODULES="00-local_mounts.sh 00-smb_mounts.sh"
|
||||
|
||||
# Automatic modules download
|
||||
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_automodules.sh" "/ha_automodules.sh"
|
||||
RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_automodules.sh
|
||||
|
||||
# Manual apps
|
||||
ENV PACKAGES="alsa-utils libasound2-plugins"
|
||||
|
||||
# Automatic apps & bashio
|
||||
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh"
|
||||
RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh
|
||||
|
||||
################
|
||||
# 4 Entrypoint #
|
||||
################
|
||||
|
||||
# Add entrypoint
|
||||
ENV S6_STAGE2_HOOK=/ha_entrypoint.sh
|
||||
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint.sh" "/ha_entrypoint.sh"
|
||||
|
||||
# Entrypoint modifications
|
||||
ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_entrypoint_modif.sh" "/ha_entrypoint_modif.sh"
|
||||
RUN chmod 777 /ha_entrypoint.sh /ha_entrypoint_modif.sh && /ha_entrypoint_modif.sh && rm /ha_entrypoint_modif.sh
|
||||
|
||||
# Avoid config.yaml interference
|
||||
WORKDIR /config
|
||||
#ENTRYPOINT ["/lib/systemd/systemd"]
|
||||
#ENTRYPOINT [ "/usr/bin/env" ]
|
||||
#CMD [ "/ha_entrypoint.sh" ]
|
||||
#SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
# Allow a dockerfile independent from HA
|
||||
EXPOSE 80
|
||||
RUN mkdir -p /data /config
|
||||
|
||||
############
|
||||
# 5 Labels #
|
||||
############
|
||||
|
||||
ARG BUILD_ARCH
|
||||
ARG BUILD_DATE
|
||||
ARG BUILD_DESCRIPTION
|
||||
ARG BUILD_NAME
|
||||
ARG BUILD_REF
|
||||
ARG BUILD_REPOSITORY
|
||||
ARG BUILD_VERSION
|
||||
LABEL \
|
||||
io.hass.name="${BUILD_NAME}" \
|
||||
io.hass.description="${BUILD_DESCRIPTION}" \
|
||||
io.hass.arch="${BUILD_ARCH}" \
|
||||
io.hass.type="addon" \
|
||||
io.hass.version=${BUILD_VERSION} \
|
||||
maintainer="alexbelgium (https://github.com/alexbelgium)" \
|
||||
org.opencontainers.image.title="${BUILD_NAME}" \
|
||||
org.opencontainers.image.description="${BUILD_DESCRIPTION}" \
|
||||
org.opencontainers.image.vendor="Home Assistant Add-ons" \
|
||||
org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \
|
||||
org.opencontainers.image.licenses="MIT" \
|
||||
org.opencontainers.image.url="https://github.com/alexbelgium" \
|
||||
org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \
|
||||
org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \
|
||||
org.opencontainers.image.created=${BUILD_DATE} \
|
||||
org.opencontainers.image.revision=${BUILD_REF} \
|
||||
org.opencontainers.image.version=${BUILD_VERSION}
|
||||
|
||||
#################
|
||||
# 6 Healthcheck #
|
||||
#################
|
||||
|
||||
ENV HEALTH_PORT="80" \
|
||||
HEALTH_URL=""
|
||||
HEALTHCHECK \
|
||||
--interval=5s \
|
||||
--retries=5 \
|
||||
--start-period=30s \
|
||||
--timeout=25s \
|
||||
CMD curl --fail "http://127.0.0.1:${HEALTH_PORT}${HEALTH_URL}" &>/dev/null || exit 1
|
||||
159
battybirdnet-pi/README.md
Normal file
@@ -0,0 +1,159 @@
|
||||
## ⚠ Open Request : [✨ [REQUEST] BattyBirdnet-Pi x86-64 (opened 2024-07-29)](https://github.com/alexbelgium/hassio-addons/issues/1498) by [@mrcrunchybeans](https://github.com/mrcrunchybeans)
|
||||
# Home assistant add-on: battybirdnet-pi
|
||||
|
||||
[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium)
|
||||
[![Donate][paypal-badge]](https://www.paypal.com/donate/?hosted_button_id=DZFULJZTP3UQA)
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
[](https://www.codacy.com/gh/alexbelgium/hassio-addons/dashboard?utm_source=github.com&utm_medium=referral&utm_content=alexbelgium/hassio-addons&utm_campaign=Badge_Grade)
|
||||
[](https://github.com/alexbelgium/hassio-addons/actions/workflows/weekly-supelinter.yaml)
|
||||
[](https://github.com/alexbelgium/hassio-addons/actions/workflows/onpush_builder.yaml)
|
||||
|
||||
[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20(no%20paypal)-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white
|
||||
[paypal-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee%20with%20Paypal-0070BA?logo=paypal&style=flat&logoColor=white
|
||||
|
||||
_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_
|
||||
|
||||
[](https://github.com/alexbelgium/hassio-addons/stargazers)
|
||||
|
||||

|
||||
|
||||
## About
|
||||
|
||||
---
|
||||
|
||||
[battybirdnet-pi](https://github.com/Nachtzuster/BirdNET-Pi) is an AI solution for continuous avian monitoring and identification originally developed by @mcguirepr89 on github (https://github.com/mcguirepr89/BirdNET-Pi), whose work is continued by @Nachtzuster and other developers on an active fork (https://github.com/Nachtzuster/BirdNET-Pi)
|
||||
|
||||
Features of the addon :
|
||||
- Robust base image provided by [linuxserver](https://github.com/linuxserver/docker-baseimage-debian)
|
||||
- Working docker system thanks to https://github.com/gdraheim/docker-systemctl-replacement
|
||||
- Uses HA pulseaudio server
|
||||
- Uses HA tmpfs to store temporary files in ram and avoid disk wear
|
||||
- Exposes all config files to /config to allow remanence and easy access
|
||||
- Allows to modify the location of the stored bird songs (preferably to an external hdd)
|
||||
- Supports ingress, to allow secure remote access without exposing ports
|
||||
|
||||
## Configuration
|
||||
|
||||
---
|
||||
|
||||
Install, then start the addon a first time
|
||||
Webui can be found by two ways :
|
||||
- Ingress from HA (no password but some functions don't work)
|
||||
- Direct access with <http://homeassistant:port>, port being the one defined in the birdnet.conf. The username when asked for a password is `birdnet`, the password is the one that you can define in the birdnet.con (blank by default). This is different than the password from the addon options, which is the one that must be used to access the web terminal
|
||||
|
||||
Web terminal access : uesrname `pi`, password : as defined in the addon options
|
||||
|
||||
You'll need a microphone : either use one connected to HA or the audio stream of a rstp camera.
|
||||
|
||||
Options can be configured through three ways :
|
||||
|
||||
- Addon options
|
||||
|
||||
```yaml
|
||||
BIRDSONGS_FOLDER: folder to store birdsongs file # It should be an ssd if you want to avoid clogging of analysis
|
||||
MQTT_DISABLED : if true, disables automatic mqtt publishing. Only valid if there is a local broker already available
|
||||
LIVESTREAM_BOOT_ENABLED: start livestream from boot, or from settings
|
||||
PROCESSED_FOLDER_ENABLED : if enabled, you need to set in the birdnet.conf (or the setting of birdnet) the number of last wav files that will be saved in the temporary folder "/tmp/Processed" within the tmpfs (so no disk wear) in case you want to retrieve them. This amount can be adapted from the addon options
|
||||
TZ: Etc/UTC specify a timezone to use, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||
pi_password: set the user password to access the web terminal
|
||||
localdisks: sda1 #put the hardware name of your drive to mount separated by commas, or its label. ex. sda1, sdb1, MYNAS...
|
||||
networkdisks: "//SERVER/SHARE" # optional, list of smb servers to mount, separated by commas
|
||||
cifsusername: "username" # optional, smb username, same for all smb shares
|
||||
cifspassword: "password" # optional, smb password
|
||||
cifsdomain: "domain" # optional, allow setting the domain for the smb share
|
||||
```
|
||||
|
||||
- Config.yaml
|
||||
Additional variables can be configured using the config.yaml file found in /config/db21ed7f_battybirdnet-pi/config.yaml using the Filebrowser addon
|
||||
|
||||
- Config_env.yaml
|
||||
Additional environment variables can be configured there
|
||||
|
||||
## Installation
|
||||
|
||||
---
|
||||
|
||||
The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on.
|
||||
|
||||
1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA)
|
||||
[](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons)
|
||||
1. Install this add-on.
|
||||
1. Click the `Save` button to store your configuration.
|
||||
1. Set the add-on options to your preferences
|
||||
1. Start the add-on.
|
||||
1. Check the logs of the add-on to see if everything went well.
|
||||
1. Open the webUI and adapt the software options
|
||||
|
||||
## Integration with HA
|
||||
|
||||
---
|
||||
### Apprise
|
||||
|
||||
You can use apprise to send notifications with mqtt, then act on those using HomeAssistant
|
||||
Further informations : https://wander.ingstar.com/projects/birdnetpi.html
|
||||
|
||||
### Automatic mqtt
|
||||
|
||||
If mqtt is installed, the addon automatically updates the birdnet topic with each detected species
|
||||
|
||||
## Using ssl
|
||||
|
||||
---
|
||||
|
||||
Option 1 : Install let's encrypt addon, generate certificates. They are by default certfile.pem and keyfile.pem stored in /ssl. Just enable ssl from the addon option and it will work.
|
||||
|
||||
Option 2 : enable port 80, define your battybirdnet-pi URL as https. Certificate will be automatically generated by caddy
|
||||
|
||||
## Improve detections
|
||||
|
||||
---
|
||||
|
||||
### Gain for card
|
||||
|
||||
Using alsamixer in the Terminal tab, make sure that the sound level is high enough but not too high (not in the red part)
|
||||
https://github.com/mcguirepr89/BirdNET-Pi/wiki/Adjusting-your-sound-card
|
||||
|
||||
### Ferrite
|
||||
|
||||
Adding ferrite beads lead in my case to worst noise
|
||||
|
||||
### Aux to usb adapters
|
||||
|
||||
Based on my test, only adapters using KT0210 (such as Ugreen's) work. I couldn't get adapters based on ALC to be detected.
|
||||
|
||||
### Microphone comparison
|
||||
|
||||
Recommended microphones ([full discussion here](https://github.com/mcguirepr89/BirdNET-Pi/discussions/39)):
|
||||
- Clippy EM272 (https://www.veldshop.nl/en/smart-clippy-em272z1-mono-omni-microphone.html) + ugreen aux to usb connector : best sensitivity with lavalier tech
|
||||
- Boya By-LM40 : best quality/price
|
||||
- Hyperx Quadcast : best sensitivity with cardioid tech
|
||||
|
||||
Conclusion, using mic from Dahua is good enough, EM272 is optimal, but Boya by-lm40 is a very good compromise as birndet model analysis the 0-15000Hz range
|
||||
|
||||

|
||||
|
||||
### Denoise ([Full discussion here](https://github.com/mcguirepr89/BirdNET-Pi/discussions/597))
|
||||
|
||||
Denoise is frowned upon by serious researchers. However it does seem to significantly increase quality of detection ! Here is how to do it in HA :
|
||||
- Using Portainer addon, go in the hassio_audio container, and modify the file /etc/pulse/system.pa to add the line `load-module module-echo-cancel`
|
||||
- Go in the Terminal addon, and type `ha audio restart`
|
||||
- Select the echo cancelled device as input device in the addon options
|
||||
|
||||
### High pass
|
||||
|
||||
Should be avoided as the model uses the whole 0-15khz range
|
||||
|
||||
## Common issues
|
||||
|
||||
Not yet available
|
||||
|
||||
## Support
|
||||
|
||||
Create an issue on github
|
||||
|
||||
---
|
||||
|
||||
66
battybirdnet-pi/apparmor.txt
Normal file
@@ -0,0 +1,66 @@
|
||||
#include <tunables/global>
|
||||
|
||||
profile battybirdnet-pi_addon flags=(attach_disconnected,mediate_deleted) {
|
||||
#include <abstractions/base>
|
||||
|
||||
capability,
|
||||
file,
|
||||
signal,
|
||||
mount,
|
||||
umount,
|
||||
remount,
|
||||
network udp,
|
||||
network tcp,
|
||||
network dgram,
|
||||
network stream,
|
||||
network inet,
|
||||
network inet6,
|
||||
network netlink raw,
|
||||
network unix dgram,
|
||||
|
||||
capability setgid,
|
||||
capability setuid,
|
||||
capability sys_admin,
|
||||
capability dac_read_search,
|
||||
# capability dac_override,
|
||||
# capability sys_rawio,
|
||||
|
||||
# S6-Overlay
|
||||
/init ix,
|
||||
/run/{s6,s6-rc*,service}/** ix,
|
||||
/package/** ix,
|
||||
/command/** ix,
|
||||
/run/{,**} rwk,
|
||||
/dev/tty rw,
|
||||
/bin/** ix,
|
||||
/usr/bin/** ix,
|
||||
/usr/lib/bashio/** ix,
|
||||
/etc/s6/** rix,
|
||||
/run/s6/** rix,
|
||||
/etc/services.d/** rwix,
|
||||
/etc/cont-init.d/** rwix,
|
||||
/etc/cont-finish.d/** rwix,
|
||||
/init rix,
|
||||
/var/run/** mrwkl,
|
||||
/var/run/ mrwkl,
|
||||
/dev/i2c-1 mrwkl,
|
||||
# Files required
|
||||
/dev/fuse mrwkl,
|
||||
/dev/sda1 mrwkl,
|
||||
/dev/sdb1 mrwkl,
|
||||
/dev/nvme0 mrwkl,
|
||||
/dev/nvme1 mrwkl,
|
||||
/dev/mmcblk0p1 mrwkl,
|
||||
/dev/* mrwkl,
|
||||
/tmp/** mrkwl,
|
||||
|
||||
# Data access
|
||||
/data/** rw,
|
||||
|
||||
# suppress ptrace denials when using 'docker ps' or using 'ps' inside a container
|
||||
ptrace (trace,read) peer=docker-default,
|
||||
|
||||
# docker daemon confinement requires explict allow rule for signal
|
||||
signal (receive) set=(kill,term) peer=/usr/bin/docker,
|
||||
|
||||
}
|
||||
5
battybirdnet-pi/build.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
build_from:
|
||||
aarch64: ghcr.io/linuxserver/baseimage-debian:arm64v8-bookworm
|
||||
codenotary:
|
||||
signer: alexandrep.github@gmail.com
|
||||
124
battybirdnet-pi/config.json
Normal file
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"arch": [
|
||||
"aarch64"
|
||||
],
|
||||
"audio": true,
|
||||
"backup": "cold",
|
||||
"codenotary": "alexandrep.github@gmail.com",
|
||||
"description": "A realtime acoustic bat & bird classification system for the Raspberry Pi 4/5 built on BattyBirdNET-Analyzer",
|
||||
"devices": [
|
||||
"/dev/dri",
|
||||
"/dev/dri/card0",
|
||||
"/dev/dri/card1",
|
||||
"/dev/dri/renderD128",
|
||||
"/dev/vchiq",
|
||||
"/dev/video10",
|
||||
"/dev/video11",
|
||||
"/dev/video12",
|
||||
"/dev/video13",
|
||||
"/dev/video14",
|
||||
"/dev/video15",
|
||||
"/dev/video16",
|
||||
"/dev/ttyUSB0",
|
||||
"/dev/sda",
|
||||
"/dev/sdb",
|
||||
"/dev/sdc",
|
||||
"/dev/sdd",
|
||||
"/dev/sde",
|
||||
"/dev/sdf",
|
||||
"/dev/sdg",
|
||||
"/dev/nvme",
|
||||
"/dev/nvme0n1p1",
|
||||
"/dev/nvme0n1p2",
|
||||
"/dev/mmcblk",
|
||||
"/dev/fuse",
|
||||
"/dev/sda1",
|
||||
"/dev/sdb1",
|
||||
"/dev/sdc1",
|
||||
"/dev/sdd1",
|
||||
"/dev/sde1",
|
||||
"/dev/sdf1",
|
||||
"/dev/sdg1",
|
||||
"/dev/sda2",
|
||||
"/dev/sdb2",
|
||||
"/dev/sdc2",
|
||||
"/dev/sdd2",
|
||||
"/dev/sde2",
|
||||
"/dev/sdf2",
|
||||
"/dev/sdg2",
|
||||
"/dev/sda3",
|
||||
"/dev/sdb3",
|
||||
"/dev/sda4",
|
||||
"/dev/sdb4",
|
||||
"/dev/sda5",
|
||||
"/dev/sda6",
|
||||
"/dev/sda7",
|
||||
"/dev/sda8",
|
||||
"/dev/nvme0",
|
||||
"/dev/nvme1",
|
||||
"/dev/nvme2"
|
||||
],
|
||||
"image": "ghcr.io/alexbelgium/battybirdnet-pi-{arch}",
|
||||
"ingress": true,
|
||||
"ingress_stream": true,
|
||||
"init": false,
|
||||
"map": [
|
||||
"addon_config:rw",
|
||||
"media:rw",
|
||||
"share:rw",
|
||||
"ssl"
|
||||
],
|
||||
"name": "BattyBirdNET-Pi",
|
||||
"options": {
|
||||
"BIRDSONGS_FOLDER": "/config/BirdSongs",
|
||||
"LIVESTREAM_BOOT_ENABLED": false,
|
||||
"TZ": "Europe/Paris",
|
||||
"certfile": "fullchain.pem",
|
||||
"keyfile": "privkey.pem",
|
||||
"ssl": false
|
||||
},
|
||||
"panel_admin": false,
|
||||
"panel_icon": "mdi:bird",
|
||||
"ports": {
|
||||
"80/tcp": null,
|
||||
"8081/tcp": 8081
|
||||
},
|
||||
"ports_description": {
|
||||
"80/tcp": "Optional : set to 80 to use caddy's automatic ssl",
|
||||
"8081/tcp": "Web ui"
|
||||
},
|
||||
"privileged": [
|
||||
"SYS_ADMIN",
|
||||
"DAC_READ_SEARCH"
|
||||
],
|
||||
"schema": {
|
||||
"BIRDSONGS_FOLDER": "str?",
|
||||
"LIVESTREAM_BOOT_ENABLED": "bool",
|
||||
"MQTT_DISABLED": "bool?",
|
||||
"MQTT_HOST_manual": "str?",
|
||||
"MQTT_PASSWORD_manual": "password?",
|
||||
"MQTT_PORT_manual": "int?",
|
||||
"MQTT_USER_manual": "str?",
|
||||
"PROCESSED_FOLDER_ENABLED": "bool?",
|
||||
"TZ": "str?",
|
||||
"certfile": "str",
|
||||
"cifsdomain": "str?",
|
||||
"cifspassword": "str?",
|
||||
"cifsusername": "str?",
|
||||
"keyfile": "str",
|
||||
"localdisks": "str?",
|
||||
"networkdisks": "str?",
|
||||
"pi_password": "password",
|
||||
"ssl": "bool"
|
||||
},
|
||||
"services": [
|
||||
"mqtt:want"
|
||||
],
|
||||
"slug": "battybirdnet-pi",
|
||||
"tmpfs": true,
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/battybirdnet-pi",
|
||||
"usb": true,
|
||||
"version": "0.1",
|
||||
"video": true
|
||||
}
|
||||
BIN
battybirdnet-pi/icon.png
Normal file
|
After Width: | Height: | Size: 196 KiB |
BIN
battybirdnet-pi/logo.png
Normal file
|
After Width: | Height: | Size: 196 KiB |
12
battybirdnet-pi/rootfs/custom-services.d/00-php_pfm.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Correct /config permissions after startup
|
||||
chown pi:pi /config
|
||||
|
||||
# Waiting for dbus
|
||||
until [[ -e /var/run/dbus/system_bus_socket ]]; do
|
||||
sleep 1s
|
||||
done
|
||||
echo "Starting service: php pfm"
|
||||
exec /usr/sbin/php-fpm* -F
|
||||
9
battybirdnet-pi/rootfs/custom-services.d/01-avahi.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# Waiting for dbus
|
||||
until [[ -e /var/run/dbus/system_bus_socket ]]; do
|
||||
sleep 1s
|
||||
done
|
||||
|
||||
echo "Starting service: avahi daemon"
|
||||
exec \
|
||||
avahi-daemon --no-chroot
|
||||
21
battybirdnet-pi/rootfs/custom-services.d/02-caddy.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Dependencies
|
||||
sockfile="empty"
|
||||
until [[ -e /var/run/dbus/system_bus_socket ]] && [[ -e "$sockfile" ]]; do
|
||||
sleep 1s
|
||||
sockfile="$(find /run/php -name "*.sock")"
|
||||
done
|
||||
|
||||
# Correct fpm.sock
|
||||
chown caddy:caddy /run/php/php*-fpm.sock
|
||||
sed -i "s|/run/php/php-fpm.sock|$sockfile|g" /helpers/caddy_ingress.sh
|
||||
sed -i "s|/run/php/php-fpm.sock|$sockfile|g" /etc/caddy/Caddyfile
|
||||
sed -i "s|/run/php/php-fpm.sock|$sockfile|g" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh
|
||||
|
||||
# Update caddyfile with password
|
||||
/."$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh &>/dev/null || true
|
||||
|
||||
echo "Starting service: caddy"
|
||||
/usr/bin/caddy run --config /etc/caddy/Caddyfile
|
||||
6
battybirdnet-pi/rootfs/custom-services.d/02-nginx.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
echo "Starting service: nginx"
|
||||
nginx
|
||||
92
battybirdnet-pi/rootfs/custom-services.d/30-monitoring.sh
Executable file
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
echo "Starting service: throttlerecording"
|
||||
touch "$HOME"/BirdSongs/StreamData/analyzing_now.txt
|
||||
|
||||
# variables for readability
|
||||
srv="birdnet_recording"
|
||||
analyzing_now="."
|
||||
counter=10
|
||||
set +u
|
||||
# shellcheck disable=SC1091
|
||||
source /config/birdnet.conf 2>/dev/null
|
||||
|
||||
# Ensure folder exists
|
||||
ingest_dir="$RECS_DIR/StreamData"
|
||||
|
||||
# Check permissions
|
||||
mkdir -p "$ingest_dir"
|
||||
chown -R pi:pi "$ingest_dir"
|
||||
chmod -R 755 "$ingest_dir"
|
||||
ingest_dir="$(readlink -f "$ingest_dir")" || true
|
||||
mkdir -p "$ingest_dir"
|
||||
chown -R pi:pi "$ingest_dir"
|
||||
chmod -R 755 "$ingest_dir"
|
||||
|
||||
function apprisealert() {
|
||||
# Set failed check so it only runs once
|
||||
touch "$HOME"/BirdNET-Pi/failed_servicescheck
|
||||
NOTIFICATION=""
|
||||
STOPPEDSERVICE="<br><b>Stopped services:</b> "
|
||||
services=(birdnet_analysis
|
||||
chart_viewer
|
||||
spectrogram_viewer
|
||||
icecast2
|
||||
birdnet_recording
|
||||
birdnet_log
|
||||
birdnet_stats)
|
||||
for i in "${services[@]}"; do
|
||||
if [[ "$(sudo systemctl is-active "${i}".service)" == "inactive" ]]; then
|
||||
STOPPEDSERVICE+="${i}; "
|
||||
fi
|
||||
done
|
||||
NOTIFICATION+="$STOPPEDSERVICE"
|
||||
NOTIFICATION+="<br><b>Additional informations</b>: "
|
||||
NOTIFICATION+="<br><b>Since:</b> ${LASTCHECK:-unknown}"
|
||||
NOTIFICATION+="<br><b>System:</b> ${SITE_NAME:-$(hostname)}"
|
||||
NOTIFICATION+="<br>Available disk space: $(df -h "$(readlink -f "$HOME/BirdSongs")" | awk 'NR==2 {print $4}')"
|
||||
if [ -n "$BIRDNETPI_URL" ]; then
|
||||
NOTIFICATION+="<br> <a href=\"$BIRDNETPI_URL\">Access your battybirdnet-pi</a>"
|
||||
fi
|
||||
TITLE="BirdNET-Analyzer stopped"
|
||||
"$HOME"/BirdNET-Pi/birdnet/bin/apprise -vv -t "$TITLE" -b "${NOTIFICATION}" --input-format=html --config="$HOME/BirdNET-Pi/apprise.txt"
|
||||
}
|
||||
|
||||
while true; do
|
||||
sleep 61
|
||||
|
||||
# Restart analysis if clogged
|
||||
############################
|
||||
|
||||
if ((counter <= 0)); then
|
||||
latest="$(cat "$ingest_dir"/analyzing_now.txt)"
|
||||
if [[ "$latest" == "$analyzing_now" ]]; then
|
||||
echo "$(date) WARNING no change in analyzing_now for 10 iterations, restarting services"
|
||||
/."$HOME"/BirdNET-Pi/scripts/restart_services.sh
|
||||
fi
|
||||
counter=10
|
||||
analyzing_now=$(cat "$ingest_dir"/analyzing_now.txt)
|
||||
fi
|
||||
|
||||
# Pause recorder to catch-up
|
||||
############################
|
||||
|
||||
wavs="$(find "$ingest_dir" -maxdepth 1 -name '*.wav' | wc -l)"
|
||||
state="$(systemctl is-active "$srv")"
|
||||
|
||||
bashio::log.green "$(date) INFO ${wavs} wav files waiting in $ingest_dir, $srv state is $state"
|
||||
|
||||
if ((wavs > 100)); then
|
||||
bashio::log.red "$(date) WARNING too many files in queue, pausing $srv"
|
||||
sudo systemctl stop "$srv"
|
||||
sudo systemctl restart birdnet_analysis
|
||||
if [ -s "$HOME/BirdNET-Pi/apprise.txt" ]; then apprisealert; fi
|
||||
elif [[ "$state" != "active" ]]; then
|
||||
bashio::log.yellow "$(date) INFO started $srv service"
|
||||
sudo systemctl start $srv
|
||||
sudo systemctl restart birdnet_analysis
|
||||
fi
|
||||
|
||||
((counter--))
|
||||
done
|
||||
18
battybirdnet-pi/rootfs/etc/cont-finish.d/savestreamdata.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
if [ -d "$HOME"/BirdSongs/StreamData ]; then
|
||||
bashio::log.fatal "Container stopping, saving temporary files"
|
||||
|
||||
# Stop the services in parallel
|
||||
systemctl stop birdnet_analysis &
|
||||
systemctl stop birdnet_recording
|
||||
|
||||
# Check if there are files in StreamData and move them to /data/StreamData
|
||||
mkdir -p /data/StreamData
|
||||
if [ "$(ls -A "$HOME"/BirdSongs/StreamData)" ]; then
|
||||
mv -v "$HOME"/BirdSongs/StreamData/* /data/StreamData/
|
||||
fi
|
||||
|
||||
bashio::log.fatal "... files safe, allowing container to stop"
|
||||
fi
|
||||
87
battybirdnet-pi/rootfs/etc/cont-init.d/01-structure.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/command/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
###############
|
||||
# SET /CONFIG #
|
||||
###############
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Ensuring the file structure is correct :"
|
||||
|
||||
# Define structure
|
||||
echo "... creating default files"
|
||||
touch /config/include_species_list.txt # Should be null
|
||||
for files in apprise.txt exclude_species_list.txt IdentifiedSoFar.txt disk_check_exclude.txt confirmed_species_list.txt blacklisted_images.txt; do
|
||||
if [ ! -f /config/"$files" ]; then
|
||||
echo "" > /config/"$files"
|
||||
fi
|
||||
done
|
||||
|
||||
# Get BirdSongs folder locations
|
||||
BIRDSONGS_FOLDER="/config/BirdSongs"
|
||||
if bashio::config.has_value "BIRDSONGS_FOLDER"; then
|
||||
BIRDSONGS_FOLDER_OPTION="$(bashio::config "BIRDSONGS_FOLDER")"
|
||||
echo "... BIRDSONGS_FOLDER set to $BIRDSONGS_FOLDER_OPTION"
|
||||
mkdir -p "$BIRDSONGS_FOLDER_OPTION" || bashio::log.fatal "...... folder couldn't be created"
|
||||
chown -R pi:pi "$BIRDSONGS_FOLDER_OPTION" || bashio::log.fatal "...... folder couldn't be given permissions for 1000:1000"
|
||||
if [ -d "$BIRDSONGS_FOLDER_OPTION" ] && [ "$(stat -c '%u:%g' "$BIRDSONGS_FOLDER_OPTION")" == "1000:1000" ]; then
|
||||
BIRDSONGS_FOLDER="$BIRDSONGS_FOLDER_OPTION"
|
||||
else
|
||||
bashio::log.yellow "BIRDSONGS_FOLDER reverted to /config/BirdSongs"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create BirdSongs folder
|
||||
echo "... creating default folders ; it is highly recommended to store those on a ssd"
|
||||
mkdir -p "$BIRDSONGS_FOLDER"/By_Date
|
||||
mkdir -p "$BIRDSONGS_FOLDER"/Charts
|
||||
|
||||
# If tmpfs is installed, use it
|
||||
if df -T /tmp | grep -q "tmpfs"; then
|
||||
echo "... tmpfs detected, using it for StreamData and Processed to reduce disk wear"
|
||||
mkdir -p /tmp/StreamData
|
||||
mkdir -p /tmp/Processed
|
||||
rm -r "$HOME"/BirdSongs/StreamData
|
||||
rm -r "$HOME"/BirdSongs/Processed
|
||||
sudo -u pi ln -fs /tmp/StreamData "$HOME"/BirdSongs/StreamData
|
||||
sudo -u pi ln -fs /tmp/Processed "$HOME"/BirdSongs/Processed
|
||||
fi
|
||||
|
||||
# Permissions for created files and folders
|
||||
echo "... set permissions to user pi"
|
||||
chown -R pi:pi /config /etc/birdnet "$BIRDSONGS_FOLDER" /tmp
|
||||
chmod -R 755 /config /config /etc/birdnet "$BIRDSONGS_FOLDER" /tmp
|
||||
|
||||
# Save default birdnet.conf to perform sanity check
|
||||
cp "$HOME"/BirdNET-Pi/birdnet.conf "$HOME"/BirdNET-Pi/birdnet.bak
|
||||
|
||||
# Symlink files
|
||||
echo "... creating symlink"
|
||||
for files in "$HOME/BirdNET-Pi/birdnet.conf" "$HOME/BirdNET-Pi/blacklisted_images.txt" "$HOME/BirdNET-Pi/scripts/birds.db" "$HOME/BirdNET-Pi/BirdDB.txt" "$HOME/BirdNET-Pi/scripts/disk_check_exclude.txt" "$HOME/BirdNET-Pi/apprise.txt" "$HOME/BirdNET-Pi/exclude_species_list.txt" "$HOME/BirdNET-Pi/include_species_list.txt" "$HOME/BirdNET-Pi/IdentifiedSoFar.txt" "$HOME/BirdNET-Pi/confirmed_species_list.txt"; do
|
||||
filename="${files##*/}"
|
||||
if [ ! -f /config/"$filename" ]; then
|
||||
if [ -f "$files" ]; then
|
||||
echo "... copying $filename" && sudo -u pi mv "$files" /config/
|
||||
else
|
||||
touch /config/"$filename"
|
||||
fi
|
||||
fi
|
||||
if [ -e "$files" ]; then rm "$files"; fi
|
||||
sudo -u pi ln -fs /config/"$filename" "$files" || bashio::log.fatal "Symlink creation failed for $filename"
|
||||
sudo -u pi ln -fs /config/"$filename" /etc/birdnet/"$filename" || bashio::log.fatal "Symlink creation failed for $filename"
|
||||
done
|
||||
|
||||
# Symlink folders
|
||||
for folders in By_Date Charts; do
|
||||
echo "... creating symlink for $BIRDSONGS_FOLDER/$folders"
|
||||
rm -r "$HOME/BirdSongs/Extracted/${folders:?}"
|
||||
sudo -u pi ln -fs "$BIRDSONGS_FOLDER"/"$folders" "$HOME/BirdSongs/Extracted/$folders"
|
||||
done
|
||||
|
||||
# Permissions for created files and folders
|
||||
echo "... check permissions"
|
||||
chmod -R 755 /config/*
|
||||
chmod 777 /config
|
||||
|
||||
echo " "
|
||||
24
battybirdnet-pi/rootfs/etc/cont-init.d/02-restorestreamdata.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Check if there are files in "$HOME"/BirdSongs/StreamData and move them to /data/StreamData
|
||||
if [ -d /data/StreamData ] && [ "$(ls -A /data/StreamData/)" ]; then
|
||||
|
||||
bashio::log.warning "Container was stopped while files were still being analysed, restoring them"
|
||||
|
||||
# Copy files
|
||||
if [ "$(ls -A /data/StreamData)" ]; then
|
||||
mv -v /data/StreamData/* "$HOME"/BirdSongs/StreamData/
|
||||
fi
|
||||
echo "... done"
|
||||
echo ""
|
||||
|
||||
# Setting permissions
|
||||
chown -R pi:pi "$HOME"/BirdSongs
|
||||
chmod -R 755 "$HOME"/BirdSongs
|
||||
|
||||
# Cleaning folder
|
||||
rm -r /data/StreamData
|
||||
|
||||
fi
|
||||
|
||||
54
battybirdnet-pi/rootfs/etc/cont-init.d/31-checks.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/command/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
######################
|
||||
# CHECK BIRDNET.CONF #
|
||||
######################
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Checking your birndet.conf file integrity"
|
||||
|
||||
# Set variables
|
||||
configcurrent="$HOME"/BirdNET-Pi/birdnet.conf
|
||||
configtemplate="$HOME"/BirdNET-Pi/birdnet.bak
|
||||
|
||||
# Extract variable names from config template and read each one
|
||||
grep -o '^[^#=]*=' "$configtemplate" | sed 's/=//' | while read -r var; do
|
||||
# Check if the variable is in configcurrent, if not, append it
|
||||
if ! grep -q "^$var=" "$configcurrent"; then
|
||||
# At which line was the variable in the initial file
|
||||
bashio::log.yellow "...$var was missing from your birdnet.conf file, it was re-added"
|
||||
grep "^$var=" "$configtemplate" >> "$configcurrent"
|
||||
fi
|
||||
# Check for duplicates
|
||||
if [ "$(grep -c "^$var=" "$configcurrent")" -gt 1 ]; then
|
||||
bashio::log.error "Duplicate variable $var found in $configcurrent, all were commented out expect for the first one"
|
||||
awk -v var="$var" '{ if ($0 ~ "^[[:blank:]]*"var && c++ > 0) print "#" $0; else print $0; }' "$configcurrent" > temp && mv temp "$configcurrent"
|
||||
fi
|
||||
done
|
||||
|
||||
################
|
||||
# CHECK AMIXER #
|
||||
################
|
||||
|
||||
# If default capture is set at 0%, increase it to 50%
|
||||
# current_volume="$(amixer sget Capture | grep -oP '\[\d+%]' | tr -d '[]%' | head -1)" 2>/dev/null || true
|
||||
# current_volume="${current_volume:-100}"
|
||||
|
||||
# Set the default microphone volume to 50% if it's currently at 0%
|
||||
# if [[ "$current_volume" -eq 0 ]]; then
|
||||
# amixer sset Capture 70%
|
||||
# bashio::log.warning "Microphone was off, volume set to 70%."
|
||||
# fi
|
||||
|
||||
##############
|
||||
# CHECK PORT #
|
||||
##############
|
||||
|
||||
if [[ "$(bashio::addon.port "80")" == 3000 ]]; then
|
||||
bashio::log.fatal "This is crazy but your port is set to 3000 and streamlit doesn't accept this port! You need to change it from the addon options and restart. Thanks"
|
||||
sleep infinity
|
||||
fi
|
||||
|
||||
echo " "
|
||||
47
battybirdnet-pi/rootfs/etc/cont-init.d/33-mqtt.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
if bashio::services.available 'mqtt' && ! bashio::config.true 'MQTT_DISABLED' ; then
|
||||
bashio::log.green "---"
|
||||
bashio::log.blue "MQTT addon is active on your system! battybirdnet-pi is now automatically configured to send its ouptut to MQTT"
|
||||
bashio::log.blue "MQTT user : $(bashio::services "mqtt" "username")"
|
||||
bashio::log.blue "MQTT password : $(bashio::services "mqtt" "password")"
|
||||
bashio::log.blue "MQTT broker : tcp://$(bashio::services "mqtt" "host"):$(bashio::services "mqtt" "port")"
|
||||
bashio::log.green "---"
|
||||
bashio::log.blue "Data will be posted to the topic : 'birdnet'"
|
||||
bashio::log.blue "Json data : {'Date', 'Time', 'ScientificName', 'CommonName', 'Confidence', 'SpeciesCode', 'ClipName', 'url'}"
|
||||
bashio::log.blue "---"
|
||||
|
||||
# Apply MQTT settings
|
||||
sed -i "s|%%mqtt_server%%|$(bashio::services "mqtt" "host")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_port%%|$(bashio::services "mqtt" "port")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_user%%|$(bashio::services "mqtt" "username")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_pass%%|$(bashio::services "mqtt" "password")|g" /helpers/birdnet_to_mqtt.py
|
||||
|
||||
# Copy script
|
||||
cp /helpers/birdnet_to_mqtt.py /usr/bin/birdnet_to_mqtt.py
|
||||
cp /helpers/birdnet_to_mqtt.sh /custom-services.d
|
||||
chmod 777 /usr/bin/birdnet_to_mqtt.py
|
||||
chmod 777 /custom-services.d/birdnet_to_mqtt.sh
|
||||
elif bashio::config.has_value "MQTT_HOST_manual" && bashio::config.has_value "MQTT_PORT_manual"; then
|
||||
bashio::log.green "---"
|
||||
bashio::log.blue "MQTT is manually configured in the addon options"
|
||||
bashio::log.blue "battybirdnet-pi is now automatically configured to send its ouptut to MQTT"
|
||||
bashio::log.green "---"
|
||||
bashio::log.blue "Data will be posted to the topic : 'birdnet'"
|
||||
bashio::log.blue "Json data : {'Date', 'Time', 'ScientificName', 'CommonName', 'Confidence', 'SpeciesCode', 'ClipName', 'url'}"
|
||||
bashio::log.blue "---"
|
||||
|
||||
# Apply MQTT settings
|
||||
sed -i "s|%%mqtt_server%%|$(bashio::config "MQTT_HOST_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_port%%|$(bashio::config "MQTT_PORT_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_user%%|$(bashio::config "MQTT_USER_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_pass%%|$(bashio::config "MQTT_PASSWORD_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
|
||||
# Copy script
|
||||
cp /helpers/birdnet_to_mqtt.py /usr/bin/birdnet_to_mqtt.py
|
||||
cp /helpers/birdnet_to_mqtt.sh /custom-services.d
|
||||
chmod +x /usr/bin/birdnet_to_mqtt.py
|
||||
chmod +x /custom-services.d/birdnet_to_mqtt.sh
|
||||
fi
|
||||
63
battybirdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/command/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
################
|
||||
# ADD FEATURES #
|
||||
################
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Adding optional features"
|
||||
|
||||
# Denoiser
|
||||
#if bashio::config.true "DENOISER_ANALYSIS_ENABLED"; then
|
||||
# sed -i "s|ar 48000|ar 48000 -af \"arnndn=m=sample.rnnn\"|g" "$HOME"/BirdNET-Pi/scripts/birdnet_recording.sh
|
||||
# sed -i "s|ar 48000|ar 48000 -af afftdn=nr=30:nt=w:om=o|g" "$HOME"/BirdNET-Pi/scripts/birdnet_recording.sh
|
||||
#fi
|
||||
|
||||
# Enable the Processed folder
|
||||
#############################
|
||||
|
||||
if bashio::config.true "PROCESSED_FOLDER_ENABLED" && ! grep -q "processed_size" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py; then
|
||||
echo "... Enabling the Processed folder : the last 15 wav files will be stored there"
|
||||
# Adapt config.php
|
||||
sed -i "/GET\[\"info_site\"\]/a\ \$processed_size = \$_GET\[\"processed_size\"\];" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\$contents = file_get_contents/a\ \$contents = preg_replace\(\"/PROCESSED_SIZE=\.\*/\", \"PROCESSED_SIZE=\$processed_size\", \$contents\);" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i <table class=\"settingstable\"><tr><td>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i <h2>Processed folder management </h2>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i <label for=\"processed_size\">Amount of files to keep after analysis :</label>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i <input name=\"processed_size\" type=\"number\" style=\"width:6em;\" max=\"90\" min=\"0\" step=\"1\" value=\"<\?php print(\$config\['PROCESSED_SIZE'\]);?>\"/>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i </td></tr><tr><td>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i Processed is the directory where the formerly 'Analyzed' files are moved after extractions, mostly for troubleshooting purposes.<br>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i This value defines the maximum amount of files that are kept before replacement with new files.<br>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i </td></tr></table>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
sed -i "/\"success\"/i\ <br>" "$HOME"/BirdNET-Pi/scripts/config.php
|
||||
# Adapt birdnet_analysis.py - move_to_processed
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ os.remove(files.pop(0))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ while len(files) > processed_size:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ files.sort(key=os.path.getmtime)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ files = glob.glob(os.path.join(processed_dir, '*'))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ os.rename(file_name, os.path.join(processed_dir, os.path.basename(file_name)))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ processed_dir = os.path.join(get_settings()['RECS_DIR'], 'Processed')" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\def move_to_processed(file_name, processed_size):" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
# Adapt birdnet_analysis.py - get_processed_size
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ return 0" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ except (ValueError, TypeError):" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ return processed_size if isinstance(processed_size, int) else 0" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ processed_size = get_settings().getint('PROCESSED_SIZE')" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ try:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\def get_processed_size():" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
# Modify calls
|
||||
sed -i "/from subprocess import CalledProcessError/a\import glob" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/from subprocess import CalledProcessError/a\import time" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
# Modify main code
|
||||
sed -i "/os.remove(file.file_name)/i\ processed_size = get_processed_size()" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/os.remove(file.file_name)/i\ if processed_size > 0:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/os.remove(file.file_name)/i\ move_to_processed(file.file_name, processed_size)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/os.remove(file.file_name)/i\ else:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
sed -i "/os.remove(file.file_name)/c\ os.remove(file.file_name)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
|
||||
fi || true
|
||||
|
||||
echo " "
|
||||
66
battybirdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/command/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
################
|
||||
# MODIFY WEBUI #
|
||||
################
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Adapting webui"
|
||||
|
||||
# Remove services tab
|
||||
echo "... removing System Controls from webui as should be used from HA"
|
||||
sed -i '/>System Controls/d' "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
|
||||
# Remove services tab
|
||||
echo "... removing Ram drive from webui as it is handled from HA"
|
||||
sed -i '/Ram drive/{n;s/center"/center" style="display: none;"/;}' "$HOME"/BirdNET-Pi/scripts/service_controls.php
|
||||
sed -i '/Ram drive/d' "$HOME"/BirdNET-Pi/scripts/service_controls.php
|
||||
|
||||
# Correct services to start as user pi
|
||||
echo "... correct services to start as pi"
|
||||
for file in $(find "$HOME"/BirdNET-Pi/templates/birdnet*.service -print0 | xargs -0 basename -a) livestream.service chart_viewer.service chart_viewer.service spectrogram_viewer.service; do
|
||||
if [[ "$file" != "birdnet_log.service" ]]; then
|
||||
sed -i "s|ExecStart=|ExecStart=/usr/bin/sudo -u pi |g" "$HOME/BirdNET-Pi/templates/$file"
|
||||
fi
|
||||
done
|
||||
|
||||
# Send services log to container logs
|
||||
echo "... send services log to container logs"
|
||||
for file in $(find "$HOME"/BirdNET-Pi/templates/birdnet*.service -print0 | xargs -0 basename -a) livestream.service chart_viewer.service chart_viewer.service spectrogram_viewer.service; do
|
||||
sed -i "/Service/a StandardError=append:/proc/1/fd/1" "$HOME/BirdNET-Pi/templates/$file"
|
||||
sed -i "/Service/a StandardOutput=append:/proc/1/fd/1" "$HOME/BirdNET-Pi/templates/$file"
|
||||
done
|
||||
|
||||
# Avoid preselection in include and exclude lists
|
||||
echo "... avoid preselecting options in include and exclude lists"
|
||||
sed -i "s|option selected|option disabled|g" "$HOME"/BirdNET-Pi/scripts/include_list.php
|
||||
sed -i "s|option selected|option disabled|g" "$HOME"/BirdNET-Pi/scripts/exclude_list.php
|
||||
|
||||
# Correct log services to show /proc/1/fd/1
|
||||
echo "... show container logs in /logs"
|
||||
sed -i "/User=pi/d" "$HOME/BirdNET-Pi/templates/birdnet_log.service"
|
||||
sed -i "s|birdnet_log.sh|cat /proc/1/fd/1|g" "$HOME/BirdNET-Pi/templates/birdnet_log.service"
|
||||
|
||||
# Make sure config is correctly formatted.
|
||||
echo "... caddyfile modifications"
|
||||
#Correct instructions
|
||||
caddy fmt --overwrite /etc/caddy/Caddyfile
|
||||
#Change port to leave 80 free for certificate requests
|
||||
sed -i "s|http://|http://:8081|g" /etc/caddy/Caddyfile
|
||||
sed -i "s|http://|http://:8081|g" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh
|
||||
#Remove default file that blocks 80
|
||||
if [ -f /etc/caddy/Caddyfile.original ]; then rm /etc/caddy/Caddyfile.original; fi
|
||||
|
||||
# Improve webui paths to facilitate ingress
|
||||
echo "... correcting webui paths"
|
||||
sed -i "s|/stats|/stats/|g" "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
sed -i "s|/log|/log/|g" "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
|
||||
# If port 80 is enabled, make sure it is still 80
|
||||
if [ -n "$(bashio::addon.port 80)" ] && [ "$(bashio::addon.port 80)" != 80 ]; then
|
||||
bashio::log.fatal "The port 80 is enabled, but should still be 80 if you want the automatic ssl certificates generation to work"
|
||||
fi
|
||||
|
||||
echo " "
|
||||
37
battybirdnet-pi/rootfs/etc/cont-init.d/91-nginx_ingress.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
#################
|
||||
# NGINX SETTING #
|
||||
#################
|
||||
|
||||
declare ingress_interface
|
||||
declare ingress_port
|
||||
declare ingress_entry
|
||||
|
||||
# Variables
|
||||
ingress_port=$(bashio::addon.ingress_port)
|
||||
ingress_interface=$(bashio::addon.ip_address)
|
||||
ingress_entry=$(bashio::addon.ingress_entry)
|
||||
|
||||
# Quits if ingress not active
|
||||
if [ -z "$ingress_entry" ]; then exit 0; fi
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Adapting for ingress"
|
||||
echo "... setting up nginx"
|
||||
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
|
||||
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
|
||||
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
|
||||
|
||||
echo "... ensuring restricted area access"
|
||||
echo "${ingress_entry}" > /ingress_url
|
||||
sed -i "/function is_authenticated/a if (strpos(\$_SERVER['HTTP_REFERER'], '/api/hassio_ingress') !== false && strpos(\$_SERVER['HTTP_REFERER'], trim(file_get_contents('/ingress_url'))) !== false) { \$ret = true; return \$ret; }" "$HOME"/BirdNET-Pi/scripts/common.php
|
||||
|
||||
echo "... adapt Caddyfile for ingress"
|
||||
chmod +x /helpers/caddy_ingress.sh
|
||||
/./helpers/caddy_ingress.sh
|
||||
sed -i "/sudo caddy fmt --overwrite/i /./helpers/caddy_ingress.sh" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh
|
||||
|
||||
echo " "
|
||||
20
battybirdnet-pi/rootfs/etc/cont-init.d/92-ssl.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
###############
|
||||
# SSL SETTING #
|
||||
###############
|
||||
|
||||
if bashio::config.true 'ssl'; then
|
||||
bashio::log.info "Ssl is enabled using addon options, setting up nginx"
|
||||
bashio::config.require.ssl
|
||||
certfile=$(bashio::config 'certfile')
|
||||
keyfile=$(bashio::config 'keyfile')
|
||||
sed -i "2a\ tls /ssl/${certfile} /ssl/${keyfile}" /etc/caddy/Caddyfile
|
||||
sed -i "s|http://:8081|https://:8081|g" /etc/caddy/Caddyfile
|
||||
sed -i "s|http://:8081|https://:8081|g" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh
|
||||
sed -i "/https:/a tls /ssl/${certfile} /ssl/${keyfile}" "$HOME"/BirdNET-Pi/scripts/update_caddyfile.sh
|
||||
fi
|
||||
|
||||
echo " "
|
||||
72
battybirdnet-pi/rootfs/etc/cont-init.d/99-run.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/command/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
set -e
|
||||
|
||||
##############
|
||||
# SET SYSTEM #
|
||||
##############
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Setting password for the user pi"
|
||||
echo "pi:$(bashio::config "pi_password")" | sudo chpasswd
|
||||
echo "... done"
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Starting system services"
|
||||
|
||||
# Set TZ
|
||||
if bashio::config.has_value 'TZ'; then
|
||||
TIMEZONE=$(bashio::config 'TZ')
|
||||
echo "... setting timezone to $TIMEZONE"
|
||||
ln -snf /usr/share/zoneinfo/"$TIMEZONE" /etc/localtime
|
||||
echo "$TIMEZONE" >/etc/timezone
|
||||
fi || (bashio::log.fatal "Error : $TIMEZONE not found. Here is a list of valid timezones : https://manpages.ubuntu.com/manpages/focal/man3/DateTime::TimeZone::Catalog.3pm.html")
|
||||
|
||||
# Correcting systemctl
|
||||
echo "... correcting systemctl"
|
||||
mv /helpers/systemctl3.py /bin/systemctl
|
||||
chmod a+x /bin/systemctl
|
||||
|
||||
# Correcting systemctl
|
||||
echo "... correcting datetimectl"
|
||||
mv /helpers/timedatectl /usr/bin/timedatectl
|
||||
chmod a+x /usr/bin/timedatectl
|
||||
|
||||
# Correct language labels
|
||||
export "$(grep "^DATABASE_LANG" /config/birdnet.conf)"
|
||||
# Saving default of en
|
||||
cp "$HOME"/BirdNET-Pi/model/labels.txt "$HOME"/BirdNET-Pi/model/labels.bak
|
||||
# Adapt to new language
|
||||
echo "... adapting labels according to birdnet.conf file to $DATABASE_LANG"
|
||||
/."$HOME"/BirdNET-Pi/scripts/install_language_label_nm.sh -l "$DATABASE_LANG"
|
||||
|
||||
echo "... starting cron"
|
||||
systemctl start cron
|
||||
|
||||
# Starting dbus
|
||||
echo "... starting dbus"
|
||||
service dbus start
|
||||
|
||||
# Starting journald
|
||||
# echo "... starting journald"
|
||||
# systemctl start systemd-journald
|
||||
|
||||
# Starting services
|
||||
echo ""
|
||||
bashio::log.info "Starting battybirdnet-pi services"
|
||||
chmod +x "$HOME"/BirdNET-Pi/scripts/restart_services.sh
|
||||
"$HOME"/BirdNET-Pi/scripts/restart_services.sh
|
||||
|
||||
if bashio::config.true LIVESTREAM_BOOT_ENABLED; then
|
||||
echo "... starting livestream"
|
||||
sudo systemctl enable icecast2
|
||||
sudo systemctl start icecast2.service
|
||||
sudo systemctl enable --now livestream.service
|
||||
fi
|
||||
|
||||
# Correct the phpsysinfo for the correct gotty service
|
||||
gottyservice="$(pgrep -l "gotty" | awk '{print $NF}' | head -n 1)"
|
||||
echo "... using $gottyservice in phpsysinfo"
|
||||
sed -i "s/,gotty,/,${gottyservice:-gotty},/g" "$HOME"/BirdNET-Pi/templates/phpsysinfo.ini
|
||||
|
||||
echo " "
|
||||
@@ -5,11 +5,12 @@ proxy_redirect off;
|
||||
proxy_send_timeout 86400s;
|
||||
proxy_max_temp_file_size 0;
|
||||
|
||||
proxy_hide_header X-Frame-Options;
|
||||
proxy_set_header Accept-Encoding "";
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
3
battybirdnet-pi/rootfs/etc/nginx/includes/upstream.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
upstream backend {
|
||||
server 127.0.0.1:80;
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
# Run nginx in foreground.
|
||||
daemon off;
|
||||
|
||||
@@ -8,7 +9,7 @@ user root;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
# Set number of worker processes.
|
||||
worker_processes 1;
|
||||
worker_processes auto;
|
||||
|
||||
# Enables the use of JIT for regular expressions to speed-up their processing.
|
||||
pcre_jit on;
|
||||
@@ -24,12 +25,33 @@ include /etc/nginx/modules/*.conf;
|
||||
|
||||
# Max num of simultaneous connections by a worker process.
|
||||
events {
|
||||
worker_connections 512;
|
||||
worker_connections 8192;
|
||||
}
|
||||
|
||||
http {
|
||||
include /etc/nginx/includes/mime.types;
|
||||
|
||||
# https://emby.media/community/index.php?/topic/93074-how-to-emby-with-nginx-with-windows-specific-tips-and-csp-options/
|
||||
server_names_hash_bucket_size 64;
|
||||
gzip_disable "msie6";
|
||||
gzip_comp_level 6;
|
||||
gzip_min_length 1100;
|
||||
gzip_buffers 16 8k;
|
||||
gzip_proxied any;
|
||||
gzip_types
|
||||
text/plain
|
||||
text/css
|
||||
text/js
|
||||
text/xml
|
||||
text/javascript
|
||||
application/javascript
|
||||
application/x-javascript
|
||||
application/json
|
||||
application/xml
|
||||
application/rss+xml
|
||||
image/svg+xml;
|
||||
proxy_connect_timeout 1h;
|
||||
|
||||
log_format hassio '[$time_local] $status '
|
||||
'$http_x_forwarded_for($remote_addr) '
|
||||
'$request ($http_user_agent)';
|
||||
47
battybirdnet-pi/rootfs/etc/nginx/servers/ingress.conf
Normal file
@@ -0,0 +1,47 @@
|
||||
server {
|
||||
listen %%interface%%:%%port%% default_server;
|
||||
include /etc/nginx/includes/server_params.conf;
|
||||
include /etc/nginx/includes/proxy_params.conf;
|
||||
|
||||
proxy_buffering off;
|
||||
auth_basic_user_file /home/pi/.htpasswd;
|
||||
|
||||
location /log {
|
||||
# Proxy pass
|
||||
proxy_pass http://localhost:8082;
|
||||
}
|
||||
|
||||
location /stats {
|
||||
# Proxy pass
|
||||
proxy_pass http://localhost:8082;
|
||||
}
|
||||
|
||||
location /terminal {
|
||||
# Proxy pass
|
||||
proxy_pass http://localhost:8082;
|
||||
}
|
||||
|
||||
location / {
|
||||
# Proxy pass
|
||||
proxy_pass http://localhost:8082;
|
||||
|
||||
# Next three lines allow websockets
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
# Correct base_url
|
||||
proxy_set_header Accept-Encoding "";
|
||||
sub_filter_once off;
|
||||
sub_filter_types *;
|
||||
sub_filter /spectrogram %%ingress_entry%%/spectrogram;
|
||||
sub_filter /By_Date/ %%ingress_entry%%/By_Date/;
|
||||
sub_filter /Charts/ %%ingress_entry%%/Charts/;
|
||||
sub_filter /todays %%ingress_entry%%/todays;
|
||||
sub_filter href=\"/ href=\"%%ingress_entry%%/;
|
||||
sub_filter src=\"/ src=\"%%ingress_entry%%/;
|
||||
sub_filter hx-get=\"/ hx-get=\"%%ingress_entry%%/;
|
||||
sub_filter action=\"/ action=\"%%ingress_entry%%/;
|
||||
}
|
||||
|
||||
}
|
||||
124
battybirdnet-pi/rootfs/helpers/birdnet_to_mqtt.py
Normal file
@@ -0,0 +1,124 @@
|
||||
#! /usr/bin/env python3
|
||||
# birdnet_to_mqtt.py
|
||||
#
|
||||
# Adapted from : https://gist.github.com/deepcoder/c309087c456fc733435b47d83f4113ff
|
||||
# Adapted from : https://gist.github.com/JuanMeeske/08b839246a62ff38778f701fc1da5554
|
||||
#
|
||||
# monitor the records in the syslog file for info from the birdnet system on birds that it detects
|
||||
# publish this data to mqtt
|
||||
#
|
||||
|
||||
import time
|
||||
import re
|
||||
import dateparser
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import paho.mqtt.client as mqtt
|
||||
import subprocess
|
||||
|
||||
# Setup basic configuration for logging
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
# this generator function monitors the requested file handle for new lines added at its end
|
||||
# the newly added line is returned by the function
|
||||
def file_row_generator(s):
|
||||
while True :
|
||||
line = s.readline()
|
||||
if not line:
|
||||
time.sleep(0.1)
|
||||
continue
|
||||
yield line
|
||||
|
||||
# mqtt server
|
||||
mqtt_server = "%%mqtt_server%%" # server for mqtt
|
||||
mqtt_user = "%%mqtt_user%%" # Replace with your MQTT username
|
||||
mqtt_pass = "%%mqtt_pass%%" # Replace with your MQTT password
|
||||
mqtt_port = %%mqtt_port%% # port for mqtt
|
||||
|
||||
# mqtt topic for bird heard above threshold will be published
|
||||
mqtt_topic_confident_birds = 'birdnet'
|
||||
|
||||
# url base for website that will be used to look up info about bird
|
||||
bird_lookup_url_base = 'http://en.wikipedia.org/wiki/'
|
||||
|
||||
# regular expression patters used to decode the records from birdnet
|
||||
re_high_clean = re.compile(r'(?<=^\[birdnet_analysis\]\[INFO\] ).*?(?=\.mp3$)')
|
||||
|
||||
syslog = open('/proc/1/fd/1', 'r')
|
||||
|
||||
def on_connect(client, userdata, flags, rc, properties=None):
|
||||
""" Callback for when the client receives a CONNACK response from the server. """
|
||||
if rc == 0:
|
||||
logging.info("Connected to MQTT Broker!")
|
||||
else:
|
||||
logging.error(f"Failed to connect, return code {rc}\n")
|
||||
|
||||
def get_bird_code(scientific_name):
|
||||
with open('/home/pi/BirdNET-Pi/scripts/ebird.php', 'r') as file:
|
||||
data = file.read()
|
||||
|
||||
# Extract the array from the PHP file
|
||||
array_str = re.search(r'\$ebirds = \[(.*?)\];', data, re.DOTALL).group(1)
|
||||
|
||||
# Convert the PHP array to a Python dictionary
|
||||
bird_dict = {re.search(r'"(.*?)"', line).group(1): re.search(r'=> "(.*?)"', line).group(1)
|
||||
for line in array_str.split('\n') if '=>' in line}
|
||||
|
||||
# Return the corresponding value for the given bird's scientific name
|
||||
return bird_dict.get(scientific_name)
|
||||
|
||||
# this little hack is to make each received record for the all birds section unique
|
||||
# the date and time that the log returns is only down to the 1 second accuracy, do
|
||||
# you can get multiple records with same date and time, this will make Home Assistant not
|
||||
# think there is a new reading so we add a incrementing tenth of second to each record received
|
||||
ts_noise = 0.0
|
||||
|
||||
#try :
|
||||
# connect to MQTT server
|
||||
mqttc = mqtt.Client('birdnet_mqtt') # Create instance of client with client ID
|
||||
mqttc.username_pw_set(mqtt_user, mqtt_pass) # Use credentials
|
||||
mqttc.connect(mqtt_server, mqtt_port) # Connect to (broker, port, keepalive-time)
|
||||
mqttc.on_connect = on_connect
|
||||
mqttc.loop_start()
|
||||
|
||||
# call the generator function and process each line that is returned
|
||||
for row in file_row_generator(syslog):
|
||||
# bird found above confidence level found, process it
|
||||
if re_high_clean.search(row) :
|
||||
|
||||
# this slacker regular expression work, extracts the data about the bird found from the log line
|
||||
# I do the parse in two passes, because I did not know the re to do it in one!
|
||||
|
||||
raw_high_bird = re.search(re_high_clean, row)
|
||||
raw_high_bird = raw_high_bird.group(0)
|
||||
|
||||
# the fields we want are separated by semicolons, so split
|
||||
high_bird_fields = raw_high_bird.split(';')
|
||||
|
||||
# build a structure in python that will be converted to json
|
||||
bird = {}
|
||||
|
||||
# human time in this record is in two fields, date and time. They are human format
|
||||
# combine them together separated by a space and they turn the human data into a python
|
||||
# timestamp
|
||||
raw_ts = high_bird_fields[0] + ' ' + high_bird_fields[1]
|
||||
|
||||
#bird['ts'] = str(datetime.datetime.timestamp(dateparser.parse(raw_ts)))
|
||||
bird['Date'] = high_bird_fields[0]
|
||||
bird['Time'] = high_bird_fields[1]
|
||||
bird['ScientificName'] = high_bird_fields[2]
|
||||
bird['CommonName'] = high_bird_fields[3]
|
||||
bird['Confidence'] = high_bird_fields[4]
|
||||
bird['SpeciesCode'] = get_bird_code(high_bird_fields[2])
|
||||
bird['ClipName'] = high_bird_fields[11]
|
||||
|
||||
# build a url from scientific name of bird that can be used to lookup info about bird
|
||||
bird['url'] = bird_lookup_url_base + high_bird_fields[2].replace(' ', '_')
|
||||
|
||||
# convert to json string we can sent to mqtt
|
||||
json_bird = json.dumps(bird)
|
||||
|
||||
print('Posted to MQTT : ok')
|
||||
|
||||
mqttc.publish(mqtt_topic_confident_birds, json_bird, 1)
|
||||
5
battybirdnet-pi/rootfs/helpers/birdnet_to_mqtt.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/with-contenv bashio
|
||||
# shellcheck shell=bash
|
||||
|
||||
echo "Starting service: mqtt automated publish"
|
||||
"$PYTHON_VIRTUAL_ENV" /usr/bin/birdnet_to_mqtt.py &>/proc/1/fd/1
|
||||
24
battybirdnet-pi/rootfs/helpers/caddy_ingress.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Get values
|
||||
source /etc/birdnet/birdnet.conf
|
||||
|
||||
# Create ingress configuration for Caddyfile
|
||||
cat << EOF >> /etc/caddy/Caddyfile
|
||||
:8082 {
|
||||
root * ${EXTRACTED}
|
||||
file_server browse
|
||||
handle /By_Date/* {
|
||||
file_server browse
|
||||
}
|
||||
handle /Charts/* {
|
||||
file_server browse
|
||||
}
|
||||
reverse_proxy /stream localhost:8000
|
||||
php_fastcgi unix//run/php/php-fpm.sock
|
||||
reverse_proxy /log* localhost:8080
|
||||
reverse_proxy /stats* localhost:8501
|
||||
reverse_proxy /terminal* localhost:8888
|
||||
}
|
||||
EOF
|
||||
116
battybirdnet-pi/rootfs/helpers/convert_list.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style>
|
||||
</style>
|
||||
|
||||
<p><strong>This tool will allow to convert on-the-fly species to compensate for model errors. It SHOULD NOT BE USED except if you know what you are doing, instead the model errors should be reported to the owner. However, it is still convenient for systematic biases that are confirmed through careful listening of samples, while waiting for the models to be updated.</strong></p>
|
||||
|
||||
<div class="customlabels column1">
|
||||
<form action="" method="GET" id="add">
|
||||
<input type="hidden" id="species" name="species">
|
||||
<h3>Specie to convert from :</h3>
|
||||
<!-- Input box to filter options in the first table -->
|
||||
<input type="text" id="species1Search" onkeyup="filterOptions('species1')" placeholder="Search for species...">
|
||||
<select name="species1" id="species1" size="25">
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors',1);
|
||||
|
||||
$filename = './scripts/labels.txt';
|
||||
$eachline = file($filename, FILE_IGNORE_NEW_LINES);
|
||||
|
||||
foreach($eachline as $lines){echo
|
||||
"<option value=\"".$lines."\">$lines</option>";}
|
||||
?>
|
||||
</select>
|
||||
<br><br> <!-- Added a space between the two tables -->
|
||||
<h3>Specie to convert to :</h3>
|
||||
<!-- Input box to filter options in the second table -->
|
||||
<input type="text" id="species2Search" onkeyup="filterOptions('species2')" placeholder="Search for species...">
|
||||
<select name="species2" id="species2" size="25">
|
||||
<?php
|
||||
foreach($eachline as $lines){echo
|
||||
"<option value=\"".$lines."\">$lines</option>";}
|
||||
?>
|
||||
</select>
|
||||
<input type="hidden" name="add" value="add">
|
||||
</form>
|
||||
<div class="customlabels smaller">
|
||||
<button type="submit" name="view" value="Converted" form="add">>>ADD>></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="customlabels column2">
|
||||
<table><td>
|
||||
<button type="submit" name="view" value="Converted" form="add">>>ADD>></button>
|
||||
<br><br>
|
||||
<button type="submit" name="view" value="Converted" form="del">REMOVE</button>
|
||||
</td></table>
|
||||
</div>
|
||||
|
||||
<div class="customlabels column3" style="margin-top: 0;"> <!-- Removed the blank space above the table -->
|
||||
<form action="" method="GET" id="del">
|
||||
<h3>Converted Species List</h3>
|
||||
<select name="species[]" id="value2" multiple size="25">
|
||||
<?php
|
||||
$filename = './scripts/convert_species_list.txt'; // Changed the file path
|
||||
$eachline = file($filename, FILE_IGNORE_NEW_LINES);
|
||||
foreach($eachline as $lines){
|
||||
echo
|
||||
"<option value=\"".$lines."\">$lines</option>";
|
||||
}?>
|
||||
</select>
|
||||
<input type="hidden" name="del" value="del">
|
||||
</form>
|
||||
<div class="customlabels smaller">
|
||||
<button type="submit" name="view" value="Converted" form="del">REMOVE</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" id="hiddenSpecies" name="hiddenSpecies">
|
||||
|
||||
<script>
|
||||
document.getElementById("add").addEventListener("submit", function(event) {
|
||||
var speciesSelect1 = document.getElementById("species1");
|
||||
var speciesSelect2 = document.getElementById("species2");
|
||||
if (speciesSelect1.selectedIndex < 0 || speciesSelect2.selectedIndex < 0) {
|
||||
alert("Please select a species from both lists.");
|
||||
document.querySelector('.views').style.opacity = 1;
|
||||
event.preventDefault();
|
||||
} else {
|
||||
var selectedSpecies1 = speciesSelect1.options[speciesSelect1.selectedIndex].value;
|
||||
var selectedSpecies2 = speciesSelect2.options[speciesSelect2.selectedIndex].value;
|
||||
document.getElementById("species").value = selectedSpecies1 + ";" + selectedSpecies2;
|
||||
}
|
||||
});
|
||||
|
||||
// Store the original list of options in a variable
|
||||
var originalOptions = {};
|
||||
|
||||
// Function to filter options in a select element
|
||||
function filterOptions(id) {
|
||||
var input = document.getElementById(id + "Search");
|
||||
var filter = input.value.toUpperCase();
|
||||
var select = document.getElementById(id);
|
||||
var options = select.getElementsByTagName("option");
|
||||
|
||||
// If the original list of options for this select element hasn't been stored yet, store it
|
||||
if (!originalOptions[id]) {
|
||||
originalOptions[id] = Array.from(options).map(option => option.value);
|
||||
}
|
||||
|
||||
// Clear the select element
|
||||
while (select.firstChild) {
|
||||
select.removeChild(select.firstChild);
|
||||
}
|
||||
|
||||
// Populate the select element with the filtered labels
|
||||
originalOptions[id].forEach(label => {
|
||||
if (label.toUpperCase().indexOf(filter) > -1) {
|
||||
let option = document.createElement('option');
|
||||
option.value = label;
|
||||
option.text = label;
|
||||
select.appendChild(option);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
70
battybirdnet-pi/rootfs/helpers/spectral_analysis.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import numpy as np
|
||||
import scipy.io.wavfile as wavfile
|
||||
import matplotlib.pyplot as plt
|
||||
import os
|
||||
import glob
|
||||
import sys # Import the sys module
|
||||
|
||||
from utils.helpers import get_settings
|
||||
|
||||
# Dependencies /usr/bin/pip install numpy scipy matplotlib
|
||||
|
||||
# Define the directory containing the WAV files
|
||||
conf = get_settings()
|
||||
input_directory = os.path.join(conf['RECS_DIR'], 'StreamData')
|
||||
output_directory = os.path.join(conf['RECS_DIR'], 'Extracted/Charts')
|
||||
|
||||
# Ensure the output directory exists
|
||||
if not os.path.exists(output_directory):
|
||||
os.makedirs(output_directory)
|
||||
|
||||
# Check if a command-line argument is provided
|
||||
if len(sys.argv) > 1:
|
||||
# If an argument is provided, use it as the file to analyze
|
||||
wav_files = [sys.argv[1]]
|
||||
else:
|
||||
# If no argument is provided, analyze all WAV files in the directory
|
||||
wav_files = glob.glob(os.path.join(input_directory, '*.wav'))
|
||||
|
||||
# Process each file
|
||||
for file_path in wav_files:
|
||||
# Load the WAV file
|
||||
sample_rate, audio_data = wavfile.read(file_path)
|
||||
|
||||
# If stereo, select only one channel
|
||||
if len(audio_data.shape) > 1:
|
||||
audio_data = audio_data[:, 0]
|
||||
|
||||
# Apply the Hamming window to the audio data
|
||||
hamming_window = np.hamming(len(audio_data))
|
||||
windowed_data = audio_data * hamming_window
|
||||
|
||||
# Compute the FFT of the windowed audio data
|
||||
audio_fft = np.fft.fft(windowed_data)
|
||||
audio_fft = np.abs(audio_fft)
|
||||
|
||||
# Compute the frequencies associated with the FFT values
|
||||
frequencies = np.fft.fftfreq(len(windowed_data), d=1/sample_rate)
|
||||
|
||||
# Select the range of interest
|
||||
idx = np.where((frequencies >= 150) & (frequencies <= 15000))
|
||||
|
||||
# Calculate the saturation threshold based on the bit depth
|
||||
bit_depth = audio_data.dtype.itemsize * 8
|
||||
max_amplitude = 2**(bit_depth - 1) - 1
|
||||
saturation_threshold = 0.8 * max_amplitude
|
||||
|
||||
# Plot the spectrum with a logarithmic Y-axis
|
||||
plt.figure(figsize=(10, 6))
|
||||
plt.semilogy(frequencies[idx], audio_fft[idx], label='Spectrum')
|
||||
plt.axhline(y=saturation_threshold, color='r', linestyle='--', label='Saturation Threshold')
|
||||
plt.xlabel("Frequency (Hz)")
|
||||
plt.ylabel("Amplitude (Logarithmic)")
|
||||
plt.title(f"Frequency Spectrum (150 - 15000 Hz) - {os.path.basename(file_path)}")
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
|
||||
# Save the plot as a PNG file
|
||||
output_filename = os.path.basename(file_path).replace('.wav', '_spectrum.png')
|
||||
plt.savefig(os.path.join(output_directory, output_filename))
|
||||
plt.close() # Close the figure to free memory
|
||||
62
battybirdnet-pi/rootfs/helpers/spectral_analysis.sh
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
# Performs the recording from the specified RTSP stream or soundcard
|
||||
source /etc/birdnet/birdnet.conf
|
||||
|
||||
# Read the logging level from the configuration option
|
||||
LOGGING_LEVEL="${LogLevel_BirdnetRecordingService}"
|
||||
# If empty for some reason default to log level of error
|
||||
[ -z "$LOGGING_LEVEL" ] && LOGGING_LEVEL='error'
|
||||
# Additionally if we're at debug or info level then allow printing of script commands and variables
|
||||
if [ "$LOGGING_LEVEL" == "info" ] || [ "$LOGGING_LEVEL" == "debug" ];then
|
||||
# Enable printing of commands/variables etc to terminal for debugging
|
||||
set -x
|
||||
fi
|
||||
|
||||
[ -z "$RECORDING_LENGTH" ] && RECORDING_LENGTH=15
|
||||
[ -d "$RECS_DIR"/StreamData ] || mkdir -p "$RECS_DIR"/StreamData
|
||||
|
||||
filename="Spectrum_$(date "+%Y-%m-%d_%H:%M").wav"
|
||||
|
||||
if [ ! -z "$RTSP_STREAM" ];then
|
||||
# Explode the RSPT steam setting into an array so we can count the number we have
|
||||
RTSP_STREAMS_EXPLODED_ARRAY=("${RTSP_STREAM//,/ }")
|
||||
|
||||
while true;do
|
||||
|
||||
# Initially start the count off at 1 - our very first stream
|
||||
RTSP_STREAMS_STARTED_COUNT=1
|
||||
FFMPEG_PARAMS=""
|
||||
|
||||
# Loop over the streams
|
||||
for i in "${RTSP_STREAMS_EXPLODED_ARRAY[@]}"
|
||||
do
|
||||
# Map id used to map input to output (first stream being 0), this is 0 based in ffmpeg so decrement our counter (which is more human readable) by 1
|
||||
MAP_ID="$((RTSP_STREAMS_STARTED_COUNT-1))"
|
||||
# Build up the parameters to process the RSTP stream, including mapping for the output
|
||||
FFMPEG_PARAMS+="-vn -thread_queue_size 512 -i ${i} -map ${MAP_ID}:a:0 -t ${RECORDING_LENGTH} -acodec pcm_s16le -ac 2 -ar 48000 file:${RECS_DIR}/StreamData/$filename "
|
||||
# Increment counter
|
||||
((RTSP_STREAMS_STARTED_COUNT += 1))
|
||||
done
|
||||
|
||||
# Make sure were passing something valid to ffmpeg, ffmpeg will run interactive and control our loop by waiting ${RECORDING_LENGTH} between loops because it will stop once that much has been recorded
|
||||
if [ -n "$FFMPEG_PARAMS" ];then
|
||||
ffmpeg -hide_banner -loglevel "$LOGGING_LEVEL" -nostdin "$FFMPEG_PARAMS"
|
||||
fi
|
||||
|
||||
done
|
||||
else
|
||||
if pgrep arecord &> /dev/null ;then
|
||||
echo "Recording"
|
||||
else
|
||||
if [ -z "${REC_CARD}" ];then
|
||||
arecord -f S16_LE -c"${CHANNELS}" -r48000 -t wav --max-file-time "${RECORDING_LENGTH}"\
|
||||
--use-strftime "${RECS_DIR}"/StreamData/"$filename"
|
||||
else
|
||||
arecord -f S16_LE -c"${CHANNELS}" -r48000 -t wav --max-file-time "${RECORDING_LENGTH}"\
|
||||
-D "${REC_CARD}" --use-strftime "${RECS_DIR}"/StreamData/"$filename"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create the spectral analysis
|
||||
"$PYTHON_VIRTUAL_ENV" "$HOME"/BirdNET-Pi/scripts/spectral_analysis.py
|
||||
6851
battybirdnet-pi/rootfs/helpers/systemctl3.py
Normal file
72
battybirdnet-pi/rootfs/helpers/timedatectl
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to show the current timezone, with two alternative methods
|
||||
show_timezone() {
|
||||
# Check if the /etc/timezone file exists
|
||||
if [ -f /etc/timezone ]; then
|
||||
timezone=$(cat /etc/timezone)
|
||||
elif [ -f /etc/localtime ]; then
|
||||
timezone=$(readlink /etc/localtime)
|
||||
timezone=${timezone/\/usr\/share\/zoneinfo\//}
|
||||
else
|
||||
timezone="Cannot determine timezone."
|
||||
fi
|
||||
echo "$timezone"
|
||||
}
|
||||
|
||||
# Function to set the timezone
|
||||
set_timezone() {
|
||||
new_timezone="$1"
|
||||
echo "$new_timezone" | sudo tee /etc/timezone >/dev/null
|
||||
sudo ln -sf /usr/share/zoneinfo/"$new_timezone" /etc/localtime
|
||||
if [ -f /etc/environment ]; then sudo sed -i "/TZ/c\TZ=$new_timezone" /etc/environment; fi
|
||||
if [ -d /var/run/s6/container_environment ]; then echo "$new_timezone" | sudo tee /var/run/s6/container_environment/TZ > /dev/null; fi
|
||||
echo "$new_timezone"
|
||||
}
|
||||
|
||||
# Main script
|
||||
case "$1" in
|
||||
"set-ntp")
|
||||
case "$2" in
|
||||
"false")
|
||||
sudo systemctl stop systemd-timesyncd
|
||||
sudo systemctl disable systemd-timesyncd
|
||||
echo "NTP disabled"
|
||||
;;
|
||||
"true")
|
||||
sudo systemctl start systemd-timesyncd
|
||||
sudo systemctl enable systemd-timesyncd
|
||||
echo "NTP enabled"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid argument for set-ntp. Use 'false' or 'true'."
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"show")
|
||||
show_timezone
|
||||
;;
|
||||
"set-timezone")
|
||||
set_timezone "$2"
|
||||
;;
|
||||
*)
|
||||
# Get values
|
||||
local_time="$(date)"
|
||||
utc_time="$(date -u)"
|
||||
time_zone="$(show_timezone)"
|
||||
# Check if NTP is used
|
||||
if sudo systemctl status systemd-timesyncd | grep -q " active"; then
|
||||
ntp_status="yes"
|
||||
ntp_service="active"
|
||||
else
|
||||
ntp_status="no"
|
||||
ntp_service="inactive"
|
||||
fi
|
||||
# Print the information
|
||||
echo "Local time: $local_time"
|
||||
echo "Universal time: $utc_time"
|
||||
echo "Time zone: $time_zone"
|
||||
echo "Network time on: $ntp_status"
|
||||
echo "NTP service: $ntp_service"
|
||||
;;
|
||||
esac
|
||||
27
battybirdnet-pi/rootfs/helpers/views.add
Normal file
@@ -0,0 +1,27 @@
|
||||
if($_GET['view'] == "Converted"){
|
||||
ensure_authenticated();
|
||||
if(isset($_GET['species']) && isset($_GET['add'])){
|
||||
$file = './scripts/convert_species_list.txt';
|
||||
$str = file_get_contents("$file");
|
||||
$str = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $str);
|
||||
file_put_contents("$file", "$str");
|
||||
// Write $_GET['species'] to the file
|
||||
file_put_contents("./scripts/convert_species_list.txt", htmlspecialchars_decode($_GET['species'], ENT_QUOTES)."\n", FILE_APPEND);
|
||||
} elseif (isset($_GET['species']) && isset($_GET['del'])){
|
||||
$file = './scripts/convert_species_list.txt';
|
||||
$str = file_get_contents("$file");
|
||||
$str = preg_replace('/^\h*\v+/m', '', $str);
|
||||
file_put_contents("$file", "$str");
|
||||
foreach($_GET['species'] as $selectedOption) {
|
||||
$content = file_get_contents("./scripts/convert_species_list.txt");
|
||||
$newcontent = str_replace($selectedOption, "", "$content");
|
||||
$newcontent = str_replace(htmlspecialchars_decode($selectedOption, ENT_QUOTES), "", "$content");
|
||||
file_put_contents("./scripts/convert_species_list.txt", "$newcontent");
|
||||
}
|
||||
$file = './scripts/convert_species_list.txt';
|
||||
$str = file_get_contents("$file");
|
||||
$str = preg_replace('/^\h*\v+/m', '', $str);
|
||||
file_put_contents("$file", "$str");
|
||||
}
|
||||
include('./scripts/convert_list.php');
|
||||
}
|
||||
BIN
battybirdnet-pi/stats.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
8
battybirdnet-pi/updater.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"last_update": "27-07-2024",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "battybattybirdnet-pi",
|
||||
"source": "github",
|
||||
"upstream_repo": "rdz-oss/Battybattybirdnet-pi",
|
||||
"upstream_version": ""
|
||||
}
|
||||
BIN
bazarr/stats.png
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.9 KiB |
248
birdnet-go/HAINTEGRATION.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# BirdNET-Go Addon: Home Assistant Integration
|
||||
|
||||
BirdNET-Go can be integrated with Home Assistant using a MQTT Broker.
|
||||
|
||||
## MQTT Configuration
|
||||
|
||||
Your Home Assistant must be setup with MQTT and BirdNET-Go MQTT integration must be enabled. Modify the BirdNET-Go config.yaml file to enable MQTT. If you are using the Mosquitto Broker addon, you will see a log message during the BirdNET-Go startup showing the internal MQTT server details needed for configuration similar to below.
|
||||
|
||||
```text
|
||||
BirdNET-Go log snipped showing MQTT details:
|
||||
/etc/cont-init.d/33-mqtt.sh: executing
|
||||
---
|
||||
MQTT addon is active on your system! Add the MQTT details below to the Birdnet-go config.yaml :
|
||||
MQTT user : addons
|
||||
MQTT password : Ri5ahV1aipeiw0aelerooteixai5ohtoeNg6oo3mo0thi5te0phiezuge4Phoore
|
||||
MQTT broker : tcp://core-mosquitto:1883
|
||||
---
|
||||
|
||||
Edit this section of config.yaml found in addon_configs/db21ed7f_birdnet-go/:
|
||||
mqtt:
|
||||
enabled: true # true to enable MQTT
|
||||
broker: tcp://core-mosquitto:1883 # MQTT (tcp://host:port)
|
||||
topic: birdnet # MQTT topic
|
||||
username: addons # MQTT username
|
||||
password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # MQTT password
|
||||
```
|
||||
|
||||
## BirdNET-Go MQTT Sensors
|
||||
|
||||
Add the [MQTT sensor](https://www.home-assistant.io/integrations/sensor.mqtt/) yaml configuration below to your Home Assistant configuration.yaml file. Reload the configuration and once BirdNET-Go publishes a new finding to MQTT the new BirdNET-Go sensors should show that latest finding data.
|
||||
|
||||
```yaml
|
||||
mqtt:
|
||||
sensor:
|
||||
- name: "Birdnet-Go"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ today_at(value_json.Time) }}"
|
||||
json_attributes_topic: "birdnet"
|
||||
json_attributes_template: "{{ value_json | tojson }}"
|
||||
- name: "Birdnet-Go Bird Image Url"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.BirdImage.URL }}"
|
||||
- name: "Birdnet-Go Clip Name"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.ClipName }}"
|
||||
- name: "Birdnet-Go Common Name"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.CommonName }}"
|
||||
- name: "Birdnet-Go Confidence"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ (value_json.Confidence | float * 100) | round(2) }}"
|
||||
unit_of_measurement: "%"
|
||||
- name: "Birdnet-Go Date"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.Date }}"
|
||||
- name: "Birdnet-Go ProcessingTime"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ (value_json.ProcessingTime | float / 1000000000 ) | round(4) }}"
|
||||
unit_of_measurement: "s"
|
||||
- name: "Birdnet-Go Scientific Name"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.ScientificName }}"
|
||||
- name: "Birdnet-Go Sensitivity"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.Sensitivity }}"
|
||||
- name: "Birdnet-Go Source"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.Source }}"
|
||||
- name: "Birdnet-Go Species Code"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.SpeciesCode }}"
|
||||
- name: "Birdnet-Go Threshold"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ value_json.Threshold }}"
|
||||
- name: "Birdnet-Go Time"
|
||||
state_topic: "birdnet"
|
||||
value_template: "{{ today_at(value_json.Time) }}"
|
||||
```
|
||||
|
||||

|
||||
|
||||
## BirdNET-Go Events Sensor[^1]
|
||||
|
||||
Then create a new template sensor using the configuration below.
|
||||
|
||||
```yaml
|
||||
- trigger:
|
||||
- platform: mqtt
|
||||
topic: "birdnet"
|
||||
- platform: time
|
||||
at: "00:00:00"
|
||||
id: reset
|
||||
sensor:
|
||||
- unique_id: c893533c-3c06-4ebe-a5bb-da833da0a947
|
||||
name: BirdNET-Go Events
|
||||
state: >
|
||||
{% if trigger.id == 'reset' %}
|
||||
{{ now() }}
|
||||
{% else %}
|
||||
{{ today_at(trigger.payload_json.Time) }}
|
||||
{% endif %}
|
||||
attributes:
|
||||
bird_events: >
|
||||
{% if trigger.id == 'reset' %}
|
||||
{{ [] }}
|
||||
{% else %}
|
||||
{% set time = trigger.payload_json.Time %}
|
||||
{% set name = trigger.payload_json.CommonName %}
|
||||
{% set confidence = trigger.payload_json.Confidence|round(2) * 100 ~ '%' %}
|
||||
{% set current = this.attributes.get('bird_events', []) %}
|
||||
{% set new = dict(time=time, name=name, confidence=confidence) %}
|
||||
{{ current + [new] }}
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
### BirdNET-Go Dashboard Cards
|
||||
|
||||
There are two versions listed below. The first example will link the Bird Name to Wikipedia. The other example will link to All About Birds. You will need to modify the Confidence link to match your Home Assistant setup.
|
||||
|
||||

|
||||
|
||||
```yaml
|
||||
type: markdown
|
||||
title: BirdNET (Wikipedia)
|
||||
content: >-
|
||||
Time| Bird Name|Number Today| Max
|
||||
[Confidence](http://ip_address_of_HA:8080/)
|
||||
|
||||
:---|:---|:---:|:---:
|
||||
|
||||
{%- set t = now() %}
|
||||
|
||||
{%- set bird_list = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) | map(attribute='name') | unique | list
|
||||
%}
|
||||
|
||||
{%- set bird_objects = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) %}
|
||||
|
||||
{%- for thisbird in bird_list or [] %}
|
||||
|
||||
{%- set ubird = ((bird_objects | selectattr("name", "equalto", thisbird)) |
|
||||
list)[0] %}
|
||||
|
||||
{%- set ubird_count = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | list) | length %}
|
||||
|
||||
{%- set ubird_max_confidence = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | map(attribute='confidence') | map('replace', '%', '') |
|
||||
map('float') | max | round(0)) %}
|
||||
|
||||
{%- if ubird_max_confidence > 70 %}
|
||||
|
||||
{{ubird.time}}
|
||||
| [{{ubird.name}}](https://en.wikipedia.org/wiki/{{ubird.name |
|
||||
replace(' ', '_')}}) | {{ubird_count}} | {{ ubird_max_confidence }} %
|
||||
|
||||
{%- endif %}
|
||||
|
||||
{%- endfor %}
|
||||
card_mod:
|
||||
style:
|
||||
$: |
|
||||
.card-header {
|
||||
display: flex !important;
|
||||
align-items: center;
|
||||
}
|
||||
.card-header:before {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='m23 11.5l-3.05-1.13c-.26-1.15-.91-1.81-.91-1.81a4.19 4.19 0 0 0-5.93 0l-1.48 1.48L5 3c-1 4 0 8 2.45 11.22L2 19.5s8.89 2 14.07-2.05c2.76-2.16 3.38-3.42 3.77-4.75zm-5.29.22c-.39.39-1.03.39-1.42 0a.996.996 0 0 1 0-1.41c.39-.39 1.03-.39 1.42 0s.39 1.02 0 1.41'/%3E%3C/svg%3E");
|
||||
height: 42px;
|
||||
width: 42px;
|
||||
margin-top: 0px;
|
||||
padding-left: 0px;
|
||||
padding-right: 14px;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.card-header:before {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23E1E1E1' d='m23 11.5l-3.05-1.13c-.26-1.15-.91-1.81-.91-1.81a4.19 4.19 0 0 0-5.93 0l-1.48 1.48L5 3c-1 4 0 8 2.45 11.22L2 19.5s8.89 2 14.07-2.05c2.76-2.16 3.38-3.42 3.77-4.75zm-5.29.22c-.39.39-1.03.39-1.42 0a.996.996 0 0 1 0-1.41c.39-.39 1.03-.39 1.42 0s.39 1.02 0 1.41'/%3E%3C/svg%3E");
|
||||
height: 42px;
|
||||
width: 42px;
|
||||
margin-top: 0px;
|
||||
padding-left: 0px;
|
||||
padding-right: 14px;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||

|
||||
|
||||
```yaml
|
||||
type: markdown
|
||||
title: BirdNET (All About Birds)
|
||||
content: >-
|
||||
Time| Bird Name|Number Today| Max
|
||||
[Confidence](http://ip_address_of_HA:8080/)
|
||||
|
||||
:---|:---|:---:|:---:
|
||||
|
||||
{%- set t = now() %}
|
||||
|
||||
{%- set bird_list = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) | map(attribute='name') | unique | list
|
||||
%}
|
||||
|
||||
{%- set bird_objects = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) %}
|
||||
|
||||
{%- for thisbird in bird_list or [] %}
|
||||
|
||||
{%- set ubird = ((bird_objects | selectattr("name", "equalto", thisbird)) |
|
||||
list)[0] %}
|
||||
|
||||
{%- set ubird_count = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | list) | length %}
|
||||
|
||||
{%- set ubird_max_confidence = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | map(attribute='confidence') | map('replace', '%', '') |
|
||||
map('float') | max | round(0)) %}
|
||||
|
||||
{%- if ubird_max_confidence > 70 %}
|
||||
|
||||
{{ubird.time}}
|
||||
| [{{ubird.name}}](https://www.allaboutbirds.org/guide/{{ubird.name
|
||||
| replace(' ', '_')}}) | {{ubird_count}} | {{ ubird_max_confidence }} %
|
||||
|
||||
{%- endif %}
|
||||
|
||||
{%- endfor %}
|
||||
card_mod:
|
||||
style:
|
||||
$: |
|
||||
.card-header {
|
||||
display: flex !important;
|
||||
align-items: center;
|
||||
}
|
||||
.card-header:before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDYuODcgMTE2LjY2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2Y0ZTUwNTt9LmNscy0ye2ZpbGw6I2UzMWUyNjt9LmNscy0ze2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTIwNi4zNywxNi42OHMtMTYuNDQtNC4zNC0yMi43Ni00LjljMCwwLTI1LDEzLjUtMzIsMThhMTkuMTYsMTkuMTYsMCwwLDAtOC42NywxMy44OWwzNS43MS0yNi4zMmgyOEMyMDcuMzEsMTcuMzksMjA2LjM3LDE2LjY4LDIwNi4zNywxNi42OFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC42MykiLz48cGF0aCBkPSJNMTQ4LjU1LDI3LjMzYzcuMzItNC45LDMyLjYyLTE4LjczLDMyLjYyLTE4LjczbDAsMEEzMC42OSwzMC42OSwwLDAsMCwxNTktLjYzYTQ0LjIzLDQ0LjIzLDAsMCwwLTIwLjcxLDVIMGMwLDMuNzEsNS42LDYuNTYsMTIuMTQsNi41Nkg1Mi4zNkw4Ni42MiwzNS4xMlY3MS4zN2MwLDE1LjczLDguMjYsMjkuNDQsMjEuNzgsMzcuMzVTMTI4LjY4LDExNiwxMzguNjMsMTE2VjQ2Ljg3QzEzOC42Myw0MC43OCwxNDAuNDcsMzIuNzMsMTQ4LjU1LDI3LjMzWk0xNjcuODcsOGEyLjUxLDIuNTEsMCwxLDEtMi41MSwyLjUxQTIuNTEsMi41MSwwLDAsMSwxNjcuODcsOFptLTI5LjEzLDEzLDE1LjY5LTguNjgsNi44OS41N0wxMzguNzQsMjUuMzZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTIuMzYsMTAuOTFIMTEwYy0xMi44OSwwLTIzLjQsMTAuMzUtMjMuNCwyNC4yMVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC42MykiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNzgsMTAuMzNBMzEuNzEsMzEuNzEsMCwwLDAsMTU3Ljc4LDIuOVYtLjYxbDEuMjUsMEEzMC42MywzMC42MywwLDAsMSwxODEuMTcsOC42WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjYzKSIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE3OC42MywxNy4zOWwtMjUsMTguNDNzLS4yOS0yLjcsMy40Ny01Ljc0LDI2LjUtMTguMywyNi41LTE4LjNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTI4LjE0LDY0LjQ3VjUyLjE1YzAtNS4xOC0yLjExLTguNzctNi45My0xMi4xOEwxMDAuNzksMjUuNTRhMTQuMzIsMTQuMzIsMCwwLDAsMiwyMVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC42MykiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMjguMTQsNjQuNDdWNTIuMTVjMC01LjE4LTIuMTEtOC43Ny02LjkzLTEyLjE4TDEwMC43OSwyNS41NGExNC4zMiwxNC4zMiwwLDAsMCwyLDIxWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjYzKSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE1MS41OSwyOS44MmM3LTQuNTQsMzItMTgsMzItMThhMTYuMjQsMTYuMjQsMCwwLDAtMi40MS0zLjE1bDAsMHMtMjUuMywxMy44My0zMi42MiwxOC43My05LjU3LDEyLjE3LTkuODcsMThsLS4wNSwxLjUxLDQuMjktMy4xNkExOS4xNiwxOS4xNiwwLDAsMSwxNTEuNTksMjkuODJaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTY3Ljg3LDhhMi41MSwyLjUxLDAsMSwxLTIuNTEsMi41MUEyLjUxLDIuNTEsMCwwLDEsMTY3Ljg3LDhaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjEzOC43NCAyMS41NyAxNTQuNDMgMTIuODkgMTYxLjMyIDEzLjQ1IDEzOC43NCAyNS45OCAxMzguNzQgMjEuNTciLz48L3N2Zz4=");
|
||||
height: 20px;
|
||||
width: 60px;
|
||||
margin-top: -10px;
|
||||
padding-left: 8px;
|
||||
padding-right: 18px;
|
||||
}
|
||||
```
|
||||
|
||||
## Footnotes
|
||||
|
||||
[^1]: [Displaying Birdnet-go detections](https://community.home-assistant.io/t/displaying-birdnet-go-detections/713611/22)
|
||||
@@ -56,6 +56,7 @@ Additional environment variables can be configured there
|
||||
The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on.
|
||||
|
||||
1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA)
|
||||
|
||||
[](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons)
|
||||
1. Install this add-on.
|
||||
1. Click the `Save` button to store your configuration.
|
||||
@@ -64,194 +65,9 @@ The installation of this add-on is pretty straightforward and not different in c
|
||||
1. Check the logs of the add-on to see if everything went well.
|
||||
1. Open the webUI and adapt the software options
|
||||
|
||||
## Integration with HA[^1]
|
||||
## Integration with HA
|
||||
|
||||
Birdnet-Go can be integrated with Home Assistant using a MQTT Broker.
|
||||
|
||||
### Birdnet-Go Events Sensor
|
||||
|
||||
Your Home Assistant must be setup with MQTT and Birdnet-Go MQTT integration must be enabled. Modify the Birdnet-Go config.yaml file to enable MQTT. If you are using the Mosquitto Broker addon, you will see a log message during the Birdnet-Go startup showing the internal MQTT server details needed for configuration similar to below.
|
||||
|
||||
```text
|
||||
Birdnet-Go log snipped showing MQTT details:
|
||||
/etc/cont-init.d/33-mqtt.sh: executing
|
||||
---
|
||||
MQTT addon is active on your system! Add the MQTT details below to the Birdnet-go config.yaml :
|
||||
MQTT user : addons
|
||||
MQTT password : Ri5ahV1aipeiw0aelerooteixai5ohtoeNg6oo3mo0thi5te0phiezuge4Phoore
|
||||
MQTT broker : tcp://core-mosquitto:1883
|
||||
---
|
||||
|
||||
Edit this section of config.yaml found in addon_configs/db21ed7f_birdnet-go/:
|
||||
mqtt:
|
||||
enabled: true # true to enable MQTT
|
||||
broker: tcp://core-mosquitto:1883 # MQTT (tcp://host:port)
|
||||
topic: birdnet # MQTT topic
|
||||
username: addons # MQTT username
|
||||
password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # MQTT password
|
||||
```
|
||||
|
||||
Then create a new template sensor using the configuration below.
|
||||
|
||||
```yaml
|
||||
- trigger:
|
||||
- platform: mqtt
|
||||
topic: "birdnet"
|
||||
- platform: time
|
||||
at: "00:00:00"
|
||||
id: reset
|
||||
sensor:
|
||||
- unique_id: c893533c-3c06-4ebe-a5bb-da833da0a947
|
||||
name: BirdNET-Go Events
|
||||
state: >
|
||||
{% if trigger.id == 'reset' %}
|
||||
{{ now() }}
|
||||
{% else %}
|
||||
{{ today_at(trigger.payload_json.Time) }}
|
||||
{% endif %}
|
||||
attributes:
|
||||
bird_events: >
|
||||
{% if trigger.id == 'reset' %}
|
||||
{{ [] }}
|
||||
{% else %}
|
||||
{% set time = trigger.payload_json.Time %}
|
||||
{% set name = trigger.payload_json.CommonName %}
|
||||
{% set confidence = trigger.payload_json.Confidence|round(2) * 100 ~ '%' %}
|
||||
{% set current = this.attributes.get('bird_events', []) %}
|
||||
{% set new = dict(time=time, name=name, confidence=confidence) %}
|
||||
{{ current + [new] }}
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
### Birdnet-Go Dashboard Cards
|
||||
|
||||
There are two versions listed below. One will link the Bird Name to Wikipedia the other one will link to All About Birds. You will need to modify the Confidence link to match your Home Assistant setup.
|
||||
|
||||

|
||||
|
||||
```yaml
|
||||
type: markdown
|
||||
title: Birdnet (Wikipedia)
|
||||
content: >-
|
||||
Time| Bird Name|Number Today| Max
|
||||
[Confidence](http://192.168.1.25:8081/)
|
||||
|
||||
:---|:---|:---:|:---:
|
||||
|
||||
{%- set t = now() %}
|
||||
|
||||
{%- set bird_list = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) | map(attribute='name') | unique | list
|
||||
%}
|
||||
|
||||
{%- set bird_objects = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) %}
|
||||
|
||||
{%- for thisbird in bird_list or [] %}
|
||||
|
||||
{%- set ubird = ((bird_objects | selectattr("name", "equalto", thisbird)) |
|
||||
list)[0] %}
|
||||
|
||||
{%- set ubird_count = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | list) | length %}
|
||||
|
||||
{%- set ubird_max_confidence = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | map(attribute='confidence') | map('replace', '%', '') |
|
||||
map('float') | max | round(0)) %}
|
||||
|
||||
{%- if ubird_max_confidence > 70 %}
|
||||
|
||||
{{ubird.time}}
|
||||
| [{{ubird.name}}](https://en.wikipedia.org/wiki/{{ubird.name |
|
||||
replace(' ', '_')}}) | {{ubird_count}} | {{ ubird_max_confidence }} %
|
||||
|
||||
{%- endif %}
|
||||
|
||||
{%- endfor %}
|
||||
card_mod:
|
||||
style:
|
||||
$: |
|
||||
.card-header {
|
||||
display: flex !important;
|
||||
align-items: center;
|
||||
}
|
||||
.card-header:before {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='m23 11.5l-3.05-1.13c-.26-1.15-.91-1.81-.91-1.81a4.19 4.19 0 0 0-5.93 0l-1.48 1.48L5 3c-1 4 0 8 2.45 11.22L2 19.5s8.89 2 14.07-2.05c2.76-2.16 3.38-3.42 3.77-4.75zm-5.29.22c-.39.39-1.03.39-1.42 0a.996.996 0 0 1 0-1.41c.39-.39 1.03-.39 1.42 0s.39 1.02 0 1.41'/%3E%3C/svg%3E");
|
||||
height: 42px;
|
||||
width: 42px;
|
||||
margin-top: 0px;
|
||||
padding-left: 0px;
|
||||
padding-right: 14px;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.card-header:before {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23E1E1E1' d='m23 11.5l-3.05-1.13c-.26-1.15-.91-1.81-.91-1.81a4.19 4.19 0 0 0-5.93 0l-1.48 1.48L5 3c-1 4 0 8 2.45 11.22L2 19.5s8.89 2 14.07-2.05c2.76-2.16 3.38-3.42 3.77-4.75zm-5.29.22c-.39.39-1.03.39-1.42 0a.996.996 0 0 1 0-1.41c.39-.39 1.03-.39 1.42 0s.39 1.02 0 1.41'/%3E%3C/svg%3E");
|
||||
height: 42px;
|
||||
width: 42px;
|
||||
margin-top: 0px;
|
||||
padding-left: 0px;
|
||||
padding-right: 14px;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||

|
||||
|
||||
```yaml
|
||||
type: markdown
|
||||
title: Birdnet (All About Birds)
|
||||
content: >-
|
||||
Time| Bird Name|Number Today| Max
|
||||
[Confidence](http://ip_address_of_HA:8080/)
|
||||
|
||||
:---|:---|:---:|:---:
|
||||
|
||||
{%- set t = now() %}
|
||||
|
||||
{%- set bird_list = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) | map(attribute='name') | unique | list
|
||||
%}
|
||||
|
||||
{%- set bird_objects = state_attr('sensor.birdnet_go_events','bird_events') |
|
||||
sort(attribute='time', reverse=true) %}
|
||||
|
||||
{%- for thisbird in bird_list or [] %}
|
||||
|
||||
{%- set ubird = ((bird_objects | selectattr("name", "equalto", thisbird)) |
|
||||
list)[0] %}
|
||||
|
||||
{%- set ubird_count = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | list) | length %}
|
||||
|
||||
{%- set ubird_max_confidence = ((bird_objects | selectattr("name", "equalto",
|
||||
thisbird)) | map(attribute='confidence') | map('replace', '%', '') |
|
||||
map('float') | max | round(0)) %}
|
||||
|
||||
{%- if ubird_max_confidence > 70 %}
|
||||
|
||||
{{ubird.time}}
|
||||
| [{{ubird.name}}](https://www.allaboutbirds.org/guide/{{ubird.name
|
||||
| replace(' ', '_')}}) | {{ubird_count}} | {{ ubird_max_confidence }} %
|
||||
|
||||
{%- endif %}
|
||||
|
||||
{%- endfor %}
|
||||
card_mod:
|
||||
style:
|
||||
$: |
|
||||
.card-header {
|
||||
display: flex !important;
|
||||
align-items: center;
|
||||
}
|
||||
.card-header:before {
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDYuODcgMTE2LjY2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2Y0ZTUwNTt9LmNscy0ye2ZpbGw6I2UzMWUyNjt9LmNscy0ze2ZpbGw6I2ZmZjt9PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTIwNi4zNywxNi42OHMtMTYuNDQtNC4zNC0yMi43Ni00LjljMCwwLTI1LDEzLjUtMzIsMThhMTkuMTYsMTkuMTYsMCwwLDAtOC42NywxMy44OWwzNS43MS0yNi4zMmgyOEMyMDcuMzEsMTcuMzksMjA2LjM3LDE2LjY4LDIwNi4zNywxNi42OFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC42MykiLz48cGF0aCBkPSJNMTQ4LjU1LDI3LjMzYzcuMzItNC45LDMyLjYyLTE4LjczLDMyLjYyLTE4LjczbDAsMEEzMC42OSwzMC42OSwwLDAsMCwxNTktLjYzYTQ0LjIzLDQ0LjIzLDAsMCwwLTIwLjcxLDVIMGMwLDMuNzEsNS42LDYuNTYsMTIuMTQsNi41Nkg1Mi4zNkw4Ni42MiwzNS4xMlY3MS4zN2MwLDE1LjczLDguMjYsMjkuNDQsMjEuNzgsMzcuMzVTMTI4LjY4LDExNiwxMzguNjMsMTE2VjQ2Ljg3QzEzOC42Myw0MC43OCwxNDAuNDcsMzIuNzMsMTQ4LjU1LDI3LjMzWk0xNjcuODcsOGEyLjUxLDIuNTEsMCwxLDEtMi41MSwyLjUxQTIuNTEsMi41MSwwLDAsMSwxNjcuODcsOFptLTI5LjEzLDEzLDE1LjY5LTguNjgsNi44OS41N0wxMzguNzQsMjUuMzZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTIuMzYsMTAuOTFIMTEwYy0xMi44OSwwLTIzLjQsMTAuMzUtMjMuNCwyNC4yMVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC42MykiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNzgsMTAuMzNBMzEuNzEsMzEuNzEsMCwwLDAsMTU3Ljc4LDIuOVYtLjYxbDEuMjUsMEEzMC42MywzMC42MywwLDAsMSwxODEuMTcsOC42WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjYzKSIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE3OC42MywxNy4zOWwtMjUsMTguNDNzLS4yOS0yLjcsMy40Ny01Ljc0LDI2LjUtMTguMywyNi41LTE4LjNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTI4LjE0LDY0LjQ3VjUyLjE1YzAtNS4xOC0yLjExLTguNzctNi45My0xMi4xOEwxMDAuNzksMjUuNTRhMTQuMzIsMTQuMzIsMCwwLDAsMiwyMVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC42MykiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMjguMTQsNjQuNDdWNTIuMTVjMC01LjE4LTIuMTEtOC43Ny02LjkzLTEyLjE4TDEwMC43OSwyNS41NGExNC4zMiwxNC4zMiwwLDAsMCwyLDIxWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjYzKSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE1MS41OSwyOS44MmM3LTQuNTQsMzItMTgsMzItMThhMTYuMjQsMTYuMjQsMCwwLDAtMi40MS0zLjE1bDAsMHMtMjUuMywxMy44My0zMi42MiwxOC43My05LjU3LDEyLjE3LTkuODcsMThsLS4wNSwxLjUxLDQuMjktMy4xNkExOS4xNiwxOS4xNiwwLDAsMSwxNTEuNTksMjkuODJaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTY3Ljg3LDhhMi41MSwyLjUxLDAsMSwxLTIuNTEsMi41MUEyLjUxLDIuNTEsMCwwLDEsMTY3Ljg3LDhaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuNjMpIi8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjEzOC43NCAyMS41NyAxNTQuNDMgMTIuODkgMTYxLjMyIDEzLjQ1IDEzOC43NCAyNS45OCAxMzguNzQgMjEuNTciLz48L3N2Zz4=");
|
||||
height: 20px;
|
||||
width: 60px;
|
||||
margin-top: -10px;
|
||||
padding-left: 8px;
|
||||
padding-right: 18px;
|
||||
}
|
||||
```
|
||||
Home Assistant Integration instructions are found here, [Birdnet-Go Addon: Home Assistant Integration](./HAINTEGRATION.md)
|
||||
|
||||
## Setting up a RTSP Source using VLC
|
||||
|
||||
@@ -322,6 +138,3 @@ Create an issue on github
|
||||
|
||||

|
||||
|
||||
## Footnotes
|
||||
|
||||
[^1]: [Displaying Birdnet-go detections](https://community.home-assistant.io/t/displaying-birdnet-go-detections/713611/22)
|
||||
|
||||
BIN
birdnet-go/images/ha_birdnet_mqtt_sensor.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -1,5 +1,19 @@
|
||||
## 0.13-75 (08-08-2024)
|
||||
- Fix : improve symlinks logic
|
||||
|
||||
## 0.13-73 (07-08-2024)
|
||||
- [REMOVE] : SPECIES_CONVERTER_ENABLED option removed, please instead us "exclude species" and "change detection"
|
||||
- [FEAT] : Improve dark mode
|
||||
- [FEAT] : Species confirmation
|
||||
|
||||
## 0.13-71 (14-07-2024)
|
||||
- [FEAT] : Add manual MQTT options
|
||||
|
||||
## 0.13-69 (12-07-2024)
|
||||
- [FEAT] : limit a specific number of audio samples per species
|
||||
|
||||
## 0.13-68 (10-07-2024)
|
||||
- [FIX] : correct mqtt posting, switch to service
|
||||
- [FIX] : correct mqtt posting, switch to service
|
||||
|
||||
## 0.13-65 (08-07-2024)
|
||||
- [FEAT] : publish mqtt to homeassistant if a server is found
|
||||
|
||||
@@ -103,6 +103,20 @@ RUN \
|
||||
apt-get clean all && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Add PR
|
||||
RUN \
|
||||
cd /home/pi/BirdNET-Pi && \
|
||||
git fetch origin pull/158/head:158 && \
|
||||
git checkout main && \
|
||||
git branch -D f-merge-prs || true && \
|
||||
git checkout -b f-merge-prs && \
|
||||
git merge 158 --no-edit && \
|
||||
git stash && \
|
||||
git checkout main && \
|
||||
git merge f-merge-prs && \
|
||||
git branch -d f-merge-prs && \
|
||||
git branch -d 158
|
||||
|
||||
# Update with my repo if more recent
|
||||
#WORKDIR /home/pi
|
||||
#RUN \
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
## ⚠ Open Request : [✨ [REQUEST] BattyBirdnet-Pi x86-64 (opened 2024-07-29)](https://github.com/alexbelgium/hassio-addons/issues/1498) by [@mrcrunchybeans](https://github.com/mrcrunchybeans)
|
||||
## ⚠ Open Issue : [🐛 [BirdNET-Pi] The Detection in the Overview is permanently refreshing (opened 2024-08-07)](https://github.com/alexbelgium/hassio-addons/issues/1506) by [@UlrichThiess](https://github.com/UlrichThiess)
|
||||
# Home assistant add-on: birdnet-pi
|
||||
|
||||
[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium)
|
||||
@@ -56,7 +58,6 @@ Options can be configured through three ways :
|
||||
BIRDSONGS_FOLDER: folder to store birdsongs file # It should be an ssd if you want to avoid clogging of analysis
|
||||
MQTT_DISABLED : if true, disables automatic mqtt publishing. Only valid if there is a local broker already available
|
||||
LIVESTREAM_BOOT_ENABLED: start livestream from boot, or from settings
|
||||
SPECIES_CONVERTER_ENABLED: true/false. if enabled, will create a new setting in the birdnet options where you can specify birds to convert. It will convert on the fly the specie when detected
|
||||
PROCESSED_FOLDER_ENABLED : if enabled, you need to set in the birdnet.conf (or the setting of birdnet) the number of last wav files that will be saved in the temporary folder "/tmp/Processed" within the tmpfs (so no disk wear) in case you want to retrieve them. This amount can be adapted from the addon options
|
||||
TZ: Etc/UTC specify a timezone to use, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||
pi_password: set the user password to access the web terminal
|
||||
|
||||
@@ -61,7 +61,6 @@
|
||||
],
|
||||
"image": "ghcr.io/alexbelgium/birdnet-pi-{arch}",
|
||||
"ingress": true,
|
||||
"ingress_stream": true,
|
||||
"init": false,
|
||||
"map": [
|
||||
"addon_config:rw",
|
||||
@@ -94,10 +93,13 @@
|
||||
],
|
||||
"schema": {
|
||||
"BIRDSONGS_FOLDER": "str?",
|
||||
"MQTT_DISABLED": "bool?",
|
||||
"LIVESTREAM_BOOT_ENABLED": "bool",
|
||||
"MQTT_DISABLED": "bool?",
|
||||
"MQTT_HOST_manual": "str?",
|
||||
"MQTT_PASSWORD_manual": "password?",
|
||||
"MQTT_PORT_manual": "int?",
|
||||
"MQTT_USER_manual": "str?",
|
||||
"PROCESSED_FOLDER_ENABLED": "bool?",
|
||||
"SPECIES_CONVERTER_ENABLED": "bool?",
|
||||
"TZ": "str?",
|
||||
"certfile": "str",
|
||||
"cifsdomain": "str?",
|
||||
@@ -117,6 +119,6 @@
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/birdnet-pi",
|
||||
"usb": true,
|
||||
"version": "0.13-68",
|
||||
"version": "0.13-75",
|
||||
"video": true
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ mkdir -p "$ingest_dir"
|
||||
chown -R pi:pi "$ingest_dir"
|
||||
chmod -R 755 "$ingest_dir"
|
||||
|
||||
function apprisemessage() {
|
||||
function apprisealert() {
|
||||
# Set failed check so it only runs once
|
||||
touch "$HOME"/BirdNET-Pi/failed_servicescheck
|
||||
NOTIFICATION=""
|
||||
@@ -77,13 +77,15 @@ while true; do
|
||||
|
||||
bashio::log.green "$(date) INFO ${wavs} wav files waiting in $ingest_dir, $srv state is $state"
|
||||
|
||||
if ((wavs > 100)) && [[ "$state" == "active" ]]; then
|
||||
if ((wavs > 100)); then
|
||||
bashio::log.red "$(date) WARNING too many files in queue, pausing $srv"
|
||||
sudo systemctl stop "$srv"
|
||||
bashio::log.red "$(date) WARNING stopped $srv service"
|
||||
sudo systemctl restart birdnet_analysis
|
||||
if [ -s "$HOME/BirdNET-Pi/apprise.txt" ]; then apprisealert; fi
|
||||
elif ((wavs <= 100)) && [[ "$state" != "active" ]]; then
|
||||
sudo systemctl start $srv
|
||||
elif [[ "$state" != "active" ]]; then
|
||||
bashio::log.yellow "$(date) INFO started $srv service"
|
||||
sudo systemctl start $srv
|
||||
sudo systemctl restart birdnet_analysis
|
||||
fi
|
||||
|
||||
((counter--))
|
||||
|
||||
@@ -11,12 +11,12 @@ bashio::log.info "Ensuring the file structure is correct :"
|
||||
|
||||
# Define structure
|
||||
echo "... creating default files"
|
||||
touch /config/apprise.txt
|
||||
touch /config/include_species_list.txt
|
||||
touch /config/exclude_species_list.txt
|
||||
if [ ! -f /config/IdentifiedSoFar.txt ]; then echo "" > /config/IdentifiedSoFar.txt; fi
|
||||
if [ ! -f /config/disk_check_exclude.txt ]; then echo "" > /config/disk_check_exclude.txt; fi # Using touch caused an issue with stats.php
|
||||
if [ ! -f /config/confirmed_species_list.txt ]; then echo "" > /config/confirmed_species_list.txt; fi # Using touch caused an issue with stats.php
|
||||
touch /config/include_species_list.txt # Should be null
|
||||
for files in apprise.txt exclude_species_list.txt IdentifiedSoFar.txt disk_check_exclude.txt confirmed_species_list.txt blacklisted_images.txt whitelist_species_list.txt; do
|
||||
if [ ! -f /config/"$files" ]; then
|
||||
echo "" > /config/"$files"
|
||||
fi
|
||||
done
|
||||
|
||||
# Get BirdSongs folder locations
|
||||
BIRDSONGS_FOLDER="/config/BirdSongs"
|
||||
@@ -58,7 +58,7 @@ cp "$HOME"/BirdNET-Pi/birdnet.conf "$HOME"/BirdNET-Pi/birdnet.bak
|
||||
|
||||
# Symlink files
|
||||
echo "... creating symlink"
|
||||
for files in "$HOME/BirdNET-Pi/birdnet.conf" "$HOME/BirdNET-Pi/scripts/birds.db" "$HOME/BirdNET-Pi/BirdDB.txt" "$HOME/BirdNET-Pi/scripts/disk_check_exclude.txt" "$HOME/BirdNET-Pi/apprise.txt" "$HOME/BirdNET-Pi/exclude_species_list.txt" "$HOME/BirdNET-Pi/include_species_list.txt" "$HOME/BirdNET-Pi/IdentifiedSoFar.txt" "$HOME/BirdNET-Pi/confirmed_species_list.txt"; do
|
||||
for files in "$HOME/BirdNET-Pi/birdnet.conf" "$HOME/BirdNET-Pi/scripts/whitelist_species_list.txt" "$HOME/BirdNET-Pi/blacklisted_images.txt" "$HOME/BirdNET-Pi/scripts/birds.db" "$HOME/BirdNET-Pi/BirdDB.txt" "$HOME/BirdNET-Pi/scripts/disk_check_exclude.txt" "$HOME/BirdNET-Pi/apprise.txt" "$HOME/BirdNET-Pi/exclude_species_list.txt" "$HOME/BirdNET-Pi/include_species_list.txt" "$HOME/BirdNET-Pi/IdentifiedSoFar.txt" "$HOME/BirdNET-Pi/scripts/confirmed_species_list.txt"; do
|
||||
filename="${files##*/}"
|
||||
if [ ! -f /config/"$filename" ]; then
|
||||
if [ -f "$files" ]; then
|
||||
@@ -68,7 +68,8 @@ for files in "$HOME/BirdNET-Pi/birdnet.conf" "$HOME/BirdNET-Pi/scripts/birds.db"
|
||||
fi
|
||||
fi
|
||||
if [ -e "$files" ]; then rm "$files"; fi
|
||||
sudo -u pi ln -fs /config/"$filename" "$files" || bashio::log.fatal "Symlink creation failed for $filename"
|
||||
sudo -u pi ln -fs /config/"$filename" "$HOME/BirdNET-Pi/$filename" || bashio::log.fatal "Symlink creation failed for $filename"
|
||||
sudo -u pi ln -fs /config/"$filename" "$HOME/BirdNET-Pi/scripts/$filename" || bashio::log.fatal "Symlink creation failed for $filename"
|
||||
sudo -u pi ln -fs /config/"$filename" /etc/birdnet/"$filename" || bashio::log.fatal "Symlink creation failed for $filename"
|
||||
done
|
||||
|
||||
|
||||
@@ -28,20 +28,6 @@ grep -o '^[^#=]*=' "$configtemplate" | sed 's/=//' | while read -r var; do
|
||||
fi
|
||||
done
|
||||
|
||||
################
|
||||
# CHECK AMIXER #
|
||||
################
|
||||
|
||||
# If default capture is set at 0%, increase it to 50%
|
||||
# current_volume="$(amixer sget Capture | grep -oP '\[\d+%]' | tr -d '[]%' | head -1)" 2>/dev/null || true
|
||||
# current_volume="${current_volume:-100}"
|
||||
|
||||
# Set the default microphone volume to 50% if it's currently at 0%
|
||||
# if [[ "$current_volume" -eq 0 ]]; then
|
||||
# amixer sset Capture 70%
|
||||
# bashio::log.warning "Microphone was off, volume set to 70%."
|
||||
# fi
|
||||
|
||||
##############
|
||||
# CHECK PORT #
|
||||
##############
|
||||
@@ -51,4 +37,22 @@ if [[ "$(bashio::addon.port "80")" == 3000 ]]; then
|
||||
sleep infinity
|
||||
fi
|
||||
|
||||
##################
|
||||
# PERFORM UPDATE #
|
||||
##################
|
||||
|
||||
echo " "
|
||||
bashio::log.info "Performing potential updates"
|
||||
|
||||
# Adapt update_birdnet_snippets
|
||||
sed -i "s|systemctl list-unit-files|false \&\& echo|g" "$HOME"/BirdNET-Pi/scripts/update_birdnet_snippets.sh
|
||||
sed -i "/systemctl /d" "$HOME"/BirdNET-Pi/scripts/update_birdnet_snippets.sh
|
||||
sed -i "/find /d" "$HOME"/BirdNET-Pi/scripts/update_birdnet_snippets.sh
|
||||
sed -i "/set -x/d" "$HOME"/BirdNET-Pi/scripts/update_birdnet_snippets.sh
|
||||
sed -i "/restart_services/d" "$HOME"/BirdNET-Pi/scripts/update_birdnet_snippets.sh
|
||||
sed -i "s|/etc/birdnet/birdnet.conf|/config/birdnet.conf|g" "$HOME"/BirdNET-Pi/scripts/update_birdnet_snippets.sh
|
||||
|
||||
# Execute update_birdnet_snippets
|
||||
/."$HOME"/BirdNET-Pi/scripts/update_birdnet_snippets.sh
|
||||
|
||||
echo " "
|
||||
|
||||
@@ -24,5 +24,24 @@ if bashio::services.available 'mqtt' && ! bashio::config.true 'MQTT_DISABLED' ;
|
||||
cp /helpers/birdnet_to_mqtt.sh /custom-services.d
|
||||
chmod 777 /usr/bin/birdnet_to_mqtt.py
|
||||
chmod 777 /custom-services.d/birdnet_to_mqtt.sh
|
||||
elif bashio::config.has_value "MQTT_HOST_manual" && bashio::config.has_value "MQTT_PORT_manual"; then
|
||||
bashio::log.green "---"
|
||||
bashio::log.blue "MQTT is manually configured in the addon options"
|
||||
bashio::log.blue "Birdnet-pi is now automatically configured to send its ouptut to MQTT"
|
||||
bashio::log.green "---"
|
||||
bashio::log.blue "Data will be posted to the topic : 'birdnet'"
|
||||
bashio::log.blue "Json data : {'Date', 'Time', 'ScientificName', 'CommonName', 'Confidence', 'SpeciesCode', 'ClipName', 'url'}"
|
||||
bashio::log.blue "---"
|
||||
|
||||
# Apply MQTT settings
|
||||
sed -i "s|%%mqtt_server%%|$(bashio::config "MQTT_HOST_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_port%%|$(bashio::config "MQTT_PORT_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_user%%|$(bashio::config "MQTT_USER_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
sed -i "s|%%mqtt_pass%%|$(bashio::config "MQTT_PASSWORD_manual")|g" /helpers/birdnet_to_mqtt.py
|
||||
|
||||
# Copy script
|
||||
cp /helpers/birdnet_to_mqtt.py /usr/bin/birdnet_to_mqtt.py
|
||||
cp /helpers/birdnet_to_mqtt.sh /custom-services.d
|
||||
chmod +x /usr/bin/birdnet_to_mqtt.py
|
||||
chmod +x /custom-services.d/birdnet_to_mqtt.sh
|
||||
fi
|
||||
|
||||
@@ -15,70 +15,6 @@ bashio::log.info "Adding optional features"
|
||||
# sed -i "s|ar 48000|ar 48000 -af afftdn=nr=30:nt=w:om=o|g" "$HOME"/BirdNET-Pi/scripts/birdnet_recording.sh
|
||||
#fi
|
||||
|
||||
# Add species conversion system
|
||||
###############################
|
||||
if bashio::config.true "SPECIES_CONVERTER_ENABLED"; then
|
||||
echo "... adding feature of SPECIES_CONVERTER, a new tab is added to your Tools"
|
||||
touch /config/convert_species_list.txt
|
||||
chown pi:pi /config/convert_species_list.txt
|
||||
sudo -u pi ln -fs /config/convert_species_list.txt "$HOME"/BirdNET-Pi/
|
||||
sudo -u pi ln -fs /config/convert_species_list.txt "$HOME"/BirdNET-Pi/scripts/
|
||||
# Not useful
|
||||
sed -i "/exclude_species_list.txt/a sudo -u pi ln -fs /config/convert_species_list.txt $HOME/BirdNET-Pi/scripts/" "$HOME"/BirdNET-Pi/scripts/clear_all_data.sh
|
||||
sed -i "/exclude_species_list.txt/a sudo -u pi ln -fs /config/convert_species_list.txt $HOME/BirdNET-Pi/scripts/" "$HOME"/BirdNET-Pi/scripts/install_services.sh
|
||||
# Modify views.php if not already done
|
||||
if ! grep -q "Converted" "$HOME"/BirdNET-Pi/homepage/views.php; then
|
||||
# Add button
|
||||
# shellcheck disable=SC2016
|
||||
sed -i '/Excluded Species List/a\ <button type=\\"submit\\" name=\\"view\\" value=\\"Converted\\" form=\\"views\\">Converted Species List</button>' "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
# Flag to indicate whether we've found the target line
|
||||
found_target=false
|
||||
# Read the original file line by line
|
||||
while IFS= read -r line; do
|
||||
if [[ $line == *"if(\$_GET['view'] == \"File\"){"* ]]; then
|
||||
found_target=true
|
||||
fi
|
||||
if $found_target; then
|
||||
echo "$line" >> "$HOME"/BirdNET-Pi/homepage/views.php.temp
|
||||
fi
|
||||
done < "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
# Remove the extracted lines from the original file
|
||||
# shellcheck disable=SC2016
|
||||
sed -i '/if(\$_GET\['\''view'\''\] == "File"){/,$d' "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
# Add new text
|
||||
cat "/helpers/views.add" >> "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
cat "$HOME"/BirdNET-Pi/homepage/views.php.temp >> "$HOME"/BirdNET-Pi/homepage/views.php
|
||||
# Clean up: Remove the temporary file
|
||||
rm "$HOME"/BirdNET-Pi/homepage/views.php.temp
|
||||
fi
|
||||
|
||||
# Add the converter script
|
||||
if [ ! -f "$HOME"/BirdNET-Pi/scripts/convert_list.php ]; then
|
||||
mv -f /helpers/convert_list.php "$HOME"/BirdNET-Pi/scripts/convert_list.php
|
||||
chown pi:pi "$HOME"/BirdNET-Pi/scripts/convert_list.php
|
||||
chmod 664 "$HOME"/BirdNET-Pi/scripts/convert_list.php
|
||||
fi
|
||||
|
||||
# Change server
|
||||
if ! grep -q "converted_entry" "$HOME"/BirdNET-Pi/scripts/server.py; then
|
||||
sed -i "/INTERPRETER, M_INTERPRETER, INCLUDE_LIST, EXCLUDE_LIST/c INTERPRETER, M_INTERPRETER, INCLUDE_LIST, EXCLUDE_LIST, CONVERT_LIST = (None, None, None, None, None)" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/global INCLUDE_LIST, EXCLUDE_LIST/c\ global INCLUDE_LIST, EXCLUDE_LIST, CONVERT_LIST, CONVERT_DICT" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/exclude_species_list.txt/a\ CONVERT_DICT = {row.split(';')[0]: row.split(';')[1] for row in CONVERT_LIST}" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/exclude_species_list.txt/a\ CONVERT_LIST = loadCustomSpeciesList(os.path.expanduser(\"~/BirdNET-Pi/convert_species_list.txt\"))" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "s|entry\[0\]|converted_entry|g" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "s|if converted_entry in|if entry\[0\] in|g" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/for entry in entries/a\ converted_entry = entry[0]" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/for entry in entries/a\ else :" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/for entry in entries/a\ log.info('WARNING : ' + entry[0] + ' converted to ' + converted_entry)" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/for entry in entries/a\ converted_entry = CONVERT_DICT.get(entry[0], entry[0])" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/for entry in entries/a\ if entry[0] in CONVERT_DICT:" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/for entry in entries/a\ if entry[1] >= conf.getfloat('CONFIDENCE'):" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "/converted_entry in INCLUDE_LIST or len(INCLUDE_LIST)/c\ if ((converted_entry in INCLUDE_LIST or len(INCLUDE_LIST) == 0)" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "s| d = Detection| d = Detection|g" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
sed -i "s| confident_detections| confident_detections|g" "$HOME"/BirdNET-Pi/scripts/server.py
|
||||
fi
|
||||
fi || true
|
||||
|
||||
# Enable the Processed folder
|
||||
#############################
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.1 KiB |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"last_update": "22-06-2024",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "birdnet-go",
|
||||
"slug": "birdnet-pi",
|
||||
"source": "github",
|
||||
"upstream_repo": "Nachtzuster/BirdNET-Pi",
|
||||
"upstream_version": "0.1"
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
|
||||
## 2.16.0 (20-07-2024)
|
||||
- Update to latest version from browserless/chrome (changelog : https://github.com/browserless/chrome/releases)
|
||||
|
||||
## 2.15.0 (06-07-2024)
|
||||
- Update to latest version from browserless/chrome (changelog : https://github.com/browserless/chrome/releases)
|
||||
|
||||
|
||||
@@ -88,6 +88,6 @@
|
||||
"slug": "browserless_chrome",
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/browserless_chrome",
|
||||
"version": "2.15.0",
|
||||
"version": "2.16.0",
|
||||
"webui": "[PROTO:ssl]://[HOST]:[PORT:3000]/docs"
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_tagfilter": "v",
|
||||
"last_update": "06-07-2024",
|
||||
"last_update": "20-07-2024",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "browserless_chrome",
|
||||
"source": "github",
|
||||
"upstream_repo": "browserless/chrome",
|
||||
"upstream_version": "2.15.0"
|
||||
"upstream_version": "2.16.0"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
|
||||
## 7.16.0 (03-08-2024)
|
||||
- Update to latest version from linuxserver/docker-calibre (changelog : https://github.com/linuxserver/docker-calibre/releases)
|
||||
|
||||
## 7.15.0 (20-07-2024)
|
||||
- Update to latest version from linuxserver/docker-calibre (changelog : https://github.com/linuxserver/docker-calibre/releases)
|
||||
|
||||
## 7.14.0 (13-07-2024)
|
||||
- Update to latest version from linuxserver/docker-calibre (changelog : https://github.com/linuxserver/docker-calibre/releases)
|
||||
|
||||
## 7.13.0 (29-06-2024)
|
||||
- Update to latest version from linuxserver/docker-calibre (changelog : https://github.com/linuxserver/docker-calibre/releases)
|
||||
|
||||
|
||||
@@ -119,6 +119,6 @@
|
||||
"slug": "calibre",
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/calibre",
|
||||
"version": "7.13.0",
|
||||
"version": "7.16.0",
|
||||
"video": true
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"github_fulltag": "false",
|
||||
"last_update": "29-06-2024",
|
||||
"last_update": "03-08-2024",
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "calibre",
|
||||
"source": "github",
|
||||
"upstream_repo": "linuxserver/docker-calibre",
|
||||
"upstream_version": "7.13.0"
|
||||
"upstream_version": "7.16.0"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
|
||||
## 0.6.22 (13-07-2024)
|
||||
- Update to latest version from linuxserver/docker-calibre-web (changelog : https://github.com/linuxserver/docker-calibre-web/releases)
|
||||
|
||||
## 0.6.21-7 (12-01-2024)
|
||||
|
||||
- Minor bugs fixed
|
||||
|
||||
@@ -118,6 +118,6 @@
|
||||
"slug": "calibre-web",
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/calibre_web",
|
||||
"version": "0.6.21-7",
|
||||
"version": "0.6.22",
|
||||
"video": true
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"last_update": "28-10-2023",
|
||||
"last_update": "13-07-2024",
|
||||
"paused": false,
|
||||
"repository": "alexbelgium/hassio-addons",
|
||||
"slug": "calibre-web",
|
||||
"source": "github",
|
||||
"upstream_repo": "linuxserver/docker-calibre-web",
|
||||
"upstream_version": "0.6.21"
|
||||
"upstream_version": "0.6.22"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
|
||||
## 0.46.2 (03-08-2024)
|
||||
- Update to latest version from linuxserver/docker-changedetection.io (changelog : https://github.com/linuxserver/docker-changedetection.io/releases)
|
||||
## 0.46.1-2 (23-07-2024)
|
||||
- Minor bugs fixed
|
||||
|
||||
## 0.46.1 (20-07-2024)
|
||||
- Update to latest version from linuxserver/docker-changedetection.io (changelog : https://github.com/linuxserver/docker-changedetection.io/releases)
|
||||
|
||||
## 0.45.26 (13-07-2024)
|
||||
- Update to latest version from linuxserver/docker-changedetection.io (changelog : https://github.com/linuxserver/docker-changedetection.io/releases)
|
||||
## 0.45.25-2 (08-07-2024)
|
||||
- Minor bugs fixed
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_
|
||||
|
||||
[](https://github.com/alexbelgium/hassio-addons/stargazers)
|
||||
[](https://github.com/alexbelgium/hassio-addons/stargazers)
|
||||
|
||||

|
||||
|
||||
@@ -30,7 +30,17 @@ This addon is based on the [docker image](https://github.com/linuxserver/docker-
|
||||
|
||||
### Main app
|
||||
|
||||
Webui can be found at `<your-ip>:5000`.
|
||||
Web UI can be found at `<your-ip>:5000`, also accessible from the add-on page.
|
||||
|
||||
#### Sidebar shortcut
|
||||
|
||||
You can add a shortcut pointing to your Changedetection.io instance with the following steps:
|
||||
1. Go to <kbd>⚙ Settings</kbd> > <kbd>Dashboards</kbd>
|
||||
2. Click <kbd>➕ Add Dashboard</kbd> at the bottom corner
|
||||
3. Select the <kbd>Webpage</kbd> option, and paste the Web UI URL you got from the add-on page.
|
||||
4. Fill in the title for the sidebar item, an icon (suggestion: `mdi:vector-difference`), and a **relative URL** for that panel (e.g. `change-detection`). Lastly, confirm it.
|
||||
|
||||
### Configurable options
|
||||
|
||||
```yaml
|
||||
PGID: user
|
||||
@@ -39,17 +49,15 @@ TZ: Etc/UTC specify a timezone to use, see https://en.wikipedia.org/wiki/List_of
|
||||
BASE_URL: Specify the full URL (including protocol) when running behind a reverse proxy
|
||||
```
|
||||
|
||||
### Connect to browserless chrome (from @RhysMcW)
|
||||
### Connect to browserless Chrome (from @RhysMcW)
|
||||
|
||||
In HA use the File Editor addon (or Filebrowser) and edit the Changedetection.io config.yaml : /homeassistant/addons_config/changedetection.io/config.yaml
|
||||
|
||||
Add the following line to the end of the file:
|
||||
In HA, use the File Editor add-on (or Filebrowser) and edit the Changedetection.io config file at `/homeassistant/addons_config/changedetection.io/config.yaml`. Add the following line to the end of it:
|
||||
`PLAYWRIGHT_DRIVER_URL: ws://db21ed7f-browserless-chrome.local.hass.io:3000/chromium?launch={"defaultViewport":{"height":720,"width":1280},"headless":false,"stealth":true}&blockAds=true`
|
||||
|
||||
Remember to add a blank line at the end of the file too according to yaml requirements.
|
||||
|
||||
The "db21ed7f-browserless-chrome.local.hass.io" hostname was got from the CLI in HA, using arp, but you should also be able to use your HA IP address.
|
||||
Then restart the Changedetection.io addon - after that you can use the browser options in Changedetection.io.
|
||||
Then restart the Changedetection.io add-on - after that you can use the browser options in Changedetection.io.
|
||||
|
||||
## Installation
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"codenotary": "alexandrep.github@gmail.com",
|
||||
"description": "web page monitoring, notification and change detection",
|
||||
"environment": {
|
||||
"LC_ALL": "en_US.UTF-8",
|
||||
"TIMEOUT": "60000"
|
||||
},
|
||||
"image": "ghcr.io/alexbelgium/changedetection.io-{arch}",
|
||||
@@ -35,6 +36,6 @@
|
||||
"slug": "changedetection.io",
|
||||
"udev": true,
|
||||
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/changedetection.io",
|
||||
"version": "0.45.25-2",
|
||||
"version": "0.46.2",
|
||||
"webui": "http://[HOST]:[PORT:5000]"
|
||||
}
|
||||
|
||||