fixing gitignore + traefik logging

This commit is contained in:
Simon 2026-05-22 10:24:18 +02:00
parent 3a10536e71
commit ce816f36e7
66 changed files with 3923 additions and 1799 deletions

8
.gitignore vendored
View File

@ -1,3 +1,11 @@
librespeed/config/log/*
**/[Ll]ogs
**/[Ll]og
ha/config/custom_components/*
ha/config/themes/*
ha/config/image/*
ha/config/www/community/*
ha/config/www/community/*
ha/config/www/media/ha-bambulab/*
ha/matter_server/
secrets/

View File

@ -1,184 +0,0 @@
http:
pprof:
port: 6060
enabled: false
address: 0.0.0.0:80
session_ttl: 720h
users:
- name: simon
password: $2a$10$LmhzPrlAZ8gzqXuibTTlPud.vOXgkpa3zhzrVj8xgLqFEnHQTFt7e
auth_attempts: 5
block_auth_min: 15
http_proxy: ""
language: ""
theme: auto
dns:
bind_hosts:
- 0.0.0.0
port: 53
anonymize_client_ip: false
ratelimit: 20
ratelimit_subnet_len_ipv4: 24
ratelimit_subnet_len_ipv6: 56
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query
- https://security.cloudflare-dns.com/dns-query
upstream_dns_file: ""
bootstrap_dns:
- 9.9.9.10
- 149.112.112.10
- 2620:fe::10
- 2620:fe::fe:10
fallback_dns:
- 1.1.1.2
upstream_mode: load_balance
fastest_timeout: 1s
allowed_clients: []
disallowed_clients: []
blocked_hosts:
- version.bind
- id.server
- hostname.bind
trusted_proxies:
- 127.0.0.0/8
- ::1/128
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
cache_optimistic: false
bogus_nxdomain: []
aaaa_disabled: false
enable_dnssec: false
edns_client_subnet:
custom_ip: ""
enabled: false
use_custom: false
max_goroutines: 300
handle_ddr: true
ipset: []
ipset_file: ""
bootstrap_prefer_ipv6: false
upstream_timeout: 10s
private_networks: []
use_private_ptr_resolvers: false
local_ptr_upstreams: []
use_dns64: false
dns64_prefixes: []
serve_http3: false
use_http3_upstreams: false
serve_plain_dns: true
hostsfile_enabled: true
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 853
port_dnscrypt: 0
dnscrypt_config_file: ""
allow_unencrypted_doh: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
strict_sni_check: false
querylog:
dir_path: ""
ignored: []
interval: 2160h
size_memory: 1000
enabled: true
file_enabled: true
statistics:
dir_path: ""
ignored: []
interval: 24h
enabled: true
filters:
- enabled: false
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt
name: AdGuard DNS filter
id: 1
- enabled: false
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt
name: AdAway Default Blocklist
id: 2
whitelist_filters: []
user_rules: []
dhcp:
enabled: false
interface_name: ""
local_domain_name: lan
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
filtering:
blocking_ipv4: ""
blocking_ipv6: ""
blocked_services:
schedule:
time_zone: UTC
ids: []
protection_disabled_until: null
safe_search:
enabled: false
bing: true
duckduckgo: true
google: true
pixabay: true
yandex: true
youtube: true
blocking_mode: default
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
rewrites:
- domain: '*.milvert.com'
answer: milvert.com
- domain: milvert.com
answer: 10.0.0.3
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
filters_update_interval: 24
blocked_response_ttl: 10
filtering_enabled: true
parental_enabled: false
safebrowsing_enabled: false
protection_enabled: false
clients:
runtime_sources:
whois: true
arp: true
rdns: true
dhcp: true
hosts: true
persistent: []
log:
enabled: true
file: ""
max_backups: 0
max_size: 100
max_age: 3
compress: false
local_time: false
verbose: false
os:
group: ""
user: ""
rlimit_nofile: 0
schema_version: 28

View File

@ -0,0 +1,18 @@
apiVersion: 1
deleteDatasources:
- name: CarConnectivity-SQLite
orgId: 1
datasources:
- name: CarConnectivity-SQLite
uid: P2EF847825A020B66
type: frser-sqlite-datasource
access: proxy
isDefault: true
editable: false
jsonData:
path: /carconnectivity.db
pathPrefix: "file:"
pathOptions: "mode=ro&_ignore_check_constraints=1"
attachLimit: 0

View File

@ -29,7 +29,8 @@
{
"type": "database",
"config": {
"db_url": "sqlite:///carconnectivity.db"
"log_level": "error",
"db_url": "postgresql://carconnect:carconnect@postgres:5432/carconnect"
}
}
]

View File

@ -15,4 +15,16 @@ EOF
chmod 600 /root/.netrc
# Kör original-cmd
if [ -n "$ADDITIONAL_INSTALLS" ]; then
echo "Installing additional packages: $ADDITIONAL_INSTALLS"
# try pip3 first, fall back to pip
if command -v pip3 >/dev/null 2>&1; then
pip3 install --no-cache-dir $ADDITIONAL_INSTALLS || echo "Warning: pip3 install failed for $ADDITIONAL_INSTALLS"
elif command -v pip >/dev/null 2>&1; then
pip install --no-cache-dir $ADDITIONAL_INSTALLS || echo "Warning: pip install failed for $ADDITIONAL_INSTALLS"
else
echo "No pip found in container; skipping additional installs"
fi
fi
exec "$@"

View File

@ -1,6 +1,16 @@
db:
path: diun.db
defaults:
watchRepo: false
notifyOn:
- new
- update
maxTags: 10
sortTags: reverse
includeTags:
- '^v[0-9]+\.[0-9]+\.[0-9]+$'
watch:
workers: 20
schedule: "0 */6 * * *"

