Add initial ESPHome configuration files and .gitignore
This commit is contained in:
commit
074c0d3fda
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Gitignore settings for ESPHome
|
||||||
|
# This is an example and may include too much for your use-case.
|
||||||
|
# You can modify this file to suit your needs.
|
||||||
|
/.esphome/
|
||||||
|
/secrets.yaml
|
||||||
51
camera.yaml
Normal file
51
camera.yaml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
esphome:
|
||||||
|
name: esp32-cam
|
||||||
|
friendly_name: ESP32 Cam
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp-wrover-kit
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
version: recommended
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "bk9FKXwQuFxsnHq8e6xhTqagOCF1IiHXlPtn+F5VhC8="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Camera Fallback Hotspot"
|
||||||
|
password: "wI8KxJ2mpeN1"
|
||||||
|
|
||||||
|
|
||||||
|
esp32_camera:
|
||||||
|
external_clock:
|
||||||
|
pin: GPIO21
|
||||||
|
frequency: 20MHz
|
||||||
|
i2c_pins:
|
||||||
|
sda: GPIO26
|
||||||
|
scl: GPIO27
|
||||||
|
data_pins: [GPIO4, GPIO5, GPIO18, GPIO19, GPIO36, GPIO39, GPIO34, GPIO35]
|
||||||
|
vsync_pin: GPIO25
|
||||||
|
href_pin: GPIO23
|
||||||
|
pixel_clock_pin: GPIO22
|
||||||
|
|
||||||
|
# Image settings
|
||||||
|
name: Wrover Camera
|
||||||
|
max_framerate: 15 fps
|
||||||
|
idle_framerate: 1.0 fps
|
||||||
|
resolution: 800x600
|
||||||
|
horizontal_mirror: false
|
||||||
|
vertical_flip: false
|
||||||
53
desk-lamp.yaml
Normal file
53
desk-lamp.yaml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
esphome:
|
||||||
|
name: desk-lamp
|
||||||
|
friendly_name: Desk Lamp
|
||||||
|
|
||||||
|
bk72xx:
|
||||||
|
board: generic-bk7231t-qfn32-tuya
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "6+mIYZv8QSpHXcH9FOJ2lLrFA2nO3XlPjycnon5PWi8="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
mdns:
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: libretiny
|
||||||
|
version:
|
||||||
|
name: LibreTiny Version
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: libretiny_pwm
|
||||||
|
id: output_cold
|
||||||
|
pin: P26
|
||||||
|
max_power: 80% # Limit the cold white channel to 80%
|
||||||
|
- platform: libretiny_pwm
|
||||||
|
id: output_warm
|
||||||
|
pin: P24
|
||||||
|
max_power: 80% # Limit the warm white channel to 80%
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: cwww
|
||||||
|
id: light_cwww
|
||||||
|
name: Light
|
||||||
|
cold_white_color_temperature: 6500 K
|
||||||
|
warm_white_color_temperature: 2700 K
|
||||||
|
cold_white: output_cold
|
||||||
|
warm_white: output_warm
|
||||||
210
display.yaml
Normal file
210
display.yaml
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
esphome:
|
||||||
|
name: display
|
||||||
|
friendly_name: DISPLAY
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
level: WARN
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "S9zpaMdXsTbjQE5QTWJ2SN3sdSlTEnSomw/PnbwyMZc="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
ap:
|
||||||
|
ssid: "Display Fallback Hotspot"
|
||||||
|
password: "ajRx8MZPIszl"
|
||||||
|
|
||||||
|
spi:
|
||||||
|
clk_pin: 18
|
||||||
|
mosi_pin: 23
|
||||||
|
miso_pin: 19
|
||||||
|
|
||||||
|
# Display configuration
|
||||||
|
display:
|
||||||
|
- platform: ili9xxx
|
||||||
|
model: st7789v
|
||||||
|
dimensions:
|
||||||
|
height: 320
|
||||||
|
width: 240
|
||||||
|
offset_height: 0
|
||||||
|
offset_width: 0
|
||||||
|
rotation: 0
|
||||||
|
color_order: bgr
|
||||||
|
invert_colors: false
|
||||||
|
data_rate: 80MHz
|
||||||
|
cs_pin: 5
|
||||||
|
dc_pin: 16
|
||||||
|
reset_pin: 4
|
||||||
|
lambda: |-
|
||||||
|
// Define row positions
|
||||||
|
int icon_row = 5;
|
||||||
|
int row_y = icon_row + 25;
|
||||||
|
int y_step = 30;
|
||||||
|
int col_start = 5;
|
||||||
|
int col_offset = col_start + 25;
|
||||||
|
int icon_size = y_step * 0.75;
|
||||||
|
|
||||||
|
// Calculate column and row positions
|
||||||
|
int col_array[] = {col_start, col_offset + y_step, col_offset + y_step * 2, col_offset + y_step * 3, col_offset + y_step * 5, col_offset + y_step * 7};
|
||||||
|
int row_array[] = {icon_row, row_y, row_y + y_step, row_y + y_step * 2, row_y + y_step * 3, row_y + y_step * 4};
|
||||||
|
|
||||||
|
it.fill(Color(0, 0, 0)); // Clear screen
|
||||||
|
|
||||||
|
// Function to handle all state conditions
|
||||||
|
auto handle_state = [&](int col_index, int row_index, std::string text, std::string type) {
|
||||||
|
int x, y, center;
|
||||||
|
x = col_array[col_index];
|
||||||
|
y = row_array[row_index];
|
||||||
|
center = ((col_array[col_index] + col_array[col_index + 1]) / 2) - 10;
|
||||||
|
|
||||||
|
if (text != "on" && text != "off" && text != "unavailable" && text != "unknown" && text != "") {
|
||||||
|
if (type == "temperature") {
|
||||||
|
text = text + "°C";
|
||||||
|
} else if (type == "humidity") {
|
||||||
|
text = text + "%";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (text == "unavailable" || text == "unknown") {
|
||||||
|
it.filled_triangle(x, y + icon_size, x + icon_size, y + icon_size, x + (icon_size / 2), y, Color(255, 0, 0));
|
||||||
|
it.print((x + icon_size / 3) + 1, y, id(my_font), Color(255, 255, 255), "!");
|
||||||
|
} else if (text == "" && type == "door" || text == "" && type == "motion") {
|
||||||
|
it.filled_rectangle(x, y, icon_size, icon_size, Color(128, 128, 128));
|
||||||
|
} else if (text == "on") {
|
||||||
|
it.filled_rectangle(x, y, icon_size, icon_size, Color(0, 255, 0));
|
||||||
|
} else if (text == "off") {
|
||||||
|
it.filled_rectangle(x, y, icon_size, icon_size, Color(255, 0, 0));
|
||||||
|
} else if (type == "icon") {
|
||||||
|
it.print(center, y, id(icon_font), Color(255, 255, 255), text.c_str());
|
||||||
|
} else {
|
||||||
|
it.print(x, y, id(my_font), Color(255, 255, 255), text.c_str());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// Room names (first column)
|
||||||
|
handle_state(0,0, "", "icon");
|
||||||
|
handle_state(0,1, "Bath", "name");
|
||||||
|
handle_state(0,2, "Hall", "name");
|
||||||
|
handle_state(0,3, "Kitch", "name");;
|
||||||
|
handle_state(0,4, "Tom", "name");
|
||||||
|
handle_state(0,5, "Mate", "name");
|
||||||
|
|
||||||
|
// Door status (second column)
|
||||||
|
handle_state(1, 0, "", "icon");
|
||||||
|
handle_state(1, 1, id(bath_door_status).state, "door");
|
||||||
|
handle_state(1, 2, id(hall_door_status).state, "door");
|
||||||
|
handle_state(1, 3, "", "door");
|
||||||
|
handle_state(1, 4, id(tomek_door_status).state, "door");
|
||||||
|
handle_state(1, 5, id(mateusz_door_status).state, "door");
|
||||||
|
|
||||||
|
// Motion status (third column)
|
||||||
|
handle_state(2, 0, "", "icon");
|
||||||
|
handle_state(2, 1, id(bath_motion_status).state, "motion");
|
||||||
|
handle_state(2, 2, id(hall_motion_status).state, "motion");
|
||||||
|
handle_state(2, 3, id(kitchen_motion_status).state, "motion");
|
||||||
|
handle_state(2, 4, "", "motion");
|
||||||
|
handle_state(2, 5, "", "motion");
|
||||||
|
|
||||||
|
// Temperature (fourth column)
|
||||||
|
handle_state(3, 0, "", "icon");
|
||||||
|
handle_state(3, 1, id(bath_temperature).state, "temperature");
|
||||||
|
handle_state(3, 2, id(hall_temperature).state, "temperature");
|
||||||
|
handle_state(3, 3, id(kitchen_temperature).state, "temperature");
|
||||||
|
handle_state(3, 4, id(tomek_temperature).state, "temperature");
|
||||||
|
handle_state(3, 5, id(mateusz_temperature).state, "temperature");
|
||||||
|
|
||||||
|
// Humidity (fifth column)
|
||||||
|
handle_state(4, 0, "", "icon");
|
||||||
|
handle_state(4, 1, id(bath_humidity).state, "humidity");
|
||||||
|
handle_state(4, 2, id(hall_humidity).state, "humidity");
|
||||||
|
handle_state(4, 3, id(kitchen_humidity).state, "humidity");
|
||||||
|
handle_state(4, 4, id(tomek_humidity).state, "humidity");
|
||||||
|
handle_state(4, 5, id(mateusz_humidity).state, "humidity");
|
||||||
|
|
||||||
|
# Home Assistant integration
|
||||||
|
text_sensor:
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: binary_sensor.bathroom_door_opening
|
||||||
|
id: bath_door_status
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: binary_sensor.entrance_door_opening
|
||||||
|
id: hall_door_status
|
||||||
|
# - platform: homeassistant
|
||||||
|
# entity_id: binary_sensor.kitchen_door_status
|
||||||
|
# id: kitchen_door_status
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: binary_sensor.tomasz_s_door_opening
|
||||||
|
id: tomek_door_status
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: binary_sensor.mateusz_s_door_opening
|
||||||
|
id: mateusz_door_status
|
||||||
|
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: binary_sensor.bathroom_motion_occupancy
|
||||||
|
id: bath_motion_status
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: binary_sensor.hall_motion_occupancy
|
||||||
|
id: hall_motion_status
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: binary_sensor.kitchen_motion_occupancy
|
||||||
|
id: kitchen_motion_status
|
||||||
|
# - platform: homeassistant
|
||||||
|
# entity_id: binary_sensor.tomek_motion_sensor
|
||||||
|
# id: tomek_motion_status
|
||||||
|
# - platform: homeassistant
|
||||||
|
# entity_id: binary_sensor.mateusz_motion_sensor
|
||||||
|
# id: mateusz_motion_status
|
||||||
|
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.bathroom_sensor_temperature
|
||||||
|
id: bath_temperature
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.hall_sensor_temperature
|
||||||
|
id: hall_temperature
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.kitchen_sensor_temperature
|
||||||
|
id: kitchen_temperature
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.t_h_sensor_temperature
|
||||||
|
id: tomek_temperature
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.mateusz_s_room_sensor_temperature
|
||||||
|
id: mateusz_temperature
|
||||||
|
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.bathroom_sensor_humidity
|
||||||
|
id: bath_humidity
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.hall_sensor_humidity
|
||||||
|
id: hall_humidity
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.kitchen_sensor_humidity
|
||||||
|
id: kitchen_humidity
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.t_h_sensor_humidity
|
||||||
|
id: tomek_humidity
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.mateusz_s_room_sensor_humidity
|
||||||
|
id: mateusz_humidity
|
||||||
|
|
||||||
|
font:
|
||||||
|
- id: my_font
|
||||||
|
file: "fonts/Roboto.ttf"
|
||||||
|
size: 20
|
||||||
|
- id: icon_font
|
||||||
|
file: "fonts/JetBrains.ttf"
|
||||||
|
size: 20
|
||||||
|
glyphs: [ "", "", "", "", "" ]
|
||||||
43
esp-home-hall.yaml
Normal file
43
esp-home-hall.yaml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
esphome:
|
||||||
|
name: esp-home-hall
|
||||||
|
friendly_name: Esp-Home-Hall
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "AMc594qbzF9SwLtCKcAH8jvTeOvNtgOcJzPxpy7BuAU="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Esp-Home-Hall Fallback Hotspot"
|
||||||
|
password: "eCkB9AHkfKl6"
|
||||||
|
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
restore_mode: ALWAYS_ON
|
||||||
|
name: "Panel charger"
|
||||||
|
pin:
|
||||||
|
number: 13
|
||||||
|
inverted: true
|
||||||
38
esphome-outside.yaml
Normal file
38
esphome-outside.yaml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
esphome:
|
||||||
|
name: esphome-outside-s
|
||||||
|
friendly_name: Outside Light
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "6XGt8kCrllL861S4s3oBM5eUZ+p84JhxZqP6X4EsWE4="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
password: "f95124df8c48dd5b2ecce5a16ff14249"
|
||||||
|
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_outside_ssid
|
||||||
|
password: !secret wifi_outside_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Server-Room Fallback Hotspot"
|
||||||
|
password: "UdiLJzrZq12a"
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
name: "Outside light"
|
||||||
|
pin:
|
||||||
|
number: 13
|
||||||
|
inverted: true
|
||||||
BIN
fonts/JetBrains.ttf
Normal file
BIN
fonts/JetBrains.ttf
Normal file
Binary file not shown.
BIN
fonts/Material.ttf
Normal file
BIN
fonts/Material.ttf
Normal file
Binary file not shown.
BIN
fonts/Roboto.ttf
Normal file
BIN
fonts/Roboto.ttf
Normal file
Binary file not shown.
47
kitchen-lights.yaml
Normal file
47
kitchen-lights.yaml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
esphome:
|
||||||
|
name: kitchen-lights
|
||||||
|
friendly_name: Kitchen Lights
|
||||||
|
|
||||||
|
# Disable brownout detector
|
||||||
|
platformio_options:
|
||||||
|
build_flags:
|
||||||
|
- '-DBOOTLOADER_BROWNOUT_ENABLE=0'
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "VUi8evAsXU7pfvb4Z686sSdJqNsRQO3Fra+ps+GyZqU="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Kitchen-Lights Fallback Hotspot"
|
||||||
|
password: "oZVPV9K2jFE4"
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
name: "Kitchen Counter light"
|
||||||
|
restore_mode: ALWAYS_ON
|
||||||
|
pin:
|
||||||
|
number: 13
|
||||||
|
inverted: true
|
||||||
120
mateusz-room-switch.yaml
Normal file
120
mateusz-room-switch.yaml
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
esphome:
|
||||||
|
name: mateusz-light-switch
|
||||||
|
friendly_name: Mateusz's Light switch
|
||||||
|
|
||||||
|
bk72xx:
|
||||||
|
board: generic-bk7231n-qfn32-tuya
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
mdns:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: ""
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: libretiny
|
||||||
|
version:
|
||||||
|
name: LibreTiny Version
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: gpio
|
||||||
|
id: output_led_1
|
||||||
|
pin:
|
||||||
|
number: P14
|
||||||
|
inverted: true
|
||||||
|
- platform: gpio
|
||||||
|
id: output_led_2
|
||||||
|
pin:
|
||||||
|
number: P26
|
||||||
|
inverted: true
|
||||||
|
- platform: gpio
|
||||||
|
id: output_led_3
|
||||||
|
pin:
|
||||||
|
number: P11
|
||||||
|
inverted: true
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: binary
|
||||||
|
id: light_switch_1
|
||||||
|
output: output_led_1
|
||||||
|
- platform: binary
|
||||||
|
id: light_switch_2
|
||||||
|
output: output_led_2
|
||||||
|
- platform: binary
|
||||||
|
id: light_switch_3
|
||||||
|
output: output_led_3
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: gpio
|
||||||
|
id: binary_switch_1
|
||||||
|
pin:
|
||||||
|
number: P24
|
||||||
|
inverted: true
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
on_press:
|
||||||
|
then:
|
||||||
|
- switch.toggle: switch_1
|
||||||
|
- platform: gpio
|
||||||
|
id: binary_switch_2
|
||||||
|
pin:
|
||||||
|
number: P20
|
||||||
|
inverted: true
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
on_press:
|
||||||
|
then:
|
||||||
|
- switch.toggle: switch_2
|
||||||
|
- platform: gpio
|
||||||
|
id: binary_switch_3
|
||||||
|
pin:
|
||||||
|
number: P7
|
||||||
|
inverted: true
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
on_press:
|
||||||
|
then:
|
||||||
|
- switch.toggle: switch_3
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
id: switch_1
|
||||||
|
name: Switch 1
|
||||||
|
pin: P6
|
||||||
|
on_turn_on:
|
||||||
|
- light.turn_on: light_switch_1
|
||||||
|
on_turn_off:
|
||||||
|
- light.turn_off: light_switch_1
|
||||||
|
- platform: gpio
|
||||||
|
id: switch_2
|
||||||
|
name: Switch 2
|
||||||
|
pin: P8
|
||||||
|
on_turn_on:
|
||||||
|
- light.turn_on: light_switch_2
|
||||||
|
on_turn_off:
|
||||||
|
- light.turn_off: light_switch_2
|
||||||
|
- platform: gpio
|
||||||
|
id: switch_3
|
||||||
|
name: Switch 3
|
||||||
|
pin: P9
|
||||||
|
on_turn_on:
|
||||||
|
- light.turn_on: light_switch_3
|
||||||
|
on_turn_off:
|
||||||
|
- light.turn_off: light_switch_3
|
||||||
|
|
||||||
|
status_led:
|
||||||
|
pin:
|
||||||
|
number: P22
|
||||||
|
inverted: true
|
||||||
73
mateuszs-tv.yaml
Normal file
73
mateuszs-tv.yaml
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
esphome:
|
||||||
|
name: mateuszs-tv
|
||||||
|
friendly_name: Mateusz's TV
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "sn7OnWvf695dM1BAlpkhUFeFbBOyLCFwob+vOEiz6MY="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Mateuszs-Tv Fallback Hotspot"
|
||||||
|
password: "j781muxx0RXE"
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
# Define the TV state binary sensor (connected to GPIO34)
|
||||||
|
binary_sensor:
|
||||||
|
- platform: gpio
|
||||||
|
pin:
|
||||||
|
number: 34
|
||||||
|
mode: INPUT
|
||||||
|
name: "Status"
|
||||||
|
id: status
|
||||||
|
device_class: power
|
||||||
|
on_state:
|
||||||
|
- lambda: |-
|
||||||
|
if (!id(power_switch).state == x) {
|
||||||
|
id(power_switch).publish_state(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Define the switch to control TV power (Only toggled via Home Assistant)
|
||||||
|
switch:
|
||||||
|
- platform: template
|
||||||
|
name: "Switch"
|
||||||
|
id: power_switch
|
||||||
|
optimistic: true
|
||||||
|
restore_mode: RESTORE_DEFAULT_OFF
|
||||||
|
turn_on_action:
|
||||||
|
- output.turn_off: tv_relay # Set P23 LOW
|
||||||
|
- delay: 300ms
|
||||||
|
- output.turn_on: tv_relay # Set P23 HIGH
|
||||||
|
turn_off_action:
|
||||||
|
- output.turn_off: tv_relay # Set P23 LOW
|
||||||
|
- delay: 1500ms
|
||||||
|
- output.turn_on: tv_relay # Set P23 HIGH
|
||||||
|
|
||||||
|
# Define GPIO23 as the output (normally pull-up)
|
||||||
|
output:
|
||||||
|
- platform: gpio
|
||||||
|
id: tv_relay
|
||||||
|
pin:
|
||||||
|
number: 23
|
||||||
|
mode: OUTPUT
|
||||||
|
inverted: false # Normal logic (LOW = active)
|
||||||
53
server-room.yaml
Normal file
53
server-room.yaml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
esphome:
|
||||||
|
name: server-room
|
||||||
|
friendly_name: server-room
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "YHBbwijRWhlB6U2rRpTQHc0VivDDMz5HEuRkGoj+jr4="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Server-Room Fallback Hotspot"
|
||||||
|
password: "UdiLJzrZq12a"
|
||||||
|
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
name: "3D printer light"
|
||||||
|
pin:
|
||||||
|
number: 13
|
||||||
|
inverted: true
|
||||||
|
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: dht
|
||||||
|
pin: 4
|
||||||
|
temperature:
|
||||||
|
name: "Server room Temperature"
|
||||||
|
humidity:
|
||||||
|
name: "Server room Humidity"
|
||||||
|
|
||||||
|
|
||||||
70
tomasz-s-celling-light.yaml
Normal file
70
tomasz-s-celling-light.yaml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
esphome:
|
||||||
|
name: tomasz_s_celling_light
|
||||||
|
friendly_name: Tomasz's celling light switch
|
||||||
|
|
||||||
|
bk72xx:
|
||||||
|
board: generic-bk7231n-qfn32-tuya
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
mdns:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "5suYTz+ZrTczbwo+9EQki31BW1Bb+RTlIYX2wwdgmiQ="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: libretiny
|
||||||
|
version:
|
||||||
|
name: LibreTiny Version
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: libretiny_pwm
|
||||||
|
id: output_led_1
|
||||||
|
pin:
|
||||||
|
number: P26
|
||||||
|
inverted: true
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: binary
|
||||||
|
id: light_switch_1
|
||||||
|
output: output_led_1
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: gpio
|
||||||
|
id: binary_switch_1
|
||||||
|
pin:
|
||||||
|
number: P20
|
||||||
|
inverted: true
|
||||||
|
mode: INPUT_PULLUP
|
||||||
|
on_press:
|
||||||
|
then:
|
||||||
|
- switch.toggle: switch_1
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
id: switch_1
|
||||||
|
name: Relay 1
|
||||||
|
pin: P6
|
||||||
|
on_turn_on:
|
||||||
|
- light.turn_on: light_switch_1
|
||||||
|
on_turn_off:
|
||||||
|
- light.turn_off: light_switch_1
|
||||||
|
|
||||||
|
status_led:
|
||||||
|
pin:
|
||||||
|
number: P22
|
||||||
|
inverted: true
|
||||||
54
tomaszs-wall-lamp-l.yaml
Normal file
54
tomaszs-wall-lamp-l.yaml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
esphome:
|
||||||
|
name: tomaszs-wall-light-l
|
||||||
|
friendly_name: Tomasz's wall light L
|
||||||
|
|
||||||
|
bk72xx:
|
||||||
|
board: generic-bk7231t-qfn32-tuya
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "KgLS7JkyX3p9v3YRB/HaMtm60iJJpH9YbVD6bC8Om3w="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
mdns:
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: libretiny
|
||||||
|
version:
|
||||||
|
name: LibreTiny Version
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: libretiny_pwm
|
||||||
|
id: output_cold
|
||||||
|
pin: P26
|
||||||
|
max_power: 80% # Limit the cold white channel to 80%
|
||||||
|
- platform: libretiny_pwm
|
||||||
|
id: output_warm
|
||||||
|
pin: P24
|
||||||
|
max_power: 80% # Limit the warm white channel to 80%
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: cwww
|
||||||
|
id: light_cwww
|
||||||
|
name: Light
|
||||||
|
cold_white_color_temperature: 6500 K
|
||||||
|
warm_white_color_temperature: 2700 K
|
||||||
|
cold_white: output_cold
|
||||||
|
warm_white: output_warm
|
||||||
|
|
||||||
55
tomaszs-wall-light-r.yaml
Normal file
55
tomaszs-wall-light-r.yaml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
esphome:
|
||||||
|
name: tomaszs-wall-light-r
|
||||||
|
friendly_name: Tomasz's wall light R
|
||||||
|
|
||||||
|
bk72xx:
|
||||||
|
board: generic-bk7231t-qfn32-tuya
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "zXAS/5dqZLhuVXHkhlKofR/WcknLhLkTk+0rFqcPlKU="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
mdns:
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
ap:
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: libretiny
|
||||||
|
version:
|
||||||
|
name: LibreTiny Version
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: libretiny_pwm
|
||||||
|
id: output_cold
|
||||||
|
pin: P26
|
||||||
|
max_power: 80% # Limit the cold white channel to 80%
|
||||||
|
- platform: libretiny_pwm
|
||||||
|
id: output_warm
|
||||||
|
pin: P24
|
||||||
|
max_power: 80% # Limit the warm white channel to 80%
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: cwww
|
||||||
|
id: light_cwww
|
||||||
|
name: Light
|
||||||
|
cold_white_color_temperature: 6500 K
|
||||||
|
warm_white_color_temperature: 2700 K
|
||||||
|
cold_white: output_cold
|
||||||
|
warm_white: output_warm
|
||||||
|
|
||||||
|
|
||||||
40
trash/esphome-web-0fedb4.yaml
Normal file
40
trash/esphome-web-0fedb4.yaml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
esphome:
|
||||||
|
name: esphome-web-0fedb4
|
||||||
|
friendly_name: Test
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "fm4ccKErq3XRViSecNf85iR4bASkJZjmHU57L1jfDYA="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Esphome-Web-0Fedb4"
|
||||||
|
password: "BXHfWtTWeRew"
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: dht
|
||||||
|
pin: 4
|
||||||
|
temperature:
|
||||||
|
name: "Living Room Temperature"
|
||||||
|
humidity:
|
||||||
|
name: "Living Room Humidity"
|
||||||
|
update_interval: 5s
|
||||||
31
trash/esphome-web-0fedc0.yaml
Normal file
31
trash/esphome-web-0fedc0.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
esphome:
|
||||||
|
name: esp-home-hall
|
||||||
|
friendly_name: Hall Charger
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "Ia673XZ4tpmC6xApq59PZYEfsz6SeUdZdGh1zv1iDGI="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Esphome-Web-0Fedc0"
|
||||||
|
password: "bYA2YBfnBE4n"
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
31
trash/hall.yaml
Normal file
31
trash/hall.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
esphome:
|
||||||
|
name: hall
|
||||||
|
friendly_name: Hall
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "2bBi+SYgXR8tGy78rLfNGgtOZdSmf+UHpD4fpr/n5ag="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
password: "6e73941636dbaf1b5fb3191d7663f751"
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Hall Fallback Hotspot"
|
||||||
|
password: "yZRGDi4wENCc"
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
42
trash/mateusz-s-esp.yaml
Normal file
42
trash/mateusz-s-esp.yaml
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
esphome:
|
||||||
|
name: mateusz-s-esp
|
||||||
|
friendly_name: Mateusz_s_esp
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "C9xzP8pJqdTpzlE95zZ5O4ZjNuWI/PVwaDiFaIlO1F8="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
password: "fa5e5bd9c36c45f9ff4bca490ac83bf6"
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Mateusz-S-Esp Fallback Hotspot"
|
||||||
|
password: "lo4bTKMYOzVH"
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
esp32_ble_tracker:
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: ble_presence
|
||||||
|
mac_address: 62:DB:3F:6D:22:85
|
||||||
|
name: "BLE TEST"
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: ble_rssi
|
||||||
|
mac_address: 62:DB:3F:6D:22:85
|
||||||
|
name: "Phone RSSI"
|
||||||
67
trash/tuya-test.yaml
Normal file
67
trash/tuya-test.yaml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
esphome:
|
||||||
|
name: upk2esphome-bk7231n
|
||||||
|
|
||||||
|
bk72xx:
|
||||||
|
board: generic-bk7231n-qfn32-tuya
|
||||||
|
|
||||||
|
logger:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
mdns:
|
||||||
|
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: ""
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: Suchodupin_IoT_2G
|
||||||
|
password: CEC0E76B
|
||||||
|
ap:
|
||||||
|
|
||||||
|
text_sensor:
|
||||||
|
- platform: libretiny
|
||||||
|
version:
|
||||||
|
name: LibreTiny Version
|
||||||
|
- platform: template
|
||||||
|
id: tuya_pir_state
|
||||||
|
name: (Unconfirmed) Pir State
|
||||||
|
filters:
|
||||||
|
- map:
|
||||||
|
- 0 -> Pir
|
||||||
|
- 1 -> None
|
||||||
|
- platform: template
|
||||||
|
id: tuya_battery_state
|
||||||
|
name: (Unconfirmed) Battery State
|
||||||
|
filters:
|
||||||
|
- map:
|
||||||
|
- 0 -> Low
|
||||||
|
- 1 -> Middle
|
||||||
|
- 2 -> High
|
||||||
|
|
||||||
|
uart:
|
||||||
|
rx_pin: RX1
|
||||||
|
tx_pin: TX1
|
||||||
|
baud_rate: 9600
|
||||||
|
|
||||||
|
tuya:
|
||||||
|
# DPIDs processed from schema model: esi4xk
|
||||||
|
on_datapoint_update:
|
||||||
|
- sensor_datapoint: 1
|
||||||
|
datapoint_type: enum
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: tuya_pir_state
|
||||||
|
state: !lambda "return std::to_string(x);"
|
||||||
|
- sensor_datapoint: 3
|
||||||
|
datapoint_type: enum
|
||||||
|
then:
|
||||||
|
- text_sensor.template.publish:
|
||||||
|
id: tuya_battery_state
|
||||||
|
state: !lambda "return std::to_string(x);"
|
||||||
53
under-bed.yaml
Normal file
53
under-bed.yaml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
esphome:
|
||||||
|
name: under-bed
|
||||||
|
friendly_name: Under Bed
|
||||||
|
|
||||||
|
esp32:
|
||||||
|
board: esp32dev
|
||||||
|
framework:
|
||||||
|
type: arduino
|
||||||
|
|
||||||
|
# Enable logging
|
||||||
|
logger:
|
||||||
|
|
||||||
|
# Enable Home Assistant API
|
||||||
|
api:
|
||||||
|
encryption:
|
||||||
|
key: "nYgcgBRWx8JPbUdrfdqLyJedIVuiHf7aL115aRLyXK0="
|
||||||
|
|
||||||
|
ota:
|
||||||
|
platform: esphome
|
||||||
|
password: !secret ota
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ssid: !secret wifi_ssid
|
||||||
|
password: !secret wifi_password
|
||||||
|
|
||||||
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
||||||
|
ap:
|
||||||
|
ssid: "Under-Bed Fallback Hotspot"
|
||||||
|
password: "gjr4VnlR9Rfq"
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
web_server:
|
||||||
|
|
||||||
|
light:
|
||||||
|
- platform: rgb
|
||||||
|
name: "Under Bed"
|
||||||
|
red: r
|
||||||
|
green: g
|
||||||
|
blue: b
|
||||||
|
default_transition_length:
|
||||||
|
milliseconds: 200
|
||||||
|
|
||||||
|
output:
|
||||||
|
- platform: ledc
|
||||||
|
pin: GPIO16
|
||||||
|
id: g
|
||||||
|
- platform: ledc
|
||||||
|
pin: GPIO17
|
||||||
|
id: r
|
||||||
|
- platform: ledc
|
||||||
|
pin: GPIO18
|
||||||
|
id: b
|
||||||
Loading…
x
Reference in New Issue
Block a user