gitextract_dud0nt0l/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── github-pages.yml ├── .gitignore ├── .ruby-version ├── .tool-versions ├── Brewfile ├── LICENSE ├── README.md ├── RFMapping.md ├── Vagrantfile ├── appdaemon/ │ ├── .gitkeep │ ├── apps/ │ │ ├── adaptive_room_heating.py │ │ ├── air_purifier_ai.py │ │ ├── apps.yaml │ │ ├── battery.py │ │ ├── cover.py │ │ ├── humidifier.py │ │ ├── spotify_light.py │ │ └── temperature_lamp.py │ └── dashboards/ │ └── Hello.dash ├── bin/ │ ├── ddns.py │ ├── lovelace-gen.py │ ├── smart-house │ └── smart-house-provision ├── btc-explorer/ │ └── Dockerfile ├── docker-compose.health.yaml ├── docker-compose.media.yaml ├── docker-compose.support.yaml ├── docker-compose.yaml ├── docker-compose.zwave.yaml ├── docs/ │ ├── DIY/ │ │ ├── CatFeeder/ │ │ │ ├── README.md │ │ │ └── index.md │ │ ├── LedStrips/ │ │ │ └── index.md │ │ └── RiggadLamp/ │ │ └── index.md │ ├── Hardware/ │ │ └── index.md │ ├── HomeAssistant/ │ │ ├── AppDaemon.md │ │ ├── Components.md │ │ ├── Lovelace/ │ │ │ └── index.md │ │ ├── PresenceDetection.md │ │ ├── Screens/ │ │ │ └── index.md │ │ ├── Vacuum/ │ │ │ └── index.md │ │ └── VoiceControl/ │ │ └── index.md │ ├── References.md │ ├── Services/ │ │ ├── FirefoxSyncServer.md │ │ └── UpTimeRobot.md │ ├── SmartHouse.xml │ ├── Software/ │ │ ├── Backup.md │ │ ├── Bitcoin.md │ │ ├── ControlScript.md │ │ ├── Degoogling.md │ │ ├── Development.md │ │ ├── Encryption.md │ │ ├── EspHome.md │ │ ├── GettingStarted.md │ │ ├── Nextcloud.md │ │ ├── Nginx.md │ │ ├── Overview.md │ │ ├── PiHole.md │ │ ├── Ports.md │ │ ├── TvDashboard.md │ │ └── Upgrading.md │ └── index.md ├── ff-sync/ │ └── Dockerfile ├── glances/ │ └── glances.conf ├── helpers.md ├── home-assistant/ │ ├── .gitkeep │ ├── automations/ │ │ ├── adguard.yaml │ │ ├── agd.yaml │ │ ├── alexa.yaml │ │ ├── bathroom.yaml │ │ ├── blinds.yaml │ │ ├── cat.yaml │ │ ├── cooking.yaml │ │ ├── corridor.yaml │ │ ├── disasters.yaml │ │ ├── fan.yaml │ │ ├── health.yaml │ │ ├── home-assistant.yaml │ │ ├── humidifier.yaml │ │ ├── lights.yaml │ │ ├── media_player.yaml │ │ ├── octoprint.yaml │ │ ├── pizza.yml │ │ ├── power-saving.yaml │ │ ├── presence.yaml │ │ ├── privacy.yaml │ │ ├── security.yaml │ │ ├── sun.yaml │ │ ├── system.yaml │ │ ├── torrents.yaml │ │ ├── trains.yaml │ │ ├── tv.yaml │ │ ├── vacuum.yaml │ │ ├── weather.yaml │ │ └── work.yaml │ ├── automations.yaml │ ├── blueprints/ │ │ ├── automation/ │ │ │ └── homeassistant/ │ │ │ ├── motion_light.yaml │ │ │ └── notify_leaving_zone.yaml │ │ └── script/ │ │ └── homeassistant/ │ │ └── confirmable_notification.yaml │ ├── components/ │ │ ├── alexa.yaml │ │ ├── alexa_media.yaml │ │ ├── binary_sensor.yaml │ │ ├── calendar.yaml │ │ ├── camera.yaml │ │ ├── climate.yaml │ │ ├── cover.yaml │ │ ├── customize.yaml │ │ ├── fan.yaml │ │ ├── frontend.yaml │ │ ├── history.yaml │ │ ├── homeassistant.yaml │ │ ├── http.yaml │ │ ├── hue.yaml │ │ ├── image_processing.yaml │ │ ├── influxdb.yaml │ │ ├── input_boolean.yaml │ │ ├── input_number.yaml │ │ ├── input_select.yaml │ │ ├── led_strip_effects.yaml │ │ ├── life360.yaml │ │ ├── light.yaml │ │ ├── logbook.yaml │ │ ├── logger.yaml │ │ ├── matrix.yaml │ │ ├── media_player.yaml │ │ ├── mqtt.yaml │ │ ├── notify.yaml │ │ ├── octoprint.yaml │ │ ├── panel_custom.yaml │ │ ├── panel_iframe.yaml │ │ ├── person.yaml │ │ ├── recorder.yaml │ │ ├── rest_commands.yaml │ │ ├── shell_command.yaml │ │ ├── speedtestdotnet.yaml │ │ ├── switch.yaml │ │ ├── telegram.yaml │ │ ├── themes/ │ │ │ ├── darkblue.yaml │ │ │ └── google.yaml │ │ ├── torrent.yaml │ │ ├── utility_meter.yaml │ │ ├── vacuum.yaml │ │ ├── weather.yaml │ │ ├── webostv.yaml │ │ ├── zones.yaml.example │ │ └── zwave.yaml │ ├── configuration.yaml │ ├── custom_components/ │ │ ├── alexa_media/ │ │ │ ├── .translations/ │ │ │ │ ├── ar.json │ │ │ │ ├── de.json │ │ │ │ ├── en.json │ │ │ │ ├── es.json │ │ │ │ ├── fr.json │ │ │ │ ├── it.json │ │ │ │ ├── nb.json │ │ │ │ ├── nl.json │ │ │ │ ├── pl.json │ │ │ │ ├── pt-BR.json │ │ │ │ ├── pt.json │ │ │ │ ├── pt_BR.json │ │ │ │ ├── pt_PT.json │ │ │ │ ├── ru.json │ │ │ │ └── zh-Hans.json │ │ │ ├── __init__.py │ │ │ ├── alarm_control_panel.py │ │ │ ├── alexa_entity.py │ │ │ ├── alexa_media.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── helpers.py │ │ │ ├── light.py │ │ │ ├── manifest.json │ │ │ ├── media_player.py │ │ │ ├── notify.py │ │ │ ├── sensor.py │ │ │ ├── services.py │ │ │ ├── services.yaml │ │ │ ├── strings.json │ │ │ ├── switch.py │ │ │ └── translations/ │ │ │ ├── ar.json │ │ │ ├── de.json │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── fr.json │ │ │ ├── it.json │ │ │ ├── nb.json │ │ │ ├── nl.json │ │ │ ├── pl.json │ │ │ ├── pt-BR.json │ │ │ ├── pt.json │ │ │ ├── pt_BR.json │ │ │ ├── pt_PT.json │ │ │ ├── ru.json │ │ │ └── zh-Hans.json │ │ ├── attributes/ │ │ │ ├── __init__.py │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── burze_dzis_net/ │ │ │ ├── __init__.py │ │ │ ├── binary_sensor.py │ │ │ └── manifest.json │ │ ├── car_wash/ │ │ │ ├── __init__.py │ │ │ ├── binary_sensor.py │ │ │ ├── const.py │ │ │ ├── manifest.json │ │ │ └── translations/ │ │ │ ├── binary_sensor.de.json │ │ │ ├── binary_sensor.en.json │ │ │ ├── binary_sensor.it.json │ │ │ ├── binary_sensor.pl.json │ │ │ ├── binary_sensor.ru.json │ │ │ └── binary_sensor.uk.json │ │ ├── cracow_air_quality/ │ │ │ ├── __init__.py │ │ │ └── sensor.py │ │ ├── emby_upcoming_media/ │ │ │ ├── __init__.py │ │ │ ├── client.py │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── google_geocode/ │ │ │ ├── README.md │ │ │ ├── google_geocode.markdown │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── grocy/ │ │ │ ├── __init__.py │ │ │ ├── binary_sensor.py │ │ │ ├── breaking_changes │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── entity.py │ │ │ ├── grocy_data.py │ │ │ ├── helpers.py │ │ │ ├── manifest.json │ │ │ ├── sensor.py │ │ │ ├── services.py │ │ │ ├── services.yaml │ │ │ └── translations/ │ │ │ ├── en.json │ │ │ └── hr.json │ │ ├── hacs/ │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── diagnostics.py │ │ │ ├── entity.py │ │ │ ├── enums.py │ │ │ ├── exceptions.py │ │ │ ├── frontend.py │ │ │ ├── hacs_frontend/ │ │ │ │ ├── __init__.py │ │ │ │ ├── c.004a7b01.js │ │ │ │ ├── c.05e9df28.js │ │ │ │ ├── c.0732ee74.js │ │ │ │ ├── c.15331ea4.js │ │ │ │ ├── c.175b9792.js │ │ │ │ ├── c.1b450c80.js │ │ │ │ ├── c.21c042d4.js │ │ │ │ ├── c.24bd2446.js │ │ │ │ ├── c.250c89dd.js │ │ │ │ ├── c.362d16d4.js │ │ │ │ ├── c.3c651323.js │ │ │ │ ├── c.4053bced.js │ │ │ │ ├── c.47f687e9.js │ │ │ │ ├── c.4a97632a.js │ │ │ │ ├── c.4c31e630.js │ │ │ │ ├── c.50bfd408.js │ │ │ │ ├── c.56433b09.js │ │ │ │ ├── c.587d89ba.js │ │ │ │ ├── c.58a9b586.js │ │ │ │ ├── c.5b87ad2c.js │ │ │ │ ├── c.5ba288d8.js │ │ │ │ ├── c.5ede7966.js │ │ │ │ ├── c.63dc92d5.js │ │ │ │ ├── c.656daa82.js │ │ │ │ ├── c.6711bf6c.js │ │ │ │ ├── c.6b0f0543.js │ │ │ │ ├── c.743a15a1.js │ │ │ │ ├── c.7ee871d3.js │ │ │ │ ├── c.822f38be.js │ │ │ │ ├── c.88ebfd3e.js │ │ │ │ ├── c.8e28b461.js │ │ │ │ ├── c.8f19de42.js │ │ │ │ ├── c.936d9772.js │ │ │ │ ├── c.99c1c4ba.js │ │ │ │ ├── c.9d5cd8b6.js │ │ │ │ ├── c.9d6aaabf.js │ │ │ │ ├── c.a0bc44e3.js │ │ │ │ ├── c.ad739743.js │ │ │ │ ├── c.b054aba2.js │ │ │ │ ├── c.b720c549.js │ │ │ │ ├── c.ba01fa51.js │ │ │ │ ├── c.ba5bc454.js │ │ │ │ ├── c.bc53dda1.js │ │ │ │ ├── c.bca0f55d.js │ │ │ │ ├── c.c176780d.js │ │ │ │ ├── c.c4815b5a.js │ │ │ │ ├── c.c608beec.js │ │ │ │ ├── c.c7df5815.js │ │ │ │ ├── c.c98162aa.js │ │ │ │ ├── c.d2d70fc0.js │ │ │ │ ├── c.da8de431.js │ │ │ │ ├── c.db2e6bb6.js │ │ │ │ ├── c.dba55e54.js │ │ │ │ ├── c.e23b0d0b.js │ │ │ │ ├── c.e65e9eeb.js │ │ │ │ ├── c.e7b530de.js │ │ │ │ ├── c.ee4824b8.js │ │ │ │ ├── c.ef5e31a4.js │ │ │ │ ├── c.f0a99f33.js │ │ │ │ ├── c.f2cbe48c.js │ │ │ │ ├── c.f3416703.js │ │ │ │ ├── c.fbd8d2ba.js │ │ │ │ ├── c.fe747ba2.js │ │ │ │ ├── entrypoint.js │ │ │ │ ├── main-a0d7432d.js │ │ │ │ ├── manifest.json │ │ │ │ └── version.py │ │ │ ├── iconset.js │ │ │ ├── manifest.json │ │ │ ├── repositories/ │ │ │ │ ├── __init__.py │ │ │ │ ├── appdaemon.py │ │ │ │ ├── base.py │ │ │ │ ├── integration.py │ │ │ │ ├── netdaemon.py │ │ │ │ ├── plugin.py │ │ │ │ ├── python_script.py │ │ │ │ └── theme.py │ │ │ ├── sensor.py │ │ │ ├── system_health.py │ │ │ ├── translations/ │ │ │ │ └── en.json │ │ │ ├── update.py │ │ │ ├── utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── backup.py │ │ │ │ ├── configuration_schema.py │ │ │ │ ├── data.py │ │ │ │ ├── decode.py │ │ │ │ ├── decorator.py │ │ │ │ ├── default.repositories │ │ │ │ ├── filters.py │ │ │ │ ├── json.py │ │ │ │ ├── logger.py │ │ │ │ ├── path.py │ │ │ │ ├── queue_manager.py │ │ │ │ ├── regex.py │ │ │ │ ├── store.py │ │ │ │ ├── template.py │ │ │ │ ├── validate.py │ │ │ │ ├── version.py │ │ │ │ └── workarounds.py │ │ │ ├── validate/ │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── archived.py │ │ │ │ ├── base.py │ │ │ │ ├── brands.py │ │ │ │ ├── description.py │ │ │ │ ├── hacsjson.py │ │ │ │ ├── images.py │ │ │ │ ├── information.py │ │ │ │ ├── integration_manifest.py │ │ │ │ ├── issues.py │ │ │ │ ├── manager.py │ │ │ │ └── topics.py │ │ │ └── websocket/ │ │ │ ├── __init__.py │ │ │ ├── critical.py │ │ │ ├── repositories.py │ │ │ └── repository.py │ │ ├── harvest/ │ │ │ ├── __init__.py │ │ │ └── sensor.py │ │ ├── it_will_rain/ │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── kkm/ │ │ │ ├── __init__.py │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── localtuya/ │ │ │ ├── __init__.py │ │ │ ├── binary_sensor.py │ │ │ ├── climate.py │ │ │ ├── cloud_api.py │ │ │ ├── common.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── cover.py │ │ │ ├── diagnostics.py │ │ │ ├── discovery.py │ │ │ ├── fan.py │ │ │ ├── light.py │ │ │ ├── manifest.json │ │ │ ├── number.py │ │ │ ├── pytuya/ │ │ │ │ └── __init__.py │ │ │ ├── select.py │ │ │ ├── sensor.py │ │ │ ├── services.yaml │ │ │ ├── strings.json │ │ │ ├── switch.py │ │ │ ├── translations/ │ │ │ │ ├── en.json │ │ │ │ ├── it.json │ │ │ │ └── pt-BR.json │ │ │ └── vacuum.py │ │ ├── lunching/ │ │ │ ├── __init__.py │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── mmpk/ │ │ │ ├── __init__.py │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── nodered/ │ │ │ ├── __init__.py │ │ │ ├── binary_sensor.py │ │ │ ├── button.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── discovery.py │ │ │ ├── manifest.json │ │ │ ├── sensor.py │ │ │ ├── services.yaml │ │ │ ├── switch.py │ │ │ ├── translations/ │ │ │ │ ├── de.json │ │ │ │ ├── dk.json │ │ │ │ ├── en.json │ │ │ │ ├── fr.json │ │ │ │ ├── nb.json │ │ │ │ ├── pt-BR.json │ │ │ │ └── sv.json │ │ │ ├── utils.py │ │ │ └── websocket.py │ │ ├── rocketlaunchlive/ │ │ │ ├── __init__.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── manifest.json │ │ │ ├── sensor.py │ │ │ ├── strings.json │ │ │ └── translations/ │ │ │ └── en.json │ │ ├── samsung_multi_room/ │ │ │ ├── __init__.py │ │ │ ├── manifest.json │ │ │ └── media_player.py │ │ ├── smartthinq_sensors/ │ │ │ ├── __init__.py │ │ │ ├── binary_sensor.py │ │ │ ├── climate.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── device_helpers.py │ │ │ ├── diagnostics.py │ │ │ ├── fan.py │ │ │ ├── humidifier.py │ │ │ ├── manifest.json │ │ │ ├── sensor.py │ │ │ ├── services.yaml │ │ │ ├── switch.py │ │ │ ├── translations/ │ │ │ │ ├── el.json │ │ │ │ ├── en.json │ │ │ │ ├── es.json │ │ │ │ ├── hr.json │ │ │ │ ├── it.json │ │ │ │ ├── nb.json │ │ │ │ ├── pl.json │ │ │ │ ├── pt-BR.json │ │ │ │ ├── pt.json │ │ │ │ └── sk.json │ │ │ └── wideq/ │ │ │ ├── __init__.py │ │ │ ├── ac.py │ │ │ ├── airpurifier.py │ │ │ ├── const.py │ │ │ ├── core_async.py │ │ │ ├── core_exceptions.py │ │ │ ├── core_util.py │ │ │ ├── dehumidifier.py │ │ │ ├── device.py │ │ │ ├── device_info.py │ │ │ ├── dishwasher.py │ │ │ ├── factory.py │ │ │ ├── fan.py │ │ │ ├── range.py │ │ │ ├── refrigerator.py │ │ │ ├── styler.py │ │ │ └── washerDryer.py │ │ ├── spacex/ │ │ │ ├── __init__.py │ │ │ ├── binary_sensor.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── manifest.json │ │ │ ├── sensor.py │ │ │ ├── strings.json │ │ │ └── translations/ │ │ │ └── en.json │ │ ├── spotify_cover_sensor/ │ │ │ ├── __init__.py │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── tauron_amiplus/ │ │ │ ├── manifest.json │ │ │ └── sensor.py │ │ ├── tuya_v2/ │ │ │ ├── __init__.py │ │ │ ├── aes_cbc.py │ │ │ ├── alarm_control_panel.py │ │ │ ├── base.py │ │ │ ├── binary_sensor.py │ │ │ ├── climate.py │ │ │ ├── config_flow.py │ │ │ ├── const.py │ │ │ ├── cover.py │ │ │ ├── fan.py │ │ │ ├── humidifier.py │ │ │ ├── light.py │ │ │ ├── manifest.json │ │ │ ├── number.py │ │ │ ├── scene.py │ │ │ ├── select.py │ │ │ ├── sensor.py │ │ │ ├── strings.json │ │ │ ├── switch.py │ │ │ ├── translations/ │ │ │ │ ├── de.json │ │ │ │ ├── en.json │ │ │ │ ├── es.json │ │ │ │ ├── fr.json │ │ │ │ ├── hi.json │ │ │ │ ├── hu.json │ │ │ │ ├── id.json │ │ │ │ ├── it.json │ │ │ │ ├── kn.json │ │ │ │ ├── nl.json │ │ │ │ ├── pt.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── vacuum.py │ │ ├── xiaomi_cloud_map_extractor/ │ │ │ ├── __init__.py │ │ │ ├── camera.py │ │ │ ├── common/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image_handler.py │ │ │ │ ├── map_data.py │ │ │ │ ├── map_data_parser.py │ │ │ │ ├── vacuum.py │ │ │ │ ├── vacuum_v2.py │ │ │ │ └── xiaomi_cloud_connector.py │ │ │ ├── const.py │ │ │ ├── dreame/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image_handler.py │ │ │ │ ├── map_data_parser.py │ │ │ │ └── vacuum.py │ │ │ ├── manifest.json │ │ │ ├── roidmi/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image_handler.py │ │ │ │ ├── map_data_parser.py │ │ │ │ └── vacuum.py │ │ │ ├── services.yaml │ │ │ ├── types.py │ │ │ ├── unsupported/ │ │ │ │ ├── __init__.py │ │ │ │ └── vacuum.py │ │ │ ├── viomi/ │ │ │ │ ├── __init__.py │ │ │ │ ├── image_handler.py │ │ │ │ ├── map_data_parser.py │ │ │ │ ├── parsing_buffer.py │ │ │ │ └── vacuum.py │ │ │ └── xiaomi/ │ │ │ ├── __init__.py │ │ │ ├── image_handler.py │ │ │ ├── map_data_parser.py │ │ │ └── vacuum.py │ │ └── yahoofinance/ │ │ ├── __init__.py │ │ ├── const.py │ │ ├── coordinator.py │ │ ├── manifest.json │ │ ├── sensor.py │ │ └── services.yaml │ ├── docker-entrypoint.sh │ ├── groups.yaml │ ├── known_devices.yaml.example │ ├── lovelace/ │ │ ├── balcony.yaml │ │ ├── batchroom.yaml │ │ ├── bedroom.yaml │ │ ├── briefing.yaml │ │ ├── cameras.yaml │ │ ├── corridor.yaml │ │ ├── dashboard.yaml │ │ ├── desk.yaml │ │ ├── invest.yaml │ │ ├── kitchen.yaml │ │ ├── living_room.yaml │ │ ├── main.yaml │ │ ├── network.yaml │ │ ├── smart-home.yaml │ │ ├── system.yaml │ │ └── work.yaml │ ├── panels/ │ │ ├── vacuum_plan.html │ │ └── zwavegraph2.html │ ├── scenes/ │ │ ├── tv.yaml │ │ └── work.yaml │ ├── scripts/ │ │ ├── grocy.yaml │ │ ├── switch_off_mac_mini.sh │ │ └── vacuum.yaml │ ├── sensors/ │ │ ├── air_purifier.yaml │ │ ├── currency.yaml │ │ ├── deluge.yaml │ │ ├── fail2ban.yaml │ │ ├── food.yaml │ │ ├── fuel.yaml │ │ ├── kkm.yaml │ │ ├── money.yaml │ │ ├── places.yaml │ │ ├── power.yaml │ │ ├── qnap.yaml │ │ ├── scale.yaml │ │ ├── sonarr.yaml │ │ ├── space.yaml │ │ ├── spotify.yaml │ │ ├── statistics.yaml │ │ ├── system.yaml │ │ ├── time.yaml │ │ ├── trackers.yaml │ │ ├── transit.yaml │ │ ├── vacuum.yaml │ │ ├── weather.yaml │ │ └── work.yaml │ ├── themes/ │ │ ├── caule-themes-pack-1/ │ │ │ └── caule-themes-pack-1.yaml │ │ └── google_dark_theme/ │ │ └── google_dark_theme.yaml │ ├── www/ │ │ ├── community/ │ │ │ ├── lovelace-battery-entity-row/ │ │ │ │ └── battery-entity-row.js │ │ │ ├── lovelace-card-tools/ │ │ │ │ ├── card-tools.js │ │ │ │ └── webpack.config.js │ │ │ ├── lovelace-layout-card/ │ │ │ │ ├── layout-card.js │ │ │ │ └── rollup.config.js │ │ │ ├── lovelace-xiaomi-vacuum-map-card/ │ │ │ │ └── xiaomi-vacuum-map-card.js │ │ │ ├── mini-graph-card/ │ │ │ │ └── mini-graph-card-bundle.js │ │ │ ├── mini-media-player/ │ │ │ │ └── mini-media-player-bundle.js │ │ │ └── weather-card/ │ │ │ ├── weather-card-editor.js │ │ │ └── weather-card.js │ │ ├── custom-lovelace/ │ │ │ ├── air-purifier/ │ │ │ │ └── card.js │ │ │ ├── card-tools.js │ │ │ ├── compact-custom-header-editor.js │ │ │ ├── compact-custom-header.js │ │ │ ├── courtain/ │ │ │ │ └── card.js │ │ │ ├── light-card.js │ │ │ ├── linak-desk/ │ │ │ │ └── card.js │ │ │ ├── qr-card/ │ │ │ │ ├── card.js │ │ │ │ └── qrcode.js │ │ │ ├── thermostat/ │ │ │ │ ├── card.js │ │ │ │ └── lib.js │ │ │ ├── thermostat-card/ │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── VERSION │ │ │ │ ├── changelog.md │ │ │ │ ├── thermostat-card.js │ │ │ │ └── thermostat-card.lib.js │ │ │ ├── transit/ │ │ │ │ └── card.js │ │ │ └── vacuum/ │ │ │ └── card.js │ │ ├── custom_ui/ │ │ │ ├── .gitkeep │ │ │ ├── dynamic-wallpaper.js │ │ │ ├── kkm-card.js │ │ │ └── monster-card.js │ │ ├── js/ │ │ │ └── lovelace-swiper.js │ │ ├── kiosk/ │ │ │ └── kiosk.js │ │ └── ping.txt │ └── zwave_device_config.yaml ├── mkdocs.yml ├── mosquitto/ │ └── mosquitto.conf ├── nextcloud/ │ ├── Dockerfile │ ├── Upgrade.md │ ├── supervisord.conf │ └── www.conf ├── node-red/ │ └── Dockerfile ├── notes/ │ ├── Dockerfile │ └── entrypoint ├── orion/ │ ├── Dockerfile │ ├── config.example.json │ └── entrypoint.sh ├── panel/ │ ├── index.html │ ├── main.js │ ├── package.json │ ├── renderer.js │ └── wakeup.js ├── postgresql/ │ └── init-user-db.sh ├── provision/ │ ├── .gitkeep │ ├── install_roles.yml │ ├── inventory.ini.example │ ├── inventory.vagrant.ini │ ├── playbook.yml │ ├── playbooks/ │ │ ├── anarchopi/ │ │ │ ├── adguard/ │ │ │ │ ├── adguard.yaml │ │ │ │ └── ads.conf.j2 │ │ │ ├── anarchopi.yaml │ │ │ ├── bin/ │ │ │ │ └── unlock-hard-drive │ │ │ ├── bitcoind/ │ │ │ │ ├── bitcoin.yaml │ │ │ │ ├── bitcoind.service │ │ │ │ └── btc_explorer.conf.j2 │ │ │ ├── electrum/ │ │ │ │ ├── backup.j2 │ │ │ │ ├── electrs.service │ │ │ │ ├── electrum.conf.j2 │ │ │ │ └── electrum.yaml │ │ │ ├── ipfs/ │ │ │ │ ├── ipfs.conf.j2 │ │ │ │ ├── ipfs.service │ │ │ │ └── ipfs.yaml │ │ │ ├── lnd/ │ │ │ │ ├── lnd.service │ │ │ │ └── lnd.yaml │ │ │ └── torrents/ │ │ │ ├── torrents.conf.j2 │ │ │ └── torrents.yaml │ │ ├── blog/ │ │ │ ├── blog.conf.j2 │ │ │ └── blog.yaml │ │ ├── cat_feeder/ │ │ │ ├── cat-motion.service │ │ │ ├── cat.yaml │ │ │ ├── glances.service │ │ │ ├── led.service │ │ │ ├── motioneye.conf │ │ │ ├── motioneye.service │ │ │ └── servo.service │ │ ├── ci/ │ │ │ ├── ci.conf.j2 │ │ │ └── ci.yaml │ │ ├── decibel_meter/ │ │ │ ├── asound.conf │ │ │ ├── configure-driver.sh │ │ │ ├── decibel_meter.yaml │ │ │ ├── glances.service │ │ │ └── meter.service │ │ ├── detox/ │ │ │ ├── detox.conf.j2 │ │ │ └── detox.yaml │ │ ├── docker/ │ │ │ ├── docker-netshare.service │ │ │ └── docker.yaml │ │ ├── doh_dns/ │ │ │ ├── doh_dns.confg.j2 │ │ │ └── doh_dns.yaml │ │ ├── errbit/ │ │ │ ├── errbit.conf.j2 │ │ │ └── errbit.yaml │ │ ├── esphome/ │ │ │ ├── esphome.conf.j2 │ │ │ └── esphome.yaml │ │ ├── ethereum/ │ │ │ ├── ethereum.conf.j2 │ │ │ └── ethereum.yaml │ │ ├── firewall.yaml │ │ ├── git/ │ │ │ ├── git.conf.j2 │ │ │ └── git.yaml │ │ ├── gotify/ │ │ │ ├── gotify.conf.j2 │ │ │ └── gotify.yaml │ │ ├── grafana/ │ │ │ ├── grafana.conf.j2 │ │ │ └── grafana.yaml │ │ ├── grocy/ │ │ │ ├── grocy.conf.j2 │ │ │ └── grocy.yaml │ │ ├── home-assistant/ │ │ │ ├── home-assistant.conf.j2 │ │ │ └── home-assistant.yaml │ │ ├── housekeeping.yaml │ │ ├── master_of_stonks/ │ │ │ ├── master_of_stonks.yaml │ │ │ └── mos.j2 │ │ ├── mastodon/ │ │ │ ├── mastodon.conf.j2 │ │ │ └── mastodon.yaml │ │ ├── matrix/ │ │ │ ├── im.conf.j2 │ │ │ └── matrix.yaml │ │ ├── media/ │ │ │ ├── audiobook.conf.j2 │ │ │ ├── glances.service │ │ │ ├── media.conf.j2 │ │ │ ├── media.yaml │ │ │ ├── plex.conf.j2 │ │ │ └── sonarr.conf.j2 │ │ ├── nextcloud/ │ │ │ ├── nextcloud.conf.j2 │ │ │ ├── nextcloud.yaml │ │ │ └── oo.conf.j2 │ │ ├── node-red/ │ │ │ ├── node-red.conf.j2 │ │ │ └── node-red.yaml │ │ ├── notes/ │ │ │ ├── notes.conf.j2 │ │ │ └── notes.yaml │ │ ├── packages.yaml │ │ ├── photos/ │ │ │ ├── photos.conf.j2 │ │ │ └── photos.yaml │ │ ├── rss_bridge/ │ │ │ ├── rss_bridge.conf.j2 │ │ │ └── rss_bridge.yaml │ │ ├── simplelogin/ │ │ │ ├── pgsql-relay-domains.cf.j2 │ │ │ ├── pgsql-transport-maps.cf.j2 │ │ │ ├── simple-login.conf.j2 │ │ │ └── simplelogin.yaml │ │ ├── smart-house-unlock │ │ ├── smasher/ │ │ │ ├── smasher.conf.j2 │ │ │ └── smasher.yaml │ │ ├── speedtest/ │ │ │ ├── speedtest.conf.j2 │ │ │ └── speedtest.yaml │ │ ├── transfer/ │ │ │ ├── transfer.conf.j2 │ │ │ └── transfer.yaml │ │ ├── vacuum/ │ │ │ ├── upload_map.sh │ │ │ ├── vacuum.yaml │ │ │ └── watch_map.sh │ │ ├── youtube/ │ │ │ ├── youtube.conf.j2 │ │ │ └── youtube.yaml │ │ ├── ytd/ │ │ │ ├── ytd.conf.j2 │ │ │ └── ytd.yaml │ │ └── zwave/ │ │ ├── zwave.service.j2 │ │ └── zwave.yaml │ ├── templates/ │ │ ├── 404.html │ │ ├── etc/ │ │ │ ├── default/ │ │ │ │ └── cloudflared.j2 │ │ │ ├── dnsmasq.d/ │ │ │ │ └── 02-localhosts.conf.j2 │ │ │ ├── fail2ban/ │ │ │ │ ├── filter.d/ │ │ │ │ │ ├── ha.conf │ │ │ │ │ ├── mosquitto-auth.conf │ │ │ │ │ ├── nginx-badbots.conf │ │ │ │ │ ├── nginx-forbidden.conf │ │ │ │ │ ├── nginx-http-auth.conf │ │ │ │ │ └── nginx-noscript.conf │ │ │ │ └── jail.d/ │ │ │ │ └── ha.conf │ │ │ ├── nginx/ │ │ │ │ └── sites-enabled/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── airsonic.conf.j2 │ │ │ │ ├── default.conf.j2 │ │ │ │ ├── firefly.conf.j2 │ │ │ │ ├── monio.conf.j2 │ │ │ │ ├── podcast.conf.j2 │ │ │ │ └── rss.conf.j2 │ │ │ ├── pihole/ │ │ │ │ └── lan.list.j2 │ │ │ └── systemd/ │ │ │ ├── bt-mqtt-gateway.service │ │ │ └── resolved.conf │ │ ├── home/ │ │ │ └── pi/ │ │ │ └── mqtt2rf/ │ │ │ └── config.yaml.j2 │ │ ├── lib/ │ │ │ └── systemd/ │ │ │ └── system/ │ │ │ ├── cloudflared.service.j2 │ │ │ ├── health.service.j2 │ │ │ ├── kiosk.service.j2 │ │ │ ├── media.service.j2 │ │ │ ├── smart-house.service.j2 │ │ │ └── support.service.j2 │ │ └── var/ │ │ └── www/ │ │ └── html/ │ │ ├── 403.html │ │ └── index.html │ └── vars.yml.example ├── requirements.txt ├── scripts/ │ ├── health.sh │ ├── media.sh │ ├── pihole.sh │ ├── smart-house.sh │ ├── support.sh │ └── zwave.sh ├── tor/ │ ├── Dockerfile │ └── torrc ├── vacuum/ │ ├── .gitignore │ ├── Dockerfile │ ├── bin/ │ │ ├── build │ │ ├── run │ │ └── upload │ ├── index.js │ ├── map.js │ ├── package.json │ └── public/ │ ├── .gitkeep │ └── index.html ├── youtube/ │ └── Dockerfile └── zwave/ ├── Dockerfile ├── docker-entrypoint.sh └── options.js