View File

@ -13,7 +13,7 @@ services:
- backend
ports:
- "8088:8080"
image: koenkk/zigbee2mqtt:2.7
image: koenkk/zigbee2mqtt:2.10
restart: always
volumes:
- ./zigbee_home_2:/app/data
@ -43,7 +43,7 @@ services:
max-file: "5"
networks:
- backend
image: koenkk/zigbee2mqtt:2.6
image: koenkk/zigbee2mqtt:2.10
restart: always
volumes:
- ${DIR}/zigbee2matt:/app/data

View File

@ -49,7 +49,7 @@ services:
reverse-proxy:
# The official v2.0 Traefik docker image
#image: traefik:v2.11
image: traefik:v3.3
image: traefik:v3.7
container_name: "traefik"
logging:
driver: "json-file"
@ -65,7 +65,7 @@ services:
- "80:80"
- "443:443"
# Insecure port
- "8080:8080"
# - "8080:8080"
# Influx
- "8086:8086"
# Mqtt
@ -77,7 +77,7 @@ services:
- ${DIR_LOCAL}/traefik/log:/log:rw
- ./traefik.yml:/etc/traefik/traefik.yml
- ./traefik:/rules
- ./static_config.yml:/etc/traefik/static_config.yml
# - ./static_config.yml:/etc/traefik/static_config.yml
# - "./log.json:/etc/traefik/log.json"
# - ./acme.json:/acme.json
- ./letsencrypt/:/letsencrypt:rw
@ -95,6 +95,7 @@ services:
authelia:
image: authelia/authelia:4
container_name: authelia
restart: always
volumes:
- ./authelia:/config
- ./notify.txt:/tmp/authelia/notification.txt
@ -176,36 +177,6 @@ services:
- "traefik.http.routers.ddnsupdater.tls=true"
adguard:
container_name: adguard
image: adguard/adguardhome:v0.107.52
restart: unless-stopped
networks:
docker_vlan:
ipv4_address: 10.0.0.204
ports:
- 53/udp
- 67/udp
- 68/tcp
- 68/udp
- 80/tcp
- 443/tcp
- 853/tcp
- 3000/tcp
volumes:
- ./adguard/conf:/opt/adguardhome/conf
- ./adguard/work:/opt/adguardhome/work
labels:
- diun.enable=true
- "traefik.enable=true"
- "traefik.http.services.adguard.loadbalancer.server.port=80"
- "traefik.http.routers.adguard.entrypoints=web-secure"
- "traefik.http.routers.adguard.rule=Host(`adguard.${DOMAIN}`)"
- "traefik.http.routers.adguard.middlewares=chain-authelia@file"
- "traefik.http.routers.adguard.tls.certresolver=milvert_dns"
- "traefik.http.routers.adguard.tls=true"
######################### DATABASE ############################
#
# DATABASE
@ -252,8 +223,7 @@ services:
labels:
- diun.enable=true
- "traefik.enable=true"
- "traefik.http.middlewares.webdb-mid.ipallowlist.sourcerange=127.0.0.1/32, 10.0.0.1/24"
- "traefik.http.routers.webdb-secure.middlewares=webdb-mid"
- "traefik.http.routers.webdb-secure.middlewares=chain-local@file"
- "traefik.http.routers.webdb-secure.entrypoints=web-secure"
- "traefik.http.routers.webdb-secure.rule=Host(`webdb.${DOMAIN}`)"
- "traefik.http.routers.webdb-secure.tls.certresolver=milvert_dns"
@ -315,8 +285,7 @@ services:
labels:
- diun.enable=true
- "traefik.enable=true"
#- "traefik.http.middlewares.webpg-mid.ipwhitelist.sourcerange=127.0.0.1/32, 10.0.0.1/24"
# # # - "traefik.http.routers.webpg-secure.middlewares=webpg-mid"
- "traefik.http.routers.webpg-secure.middlewares=chain-local@file"
- "traefik.http.routers.webpg-secure.entrypoints=web-secure"
- "traefik.http.routers.webpg-secure.rule=Host(`webpg.${DOMAIN}`)"
- "traefik.http.routers.webpg-secure.tls.certresolver=milvert_dns"
@ -348,13 +317,14 @@ services:
ha:
container_name: ha
image: homeassistant/home-assistant:2026.1
image: homeassistant/home-assistant:2026.2
restart: always
privileged: true
networks:
backend:
docker_vlan:
ipv4_address: 10.0.0.203
ipv6_address: "2001:9b0:215:8e00::203"
depends_on:
- postgres
ports:
@ -375,6 +345,11 @@ services:
- "traefik.http.routers.ha.tls.certresolver=milvert_dns"
- "traefik.http.routers.ha.tls=true"
- "traefik.http.services.ha.loadbalancer.server.port=8123"
- "traefik.http.routers.ha-int.entrypoints=web-secure"
- "traefik.http.routers.ha-int.rule=Host(`ha-int.${DOMAIN}`)"
- "traefik.http.routers.ha-int.middlewares=localNetwork@file,chain-no-auth@file"
- "traefik.http.routers.ha-int.tls=true"
- "traefik.http.routers.ha-int.tls.certresolver=milvert_dns"
hassconf:
container_name: hassconf
@ -466,11 +441,29 @@ services:
labels:
- diun.enable=true
matter-server:
image: ghcr.io/matter-js/python-matter-server:stable
container_name: matter-server
restart: unless-stopped
networks:
backend:
docker_vlan:
ipv4_address: 10.0.0.204
ipv6_address: "2001:9b0:215:8e00::204"
#security_opt:
# Needed for Bluetooth via dbus
# - apparmor:unconfined
volumes:
# Create an .env file that sets the USERDIR environment variable.
- ./ha/matter_server:/data
environment:
- diun.enable=true
evcc:
command:
- evcc
container_name: evcc
image: evcc/evcc:0.300.3
image: evcc/evcc:0.305.1
ports:
- 7070:7070/tcp
volumes:
@ -527,8 +520,8 @@ services:
- backend
environment:
- TZ=${TZ}
ports:
- "1881:1880"
# ports:
# - "1881:1880"
#devices:
#- /dev/ttyAMA0
restart: unless-stopped
@ -848,15 +841,19 @@ services:
container_name: carconnect-grafana
volumes:
- ${DIR_LOCAL}/carconnect-grafana:/var/lib/grafana
- ${DIR_LOCAL}/carconnectivity/sqlite.db:/carconnectivity.db:ro
- ./carconnectivity/carconnectivity-sqlite.yaml:/etc/grafana/provisioning/datasources/carconnectivity-sqlite.yml
# - ${DIR_LOCAL}/carconnectivity/sqlite.db:/carconnectivity.db:ro
# - ./carconnectivity/carconnectivity-sqlite.yaml:/etc/grafana/provisioning/datasources/carconnectivity-sqlite.yml
environment:
- PUID=1000
- PGID=1004
- TZ=Europe/Stockholm
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD_FILE=/run/secrets/carconnect_grafana_pw
- GF_PLUGINS_TRUSTED_FILES=/carconnectivity.db
- DB_USER=carconnect
- DB_PASSWORD=carconnect
- DB_NAME=carconnect
- DB_HOSTNAME=postgres
- DB_PORT=5432
secrets:
- carconnect_grafana_pw
restart: unless-stopped
@ -888,11 +885,15 @@ networks:
docker_vlan:
external: true
driver: macvlan
enable_ipv6: true
driver_opts:
parent: eno1
ipam:
config:
- subnet: 10.0.0.200/27
- subnet: 10.0.0.0/24 # Hela Home-nätverket
gateway: 10.0.0.1
- subnet: "2001:9b0:215:8e00::/64"
gateway: "2001:9b0:215:8e00::1"
volumes:
vwfriend_grafana:

