Compare commits
3 Commits
7c2277786d
...
812fec9f08
| Author | SHA1 | Date | |
|---|---|---|---|
| 812fec9f08 | |||
| 8cb27adcaa | |||
| 581c91162b |
26
calibre/.gitignore
vendored
Normal file
26
calibre/.gitignore
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Ignore the environment file containing sensitive data
|
||||
.env
|
||||
|
||||
# Ignore the config directory which may contain persistent data (e.g., Calibre database, metadata)
|
||||
/app-config
|
||||
/web-config
|
||||
/calibre-lib
|
||||
config/
|
||||
|
||||
# Ignore the Docker container image and build files
|
||||
*.log
|
||||
*.pid
|
||||
docker-compose.override.yml
|
||||
|
||||
# Ignore any other temporary or autogenerated files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
|
||||
# Ignore Docker-related metadata
|
||||
.docker/
|
||||
|
||||
# Ignore system files created by editors
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
0
calibre/README.md
Normal file
0
calibre/README.md
Normal file
48
calibre/docker-compose.yml
Normal file
48
calibre/docker-compose.yml
Normal file
@@ -0,0 +1,48 @@
|
||||
services:
|
||||
app:
|
||||
image: lscr.io/linuxserver/calibre:latest
|
||||
container_name: calibre
|
||||
#security_opt:
|
||||
#- seccomp:unconfined #optional
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Detroit
|
||||
#- PASSWORD=${PASSWORD}
|
||||
- CLI_ARGS='--disable-web-password'
|
||||
volumes:
|
||||
- ./app-config:/config
|
||||
- ./calibre-lib:/calibre
|
||||
ports:
|
||||
- 9000:8080 # Calibre desktop gui (only for reverse proxy access)
|
||||
- 9001:8181 # Calibre desktop gui HTTPS
|
||||
- 9002:8081 # Calibre webserver gui (needs to be enabled in gui settings first)
|
||||
shm_size: "1gb"
|
||||
restart: unless-stopped
|
||||
|
||||
web:
|
||||
image: lscr.io/linuxserver/calibre-web:latest
|
||||
container_name: calibre-web
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Detroit
|
||||
- WEB_USER=${USERNAME}
|
||||
- WEB_PASSWORD=${PASSWORD}
|
||||
#- DOCKER_MODS=linuxserver/mods:universal-calibre #optional
|
||||
#- OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional
|
||||
volumes:
|
||||
- ./web-config:/config
|
||||
- ./calibre-lib:/books
|
||||
ports:
|
||||
- 9004:8083
|
||||
networks:
|
||||
- 'homelab'
|
||||
- 'default'
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
networks:
|
||||
homelab:
|
||||
external: true
|
||||
|
||||
@@ -14,44 +14,41 @@
|
||||
- sat
|
||||
conditions: []
|
||||
actions:
|
||||
- action: rest_command.get_phone_weather
|
||||
data: {}
|
||||
response_variable: weather_data
|
||||
- variables:
|
||||
max_temp: '{{weather_data.content.daily.temperature_2m_max[0]}}'
|
||||
min_temp: '{{weather_data.content.daily.temperature_2m_min[0]}}'
|
||||
temp_unit: '{{weather_data.content.daily_units.temperature_2m_max}}'
|
||||
condition: "{% set code = weather_data.content.daily.weather_code[0] | int %}
|
||||
{% set mapper = {\n 0: \"Clear sky\",\n 1: \"Mainly clear\",\n 2: \"Partly
|
||||
cloudy\",\n 3: \"Overcast\",\n 45: \"Fog\",\n 48: \"Depositing rime fog\",\n
|
||||
\ 51: \"Drizzle - Light intensity\",\n 53: \"Drizzle - Moderate intensity\",\n
|
||||
\ 55: \"Drizzle - Dense intensity\",\n 56: \"Freezing Drizzle - Light intensity\",\n
|
||||
\ 57: \"Freezing Drizzle - Dense intensity\",\n 61: \"Rain - Slight intensity\",\n
|
||||
\ 63: \"Rain - Moderate intensity\",\n 65: \"Rain - Heavy intensity\",\n
|
||||
\ 66: \"Freezing Rain - Light intensity\",\n 67: \"Freezing Rain - Heavy
|
||||
intensity\",\n 71: \"Snow fall - Slight intensity\",\n 73: \"Snow fall -
|
||||
Moderate intensity\",\n 75: \"Snow fall - Heavy intensity\",\n 77: \"Snow
|
||||
grains\",\n 80: \"Rain showers - Slight intensity\",\n 81: \"Rain showers
|
||||
- Moderate intensity\",\n 82: \"Rain showers - Violent intensity\",\n 85:
|
||||
\"Snow showers - Slight intensity\",\n 86: \"Snow showers - Heavy intensity\",\n
|
||||
high: '{{ state_attr(''sensor.daily_forecast'', ''temperature_2m_max'')[0] }}'
|
||||
low: '{{ state_attr(''sensor.daily_forecast'', ''temperature_2m_min'')[0] }}'
|
||||
temp_unit: '{{ state_attr(''sensor.units'', ''temperature_2m'') }}'
|
||||
loc: '{{ state_attr(''sensor.alexs_iphone_2_geocoded_location'', ''Locality'')
|
||||
}}, {{ state_attr(''sensor.alexs_iphone_2_geocoded_location'', ''Administrative
|
||||
Area'') }}'
|
||||
condition: "{% set code = state_attr('sensor.daily_forecast', 'weather_code')[0]
|
||||
| int %} {% set mapper = {\n 0: \"Clear sky\",\n 1: \"Mainly clear\",\n
|
||||
\ 2: \"Partly cloudy\",\n 3: \"Overcast\",\n 45: \"Fog\",\n 48: \"Depositing
|
||||
rime fog\",\n 51: \"Drizzle - Light intensity\",\n 53: \"Drizzle - Moderate
|
||||
intensity\",\n 55: \"Drizzle - Dense intensity\",\n 56: \"Freezing Drizzle
|
||||
- Light intensity\",\n 57: \"Freezing Drizzle - Dense intensity\",\n 61:
|
||||
\"Rain - Slight intensity\",\n 63: \"Rain - Moderate intensity\",\n 65:
|
||||
\"Rain - Heavy intensity\",\n 66: \"Freezing Rain - Light intensity\",\n
|
||||
\ 67: \"Freezing Rain - Heavy intensity\",\n 71: \"Snow fall - Slight intensity\",\n
|
||||
\ 73: \"Snow fall - Moderate intensity\",\n 75: \"Snow fall - Heavy intensity\",\n
|
||||
\ 77: \"Snow grains\",\n 80: \"Rain showers - Slight intensity\",\n 81:
|
||||
\"Rain showers - Moderate intensity\",\n 82: \"Rain showers - Violent intensity\",\n
|
||||
\ 85: \"Snow showers - Slight intensity\",\n 86: \"Snow showers - Heavy intensity\",\n
|
||||
\ 95: \"Thunderstorm - Slight intensity\",\n 96: \"Thunderstorm with slight
|
||||
hail\",\n 99: \"Thunderstorm with heavy hail\"\n } %}\n {{ mapper.get(code,
|
||||
\"Not Availible\") }}\n"
|
||||
- action: script.general_notificatioon
|
||||
metadata: {}
|
||||
data:
|
||||
title: Morning Weather
|
||||
message: 'Good Morning!
|
||||
|
||||
Here is the weather for today:
|
||||
Here is the weather for today for {{loc}}:
|
||||
|
||||
High: {{max_temp}} {{temp_unit}}
|
||||
High: {{high}} {{temp_unit}}
|
||||
|
||||
Low: {{min_temp}} {{temp_unit}}
|
||||
Low: {{low}} {{temp_unit}}
|
||||
|
||||
Conditions: {{condition}}
|
||||
|
||||
'
|
||||
Conditions: {{condition}}'
|
||||
title: Morning Report
|
||||
mode: single
|
||||
- id: '1766182515375'
|
||||
alias: Dash Test
|
||||
@@ -66,58 +63,3 @@
|
||||
- variables:
|
||||
max_temp: '{{weather.content.daily.temperature_2m_max[0]}}'
|
||||
mode: single
|
||||
- id: '1766406207253'
|
||||
alias: Morning Test
|
||||
description: ''
|
||||
triggers:
|
||||
- trigger: time
|
||||
at: 07:00:00
|
||||
weekday:
|
||||
- sun
|
||||
- mon
|
||||
- tue
|
||||
- wed
|
||||
- thu
|
||||
- fri
|
||||
- sat
|
||||
conditions: []
|
||||
actions:
|
||||
- action: rest_command.get_phone_weather
|
||||
data: {}
|
||||
response_variable: weather_data
|
||||
- variables:
|
||||
max_temp: '{{weather_data.content.daily.temperature_2m_max[0]}}'
|
||||
min_temp: '{{weather_data.content.daily.temperature_2m_min[0]}}'
|
||||
temp_unit: '{{weather_data.content.daily_units.temperature_2m_max}}'
|
||||
condition: "{% set code = weather_data.content.daily.weather_code[0] | int %}
|
||||
{% set mapper = {\n 0: \"Clear sky\",\n 1: \"Mainly clear\",\n 2: \"Partly
|
||||
cloudy\",\n 3: \"Overcast\",\n 45: \"Fog\",\n 48: \"Depositing rime fog\",\n
|
||||
\ 51: \"Drizzle - Light intensity\",\n 53: \"Drizzle - Moderate intensity\",\n
|
||||
\ 55: \"Drizzle - Dense intensity\",\n 56: \"Freezing Drizzle - Light intensity\",\n
|
||||
\ 57: \"Freezing Drizzle - Dense intensity\",\n 61: \"Rain - Slight intensity\",\n
|
||||
\ 63: \"Rain - Moderate intensity\",\n 65: \"Rain - Heavy intensity\",\n
|
||||
\ 66: \"Freezing Rain - Light intensity\",\n 67: \"Freezing Rain - Heavy
|
||||
intensity\",\n 71: \"Snow fall - Slight intensity\",\n 73: \"Snow fall -
|
||||
Moderate intensity\",\n 75: \"Snow fall - Heavy intensity\",\n 77: \"Snow
|
||||
grains\",\n 80: \"Rain showers - Slight intensity\",\n 81: \"Rain showers
|
||||
- Moderate intensity\",\n 82: \"Rain showers - Violent intensity\",\n 85:
|
||||
\"Snow showers - Slight intensity\",\n 86: \"Snow showers - Heavy intensity\",\n
|
||||
\ 95: \"Thunderstorm - Slight intensity\",\n 96: \"Thunderstorm with slight
|
||||
hail\",\n 99: \"Thunderstorm with heavy hail\"\n } %}\n {{ mapper.get(code,
|
||||
\"Not Availible\") }}\n"
|
||||
- action: script.general_notificatioon
|
||||
metadata: {}
|
||||
data:
|
||||
title: Morning Weather
|
||||
message: 'Good Morning!
|
||||
|
||||
Here is the weather for today:
|
||||
|
||||
High: {{max_temp}} {{temp_unit}}
|
||||
|
||||
Low: {{min_temp}} {{temp_unit}}
|
||||
|
||||
Conditions: {{condition}}
|
||||
|
||||
'
|
||||
mode: single
|
||||
|
||||
@@ -15,6 +15,7 @@ http:
|
||||
trusted_proxies:
|
||||
#- 172.19.0.2 # Add the IP address of the proxy server
|
||||
- 172.0.0.0/8 # You may also provide the subnet mask
|
||||
- 192.168.0.56
|
||||
|
||||
rest_command: # This api shows: Daily code, max/min temp, apperent max/min temp, sunrise/sunset/daylight, UV, percip sum/hours/probability
|
||||
get_phone_weather: # All in US units for 3 days out
|
||||
@@ -24,50 +25,26 @@ rest_command: # This api shows: Daily code, max/min temp, apperent max/min temp,
|
||||
https://api.open-meteo.com/v1/forecast?latitude={{lat}}&longitude={{lon}}&daily=weather_code,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,sunrise,daylight_duration,sunset,uv_index_max,precipitation_sum,precipitation_hours,precipitation_probability_max&timezone=America%2FNew_York&forecast_days=3&wind_speed_unit=mph&temperature_unit=fahrenheit&precipitation_unit=inch
|
||||
method: GET
|
||||
|
||||
rest:
|
||||
- resource_template: >
|
||||
{% set lat = state_attr('device_tracker.alexs_phone','latitude') %}
|
||||
{% set lon = state_attr('device_tracker.alexs_phone','longitude') %}
|
||||
https://api.open-meteo.com/v1/forecast?latitude={{lat}}&longitude={{lon}}&daily=weather_code,temperature_2m_max,temperature_2m_min,apparent_temperature_max,apparent_temperature_min,sunrise,daylight_duration,sunset,uv_index_max,rain_sum,snowfall_sum,precipitation_sum,precipitation_hours,precipitation_probability_max&hourly=temperature_2m,apparent_temperature,precipitation_probability,weather_code,precipitation¤t=temperature_2m,apparent_temperature,precipitation,weather_code,is_day&timezone=America%2FNew_York&wind_speed_unit=mph&temperature_unit=fahrenheit&precipitation_unit=inch
|
||||
scan_interval: 900
|
||||
sensor:
|
||||
- name: "Phone Location Minimum Temperature"
|
||||
unique_id: "phone_min_temp"
|
||||
value_template: '{{value_json.daily.temperature_2m_min[0]}}'
|
||||
unit_of_measurement: '°F'
|
||||
device_class: temperature
|
||||
- name: "Phone Location Maximum Temperature"
|
||||
unique_id: "phone_max_temp"
|
||||
value_template: '{{value_json.daily.temperature_2m_max[0]}}'
|
||||
unit_of_measurement: '°F'
|
||||
device_class: temperature
|
||||
rest: !include_dir_merge_list rest/
|
||||
|
||||
monitor_docker:
|
||||
- name: Docker
|
||||
containers:
|
||||
- cloudflared-cloudflared-1
|
||||
- gitea-db-1
|
||||
- gitea-server-1
|
||||
- glances
|
||||
- habridge
|
||||
- homeassistant
|
||||
- nextcloud-app-1
|
||||
- nextcloud-db-1
|
||||
- nextcloud-redis-1
|
||||
- nginx-app-1
|
||||
- portainer
|
||||
- syncthing
|
||||
rename:
|
||||
cloudflared-cloudflared-1: 'Cloudflared'
|
||||
gitea-db-1: 'Gitea Database'
|
||||
gitea-server-1: 'Gitea Server'
|
||||
glances: 'Glances'
|
||||
habridge: 'Home Assistant Bridge'
|
||||
homeassistant: 'Home Assistant'
|
||||
nextcloud-app-1: 'Nextcloud Server'
|
||||
nextcloud-db-1: 'Nextcloud Database'
|
||||
nextcloud-redis-1: 'Nextcloud Redis'
|
||||
nginx-app-1: 'Nginx Proxy Manager'
|
||||
portainer: 'Portainer'
|
||||
syncthing: 'Syncthing'
|
||||
monitored_conditions:
|
||||
|
||||
@@ -42,3 +42,98 @@ general_notificatioon:
|
||||
alias: General Notification
|
||||
description: ''
|
||||
icon: mdi:bell-badge
|
||||
get_cal_data:
|
||||
sequence:
|
||||
- action: calendar.get_events
|
||||
metadata: {}
|
||||
data:
|
||||
duration:
|
||||
hours: 96
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
response_variable: Events
|
||||
target:
|
||||
entity_id: calendar.szumkoal_gmail_com
|
||||
alias: Get Cal Data
|
||||
description: ''
|
||||
parse_morning_weather:
|
||||
sequence:
|
||||
- variables:
|
||||
high: '{{ state_attr(''sensor.daily_forecast'', ''temperature_2m_max'')[0] }}'
|
||||
low: '{{ state_attr(''sensor.daily_forecast'', ''temperature_2m_min'')[0] }}'
|
||||
temp_unit: '{{ state_attr(''sensor.units'', ''temperature_2m'') }}'
|
||||
condition: "{% set code = state_attr('sensor.daily_forecast', 'weather_code')[0]
|
||||
| int %} {% set mapper = {\n 0: \"Clear sky\",\n 1: \"Mainly clear\",\n
|
||||
\ 2: \"Partly cloudy\",\n 3: \"Overcast\",\n 45: \"Fog\",\n 48: \"Depositing
|
||||
rime fog\",\n 51: \"Drizzle - Light intensity\",\n 53: \"Drizzle - Moderate
|
||||
intensity\",\n 55: \"Drizzle - Dense intensity\",\n 56: \"Freezing Drizzle
|
||||
- Light intensity\",\n 57: \"Freezing Drizzle - Dense intensity\",\n 61:
|
||||
\"Rain - Slight intensity\",\n 63: \"Rain - Moderate intensity\",\n 65:
|
||||
\"Rain - Heavy intensity\",\n 66: \"Freezing Rain - Light intensity\",\n
|
||||
\ 67: \"Freezing Rain - Heavy intensity\",\n 71: \"Snow fall - Slight intensity\",\n
|
||||
\ 73: \"Snow fall - Moderate intensity\",\n 75: \"Snow fall - Heavy intensity\",\n
|
||||
\ 77: \"Snow grains\",\n 80: \"Rain showers - Slight intensity\",\n 81:
|
||||
\"Rain showers - Moderate intensity\",\n 82: \"Rain showers - Violent intensity\",\n
|
||||
\ 85: \"Snow showers - Slight intensity\",\n 86: \"Snow showers - Heavy intensity\",\n
|
||||
\ 95: \"Thunderstorm - Slight intensity\",\n 96: \"Thunderstorm with slight
|
||||
hail\",\n 99: \"Thunderstorm with heavy hail\"\n } %}\n {{ mapper.get(code,
|
||||
\"Not Availible\") }}\n"
|
||||
current_temp: '{{ state_attr(''sensor.current_weather'', ''apparent_temperature'')
|
||||
}}'
|
||||
alias: Parse_Morning_Weather
|
||||
description: ''
|
||||
parse_current_weather:
|
||||
sequence:
|
||||
- variables:
|
||||
time: '{{ state_attr(''sensor.current_weather'', ''time'') | as_timestamp()
|
||||
| timestamp_custom(''%B %d, %Y, %I:%M %p'') }}'
|
||||
temp: '{{ state_attr(''sensor.current_weather'', ''temperature_2m'') }}'
|
||||
apparent_temp: '{{ state_attr(''sensor.current_weather'', ''apparent_temperature'')
|
||||
}}'
|
||||
precip: '{{ state_attr(''sensor.current_weather'', ''precipitation'') }}'
|
||||
weather_code: "{% set code = state_attr('sensor.current_weather', 'weather_code')
|
||||
| int %} {% set mapper = {\n 0: \"Clear sky\",\n 1: \"Mainly clear\",\n
|
||||
\ 2: \"Partly cloudy\",\n 3: \"Overcast\",\n 45: \"Fog\",\n 48: \"Depositing
|
||||
rime fog\",\n 51: \"Drizzle - Light intensity\",\n 53: \"Drizzle - Moderate
|
||||
intensity\",\n 55: \"Drizzle - Dense intensity\",\n 56: \"Freezing Drizzle
|
||||
- Light intensity\",\n 57: \"Freezing Drizzle - Dense intensity\",\n 61:
|
||||
\"Rain - Slight intensity\",\n 63: \"Rain - Moderate intensity\",\n 65:
|
||||
\"Rain - Heavy intensity\",\n 66: \"Freezing Rain - Light intensity\",\n
|
||||
\ 67: \"Freezing Rain - Heavy intensity\",\n 71: \"Snow fall - Slight intensity\",\n
|
||||
\ 73: \"Snow fall - Moderate intensity\",\n 75: \"Snow fall - Heavy intensity\",\n
|
||||
\ 77: \"Snow grains\",\n 80: \"Rain showers - Slight intensity\",\n 81:
|
||||
\"Rain showers - Moderate intensity\",\n 82: \"Rain showers - Violent intensity\",\n
|
||||
\ 85: \"Snow showers - Slight intensity\",\n 86: \"Snow showers - Heavy intensity\",\n
|
||||
\ 95: \"Thunderstorm - Slight intensity\",\n 96: \"Thunderstorm with slight
|
||||
hail\",\n 99: \"Thunderstorm with heavy hail\"\n } %}\n {{ mapper.get(code,
|
||||
\"Not Availible\") }}\n"
|
||||
daytime: '{{ state_attr(''sensor.current_weather'', ''is_day'') }}'
|
||||
alias: Parse Current Weather
|
||||
description: ''
|
||||
parse_hourly_weather:
|
||||
sequence:
|
||||
- variables:
|
||||
iso_time: '{{ state_attr(''sensor.hourly_forecast'', ''time'') }}'
|
||||
temp: '{{ state_attr(''sensor.hourly_forecast'', ''temperature_2m'') }}'
|
||||
precip_prob: '{{ state_attr(''sensor.hourly_forecast'', ''precipitation_probability'')
|
||||
}}'
|
||||
weather_code: '{{ state_attr(''sensor.hourly_forecast'', ''weather_code'') }}'
|
||||
precip: '{{ state_attr(''sensor.hourly_forecast'', ''precipitation'') }}'
|
||||
count: 0
|
||||
formatted_time: []
|
||||
- variables:
|
||||
test: '{% set count = count +1 %}'
|
||||
formatted_time: "\n{% set result = [] %} \n{% for i in range(iso_time | length)
|
||||
%}\n {% set formatted = iso_time[i] | as_timestamp() | timestamp_custom('%B
|
||||
%d, %Y, %I:%M %p') %}\n {% set result = result + [iso_time[i] | as_timestamp()
|
||||
| timestamp_custom('%B %d, %Y, %I:%M %p')] %}\n{% endfor %} \n{{ result }}\n
|
||||
\ \n"
|
||||
- action: notify.persistent_notification
|
||||
metadata: {}
|
||||
data:
|
||||
title: test
|
||||
message: '{{iso_time}}
|
||||
|
||||
{{ formatted_time }}'
|
||||
alias: Parse Hourly Weather
|
||||
description: ''
|
||||
|
||||
@@ -35,9 +35,9 @@ services:
|
||||
- MYSQL_USER=${MYSQL_USER}
|
||||
- MYSQL_HOST=db
|
||||
- REDIS_HOST=redis
|
||||
- OVERWRITECLIURL=${OVERWRITECLIURL}
|
||||
- OVERWRITEPROTOCOL=${OVERWRITEPROTOCOL}
|
||||
- OVERWRITEHOST=${OVERWRITEHOST}
|
||||
# - OVERWRITECLIURL=${OVERWRITECLIURL}
|
||||
# - OVERWRITEPROTOCOL=${OVERWRITEPROTOCOL}
|
||||
# - OVERWRITEHOST=${OVERWRITEHOST}
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
|
||||
Reference in New Issue
Block a user