View File

@ -32,10 +32,6 @@ binary_sensor:
script:
- id: wake_screen
mode: restart
then:
if:
condition:
light.is_off: backlight
then:
- light.turn_on:
id: backlight
@ -47,6 +43,7 @@ script:
id(current_image) = 0;
- component.update: display_main
- id: send_volume_debounced
mode: restart
then:

View File

@ -32,123 +32,124 @@ vehicles:
# source: mqtt
# topic: weconnect/0/vehicles/WVGZZZE2ZPE051949/domains/climatisation/climatisationStatus/climatisationState
- name: skoda_car
type: custom
title: elroq
capacity: 64 # kWh
soc:
source: mqtt
topic: carconnectivity/0/garage/TMBNC7NY8SF105227/drives/primary/level
range:
source: mqtt
topic: carconnectivity/0/garage/TMBNC7NY8SF105227/drives/primary/range
odometer:
source: mqtt
topic: carconnectivity/0/garage/TMBNC7NY8SF105227/odometer
climater:
source: mqtt
topic: carconnectivity/0/garage/TMBNC7NY8SF105227/climatization/binarystate
limitsoc:
source: mqtt
topic: carconnectivity/0/garage/TMBNC7NY8SF105227/charging/settings/target_level
status:
source: mqtt
topic: carconnectivity/0/garage/TMBNC7NY8SF105227/charging/state
#- name: skoda_car
#type: custom
#title: elroq
#capacity: 64 # kWh
#soc:
#source: mqtt
#topic: carconnectivity/0/garage/TMBNC7NY8SF105227/drives/primary/level
#range:
#source: mqtt
#topic: carconnectivity/0/garage/TMBNC7NY8SF105227/drives/primary/range
#odometer:
#source: mqtt
#topic: carconnectivity/0/garage/TMBNC7NY8SF105227/odometer
#climater:
#source: mqtt
#topic: carconnectivity/0/garage/TMBNC7NY8SF105227/climatization/binarystate
#limitsoc:
#source: mqtt
#topic: carconnectivity/0/garage/TMBNC7NY8SF105227/charging/settings/target_level
#status:
#source: mqtt
#topic: carconnectivity/0/garage/TMBNC7NY8SF105227/charging/state
chargers:
- name: wallbox
type: easee
user: simon+easee@milvert.com
password: X7#aEzjlEysBgl
charger: EHCNF485
#- name: wallbox
#type: easee
#user: simon+easee@milvert.com
#password: X7#aEzjlEysBgl
#charger: EHCNF485
circuits:
- name: main # if there is only one circuit defined the name needs to be 'main'
title: 'main circuit' # name for the UI (not implemented in UI yet)
maxCurrent: 20
maxPower: 10000
meter: my_grid # optiona
#- name: main # if there is only one circuit defined the name needs to be 'main'
#title: 'main circuit' # name for the UI (not implemented in UI yet)
#maxCurrent: 20
#maxPower: 10000
#meter: my_grid # optiona
loadpoints:
- title: Garage
charger: wallbox
vehicle: skoda_car
circuit: main
mode: pv
enable:
threshold: 0
delay: 15s
disable:
threshold: 500
delay:
2m
#- title: Garage
# charger: wallbox
#vehicle: skoda_car
#circuit: main
#mode: pv
#enable:
#threshold: 0
#delay: 15s
#disable:
#threshold: 500
#delay:
#2m
site:
title: Hemma
meters:
pv:
- pv
grid: my_grid
#site:
#title: Hemma
#meters:
#pv:
#- pv
#grid:
#- my_grid
meters:
- name: pv
type: custom
power:
source: mqtt
topic: inverter/measure/active_power
#meters:
#- name: pv
#type: custom
#power:
#source: mqtt
#topic: inverter/measure/active_power
# jq: .value
energy:
source: mqtt
topic: inverter/calculated/accumulated_yield_energy
timeout: 60s
currents:
- source: mqtt
topic: inverter/measure/phase_A_current
timeout: 60s
#energy:
#source: mqtt
#topic: inverter/calculated/accumulated_yield_energy
#timeout: 60s
#currents:
#- source: mqtt
#topic: inverter/measure/phase_A_current
#timeout: 60s
# jq: .value
- source: mqtt
topic: inverter/measure/phase_B_current
timeout: 60s
#- source: mqtt
#topic: inverter/measure/phase_B_current
#timeout: 60s
# jq: .value
- source: mqtt
topic: inverter/measure/phase_C_current
timeout: 60s
#- source: mqtt
#topic: inverter/measure/phase_C_current
#timeout: 60s
- name: my_grid
type: custom
power:
source: calc
add:
- source: mqtt
topic: dsmr/reading/electricity_currently_returned
scale: -1000
timeout: 30s
- source: mqtt
topic: dsmr/reading/electricity_currently_delivered
scale: 1000
timeout: 30s
energy:
source: calc
add:
- source: mqtt
topic: dsmr/reading/electricity_returned_1
scale: 0.001
timeout: 30s
- source: mqtt
topic: dsmr/reading/electricity_delivered_1
scale: -0.001
timeout: 30s
#- name: my_grid
#type: custom
#power:
#source: calc
#add:
#- source: mqtt
#topic: dsmr/reading/electricity_currently_returned
#scale: -1000
#timeout: 30s
#- source: mqtt
#topic: dsmr/reading/electricity_currently_delivered
#scale: 1000
#timeout: 30s
#energy:
#source: calc
#add:
#- source: mqtt
#topic: dsmr/reading/electricity_returned_1
#scale: 0.001
#timeout: 30s
#- source: mqtt
#topic: dsmr/reading/electricity_delivered_1
#scale: -0.001
#timeout: 30s
currents:
- source: mqtt
topic: dsmr/reading/phase_power_current_l1
timeout: 30s
- source: mqtt
topic: dsmr/reading/phase_power_current_l2
timeout: 30s
- source: mqtt
topic: dsmr/reading/phase_power_current_l1
timeout: 30s
#currents:
#- source: mqtt
#topic: dsmr/reading/phase_power_current_l1
#timeout: 30s
#- source: mqtt
#topic: dsmr/reading/phase_power_current_l2
#timeout: 30s
#- source: mqtt
#topic: dsmr/reading/phase_power_current_l1
#timeout: 30s
influx:
@ -162,3 +163,8 @@ mqtt:
user: simon
password: bajsa123
topic: evcc
network:
host: 0.0.0.0
port: 7070
externalUrl: https://box.milvert.com

Binary file not shown.

23
ha/config/.gitignore vendored Normal file
View File

@ -0,0 +1,23 @@
# Gitignore settings for HA
# This is an example and may include too much for your use-case.
# You can modify this file to suit your needs.
/.cloud
/.storage
/backups
/tts
*.db*
*.log*
*.pyc
**/.config-db
custom_components/bambu_lab
custom_components/battery_notes
custom_components/edge_tts
custom_components/evcc_intg
custom_components/fontawesome
custom_components/hacs
custom_components/nordpool_git_repo
custom_components/plant
custom_components/pollenprognos
www/community

17
ha/config/Elpris.yaml Normal file
View File

@ -0,0 +1,17 @@
sensor:
- platform: nordpool
region: "SE3"
currency: "SEK"
VAT: false # Vi sätter false här för att styra momsen exakt som i din Python-kod!
name: "Nordpool Köppris Med Avgifter"
# (Spotpris + överföring + skatt + påslag + certifikat) * 1.25 moms
additional_costs: "{{ ((current_price + 0.3120 + 0.4390 + 0.07 + 0.014) * 1.25) - current_price }}"
- platform: nordpool
region: "SE3"
currency: "SEK"
VAT: false
name: "Nordpool Säljpris Med Nätnytta"
# Spotpris + nätnytta (ingen moms på export)
additional_costs: "{{ 0.132 }}"

View File

@ -172,17 +172,18 @@
mode: single
- id: '1709494545609'
alias: växtlampa schema
trigger:
- platform: template
value_template: '{{ now().hour == 7 }}'
description: ''
triggers:
- value_template: '{{ now().hour == 9 }}'
id: 'on'
- platform: template
value_template: '{{ (now().hour, now().minute) == (21,30) }}'
trigger: template
- value_template: '{{ (now().hour, now().minute) == (21,30) }}'
id: 'off'
action:
- service: light.turn_{{ trigger.id }}
target:
entity_id: light.vaxtlampa
trigger: template
actions:
- target:
label_id: blomma
action: homeassistant.turn_{{ trigger.id }}
- id: '1713552723716'
alias: Automation_oscar_skrivbord
description: ''
@ -333,17 +334,27 @@
action: scene.turn_on
mode: single
- id: '1725646259613'
alias: Kök på 5 min
alias: Kök släck efter 5 min utan rörelse
description: ''
trigger:
- platform: state
entity_id:
- light.kok_ct
to: 'on'
condition: []
action:
- entity_id: script.kok_ct_timer_2
action: script.turn_on
triggers:
- entity_id:
- binary_sensor.sensor_inne_kitchen_mt004_occupancy
to:
- 'on'
trigger: state
conditions: []
actions:
- wait_for_trigger:
- entity_id: binary_sensor.sensor_inne_kitchen_mt004_occupancy
to: 'off'
trigger: state
- delay: 00:05:00
- condition: state
entity_id: binary_sensor.sensor_inne_kitchen_mt004_occupancy
state: 'off'
- target:
entity_id: light.kok_ct
action: light.turn_off
mode: restart
- id: '1729969302596'
alias: Tänd och släck vrum upp vid helgmorgon
@ -753,3 +764,52 @@
media_content_type: playlist
tag_id: '{{ trigger.event.data.tag_id }}'
current: '{{ TAGS.get(tag_id) }}'
- id: '1762201785091'
description: Lås elroq efter 5 min
triggers:
- trigger: state
entity_id:
- sensor.elroq_vehicle_state
for:
hours: 0
minutes: 30
seconds: 0
to: parked
conditions: []
actions:
- action: lock.lock
metadata: {}
data: {}
target:
entity_id: lock.elroq_lock_unlock
mode: single
- id: '1763930495328'
alias: Jul belysning 2025
description: ''
triggers:
- value_template: '{{ now().hour >= 16 }}'
id: 'on'
trigger: template
- value_template: '{{ (now().hour) == 8 }}'
id: 'off'
trigger: template
actions:
- target:
label_id: jul
action: homeassistant.turn_{{ trigger.id }}
- id: '1777316920776'
alias: Vattna_notis
description: ''
triggers:
- trigger: numeric_state
entity_id:
- sensor.h034s_soil_moisture
below: 19.9
conditions: []
actions:
- action: notify.mobile_app_simon_mobil
metadata: {}
data:
title: "Dags att vattna! \U0001F331"
message: Fuktnivån är nu nere på {{ states('sensor.h034s_soil_moisture') }}%.
mode: single

View File

@ -10,26 +10,14 @@ frontend:
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
command_line: !include sensor.yaml
battery_notes:
input_select: !include_dir_merge_named input_select # States såsom house/pople etc
#lovelace:
# mode: storage
# resources:
# - url: /local/week-planner-card_2.js
# type: module
# dashboards:
# dash-general:
# mode: yaml
# filename: dashboards/default.yaml
# title: Overview
# icon: mdi:tools
# show_in_sidebar: true
# require_admin: false
tts:
- platform: edge_tts
@ -41,14 +29,6 @@ input_text:
tts_syntesiser:
name: TTS-til-Google
proximity:
home_jaffa:
zone: home
devices:
- device_tracker.jaffa_location
tolerance: 5
unit_of_measurement: km
homeassistant:
internal_url: http://10.0.0.203:8123
external_url: https://ha.milvert.com
@ -77,15 +57,6 @@ sonos:
logger:
default: error
#logs:
#homeassistant.components.command_line: debug
#adax: debug
#custom_components.adax: debug
#homeassistant.components.adax: debug
# rflink: error
# homeassistant.components.rflink: debug
http:
use_x_forwarded_for: true
@ -93,6 +64,7 @@ http:
login_attempts_threshold: 5
trusted_proxies:
- 10.0.0.223
- 172.20.0.0/16
- 172.19.0.0/24
template:

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75l-8.7 0-32 0-96 0c-35.3 0-64 28.7-64 64l0 96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-128 8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-147.6c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4L480 32zm-64 76.7L416 240l0 131.3C357.2 317.8 280.5 288 200.7 288l-8.7 0 0-96 8.7 0c79.8 0 156.5-29.8 215.3-83.3z"/></svg>

After

Width:  |  Height:  |  Size: 688 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 121 KiB

File diff suppressed because it is too large Load Diff

22
ha/config/files/week.json Normal file
View File

@ -0,0 +1,22 @@
{
"monday": {
"simon": "jobbet",
"sandra": "hemma"
},
"tuesday": {
"simon": "hemma",
"sandra": "jobbet"
},
"wednesday": {
"simon": "jobbet",
"sandra": "jobbet"
},
"thursday": {
"simon": "hemma",
"sandra": "hemma"
},
"friday": {
"simon": "jobbet",
"sandra": "hemma"
}
}

View File

@ -0,0 +1,3 @@
{"temperature": 22, "humidity": 36}
{"temperature": 23, "humidity": 36}
{"temperature": 25, "humidity": 36}

View File

@ -1,17 +0,0 @@
jaffa_location:
hide_if_away: false
icon: mdi:car
mac: ff:ff:ff:ff:f1
name: Jaffa
picture: https://ibb.co/nbXgmH3
track: true
unique_id: unique_id_jaffa_location
jaffa_location:
name: jaffa_location
mac:
icon:
picture:
track: true

View File

@ -0,0 +1,15 @@
automation:
- id: arbetsrum_släck_17_simon_hemma
alias: Arbetsrum släck liten gul lampa 17:00 när Simon jobbar hemma
trigger:
- platform: time
at: "17:00:00"
condition:
- condition: state
entity_id: input_select.simon_work_state
state: "Hemma"
action:
- service: light.turn_off
target:
entity_id: light.arum_gullampa
mode: single

View File

@ -0,0 +1,23 @@
template:
- sensor:
- name: "Nordpool Köppris Med Avgifter"
unique_id: "nordpool_koppris_med_avgifter_2026"
unit_of_measurement: "SEK/kWh"
device_class: monetary
state: >
{% set spot = states('sensor.nordpool_kwh_se3_sek_3_10_0') | float(0) %}
{% set overforing = 0.3120 %}
{% set energiskatt = 0.4390 %}
{% set spotpaslag = 0.07 %}
{% set elcertifikat = 0.014 %}
{{ ((spot + overforing + energiskatt + spotpaslag + elcertifikat) * 1.25) | round(3) }}
- name: "Nordpool Säljpris Med Nätnytta"
unique_id: "nordpool_saljpris_med_natnytta_2026"
unit_of_measurement: "SEK/kWh"
device_class: monetary
state: >
{% set spot = states('sensor.nordpool_kwh_se3_sek_3_10_0') | float(0) %}
{% set natnytta = 0.132 %}
{{ (spot + natnytta) | round(3) }}

View File

@ -0,0 +1,38 @@
# Package: Vardagsrum - Kamin
template:
- binary_sensor:
- name: "Vardagsrum kamin igång"
unique_id: vardagsrum_kamin_igang
state: >
{{ states('sensor_inne_kamin_th017_temperature') | float(0) > 23 }}
delay_on:
minutes: 5
delay_off:
minutes: 30
icon: >
{% if is_state('binary_sensor.vardagsrum_kamin_igang', 'on') %}
mdi:fire
{% else %}
mdi:fireplace-off
{% endif %}
counter:
vardagsrum_kamin_eldningar:
name: "Vardagsrum: Antal eldningar"
icon: mdi:counter
step: 1
automation:
- id: vardagsrum_rakna_eldning
alias: "Vardagsrum: Räkna eldning"
mode: single
trigger:
- platform: state
entity_id: binary_sensor.vardagsrum_kamin_igang
from: "off"
to: "on"
action:
- service: counter.increment
target:
entity_id: counter.vardagsrum_kamin_eldningar

View File

@ -14,14 +14,6 @@
effect:
color_mode:
brightness:
last_seen: '2023-12-16T12:43:47.097Z'
linkquality: 36
power_on_behavior:
update:
installed_version: 587806257
latest_version: 587806257
state: idle
update_available: false
friendly_name: Matrum_tak
supported_features: 44
state: 'off'
@ -49,11 +41,11 @@
- 69.357
rgb_color:
- 255
- 162
- 163
- 78
xy_color:
- 0.538
- 0.388
- 0.536
- 0.389
friendly_name: matrum_fönster_2
supported_features: 44
state: 'on'
@ -159,9 +151,6 @@
hs_color:
rgb_color:
xy_color:
color:
x: 0.4599
y: 0.4106
friendly_name: Kök tak
supported_features: 44
state: 'off'
@ -219,11 +208,19 @@
- stop_effect
supported_color_modes:
- brightness
effect:
color_mode:
brightness:
friendly_name: Vrum fönster
supported_features: 44
effect:
state: 'off'
light.nodeid_23_nodeid_23_dimmer:
supported_color_modes:
- brightness
color_mode: brightness
brightness: 143
brightness: 144
friendly_name: Egen
supported_features: 0
state: 'on'
icon: mdi:lightbulb-night
metadata:
@ -255,6 +252,8 @@
entity_only: true
light.h020l:
entity_only: true
light.nodeid_23_nodeid_23_dimmer:
entity_only: true
- id: '1698441557226'
name: Natt
entities:
@ -673,7 +672,7 @@
entities:
switch.h016s:
friendly_name: UteSlinga
state: 'off'
state: 'on'
light.h018l:
effect_list:
- blink
@ -690,11 +689,6 @@
friendly_name: Garage_sida
supported_features: 44
state: 'on'
switch.utebaksida_brytare:
restored: true
friendly_name: Utebaksida brytare
supported_features: 0
state: unavailable
light.baksida_spot_ute:
min_color_temp_kelvin: 2000
max_color_temp_kelvin: 6535
@ -772,8 +766,8 @@
supported_features: 44
state: 'on'
switch.h024s:
friendly_name: Framsida slingor
state: 'off'
friendly_name: Garage slinga
state: 'on'
switch.h023s:
friendly_name: Ute baksida
state: 'on'
@ -786,8 +780,6 @@
entity_only: true
light.h018l:
entity_only: true
switch.utebaksida_brytare:
entity_only: true
light.baksida_spot_ute:
entity_only: true
light.h013s:

View File

@ -24,29 +24,6 @@ talk_on_oscar:
media_player:
- media_player.oscar
icon: mdi:speaker-message
kok_ct_timer_2:
alias: kok_ct_timer_2
sequence:
- action: timer.start
metadata: {}
data: {}
target:
entity_id: timer.kokct
- wait_template: '"{{ state.binary_sensor.sensor_inne_kitchen_mt004_occupancy.state
== ''on'' }}"'
continue_on_timeout: true
timeout: 00:05:00
- action: timer.cancel
metadata: {}
data: {}
target:
entity_id: timer.kokct
- action: light.turn_off
metadata: {}
data: {}
target:
entity_id: light.kok_ct
description: ''
test:
alias: Test
sequence:
@ -329,3 +306,13 @@ nfc_playbox_volume_down:
mode: restart
icon: mdi:spotify
description: ''
talk_on_ada:
alias: talk_on_ada
use_blueprint:
path: balloob/announce-text-to-speech-on-media-player.yaml
input:
text_to_speech_engine: tts.google_sv_se
media_player:
- media_player.ada
icon: mdi:speaker-message
description: ''

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 KiB

File diff suppressed because one or more lines are too long

1
ha/zwave-config/.gitignore vendored Executable file
View File

@ -0,0 +1 @@
.config-db

View File

@ -0,0 +1,19 @@
#!/bin/bash
# This script will quickly and easily swap between two different configurations so that access to configuration
# options can be easily turned on or off, this can help to protect against unauthorised setting changes.
STR=$(cat access.ini | head -n1| cut -c4)
GOOD=$(cat access_yes)
BAD=$(cat access_no)
echo $STR
if [ $STR = 0 ]
then
echo -e "\x1B[31m Access Opened \x1B[0m"
echo "$GOOD" > access.ini
else
echo -e "\x1B[32m Access Closed \x1B[0m"
echo "$BAD" > access.ini
fi

View File

@ -0,0 +1,23 @@
;; 1
;; ruTorrent permissions.
;; All flags are assumed to be yes by default.
[settings]
showDownloadsPage = yes
showConnectionPage = yes
showBittorentPage = yes
showAdvancedPage = yes
[tabs]
showPluginsTab = yes
[statusbar]
canChangeULRate = yes
canChangeDLRate = yes
[dialogs]
canChangeTorrentProperties = yes
canAddTorrentsWithoutPath = yes
canAddTorrentsWithoutStarting = yes
canAddTorrentsWithResume = yes
canAddTorrentsWithRandomizeHash = yes

View File

@ -0,0 +1,23 @@
;; 0
;; ruTorrent permissions.
;; All flags are assumed to be yes by default.
[settings]
showDownloadsPage = no
showConnectionPage = no
showBittorentPage = no
showAdvancedPage = no
[tabs]
showPluginsTab = no
[statusbar]
canChangeULRate = no
canChangeDLRate = no
[dialogs]
canChangeTorrentProperties = no
canAddTorrentsWithoutPath = no
canAddTorrentsWithoutStarting = no
canAddTorrentsWithResume = no
canAddTorrentsWithRandomizeHash = no

View File

@ -0,0 +1,23 @@
;; 1
;; ruTorrent permissions.
;; All flags are assumed to be yes by default.
[settings]
showDownloadsPage = yes
showConnectionPage = yes
showBittorentPage = yes
showAdvancedPage = yes
[tabs]
showPluginsTab = yes
[statusbar]
canChangeULRate = yes
canChangeDLRate = yes
[dialogs]
canChangeTorrentProperties = yes
canAddTorrentsWithoutPath = yes
canAddTorrentsWithoutStarting = yes
canAddTorrentsWithResume = yes
canAddTorrentsWithRandomizeHash = yes

View File

@ -0,0 +1,73 @@
<?php
// configuration parameters
// for snoopy client
@define('HTTP_USER_AGENT', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36', true);
@define('HTTP_TIME_OUT', 30, true); // in seconds
@define('HTTP_USE_GZIP', true, true);
$httpIP = null; // IP string. Or null for any.
$httpProxy = array
(
'use' => false,
'proto' => 'http', // 'http' or 'https'
'host' => 'PROXY_HOST_HERE',
'port' => 3128
);
@define('RPC_TIME_OUT', 5, true); // in seconds
@define('LOG_RPC_CALLS', false, true);
@define('LOG_RPC_FAULTS', true, true);
// for php
@define('PHP_USE_GZIP', false, true);
@define('PHP_GZIP_LEVEL', 2, true);
$schedule_rand = 10; // rand for schedulers start, +0..X seconds
$do_diagnostic = true;
$log_file = '/config/log/rutorrent/rutorrent.log'; // path to log file (comment or leave blank to disable logging)
$saveUploadedTorrents = true; // Save uploaded torrents to profile/torrents directory or not
$overwriteUploadedTorrents = false; // Overwrite existing uploaded torrents in profile/torrents directory or make unique name
$topDirectory = '/'; // Upper available directory. Absolute path with trail slash.
$forbidUserSettings = false;
// $scgi_port = 5000;
// $scgi_host = "127.0.0.1";
// For web->rtorrent link through unix domain socket
// (scgi_local in rtorrent conf file), change variables
// above to something like this:
//
$scgi_port = 0;
$scgi_host = "unix:////run/php/.rtorrent.sock";
$XMLRPCMountPoint = "/RPC2"; // DO NOT DELETE THIS LINE!!! DO NOT COMMENT THIS LINE!!!
$pathToExternals = array(
"php" => '/usr/bin/php7', // Something like /usr/bin/php. If empty, will be found in PATH.
"pgrep" => '/usr/bin/pgrep', // Something like /usr/bin/pgrep. If empty, will be found in PATH.
"python" => '/usr/bin/python3', // Something like /usr/bin/python3. If empty, will be found in PATH.
"curl" => '/usr/bin/curl', // Something like /usr/bin/curl. If empty, will be found in PATH.
"gzip" => '/usr/bin/gzip', // Something like /usr/bin/gzip. If empty, will be found in PATH.
"id" => '/usr/bin/id', // Something like /usr/bin/id. If empty, will be found in PATH.
"stat" => '/bin/stat', // Something like /usr/bin/stat. If empty, will be found in PATH.
);
$localhosts = array( // list of local interfaces
"127.0.0.1",
"localhost",
);
$profilePath = '/config/rutorrent/profiles'; // Path to user profiles
$profileMask = 0777; // Mask for files and directory creation in user profiles.
// Both Webserver and rtorrent users must have read-write access to it.
// For example, if Webserver and rtorrent users are in the same group then the value may be 0770.
$tempDirectory = '/config/rutorrent/profiles/tmp/'; // Temp directory. Absolute path with trail slash. If null, then autodetect will be used.
$canUseXSendFile = true; // Use X-Sendfile feature if it exist
$locale = "UTF8";

View File

@ -0,0 +1,27 @@
;; Plugins' permissions.
;; If flag is not found in plugin section, corresponding flag from "default" section is used.
;; If flag is not found in "default" section, it is assumed to be "yes".
;;
;; For setting individual plugin permissions you must write something like that:
;;
;; [ratio]
;; enabled = yes ;; also may be "user-defined", in this case user can control plugin's state from UI
;; canChangeToolbar = yes
;; canChangeMenu = yes
;; canChangeOptions = no
;; canChangeTabs = yes
;; canChangeColumns = yes
;; canChangeStatusBar = yes
;; canChangeCategory = yes
;; canBeShutdowned = yes
[default]
enabled = user-defined
canChangeToolbar = yes
canChangeMenu = yes
canChangeOptions = yes
canChangeTabs = yes
canChangeColumns = yes
canChangeStatusBar = yes
canChangeCategory = yes
canBeShutdowned = yes

View File

@ -1,7 +1,7 @@
api:
dashboard: true
debug: true
insecure: true
insecure: false
providers:
docker:
@ -25,9 +25,22 @@ accessLog:
statusCodes:
- "200"
- "300-302"
- "500"
- "400-599"
retryAttempts: true
minDuration: "10ms"
fields:
defaultMode: keep
names:
RequestPath: drop
RequestLine: drop
ClientUsername: drop
headers:
defaultMode: drop
names:
Authorization: drop
Cookie: drop
Set-Cookie: drop
X-Forwarded-For: keep
#metrics:
#influxDB:

View File

@ -35,7 +35,7 @@ http:
ipAllowList:
sourceRange:
- "127.0.0.1/32"
- "10.0.0.1/8"
- "10.0.0.0/8"
middlewares-https-redirectscheme:
redirectScheme:

View File

@ -46,7 +46,7 @@ http:
- chain-authelia
redirecttohttps:
rule: "HostRegexp(`{host:.+}`)"
rule: "PathPrefix(`/`)"
middlewares:
- middlewares-https-redirectscheme
service: noop

1
vwfriend_grafana/.gitignore vendored Executable file
View File

@ -0,0 +1 @@
data

View File

@ -47,8 +47,6 @@ devices:
'0x001788010452ec91':
friendly_name: Philips Lily 4
retain: false
'0x14b457fffe6d87e8':
friendly_name: Kök_Multidimmer
'0x086bd7fffe5a6240':
friendly_name: Kök 1
'0xd0cf5efffed8c794':
@ -93,6 +91,10 @@ devices:
friendly_name: '0x00124b002a51c5f1'
'0x00158d000484f134':
friendly_name: sensor/inne/ada/th002
'0x000d6ffffe61e2f8':
friendly_name: Kök_dimmer_2
'0x000b57fffe8abe13':
friendly_name: Jul - stjärna 4
groups:
'1':
friendly_name: Kök_ct
@ -105,4 +107,8 @@ groups:
retain: false
'4':
friendly_name: baksida_spot_ute
version: 4
'44386':
friendly_name: '44386'
'57338':
friendly_name: '57338'
version: 5

View File

@ -84,7 +84,7 @@ devices:
'0x680ae2fffe6d374c':
friendly_name: Kök_svart_2
'0x086bd7fffe05e8ad':
friendly_name: Julstjärna röd
friendly_name: Jul - stjärna 3
'0xb4e3f9fffe6c3642':
friendly_name: Växtlampa
'0x54ef4410003e9419':
@ -107,7 +107,7 @@ devices:
'0xb4e3f9fffec8b2bb':
friendly_name: Oscar Skrivbord
'0x385b44fffe1cb234':
friendly_name: Ute_garage_slinga
friendly_name: H032S
'0x1c34f1fffe7b1d6c':
friendly_name: mormor_malla_1
'0x1c34f1fffed69863':
@ -207,9 +207,6 @@ devices:
'0x588e81fffe14100f':
friendly_name: H018L
description: Ute soptunna
'0x00158d00058a2ad5':
friendly_name: sensor/ute/vind/th007
description: Temp vind
'0x00158d0005888dfa':
friendly_name: H017S
description: Växthus
@ -226,13 +223,36 @@ devices:
description: 'Baksida '
'0xa4c138743401b4ed':
friendly_name: H024S
description: Julslinga
description: 'Garage sida '
'0x5c0272fffe8ab0ce':
friendly_name: H025L
description: Garage inne
'0x00158d00058a2ad5':
friendly_name: sensor/ute/vind/th007
description: Temp vind
'0x0c2a6ffffe27eb85':
friendly_name: H026L
description: Spot framsida 2
'0x0c2a6ffffe27e999':
friendly_name: H027L
description: Spot framsida 3
'0xa46dd4fffe3000d5':
friendly_name: H028s
description: Temp oscar
temperature_precision: 2
'0x8c8b48fffec70f78':
friendly_name: Jul - stjärna 2
'0xbc8d7efffe33627d':
friendly_name: h029
'0x94a081fffef4b1c9':
friendly_name: h030r
'0xf4ce364abf76dbac':
friendly_name: h014s
description: Lås
friendly_name: H014S
'0xa4c138986ee26ddd':
friendly_name: H033S
'0xa4c1382931eb162b':
friendly_name: H034S
description: Framsida, jord
groups:
'0':
friendly_name: default_0
@ -252,4 +272,4 @@ homeassistant:
enabled: true
experimental_event_entities: true
status_topic: homeassistant/status
version: 4
version: 5