├── .env.busix.example ├── .env.crontab.example ├── .env.dpodcast.example ├── .env.firefly.example ├── .env.grafana.example ├── .env.home-assistant.example ├── .env.influxdb.example ├── .env.local.example ├── .env.nextcloud.example ├── .env.pihole.example ├── .env.plex.example ├── .env.postgresql.example ├── .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 │ │ ├── base.jpg │ │ ├── bowl.jpg │ │ ├── fc.jpg │ │ ├── final.jpg │ │ ├── header.jpg │ │ ├── index.md │ │ ├── parts.jpg │ │ ├── printing.jpg │ │ ├── ration_container.jpg │ │ ├── servo_holder.jpg │ │ ├── tc.jpg │ │ └── ultimate-3d-printed-pet-feeder-v4.zip │ ├── LedStrips │ │ └── index.md │ └── RiggadLamp │ │ ├── header.jpg │ │ └── index.md ├── Hardware │ └── index.md ├── HomeAssistant │ ├── AppDaemon.md │ ├── Components.md │ ├── Lovelace │ │ ├── afternoon.png │ │ ├── air_purifier.gif │ │ ├── evening.png │ │ ├── index.md │ │ ├── kkm.png │ │ ├── linak.gif │ │ ├── night.png │ │ ├── public_transit.png │ │ ├── vacuum.png │ │ └── vacuum_zones.jpg │ ├── PresenceDetection.md │ ├── Screens │ │ ├── bathroom.png │ │ ├── bedroom.png │ │ ├── cameras.png │ │ ├── corridor.png │ │ ├── dashboard.png │ │ ├── index.md │ │ ├── kitchen.png │ │ ├── living_room.png │ │ ├── networking.png │ │ ├── work.png │ │ └── work_desk.png │ ├── Vacuum │ │ ├── header.jpg │ │ ├── index.md │ │ ├── vacuum.png │ │ └── vacuum_zones.jpg │ ├── VoiceControl │ │ ├── header.jpg │ │ └── index.md │ └── lovelace-presence.png ├── 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 ├── header.jpg ├── index.md └── logo.svg ├── ff-sync └── Dockerfile ├── glances └── glances.conf ├── helpers.md ├── home-assistant ├── .gitkeep ├── automations.yaml ├── automations │ ├── adguard.yaml │ ├── agd.yaml │ ├── alexa.yaml │ ├── bathroom.yaml │ ├── blinds.yaml │ ├── cat.yaml │ ├── cooking.yaml │ ├── corridor.yaml │ ├── disasters.yaml │ ├── external.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 ├── 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 │ │ ├── Google_Geocode_Screenshot.png │ │ ├── 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.004a7b01.js.gz │ │ │ ├── c.05e9df28.js │ │ │ ├── c.05e9df28.js.gz │ │ │ ├── c.0732ee74.js │ │ │ ├── c.0732ee74.js.gz │ │ │ ├── c.15331ea4.js │ │ │ ├── c.15331ea4.js.gz │ │ │ ├── c.175b9792.js │ │ │ ├── c.175b9792.js.gz │ │ │ ├── c.1b450c80.js │ │ │ ├── c.1b450c80.js.gz │ │ │ ├── c.21c042d4.js │ │ │ ├── c.24bd2446.js │ │ │ ├── c.24bd2446.js.gz │ │ │ ├── c.250c89dd.js │ │ │ ├── c.250c89dd.js.gz │ │ │ ├── c.362d16d4.js │ │ │ ├── c.362d16d4.js.gz │ │ │ ├── c.3c651323.js │ │ │ ├── c.3c651323.js.gz │ │ │ ├── c.4053bced.js │ │ │ ├── c.4053bced.js.gz │ │ │ ├── c.47f687e9.js │ │ │ ├── c.47f687e9.js.gz │ │ │ ├── c.4a97632a.js │ │ │ ├── c.4a97632a.js.gz │ │ │ ├── c.4c31e630.js │ │ │ ├── c.4c31e630.js.gz │ │ │ ├── c.50bfd408.js │ │ │ ├── c.50bfd408.js.gz │ │ │ ├── c.56433b09.js │ │ │ ├── c.56433b09.js.gz │ │ │ ├── c.587d89ba.js │ │ │ ├── c.587d89ba.js.gz │ │ │ ├── c.58a9b586.js │ │ │ ├── c.58a9b586.js.gz │ │ │ ├── c.5b87ad2c.js │ │ │ ├── c.5b87ad2c.js.gz │ │ │ ├── c.5ba288d8.js │ │ │ ├── c.5ba288d8.js.gz │ │ │ ├── c.5ede7966.js │ │ │ ├── c.5ede7966.js.gz │ │ │ ├── c.63dc92d5.js │ │ │ ├── c.63dc92d5.js.gz │ │ │ ├── c.656daa82.js │ │ │ ├── c.6711bf6c.js │ │ │ ├── c.6711bf6c.js.gz │ │ │ ├── c.6b0f0543.js │ │ │ ├── c.6b0f0543.js.gz │ │ │ ├── c.743a15a1.js │ │ │ ├── c.743a15a1.js.gz │ │ │ ├── c.7ee871d3.js │ │ │ ├── c.7ee871d3.js.gz │ │ │ ├── c.822f38be.js │ │ │ ├── c.822f38be.js.gz │ │ │ ├── c.88ebfd3e.js │ │ │ ├── c.88ebfd3e.js.gz │ │ │ ├── c.8e28b461.js │ │ │ ├── c.8e28b461.js.gz │ │ │ ├── c.8f19de42.js │ │ │ ├── c.8f19de42.js.gz │ │ │ ├── c.936d9772.js │ │ │ ├── c.936d9772.js.gz │ │ │ ├── c.99c1c4ba.js │ │ │ ├── c.99c1c4ba.js.gz │ │ │ ├── c.9d5cd8b6.js │ │ │ ├── c.9d5cd8b6.js.gz │ │ │ ├── c.9d6aaabf.js │ │ │ ├── c.9d6aaabf.js.gz │ │ │ ├── c.a0bc44e3.js │ │ │ ├── c.a0bc44e3.js.gz │ │ │ ├── c.ad739743.js │ │ │ ├── c.ad739743.js.gz │ │ │ ├── c.b054aba2.js │ │ │ ├── c.b054aba2.js.gz │ │ │ ├── c.b720c549.js │ │ │ ├── c.b720c549.js.gz │ │ │ ├── c.ba01fa51.js │ │ │ ├── c.ba01fa51.js.gz │ │ │ ├── c.ba5bc454.js │ │ │ ├── c.ba5bc454.js.gz │ │ │ ├── c.bc53dda1.js │ │ │ ├── c.bc53dda1.js.gz │ │ │ ├── c.bca0f55d.js │ │ │ ├── c.bca0f55d.js.gz │ │ │ ├── c.c176780d.js │ │ │ ├── c.c176780d.js.gz │ │ │ ├── c.c4815b5a.js │ │ │ ├── c.c4815b5a.js.gz │ │ │ ├── c.c608beec.js │ │ │ ├── c.c608beec.js.gz │ │ │ ├── c.c7df5815.js │ │ │ ├── c.c7df5815.js.gz │ │ │ ├── c.c98162aa.js │ │ │ ├── c.c98162aa.js.gz │ │ │ ├── c.d2d70fc0.js │ │ │ ├── c.d2d70fc0.js.gz │ │ │ ├── c.da8de431.js │ │ │ ├── c.da8de431.js.gz │ │ │ ├── c.db2e6bb6.js │ │ │ ├── c.db2e6bb6.js.gz │ │ │ ├── c.dba55e54.js │ │ │ ├── c.dba55e54.js.gz │ │ │ ├── c.e23b0d0b.js │ │ │ ├── c.e23b0d0b.js.gz │ │ │ ├── c.e65e9eeb.js │ │ │ ├── c.e65e9eeb.js.gz │ │ │ ├── c.e7b530de.js │ │ │ ├── c.e7b530de.js.gz │ │ │ ├── c.ee4824b8.js │ │ │ ├── c.ee4824b8.js.gz │ │ │ ├── c.ef5e31a4.js │ │ │ ├── c.ef5e31a4.js.gz │ │ │ ├── c.f0a99f33.js │ │ │ ├── c.f0a99f33.js.gz │ │ │ ├── c.f2cbe48c.js │ │ │ ├── c.f2cbe48c.js.gz │ │ │ ├── c.f3416703.js │ │ │ ├── c.f3416703.js.gz │ │ │ ├── c.fbd8d2ba.js │ │ │ ├── c.fbd8d2ba.js.gz │ │ │ ├── c.fe747ba2.js │ │ │ ├── c.fe747ba2.js.gz │ │ │ ├── entrypoint.js │ │ │ ├── entrypoint.js.gz │ │ │ ├── main-a0d7432d.js │ │ │ ├── main-a0d7432d.js.gz │ │ │ ├── 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 │ │ ├── aqua.jpg │ │ ├── blue.jpg │ │ ├── caule-themes-pack-1.yaml │ │ ├── clear-night.svg │ │ ├── cloudy.svg │ │ ├── coral.jpg │ │ ├── fog.svg │ │ ├── gray.jpg │ │ ├── green.jpg │ │ ├── hail.svg │ │ ├── lightning-rainy.svg │ │ ├── lightning.svg │ │ ├── orange.jpg │ │ ├── partlycloudy.svg │ │ ├── pink.jpg │ │ ├── pouring.svg │ │ ├── purple.jpg │ │ ├── rainy.svg │ │ ├── rose.jpg │ │ ├── snowy-rainy.svg │ │ ├── snowy.svg │ │ ├── sunny.svg │ │ ├── windy-variant.svg │ │ ├── windy.svg │ │ └── yellow.jpg │ └── google_dark_theme │ │ └── google_dark_theme.yaml ├── www │ ├── community │ │ ├── lovelace-battery-entity-row │ │ │ ├── battery-entity-row.js │ │ │ └── battery-entity-row.js.gz │ │ ├── lovelace-card-tools │ │ │ ├── card-tools.js │ │ │ ├── card-tools.js.gz │ │ │ ├── webpack.config.js │ │ │ └── webpack.config.js.gz │ │ ├── lovelace-layout-card │ │ │ ├── layout-card.js │ │ │ ├── layout-card.js.gz │ │ │ ├── rollup.config.js │ │ │ └── rollup.config.js.gz │ │ ├── lovelace-xiaomi-vacuum-map-card │ │ │ ├── xiaomi-vacuum-map-card.js │ │ │ └── xiaomi-vacuum-map-card.js.gz │ │ ├── mini-graph-card │ │ │ ├── mini-graph-card-bundle.js │ │ │ └── mini-graph-card-bundle.js.gz │ │ ├── mini-media-player │ │ │ ├── mini-media-player-bundle.js │ │ │ └── mini-media-player-bundle.js.gz │ │ └── weather-card │ │ │ ├── icons │ │ │ ├── cloudy-day-1.svg │ │ │ ├── cloudy-day-2.svg │ │ │ ├── cloudy-day-3.svg │ │ │ ├── cloudy-night-1.svg │ │ │ ├── cloudy-night-2.svg │ │ │ ├── cloudy-night-3.svg │ │ │ ├── cloudy.svg │ │ │ ├── day.svg │ │ │ ├── night.svg │ │ │ ├── rainy-1.svg │ │ │ ├── rainy-2.svg │ │ │ ├── rainy-3.svg │ │ │ ├── rainy-4.svg │ │ │ ├── rainy-5.svg │ │ │ ├── rainy-6.svg │ │ │ ├── rainy-7.svg │ │ │ ├── snowy-1.svg │ │ │ ├── snowy-2.svg │ │ │ ├── snowy-3.svg │ │ │ ├── snowy-4.svg │ │ │ ├── snowy-5.svg │ │ │ ├── snowy-6.svg │ │ │ ├── thunder.svg │ │ │ ├── weather-sprite.svg │ │ │ ├── weather.svg │ │ │ ├── weather_sagittarius.svg │ │ │ └── weather_sunset.svg │ │ │ ├── weather-card-editor.js │ │ │ ├── weather-card-editor.js.gz │ │ │ ├── weather-card.js │ │ │ └── weather-card.js.gz │ ├── custom-lovelace │ │ ├── air-purifier │ │ │ ├── card.js │ │ │ ├── idle.png │ │ │ ├── standby.gif │ │ │ └── working.gif │ │ ├── card-tools.js │ │ ├── compact-custom-header-editor.js │ │ ├── compact-custom-header.js │ │ ├── courtain │ │ │ └── card.js │ │ ├── light-card.js │ │ ├── linak-desk │ │ │ ├── card.js │ │ │ ├── table_bottom.png │ │ │ ├── table_middle.png │ │ │ └── table_top.png │ │ ├── qr-card │ │ │ ├── card.js │ │ │ └── qrcode.js │ │ ├── thermostat-card │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── VERSION │ │ │ ├── changelog.md │ │ │ ├── thermostat-card.js │ │ │ └── thermostat-card.lib.js │ │ ├── thermostat │ │ │ ├── card.js │ │ │ └── lib.js │ │ ├── transit │ │ │ └── card.js │ │ └── vacuum │ │ │ ├── card.js │ │ │ ├── robot_bg.png │ │ │ └── robot_bg_disable.png │ ├── custom_ui │ │ ├── .gitkeep │ │ ├── dynamic-wallpaper.js │ │ ├── kkm-card.js │ │ └── monster-card.js │ ├── food_off.gif │ ├── food_on.gif │ ├── icons │ │ └── weather_icons │ │ │ └── animated │ │ │ ├── cloudy-day-1.svg │ │ │ ├── cloudy-day-2.svg │ │ │ ├── cloudy-day-3.svg │ │ │ ├── cloudy-night-1.svg │ │ │ ├── cloudy-night-2.svg │ │ │ ├── cloudy-night-3.svg │ │ │ ├── cloudy.svg │ │ │ ├── day.svg │ │ │ ├── night.svg │ │ │ ├── rainy-1.svg │ │ │ ├── rainy-2.svg │ │ │ ├── rainy-3.svg │ │ │ ├── rainy-4.svg │ │ │ ├── rainy-5.svg │ │ │ ├── rainy-6.svg │ │ │ ├── rainy-7.svg │ │ │ ├── snowy-1.svg │ │ │ ├── snowy-2.svg │ │ │ ├── snowy-3.svg │ │ │ ├── snowy-4.svg │ │ │ ├── snowy-5.svg │ │ │ ├── snowy-6.svg │ │ │ ├── thunder.svg │ │ │ ├── weather-sprite.svg │ │ │ ├── weather.svg │ │ │ ├── weather_sagittarius.svg │ │ │ └── weather_sunset.svg │ ├── js │ │ └── lovelace-swiper.js │ ├── kiosk │ │ └── kiosk.js │ ├── ping.txt │ ├── presence │ │ ├── arek │ │ │ ├── away.png │ │ │ ├── codesthq.png │ │ │ └── home.png │ │ └── ola │ │ │ ├── away.png │ │ │ ├── codesthq.png │ │ │ └── home.png │ ├── wallpapers │ │ ├── afternoon.png │ │ ├── evening.png │ │ ├── morning.png │ │ └── night.png │ ├── working_off.gif │ └── working_on.gif └── 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 ├── logo.svg ├── main.js ├── package.json ├── renderer.js ├── wakeup.js └── yarn.lock ├── 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 │ ├── .env.local.j2 │ ├── 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 └── yarn.lock ├── youtube └── Dockerfile └── zwave ├── Dockerfile ├── docker-entrypoint.sh └── options.js /.env.busix.example: -------------------------------------------------------------------------------- 1 | DATABASE_URL=postgres://postgres:postgres@database:5434 2 | REDIS_URL=redis://localhost:6380/11 3 | 4 | SECRET_KEY_BASE=sadasd 5 | RAILS_MAX_THREADS=25 6 | SIDEKIQ_CONCURRENCY=50 7 | SIDEKIQ_BASIC_AUTH_PASSWORD="yolo" 8 | RAILS_LOG_TO_STDOUT=true 9 | -------------------------------------------------------------------------------- /.env.crontab.example: -------------------------------------------------------------------------------- 1 | CLOUDFLARE_KEY= 2 | CLOUDFLARE_EMAIL= 3 | MAIN_DOMAIN=test.local 4 | HOME_ASSISTANT_SUBDOMAIN=kartofel 5 | HOME_ASSISTANT_VPNDOMAIN=yolo 6 | HOME_ASSISTANT_IPFSDOMAIN=gejtway 7 | -------------------------------------------------------------------------------- /.env.dpodcast.example: -------------------------------------------------------------------------------- 1 | YOUTUBE_API_KEY=XXXX 2 | VIDEOS_TO_TAKE=5 3 | REDIS_URL=redis://redis:6379/7 4 | IPFS_GATEWAY=https://ipfs.io/ 5 | IPFS_API_ENDPOINT=/dns4/ipfs/tcp/5001/http 6 | IPNS_KEY_NAME=podcasts 7 | IPNS_KEY_HASH=Qme29vjdyVTdrJnZj857hr4gZN 8 | -------------------------------------------------------------------------------- /.env.firefly.example: -------------------------------------------------------------------------------- 1 | APP_URL=https://go.test 2 | TRUSTED_PROXIES=** 3 | FF_DB_HOST=database 4 | FF_DB_CONNECTION=pgsql 5 | FF_DB_NAME=firefly 6 | FF_DB_USER=firefly 7 | FF_DB_PASSWORD=xxxxx 8 | FF_APP_KEY=xxxxx 9 | FF_APP_ENV=local 10 | -------------------------------------------------------------------------------- /.env.grafana.example: -------------------------------------------------------------------------------- 1 | GF_SECURITY_ADMIN_PASSWORD=password 2 | GF_SECURITY_ADMIN_USER=admin 3 | GF_INSTALL_PLUGINS=grafana-clock-panel,briangann-gauge-panel,natel-plotly-panel,grafana-simple-json-datasource -------------------------------------------------------------------------------- /.env.influxdb.example: -------------------------------------------------------------------------------- 1 | INFLUXDB_REPORTING_DISABLED=false 2 | INFLUXDB_DB=home_assistant 3 | INFLUXDB_HTTP_AUTH_ENABLED=true 4 | INFLUXDB_ADMIN_USER=home_assistant 5 | INFLUXDB_ADMIN_PASSWORD=password 6 | -------------------------------------------------------------------------------- /.env.local.example: -------------------------------------------------------------------------------- 1 | HOME_ASSISTANT_URL= 2 | RSYNC_PASSWORD= 3 | -------------------------------------------------------------------------------- /.env.nextcloud.example: -------------------------------------------------------------------------------- 1 | POSTGRES_HOST=database 2 | POSTGRES_USER=nextcloud 3 | POSTGRES_DB=xxxx 4 | POSTGRES_PASSWORD=xxxxx 5 | -------------------------------------------------------------------------------- /.env.pihole.example: -------------------------------------------------------------------------------- 1 | WEBPASSWORD=password 2 | DNS1=1.1.1.1 3 | DNS2=1.0.0.1 4 | ServerIP=127.0.0.1 5 | -------------------------------------------------------------------------------- /.env.plex.example: -------------------------------------------------------------------------------- 1 | TZ=Warsaw 2 | PLEX_CLAIM=claim-AAAAAAAAA -------------------------------------------------------------------------------- /.env.postgresql.example: -------------------------------------------------------------------------------- 1 | POSTGRES_USER=postgres 2 | POSTGRES_PASSWORD=postgres 3 | POSTGRES_DB=homeassistant 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: https://www.buymeacoffee.com/r6sWkVoeU 13 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 2.3.7 2 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | ruby 2.5.0 2 | -------------------------------------------------------------------------------- /Brewfile: -------------------------------------------------------------------------------- 1 | brew 'fswatch' 2 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure(2) do |config| 2 | config.vm.box = "macbury/bionic64" 3 | config.vm.box_version = "1.07" 4 | 5 | config.ssh.forward_agent = true 6 | config.ssh.insert_key = false 7 | 8 | config.vm.network "forwarded_port", guest: 80, host: 7000 9 | config.vm.network "forwarded_port", guest: 443, host: 443 10 | 11 | config.vm.provider "virtualbox" do |v| 12 | v.memory = 2524 13 | v.cpus = 2 14 | v.gui = true 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /appdaemon/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/appdaemon/.gitkeep -------------------------------------------------------------------------------- /appdaemon/dashboards/Hello.dash: -------------------------------------------------------------------------------- 1 | # 2 | # Main arguments, all optional 3 | # 4 | title: Hello Panel 5 | widget_dimensions: [120, 120] 6 | widget_margins: [5, 5] 7 | columns: 8 8 | 9 | label: 10 | widget_type: label 11 | text: Hello World 12 | 13 | layout: 14 | - label(2x2) 15 | -------------------------------------------------------------------------------- /btc-explorer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8 as builder 2 | 3 | RUN apt-get -yqq install git \ 4 | && git clone --depth 1 --single-branch --branch master https://github.com/janoside/btc-rpc-explorer \ 5 | && cd /btc-rpc-explorer \ 6 | && npm install 7 | 8 | FROM node:8-alpine 9 | WORKDIR /btc-rpc-explorer 10 | COPY --from=builder /btc-rpc-explorer . 11 | CMD npm start 12 | EXPOSE 3002 -------------------------------------------------------------------------------- /docker-compose.health.yaml: -------------------------------------------------------------------------------- 1 | # Small laboratory 2 | version: '3.5' 3 | 4 | services: 5 | speedtest: 6 | image: macbury/speedtest:latest 7 | env_file: 8 | - '.env.speedtest' 9 | ports: 10 | - 6888:80 11 | -------------------------------------------------------------------------------- /docker-compose.media.yaml: -------------------------------------------------------------------------------- 1 | # All media services, that don't need to be always online 2 | version: '3.5' 3 | 4 | services: 5 | sonarr: 6 | image: linuxserver/sonarr 7 | ports: 8 | - 8989:8989 9 | environment: 10 | PUID: 0 11 | PGID: 0 12 | TZ: "Europe/Warsaw" 13 | volumes: 14 | - .docker/data/snarr:/config 15 | - /mnt/MoviesAndTV:/tv 16 | - /home/downloads:/downloads 17 | 18 | plex: 19 | network_mode: host 20 | image: plexinc/pms-docker:latest 21 | env_file: 22 | - .env.plex 23 | volumes: 24 | - .docker/data/plex/config:/config 25 | - .docker/data/plex/transcode:/transcode 26 | - /mnt:/data 27 | -------------------------------------------------------------------------------- /docker-compose.zwave.yaml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | zwave: 4 | build: 5 | context: ./zwave 6 | dockerfile: Dockerfile 7 | network_mode: host 8 | security_opt: 9 | - seccomp:unconfined 10 | devices: 11 | - "/dev/ttyACM0" 12 | volumes: 13 | - .docker/data/zwavejs/cache:/cache 14 | ports: 15 | - "9312:3000" 16 | restart: unless-stopped 17 | env_file: 18 | - '.env.zwave' 19 | -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/README.md: -------------------------------------------------------------------------------- 1 | https://www.youtube.com/watch?v=sCOkuyH7CPo 2 | -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/base.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/base.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/bowl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/bowl.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/fc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/fc.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/final.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/final.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/header.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/parts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/parts.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/printing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/printing.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/ration_container.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/ration_container.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/servo_holder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/servo_holder.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/tc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/tc.jpg -------------------------------------------------------------------------------- /docs/DIY/CatFeeder/ultimate-3d-printed-pet-feeder-v4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/CatFeeder/ultimate-3d-printed-pet-feeder-v4.zip -------------------------------------------------------------------------------- /docs/DIY/LedStrips/index.md: -------------------------------------------------------------------------------- 1 | ## Page in progress :P 2 | Desk led strip: 39 3 | Pin: D3 4 | 5 | https://www.home-assistant.io/components/light.mqtt/ 6 | https://github.com/macbury/mqtt_led_strip 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/DIY/RiggadLamp/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/DIY/RiggadLamp/header.jpg -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/afternoon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/afternoon.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/air_purifier.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/air_purifier.gif -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/evening.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/evening.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/kkm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/kkm.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/linak.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/linak.gif -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/night.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/public_transit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/public_transit.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/vacuum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/vacuum.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Lovelace/vacuum_zones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Lovelace/vacuum_zones.jpg -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/bathroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/bathroom.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/bedroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/bedroom.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/cameras.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/cameras.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/corridor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/corridor.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/dashboard.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/index.md: -------------------------------------------------------------------------------- 1 | ### Dashboard 2 | [![Dashboard](dashboard.png)](dashboard.png) 3 | ### Living Room 4 | [![Living Room](living_room.png)](living_room.png) 5 | ### Work Desk 6 | [![Work Desk](work_desk.png)](work_desk.png) 7 | ### Bedroom 8 | [![Bedroom](bedroom.png)](bedroom.png) 9 | ### Kitchen 10 | [![Kitchen](kitchen.png)](kitchen.png) 11 | ### Bathroom 12 | [![Bathroom](bathroom.png)](bathroom.png) 13 | ### Corridor 14 | [![Corridor](corridor.png)](corridor.png) 15 | ### Monitoring 16 | [![Monitoring](cameras.png)](cameras.png) 17 | ### Work 18 | [![Work](work.png)](work.png) 19 | ### Network 20 | [![Network](networking.png)](networking.png) -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/kitchen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/kitchen.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/living_room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/living_room.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/networking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/networking.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/work.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/work.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Screens/work_desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Screens/work_desk.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Vacuum/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Vacuum/header.jpg -------------------------------------------------------------------------------- /docs/HomeAssistant/Vacuum/vacuum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Vacuum/vacuum.png -------------------------------------------------------------------------------- /docs/HomeAssistant/Vacuum/vacuum_zones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/Vacuum/vacuum_zones.jpg -------------------------------------------------------------------------------- /docs/HomeAssistant/VoiceControl/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/VoiceControl/header.jpg -------------------------------------------------------------------------------- /docs/HomeAssistant/lovelace-presence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/HomeAssistant/lovelace-presence.png -------------------------------------------------------------------------------- /docs/Services/FirefoxSyncServer.md: -------------------------------------------------------------------------------- 1 | https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html 2 | identity.sync.tokenserver.uri: http://localhost:5000/token/1.0/sync/1.5 -------------------------------------------------------------------------------- /docs/Software/Backup.md: -------------------------------------------------------------------------------- 1 | Nothing fancy here. Everyday at 2:00 am cron job triggers backup using command `smart-house backup`. All processes are stopped and everything is compressed to one zip file that is later transferred to my QNAP NAS. -------------------------------------------------------------------------------- /docs/Software/Bitcoin.md: -------------------------------------------------------------------------------- 1 | # Reference 2 | https://stadicus.github.io/RaspiBolt/ -------------------------------------------------------------------------------- /docs/Software/Degoogling.md: -------------------------------------------------------------------------------- 1 | # Removing google from my life 2 | 3 | These are services that I'm using to replace Google/Apple/Microsoft or other BigTech solutions 4 | 5 | * Search engine - [DuckDuckGo](https://duckduckgo.com/) 6 | * E-Mail - [ProtonMail](https://protonmail.com/) 7 | * YouTube - [Invidious](https://invidio.us/) 8 | * RSS Reader - [Miniflux](https://miniflux.app/) 9 | * AppleID/Random Email - [SimpleLogin](https://simplelogin.io/) 10 | * Netflix - [Plex](https://www.plex.tv/) 11 | * Android Notifications - [Gotify](https://gotify.net/) 12 | * Google Contacts/Calendars - [NextCloud](https://nextcloud.com/) 13 | * Google Drive - [QNap](https://www.qnap.com/solution/smb-solution-qsync/en-us/) 14 | * Password manager - [Enpass](https://www.enpass.io/) 15 | * Bookmarks/History - [FireFox Sync Server](https://mozilla-services.readthedocs.io/en/latest/howtos/run-sync-1.5.html) -------------------------------------------------------------------------------- /docs/Software/Encryption.md: -------------------------------------------------------------------------------- 1 | Most of credentials is stored in plain .env files, and they are pretty sensitive(duh). Most configurations of HomeAssistant is based on installing everything yolo on RaspberryPi without and counting on that most bouglars will ignore this small box. 2 | 3 | My setup is stored on encrypted LUKS partition under `/smart-house`. After reboot, to decrypt partition I have small script named `smart-house-unlock` that asks for password, decrypts partition and starts all services. -------------------------------------------------------------------------------- /docs/Software/Nextcloud.md: -------------------------------------------------------------------------------- 1 | docker exec --user www-data support_nextcloud_1 php occ upgrade -------------------------------------------------------------------------------- /docs/Software/Nginx.md: -------------------------------------------------------------------------------- 1 | [Nginx](https://nginx.org/) is very nice web server used to proxy all traffic from docker containers. SSL certificates are provided by [Lets Encrypt](https://letsencrypt.org/). -------------------------------------------------------------------------------- /docs/Software/Ports.md: -------------------------------------------------------------------------------- 1 | Port mapping for services that are running in docker 2 | 3 | | Service name | Port | 4 | | -------------: | ------------- | 5 | | Redis | 6379 | 6 | | MQTT | 4105 | 7 | | NextCloud | 4111 | 8 | | Influxdb | 18086 | 9 | | Postgresql | 4101 | 10 | | Home-Assistant | 4102 | 11 | | Grafana | 4100 | 12 | | PiHole | 4104 | 13 | | Glances | 4108 | 14 | | Portainer | 4112 | 15 | | Plex | 32400 | 16 | | Lidarr | 8990 | 17 | | Sonarr | 8989 | 18 | | Transmission | 8112,51413 | 19 | | Calendar | 4111 | 20 | | Plex | 32400, 3005, 5353, 1900, 8324, 32469, 32410, 32412, 32413, 32414 | 21 | | YTDL | 9292 | 22 | | Jupyter Notebook | 10000 | 23 | | Firefly iii | 10001 | 24 | | vacuum endpoint | 10005 | 25 | | busix | 10008 | -------------------------------------------------------------------------------- /docs/Software/TvDashboard.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/Software/TvDashboard.md -------------------------------------------------------------------------------- /docs/Software/Upgrading.md: -------------------------------------------------------------------------------- 1 | Most of upgrades are done by downloading or building new docker container. 2 | 3 | ### Upgrading Home Assistant 4 | Edit version of docker image in first line of Dockerfile inside `home-assistant` directory. Then run command: 5 | 6 | ```bash 7 | smart-house upgrade 8 | smart-house restart 9 | ``` 10 | 11 | If everything still works, commit changes and tag the release: 12 | 13 | ```bash 14 | git commit -a -m "New upgrade" 15 | git tag v0.93.2 16 | git push origin master 17 | git push origin v0.93.2 18 | ``` 19 | 20 | ### Upgrading rest of stuff 21 | 22 | Edit `docker-compose.yaml`, increase version for image. Because we have our dns server inside Docker container the best thing to do is to run pull first, and then restart all containers: 23 | 24 | ```bash 25 | smart-house docker-compose pull name-of-upgraded-service 26 | smart-house restart 27 | ``` -------------------------------------------------------------------------------- /docs/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/docs/header.jpg -------------------------------------------------------------------------------- /ff-sync/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mozilla/syncserver:latest 2 | 3 | USER root 4 | RUN apk --no-cache update && apk add --no-cache postgresql-libs && apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev 5 | RUN pip install psycopg2 6 | USER app -------------------------------------------------------------------------------- /helpers.md: -------------------------------------------------------------------------------- 1 | # Create big file 2 | 3 | I can then remove it if I run out of disk space and try to remove stuff from database etc. 4 | 5 | truncate -s 1GB /smart-house/tmp/lock.data 6 | -------------------------------------------------------------------------------- /home-assistant/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/.gitkeep -------------------------------------------------------------------------------- /home-assistant/automations/adguard.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/automations/adguard.yaml -------------------------------------------------------------------------------- /home-assistant/automations/agd.yaml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /home-assistant/automations/alexa.yaml: -------------------------------------------------------------------------------- 1 | - alias: Inform about alexa timer off 2 | trigger: 3 | platform: event 4 | event_type: ifttt_webhook_received 5 | event_data: 6 | action: alexa_timer_off 7 | action: 8 | - service: notify.all 9 | data: 10 | message: 'Alexa timer finished countdown!' -------------------------------------------------------------------------------- /home-assistant/automations/bathroom.yaml: -------------------------------------------------------------------------------- 1 | - alias: Close blinds in living room 2 | trigger: 3 | platform: event 4 | event_type: xiaomi_aqara.click 5 | event_data: 6 | entity_id: binary_sensor.bathroom_left_button 7 | click_type: single 8 | action: 9 | - service: cover.close_cover 10 | data: 11 | entity_id: cover.living_room 12 | -------------------------------------------------------------------------------- /home-assistant/automations/blinds.yaml: -------------------------------------------------------------------------------- 1 | - alias: Open blinds if humans come home 2 | trigger: 3 | - platform: state 4 | entity_id: group.family 5 | to: 'home' 6 | from: 'not_home' 7 | condition: 8 | condition: and 9 | conditions: 10 | - condition: state 11 | entity_id: sun.sun 12 | state: above_horizon 13 | action: 14 | - service: cover.open_cover 15 | data: 16 | entity_id: cover.living_room 17 | 18 | - alias: Close blinds if it is too bright 19 | trigger: 20 | - platform: state 21 | entity_id: binary_sensor.too_bright 22 | to: 'on' 23 | from: 'off' 24 | action: 25 | - service: cover.close_cover 26 | data: 27 | entity_id: cover.living_room 28 | -------------------------------------------------------------------------------- /home-assistant/automations/disasters.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/automations/disasters.yaml -------------------------------------------------------------------------------- /home-assistant/automations/external.yaml: -------------------------------------------------------------------------------- 1 | ../automations.yaml -------------------------------------------------------------------------------- /home-assistant/automations/health.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/automations/health.yaml -------------------------------------------------------------------------------- /home-assistant/automations/home-assistant.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Set theme at startup and notify about that event' 2 | initial_state: 'on' 3 | trigger: 4 | - platform: homeassistant 5 | event: start 6 | action: 7 | - service: frontend.set_theme 8 | data: 9 | name: darkblue 10 | - service: automation.turn_on 11 | data: 12 | entity_id: all 13 | - delay: '00:00:45' 14 | - service: notify.all 15 | data: 16 | title: 'Home Assistant' 17 | message: 'Home assistant finished booting' 18 | - service: automation.turn_on 19 | data: 20 | entity_id: all 21 | 22 | - alias: Update notifications 23 | trigger: 24 | - platform: state 25 | entity_id: updater.updater 26 | action: 27 | service: notify.all 28 | data_template: 29 | title: 'New Home Assistant Release' 30 | message: "Home Assistant {{ states.updater.updater.state }} is now available." -------------------------------------------------------------------------------- /home-assistant/automations/humidifier.yaml: -------------------------------------------------------------------------------- 1 | - alias: Send notification about humidifier water is out 2 | trigger: 3 | - platform: numeric_state 4 | entity_id: sensor.living_room_humidifier_current 5 | below: 0.01 6 | for: 7 | minutes: 10 8 | condition: 9 | condition: and 10 | conditions: 11 | - condition: state 12 | entity_id: 'switch.living_room_humidifier' 13 | state: 'on' 14 | - condition: numeric_state 15 | entity_id: sensor.living_room_humidifier_current 16 | below: 0.01 17 | action: 18 | - service: notify.all 19 | data: 20 | message: 'Living room humidifier needs refill!' -------------------------------------------------------------------------------- /home-assistant/automations/media_player.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Change spotify source to soundbar if alexa starts play music' 2 | trigger: 3 | platform: state 4 | entity_id: media_player.living_room 5 | to: 'playing' 6 | action: 7 | - service: media_player.turn_on 8 | entity_id: media_player.soundbar 9 | - service: media_player.select_source 10 | data: 11 | entity_id: media_player.spotify 12 | source: 'wifi' 13 | - service: media_player.select_source 14 | data: 15 | entity_id: media_player.spotify 16 | source: 'Soundbar' 17 | - service: media_player.volume_set 18 | data: 19 | entity_id: media_player.soundbar 20 | volume_level: 0.25 -------------------------------------------------------------------------------- /home-assistant/automations/octoprint.yaml: -------------------------------------------------------------------------------- 1 | - alias: Send notification if print is completed 2 | trigger: 3 | - platform: state 4 | entity_id: sensor.octoprint_current_state 5 | from: 'Printing' 6 | to: 'Operational' 7 | action: 8 | - service: notify.all 9 | data: 10 | message: 'Print is complete!' 11 | -------------------------------------------------------------------------------- /home-assistant/automations/pizza.yml: -------------------------------------------------------------------------------- 1 | - alias: Switch off pizza mode after 4 hours 2 | trigger: 3 | platform: state 4 | entity_id: input_boolean.pizza 5 | for: 6 | hours: 4 7 | action: 8 | service: input_boolean.turn_off 9 | entity_id: input_boolean.pizza -------------------------------------------------------------------------------- /home-assistant/automations/privacy.yaml: -------------------------------------------------------------------------------- 1 | - alias: Clear Alexa History 2 | trigger: 3 | platform: time_pattern 4 | minutes: '/15' 5 | action: 6 | - service: alexa_media.clear_history -------------------------------------------------------------------------------- /home-assistant/automations/system.yaml: -------------------------------------------------------------------------------- 1 | - alias: Switch rack fan if system is too hot 2 | trigger: 3 | platform: numeric_state 4 | entity_id: sensor.corridor_pawlacz_temperature 5 | above: 28 6 | for: 7 | minutes: 5 8 | action: 9 | - service: switch.turn_on 10 | entity_id: switch.rack_fan 11 | 12 | - alias: Switch rack fan if system is cool 13 | trigger: 14 | platform: numeric_state 15 | entity_id: sensor.corridor_pawlacz_temperature 16 | below: 28 17 | for: 18 | minutes: 5 19 | action: 20 | - service: switch.turn_off 21 | entity_id: switch.rack_fan 22 | 23 | - alias: Restart router 24 | trigger: 25 | platform: time 26 | at: '02:50:00' 27 | action: 28 | - service: switch.turn_off 29 | entity_id: switch.router 30 | - delay: '0:00:10' 31 | - service: switch.turn_on 32 | entity_id: switch.router -------------------------------------------------------------------------------- /home-assistant/automations/torrents.yaml: -------------------------------------------------------------------------------- 1 | - alias: Notify about completed torrent 2 | trigger: 3 | platform: event 4 | event_type: transmission_downloaded_torrent 5 | action: 6 | service: notify.all 7 | data_template: 8 | title: "Transmission" 9 | message: "Torrent downloaded!" 10 | 11 | # - alias: 'Add torrent' 12 | # trigger: 13 | # - platform: event 14 | # event_type: telegram_command 15 | # event_data: 16 | # command: '/t' 17 | # chat_id: 66368059 18 | # action: 19 | # - service: notify.telegram_arek 20 | # data_template: 21 | # message: Hold on, adding yer stuff... 22 | # - service: transmission.add_torrent 23 | # data_template: 24 | # torrent: '{{ trigger.event.data.args | join(" ") }}' -------------------------------------------------------------------------------- /home-assistant/automations/tv.yaml: -------------------------------------------------------------------------------- 1 | - alias: Change soundbar source after TV is switched on 2 | trigger: 3 | platform: state 4 | entity_id: media_player.tv 5 | from: 'off' 6 | to: 'on' 7 | action: 8 | - delay: '00:00:05' 9 | - service: media_player.volume_set 10 | data: 11 | entity_id: media_player.soundbar 12 | volume_level: 0.40 13 | 14 | - alias: Adjust volume after PS4 boots up 15 | trigger: 16 | platform: state 17 | entity_id: media_player.playstation 18 | to: 'playing' 19 | action: 20 | - service: media_player.volume_set 21 | data: 22 | entity_id: media_player.soundbar 23 | volume_level: 0.45 -------------------------------------------------------------------------------- /home-assistant/components/alexa.yaml: -------------------------------------------------------------------------------- 1 | smart_home: 2 | endpoint: https://api.amazonalexa.com/v3/events 3 | client_id: !env_var HOME_ASSISTANT_ALEXA_CLIENT_ID 4 | client_secret: !env_var HOME_ASSISTANT_ALEXA_CLIENT_SECRET 5 | filter: 6 | include_domains: 7 | - light 8 | - scene 9 | include_entities: 10 | - script.consume_pepsi 11 | - switch.living_room_humidifier 12 | - cover.living_room 13 | - media_player.tv 14 | - switch.pizza 15 | - switch.adguard_protection 16 | - media_player.playstation 17 | - media_player.soundbar 18 | - switch.macmini 19 | - script.find_vacuum 20 | - script.clean_kitchen 21 | - script.clean_bedroom 22 | - script.clean_corridor 23 | - script.clean_living_room 24 | - script.clean_bathroom 25 | - script.stop_cleaning 26 | - script.start_cleaning 27 | - script.feed_the_cat -------------------------------------------------------------------------------- /home-assistant/components/alexa_media.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/components/alexa_media.yaml -------------------------------------------------------------------------------- /home-assistant/components/binary_sensor.yaml: -------------------------------------------------------------------------------- 1 | - platform: iss 2 | show_on_map: false 3 | 4 | - platform: workday 5 | country: PL 6 | 7 | -------------------------------------------------------------------------------- /home-assistant/components/calendar.yaml: -------------------------------------------------------------------------------- 1 | - platform: caldav 2 | username: !env_var HOME_ASSISTANT_CALENDAR_USER 3 | password: !env_var HOME_ASSISTANT_CALENDAR_PASSWORD 4 | url: !env_var HOME_ASSISTANT_CALENDAR_URL -------------------------------------------------------------------------------- /home-assistant/components/camera.yaml: -------------------------------------------------------------------------------- 1 | - platform: xiaomi_cloud_map_extractor 2 | name: Vacuum Map 3 | host: 192.168.1.131 4 | country: "sg" 5 | token: !env_var HOME_ASSISTANT_VACUUM_TOKEN 6 | username: !env_var HOME_ASSISTANT_XIAOMI_USERNAME 7 | password: !env_var HOME_ASSISTANT_XIAOMI_PASSWORD 8 | draw: ['all'] 9 | colors: 10 | color_map_outside: [0,0,0,0] 11 | attributes: 12 | - calibration_points 13 | - charger 14 | - cleaned_rooms 15 | - country 16 | - goto 17 | - goto_path 18 | - goto_predicted_path 19 | - image 20 | - is_empty 21 | - map_name 22 | - no_go_areas 23 | - no_mopping_areas 24 | - obstacles 25 | - ignored_obstacles 26 | - obstacles_with_photo 27 | - ignored_obstacles_with_photo 28 | - path 29 | - room_numbers 30 | - rooms 31 | - vacuum_position 32 | - vacuum_room 33 | - vacuum_room_name 34 | - walls 35 | - zones 36 | -------------------------------------------------------------------------------- /home-assistant/components/climate.yaml: -------------------------------------------------------------------------------- 1 | - platform: zwave 2 | 3 | - platform: generic_thermostat 4 | name: Kitchen Thermostat 5 | heater: switch.kitchen_heater 6 | target_sensor: sensor.kitchen_temperature 7 | away_temp: 20 8 | keep_alive: 9 | minutes: 10 10 | 11 | -------------------------------------------------------------------------------- /home-assistant/components/cover.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | covers: 3 | living_room: 4 | device_class: blind 5 | friendly_name: "Cover" 6 | optimistic: true 7 | open_cover: 8 | service: cover.set_cover_position 9 | data: 10 | entity_id: cover.living_room_controller 11 | position: 100 12 | close_cover: 13 | service: cover.set_cover_position 14 | data: 15 | entity_id: cover.living_room_controller 16 | position: 0 -------------------------------------------------------------------------------- /home-assistant/components/fan.yaml: -------------------------------------------------------------------------------- 1 | - platform: xiaomi_miio 2 | name: living_room_air_purifier 3 | host: 192.168.1.223 4 | token: !env_var HOME_ASSISTANT_LIVING_ROOM_AIR_PURIFIER_TOKEN 5 | 6 | - platform: xiaomi_miio 7 | name: Living Room Humidifier 8 | host: 192.168.1.136 9 | token: !env_var HOME_ASSISTANT_XIAOMI_LIVING_ROOM_HUMIDIFIER 10 | 11 | - platform: xiaomi_miio 12 | name: bedroom_air_purifier 13 | host: 192.168.1.48 14 | token: !env_var HOME_ASSISTANT_BEDROOM_AIR_PURIFIER_TOKEN -------------------------------------------------------------------------------- /home-assistant/components/frontend.yaml: -------------------------------------------------------------------------------- 1 | javascript_version: latest 2 | -------------------------------------------------------------------------------- /home-assistant/components/history.yaml: -------------------------------------------------------------------------------- 1 | exclude: 2 | entities: 3 | - sensor.time_left_to_food 4 | - sensor.to_work_transit 5 | - sensor.back_from_work_transit 6 | - sensor.date_time 7 | - sensor.internet_time 8 | - sensor.time 9 | - sensor.time_date 10 | - sensor.time_utc 11 | - sensor.uptime 12 | - automation.ping_aqara_gateway 13 | - automation.refresh_courtains_if_they_draw_power 14 | domains: 15 | - calendar 16 | - zwave -------------------------------------------------------------------------------- /home-assistant/components/homeassistant.yaml: -------------------------------------------------------------------------------- 1 | auth_providers: 2 | - type: homeassistant 3 | name: !env_var HOME_ASSISTANT_NAME 4 | currency: PLN 5 | latitude: !env_var HOME_ASSISTANT_LAT 6 | longitude: !env_var HOME_ASSISTANT_LNG 7 | elevation: !env_var HOME_ASSISTANT_ELEVATION 8 | unit_system: metric 9 | time_zone: Europe/Warsaw 10 | customize: !include customize.yaml 11 | whitelist_external_dirs: 12 | - /tmp 13 | 14 | external_url: !env_var HOME_ASSISTANT_EXTERNAL_URL 15 | internal_url: !env_var HOME_ASSISTANT_INTERNAL_URL 16 | -------------------------------------------------------------------------------- /home-assistant/components/http.yaml: -------------------------------------------------------------------------------- 1 | # api_password: !env_var HOME_ASSISTANT_API_PASSWORD 2 | base_url: !env_var HOME_ASSISTANT_URL 3 | use_x_forwarded_for: true 4 | trusted_proxies: 5 | - 127.0.0.1 6 | - ::1 7 | ip_ban_enabled: false 8 | login_attempts_threshold: 20 9 | cors_allowed_origins: 10 | - https://cast.home-assistant.io -------------------------------------------------------------------------------- /home-assistant/components/hue.yaml: -------------------------------------------------------------------------------- 1 | bridges: 2 | - host: 192.168.0.23 3 | allow_unreachable: true 4 | allow_hue_groups: true 5 | filename: hue_main.conf -------------------------------------------------------------------------------- /home-assistant/components/image_processing.yaml: -------------------------------------------------------------------------------- 1 | - platform: tensorflow 2 | source: 3 | - entity_id: camera.main_square 4 | - entity_id: camera.wawel 5 | file_out: 6 | - "/tmp/{{ camera_entity.split('.')[1] }}_latest.jpg" 7 | model: 8 | graph: /tensorflow/frozen_inference_graph.pb 9 | labels: /tensorflow/object_detection/data/mscoco_label_map.pbtxt 10 | model_dir: /tensorflow 11 | categories: 12 | - person 13 | - cat -------------------------------------------------------------------------------- /home-assistant/components/influxdb.yaml: -------------------------------------------------------------------------------- 1 | host: localhost 2 | port: 18086 3 | database: !env_var INFLUXDB_DB 4 | username: !env_var INFLUXDB_ADMIN_USER 5 | password: !env_var INFLUXDB_ADMIN_PASSWORD 6 | tags: 7 | source: homeassistant 8 | include: 9 | domains: 10 | - sensor 11 | 12 | -------------------------------------------------------------------------------- /home-assistant/components/input_boolean.yaml: -------------------------------------------------------------------------------- 1 | comeback: 2 | name: "Wracam" 3 | initial: off 4 | 5 | pizza: 6 | name: 'Pizza' 7 | icon: mdi:pizza 8 | initial: off 9 | 10 | giggid: 11 | name: 'giggid' 12 | icon: mdi:account-arrow-left 13 | initial: off 14 | -------------------------------------------------------------------------------- /home-assistant/components/input_number.yaml: -------------------------------------------------------------------------------- 1 | living_room_target_temperature: 2 | name: 'Target temperature' 3 | min: 4 4 | max: 28 5 | initial: 24.0 6 | step: 0.5 -------------------------------------------------------------------------------- /home-assistant/components/input_select.yaml: -------------------------------------------------------------------------------- 1 | who_cooks: 2 | name: Who cooks today 3 | options: 4 | - Arek 5 | - Ola 6 | initial: Arek 7 | icon: mdi:panda 8 | -------------------------------------------------------------------------------- /home-assistant/components/led_strip_effects.yaml: -------------------------------------------------------------------------------- 1 | - SingleColor 2 | - SinColor 3 | - RainbowColor 4 | - DualColor 5 | - FireEffect -------------------------------------------------------------------------------- /home-assistant/components/life360.yaml: -------------------------------------------------------------------------------- 1 | accounts: 2 | - username: !env_var HOME_ASSISTANT_LIFE360_USERNAME 3 | password: !env_var HOME_ASSISTANT_LIFE360_PASSWORD 4 | max_update_wait: 5 | minutes: 15 6 | driving_speed: 18 7 | max_gps_accuracy: 200 8 | prefix: '' -------------------------------------------------------------------------------- /home-assistant/components/logbook.yaml: -------------------------------------------------------------------------------- 1 | exclude: 2 | entities: 3 | - automation.ping_aqara_gateway 4 | - automation.refresh_courtains_if_they_draw_power 5 | - automation.push_arek_location_to_orion 6 | - automation.push_ola_location_to_orion 7 | include: 8 | entities: 9 | - binary_sensor.hall_pir 10 | domains: 11 | - switch 12 | - binary_sensor 13 | - climate 14 | - zone 15 | - media_player 16 | - light 17 | - device_tracker 18 | - automation 19 | -------------------------------------------------------------------------------- /home-assistant/components/logger.yaml: -------------------------------------------------------------------------------- 1 | default: error 2 | logs: 3 | homeassistant.components.http.ban: warning 4 | xiaomi_gateway: error 5 | matrix: debug 6 | xiaomi_miio: debug 7 | homeassistant.components.matrix: debug 8 | homeassistant.components.xiaomi_aqara: error 9 | homeassistant.components.switch.xiaomi_aqara: debug 10 | homeassistant.components.xiaomi_miio: debug 11 | homeassistant.components.xiaomi_miio.vacuum: debug 12 | homeassistant.components.rest_command: debug 13 | -------------------------------------------------------------------------------- /home-assistant/components/matrix.yaml: -------------------------------------------------------------------------------- 1 | homeserver: !env_var HOME_ASSISTANT_MATRIX_SERVER 2 | username: !env_var HOME_ASSISTANT_MATRIX_USER 3 | password: !env_var HOME_ASSISTANT_MATRIX_PASSWORD 4 | rooms: [!env_var HOME_ASSISTANT_MATRIX_ROOM, !env_var HOME_ASSISTANT_DIETLY_MATRIX_ROOM] 5 | commands: 6 | - expression: "tv (?P.*)" 7 | name: download_tv 8 | - expression: "movie (?P.*)" 9 | name: download_movie 10 | - expression: "alexa (?P.*)" 11 | name: alexa_say 12 | - expression: "yt (?P.*)" 13 | name: download_yt_music 14 | 15 | -------------------------------------------------------------------------------- /home-assistant/components/media_player.yaml: -------------------------------------------------------------------------------- 1 | - platform: samsung_multi_room 2 | host: 192.168.1.227 3 | max_volume: 20 4 | 5 | - platform: emby 6 | host: localhost 7 | api_key: !env_var HOME_ASSISTANT_EMBY 8 | port: 8096 9 | -------------------------------------------------------------------------------- /home-assistant/components/mqtt.yaml: -------------------------------------------------------------------------------- 1 | broker: localhost 2 | port: 4105 3 | username: !env_var HOME_ASSISTANT_MQTT_USER 4 | password: !env_var HOME_ASSISTANT_MQTT_PASSWORD 5 | birth_message: 6 | topic: 'homeassistant/status' 7 | payload: 'online' -------------------------------------------------------------------------------- /home-assistant/components/octoprint.yaml: -------------------------------------------------------------------------------- 1 | host: 192.168.1.165 2 | api_key: !env_var OCTOPRINT_API_KEY -------------------------------------------------------------------------------- /home-assistant/components/panel_custom.yaml: -------------------------------------------------------------------------------- 1 | - name: vacuum_plan 2 | sidebar_title: Vacuum Map 3 | sidebar_icon: mdi:robot-vacuum 4 | url_path: vacuum_plan 5 | require_admin: true 6 | 7 | - name: zwavegraph2 8 | sidebar_title: Z-Wave Graph 9 | sidebar_icon: mdi:access-point-network 10 | url_path: zwave 11 | -------------------------------------------------------------------------------- /home-assistant/components/panel_iframe.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/components/panel_iframe.yaml -------------------------------------------------------------------------------- /home-assistant/components/person.yaml: -------------------------------------------------------------------------------- 1 | - name: Arek 2 | id: arek 3 | user_id: dee430bb89094c628fd84988492c87ed 4 | device_trackers: 5 | - device_tracker.sm_s10_arek 6 | - device_tracker.arek 7 | 8 | - name: Ola 9 | id: ola 10 | user_id: 5818d1fef6d840769796caa99959610d 11 | device_trackers: 12 | - device_tracker.sm_g8_ola 13 | -------------------------------------------------------------------------------- /home-assistant/components/recorder.yaml: -------------------------------------------------------------------------------- 1 | db_url: !env_var HOME_ASSISTANT_DB_URL 2 | purge_interval: 1 3 | purge_keep_days: 31 4 | auto_purge: true 5 | commit_interval: 60 6 | -------------------------------------------------------------------------------- /home-assistant/components/shell_command.yaml: -------------------------------------------------------------------------------- 1 | turn_off_mac_mini: bash /config/scripts/switch_off_mac_mini.sh 2 | -------------------------------------------------------------------------------- /home-assistant/components/speedtestdotnet.yaml: -------------------------------------------------------------------------------- 1 | scan_interval: 2 | minutes: 30 3 | monitored_conditions: 4 | - ping 5 | - download 6 | - upload -------------------------------------------------------------------------------- /home-assistant/components/telegram.yaml: -------------------------------------------------------------------------------- 1 | - platform: polling 2 | api_key: !env_var HOME_ASSISTANT_TELEGRAM_KEY 3 | allowed_chat_ids: 4 | - 66368059 5 | -------------------------------------------------------------------------------- /home-assistant/components/torrent.yaml: -------------------------------------------------------------------------------- 1 | - platform: deluge 2 | host: localhost 3 | name: torrent 4 | username: admin 5 | password: !env_var HOME_ASSISTANT_DELUGE_PASSWORD 6 | monitored_variables: 7 | - 'current_status' 8 | - 'download_speed' 9 | - 'upload_speed' 10 | -------------------------------------------------------------------------------- /home-assistant/components/utility_meter.yaml: -------------------------------------------------------------------------------- 1 | home_hourly_energy: 2 | source: sensor.energy_spent 3 | name: Home Hourly Energy 4 | cycle: hourly 5 | home_daily_energy: 6 | source: sensor.energy_spent 7 | name: Home Daily Energy 8 | cycle: daily 9 | home_monthly_energy: 10 | source: sensor.energy_spent 11 | name: Home Monthly Energy 12 | cycle: monthly 13 | home_yearly_energy: 14 | source: sensor.energy_spent 15 | name: Home Yearly Energy 16 | cycle: yearly 17 | -------------------------------------------------------------------------------- /home-assistant/components/vacuum.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/components/vacuum.yaml -------------------------------------------------------------------------------- /home-assistant/components/weather.yaml: -------------------------------------------------------------------------------- 1 | - platform: darksky 2 | api_key: !env_var HOME_ASSISTANT_DARKSKY_API_KEY 3 | mode: hourly -------------------------------------------------------------------------------- /home-assistant/components/webostv.yaml: -------------------------------------------------------------------------------- 1 | name: tv 2 | host: 192.168.1.141 3 | turn_on_action: 4 | service: wake_on_lan.send_magic_packet 5 | data: 6 | mac: 78:5D:C8:98:B4:71 7 | -------------------------------------------------------------------------------- /home-assistant/components/zones.yaml.example: -------------------------------------------------------------------------------- 1 | - name: home 2 | latitude: 0 3 | longitude: 0 4 | radius: 80 5 | icon: mdi:home 6 | 7 | - name: codesthq 8 | latitude: 0 9 | longitude: 0 10 | radius: 100 11 | icon: mdi:worker 12 | 13 | - name: netguru 14 | latitude: 0 15 | longitude: 0 16 | radius: 100 17 | icon: mdi:worker 18 | 19 | - name: Port COM 20 | latitude: 50.0612024 21 | longitude: 19.9297733 22 | radius: 100 23 | icon: mdi:beer -------------------------------------------------------------------------------- /home-assistant/components/zwave.yaml: -------------------------------------------------------------------------------- 1 | usb_path: /dev/ttyACM0 2 | network_key: !env_var HOME_ASSISTANT_ZWAVE_KEY 3 | debug: false 4 | autoheal: true -------------------------------------------------------------------------------- /home-assistant/custom_components/alexa_media/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "alexa_media", 3 | "name": "Alexa Media Player", 4 | "version": "4.0.3", 5 | "config_flow": true, 6 | "documentation": "https://github.com/custom-components/alexa_media_player/wiki", 7 | "issue_tracker": "https://github.com/custom-components/alexa_media_player/issues", 8 | "dependencies": ["persistent_notification", "http"], 9 | "codeowners": ["@alandtse", "@keatontaylor"], 10 | "requirements": ["alexapy==1.26.1", "packaging>=20.3", "wrapt>=1.12.1"], 11 | "iot_class": "cloud_polling" 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/attributes/__init__.py: -------------------------------------------------------------------------------- 1 | """Attributes breakout sensor""" 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/attributes/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "attributes", 3 | "name": "Attributes", 4 | "version": "1.2.0", 5 | "documentation": "https://github.com/pilotak/homeassistant-attributes", 6 | "issue_tracker": "https://github.com/pilotak/homeassistant-attributes/issues", 7 | "requirements": [], 8 | "dependencies": [], 9 | "codeowners": ["@pilotak"] 10 | } 11 | -------------------------------------------------------------------------------- /home-assistant/custom_components/burze_dzis_net/__init__.py: -------------------------------------------------------------------------------- 1 | """Burze.dzis.net""" -------------------------------------------------------------------------------- /home-assistant/custom_components/burze_dzis_net/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "burze_dzis_net", 3 | "name": "Burze.dzis.net", 4 | "documentation": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Burze.dzis.net", 5 | "issue_tracker": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Burze.dzis.net/issues", 6 | "dependencies": [], 7 | "codeowners": ["@PiotrMachowski"], 8 | "requirements": ["zeep"], 9 | "version": "v1.0.4", 10 | "iot_class": "cloud_polling" 11 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The Car Wash binary sensor. 3 | 4 | For more details about this platform, please refer to the documentation at 5 | https://github.com/Limych/ha-car_wash/ 6 | """ 7 | -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "car_wash", 3 | "name": "Car Wash", 4 | "version": "1.5.1", 5 | "documentation": "https://github.com/Limych/ha-car_wash", 6 | "issue_tracker": "https://github.com/Limych/ha-car_wash/issues", 7 | "dependencies": [ 8 | "weather" 9 | ], 10 | "config_flow": false, 11 | "codeowners": [ 12 | "@Limych" 13 | ], 14 | "requirements": [], 15 | "iot_class": "calculated" 16 | } 17 | -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/translations/binary_sensor.de.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": { 3 | "car_wash__": { 4 | "off": "Waschen sinnlos", 5 | "on": "Jetzt waschen" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/translations/binary_sensor.en.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": { 3 | "car_wash__": { 4 | "off": "Should not wash", 5 | "on": "Worth wash" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/translations/binary_sensor.it.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": { 3 | "car_wash__": { 4 | "off": "Lavaggio sconsigliato", 5 | "on": "Procedi al lavaggio" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/translations/binary_sensor.pl.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": { 3 | "car_wash__": { 4 | "off": "Nie należy myć", 5 | "on": "Warto umyć" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/translations/binary_sensor.ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": { 3 | "car_wash__": { 4 | "off": "Нет смысла мыть", 5 | "on": "Стоит помыть" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/car_wash/translations/binary_sensor.uk.json: -------------------------------------------------------------------------------- 1 | { 2 | "state": { 3 | "car_wash__": { 4 | "off": "Не варто мити", 5 | "on": "Варто помити" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/cracow_air_quality/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | __version__ = '1.0.0' -------------------------------------------------------------------------------- /home-assistant/custom_components/emby_upcoming_media/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/emby_upcoming_media/__init__.py -------------------------------------------------------------------------------- /home-assistant/custom_components/emby_upcoming_media/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "emby_upcoming_media", 3 | "name": "Emby Latest Media", 4 | "documentation": "https://github.com/gcorgnet/sensor.emby_upcoming_media", 5 | "dependencies": [], 6 | "codeowners": [ 7 | "@gcorgnet" 8 | ], 9 | "requirements": ["python-dateutil"], 10 | "version": "0.3.5" 11 | } 12 | -------------------------------------------------------------------------------- /home-assistant/custom_components/google_geocode/Google_Geocode_Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/google_geocode/Google_Geocode_Screenshot.png -------------------------------------------------------------------------------- /home-assistant/custom_components/google_geocode/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "google_geocode", 3 | "name": "Google Geocode", 4 | "documentation": "https://github.com/michaelmcarthur/GoogleGeocode-HASS", 5 | "dependencies": [], 6 | "codeowners": [], 7 | "requirements": [] 8 | } 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/grocy/breaking_changes: -------------------------------------------------------------------------------- 1 | services: 2 | add_project -> add_product_to_stock 3 | price -> str (was int) 4 | 5 | consume_product -> consume_product_from_stock -------------------------------------------------------------------------------- /home-assistant/custom_components/grocy/helpers.py: -------------------------------------------------------------------------------- 1 | import base64 2 | 3 | class MealPlanItem(object): 4 | def __init__(self, data): 5 | self.day = data.day 6 | self.note = data.note 7 | self.recipe_name = data.recipe.name 8 | self.desired_servings = data.recipe.desired_servings 9 | 10 | if data.recipe.picture_file_name is not None: 11 | b64name = base64.b64encode(data.recipe.picture_file_name.encode("ascii")) 12 | self.picture_url = f"/api/grocy/recipepictures/{str(b64name, 'utf-8')}" 13 | else: 14 | self.picture_url = None 15 | 16 | def as_dict(self): 17 | return vars(self) 18 | -------------------------------------------------------------------------------- /home-assistant/custom_components/grocy/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "grocy", 3 | "name": "Grocy", 4 | "documentation": "https://github.com/custom-components/grocy", 5 | "dependencies": [ 6 | "http" 7 | ], 8 | "config_flow": true, 9 | "codeowners": [ 10 | "@SebRut", 11 | "@isabellaalstrom" 12 | ], 13 | "requirements": [ 14 | "sampleclient", 15 | "pygrocy==0.24.1", 16 | "iso8601==0.1.12", 17 | "integrationhelper" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /home-assistant/custom_components/grocy/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "abort": { 4 | "single_instance_allowed": "Only a single configuration of Grocy is allowed." 5 | }, 6 | "error": { 7 | "auth": "Something went wrong." 8 | }, 9 | "step": { 10 | "user": { 11 | "data": { 12 | "api_key": "Grocy API Key", 13 | "port": "Port Number (9192)", 14 | "url": "Grocy API URL (e.g. \"http:\/\/yourgrocyurl.com\")", 15 | "verify_ssl": "Verify SSL Certificate" 16 | }, 17 | "description": "If you need help with the configuration have a look here: https:\/\/github.com\/custom-components\/grocy", 18 | "title": "Grocy" 19 | } 20 | }, 21 | "title": "Grocy" 22 | } 23 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/grocy/translations/hr.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "abort": { 4 | "single_instance_allowed": "Dozvoljena je samo jedna Grocy konfiguracija" 5 | }, 6 | "error": { 7 | "auth": "Nešto je pošlo po zlu." 8 | }, 9 | "step": { 10 | "user": { 11 | "data": { 12 | "api_key": "Grocy API ključ", 13 | "port": "Broj port-a (9192)", 14 | "url": "Grocy API URL (npr. \"http:\/\/yourgrocyurl.com\")", 15 | "verify_ssl": "Provjerite SSL certifikat." 16 | }, 17 | "description": "Ako vam je potrebna pomoć oko konfiguracije, pogledajte ovdje: https:\/\/github.com\/custom-components\/grocy", 18 | "title": "Grocy" 19 | } 20 | }, 21 | "title": "Grocy" 22 | } 23 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/__init__.py: -------------------------------------------------------------------------------- 1 | """HACS Frontend""" 2 | from .version import VERSION 3 | 4 | def locate_dir(): 5 | return __path__[0] -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.004a7b01.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.004a7b01.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.05e9df28.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.05e9df28.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.0732ee74.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.0732ee74.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.15331ea4.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.15331ea4.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.175b9792.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.175b9792.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.1b450c80.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.1b450c80.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.21c042d4.js: -------------------------------------------------------------------------------- 1 | const n=(n,o)=>n&&n.config.components.includes(o);export{n as i}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.24bd2446.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.24bd2446.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.250c89dd.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.250c89dd.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.362d16d4.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.362d16d4.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.3c651323.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.3c651323.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.4053bced.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.4053bced.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.47f687e9.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.47f687e9.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.4a97632a.js: -------------------------------------------------------------------------------- 1 | function t(t){const a=t.language||"en";return t.translationMetadata.translations[a]&&t.translationMetadata.translations[a].isRTL||!1}function a(a){return t(a)?"rtl":"ltr"}export{a,t as c}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.4a97632a.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.4a97632a.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.4c31e630.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.4c31e630.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.50bfd408.js: -------------------------------------------------------------------------------- 1 | const e=()=>{const e={},r=new URLSearchParams(location.search);for(const[n,t]of r.entries())e[n]=t;return e},r=e=>{const r=new URLSearchParams;return Object.entries(e).forEach((([e,n])=>{r.append(e,n)})),r.toString()};export{r as c,e}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.50bfd408.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.50bfd408.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.56433b09.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.56433b09.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.587d89ba.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.587d89ba.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.58a9b586.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.58a9b586.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.5b87ad2c.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.5b87ad2c.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.5ba288d8.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.5ba288d8.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.5ede7966.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.5ede7966.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.63dc92d5.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.63dc92d5.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.656daa82.js: -------------------------------------------------------------------------------- 1 | var a=[];export{a as default}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.6711bf6c.js: -------------------------------------------------------------------------------- 1 | const t=(t,e)=>{const n={};return e&&(e.type&&(n.type_filter=e.type),e.domain&&(n.domain=e.domain)),t.callWS({type:"config_entries/get",...n})};export{t as g}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.6711bf6c.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.6711bf6c.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.6b0f0543.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.6b0f0543.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.743a15a1.js: -------------------------------------------------------------------------------- 1 | var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e,o){return e(o={exports:{}},o.exports),o.exports}function n(e){return e&&e.default||e}export{e as a,t as c,n as g,o as u}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.743a15a1.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.743a15a1.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.7ee871d3.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.7ee871d3.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.822f38be.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.822f38be.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.88ebfd3e.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.88ebfd3e.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.8e28b461.js: -------------------------------------------------------------------------------- 1 | const r=r=>(s,o)=>{if(s.constructor._observers){if(!s.constructor.hasOwnProperty("_observers")){const r=s.constructor._observers;s.constructor._observers=new Map,r.forEach(((r,o)=>s.constructor._observers.set(o,r)))}}else{s.constructor._observers=new Map;const r=s.updated;s.updated=function(s){r.call(this,s),s.forEach(((r,s)=>{const o=this.constructor._observers.get(s);void 0!==o&&o.call(this,this[s],r)}))}}s.constructor._observers.set(o,r)};export{r as o}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.8e28b461.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.8e28b461.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.8f19de42.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.8f19de42.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.936d9772.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.936d9772.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.99c1c4ba.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.99c1c4ba.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.9d5cd8b6.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.9d5cd8b6.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.9d6aaabf.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.9d6aaabf.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.a0bc44e3.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.a0bc44e3.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.ad739743.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.ad739743.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.b054aba2.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.b054aba2.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.b720c549.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.b720c549.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.ba01fa51.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.ba01fa51.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.ba5bc454.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.ba5bc454.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.bc53dda1.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.bc53dda1.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.bca0f55d.js: -------------------------------------------------------------------------------- 1 | import{A as o}from"./main-a0d7432d.js";const a=()=>import("./c.f3416703.js"),i=(i,l,m)=>new Promise((n=>{const r=l.cancel,s=l.confirm;o(i,"show-dialog",{dialogTag:"dialog-box",dialogImport:a,dialogParams:{...l,...m,cancel:()=>{n(!(null==m||!m.prompt)&&null),r&&r()},confirm:o=>{n(null==m||!m.prompt||o),s&&s(o)}}})})),l=(o,a)=>i(o,a),m=(o,a)=>i(o,a,{confirmation:!0}),n=(o,a)=>i(o,a,{prompt:!0});export{l as a,n as b,m as s}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.bca0f55d.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.bca0f55d.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.c176780d.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.c176780d.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.c4815b5a.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.c4815b5a.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.c608beec.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.c608beec.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.c7df5815.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.c7df5815.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.c98162aa.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.c98162aa.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.d2d70fc0.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.d2d70fc0.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.da8de431.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.da8de431.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.db2e6bb6.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.db2e6bb6.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.dba55e54.js: -------------------------------------------------------------------------------- 1 | import{al as e,am as a,aj as s,an as r,ao as u}from"./main-a0d7432d.js";async function i(i,o,n){const t=new e("updateLovelaceResources"),l=await a(i),d=`/hacsfiles/${o.full_name.split("/")[1]}`,c=s({repository:o,version:n}),p=l.find((e=>e.url.includes(d)));t.debug({namespace:d,url:c,exsisting:p}),p&&p.url!==c?(t.debug(`Updating exsusting resource for ${d}`),await r(i,{url:c,resource_id:p.id,res_type:p.type})):l.map((e=>e.url)).includes(c)||(t.debug(`Adding ${c} to Lovelace resources`),await u(i,{url:c,res_type:"module"}))}export{i as u}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.dba55e54.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.dba55e54.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.e23b0d0b.js: -------------------------------------------------------------------------------- 1 | Intl.PluralRules&&"function"==typeof Intl.PluralRules.__addLocaleData&&Intl.PluralRules.__addLocaleData({data:{categories:{cardinal:["one","other"],ordinal:["one","two","few","other"]},fn:function(e,l){var a=String(e).split("."),t=!a[1],o=Number(a[0])==e,n=o&&a[0].slice(-1),r=o&&a[0].slice(-2);return l?1==n&&11!=r?"one":2==n&&12!=r?"two":3==n&&13!=r?"few":"other":1==e&&t?"one":"other"}},locale:"en"}); 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.e23b0d0b.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.e23b0d0b.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.e65e9eeb.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.e65e9eeb.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.e7b530de.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.e7b530de.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.ee4824b8.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.ee4824b8.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.ef5e31a4.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.ef5e31a4.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.f0a99f33.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.f0a99f33.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.f2cbe48c.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.f2cbe48c.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.f3416703.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.f3416703.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.fbd8d2ba.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.fbd8d2ba.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.fe747ba2.js: -------------------------------------------------------------------------------- 1 | const s=async(s,o)=>s.connection.sendMessagePromise({type:"hacs/repository/info",repository_id:o}),o=async(s,o,e)=>s.connection.sendMessagePromise({type:"hacs/repository/download",repository:o,version:e}),e=async(s,o,e)=>s.connection.sendMessagePromise({type:"hacs/repository/version",repository:o,version:e});export{o as a,s as f,e as r}; 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/c.fe747ba2.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/c.fe747ba2.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/entrypoint.js: -------------------------------------------------------------------------------- 1 | 2 | try { 3 | new Function("import('/hacsfiles/frontend/main-a0d7432d.js')")(); 4 | } catch (err) { 5 | var el = document.createElement('script'); 6 | el.src = '/hacsfiles/frontend/main-a0d7432d.js'; 7 | el.type = 'module'; 8 | document.body.appendChild(el); 9 | } 10 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/entrypoint.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/entrypoint.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/main-a0d7432d.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/hacs/hacs_frontend/main-a0d7432d.js.gz -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "./src/main.ts": "main-a0d7432d.js" 3 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/hacs_frontend/version.py: -------------------------------------------------------------------------------- 1 | VERSION="20220709114425" -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "codeowners": [ 3 | "@ludeeus" 4 | ], 5 | "config_flow": true, 6 | "dependencies": [ 7 | "http", 8 | "websocket_api", 9 | "frontend", 10 | "persistent_notification", 11 | "lovelace" 12 | ], 13 | "documentation": "https://hacs.xyz/docs/configuration/start", 14 | "domain": "hacs", 15 | "iot_class": "cloud_polling", 16 | "issue_tracker": "https://github.com/hacs/integration/issues", 17 | "name": "HACS", 18 | "requirements": [ 19 | "aiogithubapi>=22.2.4" 20 | ], 21 | "version": "1.26.0" 22 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/repositories/__init__.py: -------------------------------------------------------------------------------- 1 | """Initialize repositories.""" 2 | from __future__ import annotations 3 | 4 | from ..enums import HacsCategory 5 | from .appdaemon import HacsAppdaemonRepository 6 | from .base import HacsRepository 7 | from .integration import HacsIntegrationRepository 8 | from .netdaemon import HacsNetdaemonRepository 9 | from .plugin import HacsPluginRepository 10 | from .python_script import HacsPythonScriptRepository 11 | from .theme import HacsThemeRepository 12 | 13 | RERPOSITORY_CLASSES: dict[HacsCategory, HacsRepository] = { 14 | HacsCategory.THEME: HacsThemeRepository, 15 | HacsCategory.INTEGRATION: HacsIntegrationRepository, 16 | HacsCategory.PYTHON_SCRIPT: HacsPythonScriptRepository, 17 | HacsCategory.APPDAEMON: HacsAppdaemonRepository, 18 | HacsCategory.NETDAEMON: HacsNetdaemonRepository, 19 | HacsCategory.PLUGIN: HacsPluginRepository, 20 | } 21 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """Initialize HACS utils.""" 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/utils/decode.py: -------------------------------------------------------------------------------- 1 | """Util to decode content from the github API.""" 2 | from base64 import b64decode 3 | 4 | 5 | def decode_content(content: str) -> str: 6 | """Decode content.""" 7 | return b64decode(bytearray(content, "utf-8")).decode() 8 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/utils/json.py: -------------------------------------------------------------------------------- 1 | """JSON utils.""" 2 | 3 | try: 4 | # Could be removed after 2022.06 is the min version 5 | # But in case Home Assistant changes, keep this try/except here... 6 | from homeassistant.helpers.json import json_loads 7 | except ImportError: 8 | from json import loads as json_loads 9 | 10 | __all__ = ["json_loads"] 11 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/utils/logger.py: -------------------------------------------------------------------------------- 1 | """Custom logger for HACS.""" 2 | import logging 3 | 4 | from ..const import PACKAGE_NAME 5 | 6 | LOGGER: logging.Logger = logging.getLogger(PACKAGE_NAME) 7 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/utils/path.py: -------------------------------------------------------------------------------- 1 | """Path utils""" 2 | from __future__ import annotations 3 | 4 | from pathlib import Path 5 | from typing import TYPE_CHECKING 6 | 7 | if TYPE_CHECKING: 8 | from ..base import HacsBase 9 | 10 | 11 | def is_safe(hacs: HacsBase, path: str | Path) -> bool: 12 | """Helper to check if path is safe to remove.""" 13 | return Path(path).as_posix() not in ( 14 | Path(f"{hacs.core.config_path}/{hacs.configuration.appdaemon_path}").as_posix(), 15 | Path(f"{hacs.core.config_path}/{hacs.configuration.netdaemon_path}").as_posix(), 16 | Path(f"{hacs.core.config_path}/{hacs.configuration.plugin_path}").as_posix(), 17 | Path(f"{hacs.core.config_path}/{hacs.configuration.python_script_path}").as_posix(), 18 | Path(f"{hacs.core.config_path}/{hacs.configuration.theme_path}").as_posix(), 19 | Path(f"{hacs.core.config_path}/custom_components/").as_posix(), 20 | ) 21 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/utils/regex.py: -------------------------------------------------------------------------------- 1 | """Regex utils""" 2 | from __future__ import annotations 3 | 4 | import re 5 | 6 | RE_REPOSITORY = re.compile( 7 | r"(?:(?:.*github.com.)|^)([A-Za-z0-9-]+\/[\w.-]+?)(?:(?:\.git)?|(?:[^\w.-].*)?)$" 8 | ) 9 | 10 | 11 | def extract_repository_from_url(url: str) -> str | None: 12 | """Extract the owner/repo part form a URL.""" 13 | match = re.match(RE_REPOSITORY, url) 14 | if not match: 15 | return None 16 | return match.group(1).lower() 17 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/utils/workarounds.py: -------------------------------------------------------------------------------- 1 | """Workarounds for issues that should not be fixed.""" 2 | 3 | 4 | DOMAIN_OVERRIDES = { 5 | # https://github.com/hacs/integration/issues/2465 6 | "custom-components/sensor.custom_aftership": "custom_aftership" 7 | } 8 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/validate/__init__.py: -------------------------------------------------------------------------------- 1 | """Initialize validation.""" 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/validate/archived.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from ..repositories.base import HacsRepository 4 | from .base import ActionValidationBase, ValidationException 5 | 6 | 7 | async def async_setup_validator(repository: HacsRepository) -> Validator: 8 | """Set up this validator.""" 9 | return Validator(repository=repository) 10 | 11 | 12 | class Validator(ActionValidationBase): 13 | """Validate the repository.""" 14 | 15 | more_info = "https://hacs.xyz/docs/publish/include#check-archived" 16 | allow_fork = False 17 | 18 | async def async_validate(self): 19 | """Validate the repository.""" 20 | if self.repository.data.archived: 21 | raise ValidationException("The repository is archived") 22 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/validate/description.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from ..repositories.base import HacsRepository 4 | from .base import ActionValidationBase, ValidationException 5 | 6 | 7 | async def async_setup_validator(repository: HacsRepository) -> Validator: 8 | """Set up this validator.""" 9 | return Validator(repository=repository) 10 | 11 | 12 | class Validator(ActionValidationBase): 13 | """Validate the repository.""" 14 | 15 | more_info = "https://hacs.xyz/docs/publish/include#check-repository" 16 | allow_fork = False 17 | 18 | async def async_validate(self): 19 | """Validate the repository.""" 20 | if not self.repository.data.description: 21 | raise ValidationException("The repository has no description") 22 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/validate/issues.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from ..repositories.base import HacsRepository 4 | from .base import ActionValidationBase, ValidationException 5 | 6 | 7 | async def async_setup_validator(repository: HacsRepository) -> Validator: 8 | """Set up this validator.""" 9 | return Validator(repository=repository) 10 | 11 | 12 | class Validator(ActionValidationBase): 13 | """Validate the repository.""" 14 | 15 | more_info = "https://hacs.xyz/docs/publish/include#check-repository" 16 | allow_fork = False 17 | 18 | async def async_validate(self): 19 | """Validate the repository.""" 20 | if not self.repository.data.has_issues: 21 | raise ValidationException("The repository does not have issues enabled") 22 | -------------------------------------------------------------------------------- /home-assistant/custom_components/hacs/validate/topics.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from ..repositories.base import HacsRepository 4 | from .base import ActionValidationBase, ValidationException 5 | 6 | 7 | async def async_setup_validator(repository: HacsRepository) -> Validator: 8 | """Set up this validator.""" 9 | return Validator(repository=repository) 10 | 11 | 12 | class Validator(ActionValidationBase): 13 | """Validate the repository.""" 14 | 15 | more_info = "https://hacs.xyz/docs/publish/include#check-repository" 16 | allow_fork = False 17 | 18 | async def async_validate(self): 19 | """Validate the repository.""" 20 | if not self.repository.data.topics: 21 | raise ValidationException("The repository has no valid topics") 22 | -------------------------------------------------------------------------------- /home-assistant/custom_components/harvest/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | __version__ = '1.0.0' -------------------------------------------------------------------------------- /home-assistant/custom_components/it_will_rain/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "it_will_rain", 3 | "name": "ItWillRain", 4 | "documentation": "http://macbury.ninja", 5 | "requirements": [ 6 | ], 7 | "dependencies": [], 8 | "codeowners": [ 9 | "@macbury" 10 | ] 11 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/kkm/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | """Bus card Tracker.""" 3 | 4 | __version__ = '1.0.0' -------------------------------------------------------------------------------- /home-assistant/custom_components/kkm/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "kkm", 3 | "name": "KKMSensor", 4 | "documentation": "http://macbury.ninja", 5 | "requirements": [ 6 | "beautifulsoup4==4.6.3" 7 | ], 8 | "dependencies": [], 9 | "codeowners": [ 10 | "@macbury" 11 | ] 12 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/localtuya/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "localtuya", 3 | "name": "LocalTuya integration", 4 | "version": "4.0.1", 5 | "documentation": "https://github.com/rospogrigio/localtuya/", 6 | "dependencies": [], 7 | "codeowners": [ 8 | "@rospogrigio", "@postlund" 9 | ], 10 | "issue_tracker": "https://github.com/rospogrigio/localtuya/issues", 11 | "requirements": [], 12 | "config_flow": true, 13 | "iot_class": "local_push" 14 | } 15 | -------------------------------------------------------------------------------- /home-assistant/custom_components/localtuya/services.yaml: -------------------------------------------------------------------------------- 1 | reload: 2 | description: Reload localtuya and reconnect to all devices. 3 | 4 | set_dp: 5 | description: Change the value of a datapoint (DP) 6 | fields: 7 | device_id: 8 | description: Device ID of device to change datapoint value for 9 | example: 11100118278aab4de001 10 | dp: 11 | description: Datapoint index 12 | example: 1 13 | value: 14 | description: New value to set 15 | example: False 16 | -------------------------------------------------------------------------------- /home-assistant/custom_components/lunching/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | """Lunching.pl Tracker.""" 3 | 4 | __version__ = '1.0.0' -------------------------------------------------------------------------------- /home-assistant/custom_components/lunching/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "lunching", 3 | "name": "LunchingSensor", 4 | "documentation": "http://macbury.ninja", 5 | "requirements": [ 6 | ], 7 | "dependencies": [], 8 | "codeowners": [ 9 | "@macbury" 10 | ] 11 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/mmpk/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | """Public transit sensor for MPK Kraków""" 3 | 4 | __version__ = '1.0.0' -------------------------------------------------------------------------------- /home-assistant/custom_components/mmpk/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "mmpk", 3 | "name": "mpkk", 4 | "documentation": "https://macbury.github.io/SmartHouse/", 5 | "requirements": [ 6 | ], 7 | "dependencies": [], 8 | "codeowners": [ 9 | "@macbury" 10 | ] 11 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "codeowners": [ 3 | "@zachowj" 4 | ], 5 | "config_flow": true, 6 | "dependencies": [], 7 | "documentation": "https://zachowj.github.io/node-red-contrib-home-assistant-websocket/guide/custom_integration/", 8 | "domain": "nodered", 9 | "iot_class": "local_push", 10 | "issue_tracker": "https://github.com/zachowj/hass-node-red/issues", 11 | "name": "Node-RED Companion", 12 | "version": "1.0.9" 13 | } 14 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/services.yaml: -------------------------------------------------------------------------------- 1 | trigger: 2 | description: Trigger a Node-RED Node 3 | target: 4 | entity: 5 | integration: nodered 6 | domain: switch 7 | fields: 8 | trigger_entity_id: 9 | description: Entity Id to trigger the event node with. Only needed if the node is not triggered by a single entity. 10 | example: sun.sun 11 | skip_condition: 12 | description: Skip conditions of the node (defaults to false) 13 | example: true 14 | output_path: 15 | description: Which output of the node to use (defaults to true, the top output). Only used when skip_condition is set to true. 16 | example: true 17 | payload: 18 | description: The payload the node will output when triggered. Works only when triggering an entity node, not an event node. 19 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/translations/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "step": { 4 | "user": { 5 | "title": "Node-RED Begleiter", 6 | "description": "Möchtest du den Node-RED Begleiter wirklich einrichten?" 7 | } 8 | }, 9 | "abort": { 10 | "single_instance_allowed": "Es ist kann nur eine Konfiguration für den Node-RED Begleiter geben." 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/translations/dk.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "step": { 4 | "user": { 5 | "description": "Er du sikker på, at du vil konfigurere Node-RED Companion?" 6 | } 7 | }, 8 | "abort": { 9 | "single_instance_allowed": "Kun en enkelt konfiguration af Node-RED Companion er tilladt." 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "step": { 4 | "user": { 5 | "description": "Do you want to add Node-RED Companion to Home Assistant?" 6 | } 7 | }, 8 | "abort": { 9 | "single_instance_allowed": "Already configured. Only a single configuration possible." 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/translations/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "step": { 4 | "user": { 5 | "description": "Voulez-vous ajouter Node-RED Companion à Home Assistant ?" 6 | } 7 | }, 8 | "abort": { 9 | "single_instance_allowed": "Déjà configuré. Une seule configuration possible à la fois." 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/translations/nb.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "step": { 4 | "user": { 5 | "description": "Er du sikker på at du vil konfigurere Node-RED?" 6 | } 7 | }, 8 | "abort": { 9 | "single_instance_allowed": "Bare en enkelt konfigurasjon av Node-RED er tillatt." 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/translations/pt-BR.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "step": { 4 | "user": { 5 | "description": "Tem certeza de que deseja configurar o Node-RED Companion?" 6 | } 7 | }, 8 | "abort": { 9 | "single_instance_allowed": "Apenas uma única configuração do Node-RED Companion é permitida." 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/translations/sv.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "step": { 4 | "user": { 5 | "description": "Vill du lägga till Node-RED Companion till Home Assistant?" 6 | } 7 | }, 8 | "abort": { 9 | "single_instance_allowed": "Redan konfigurerad. Bara en konfiguration är möjlig." 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/nodered/utils.py: -------------------------------------------------------------------------------- 1 | """Helpers for node-red.""" 2 | from datetime import timedelta 3 | from typing import Any 4 | 5 | from homeassistant.helpers.json import JSONEncoder 6 | 7 | 8 | class NodeRedJSONEncoder(JSONEncoder): 9 | """JSONEncoder that supports timedelta objects and falls back to the Home Assistant Encoder.""" 10 | 11 | def default(self, o: Any) -> Any: 12 | """Convert timedelta objects. 13 | 14 | Hand other objects to the Home Assistant JSONEncoder. 15 | """ 16 | if isinstance(o, timedelta): 17 | return o.total_seconds() 18 | 19 | return JSONEncoder.default(self, o) 20 | -------------------------------------------------------------------------------- /home-assistant/custom_components/rocketlaunchlive/const.py: -------------------------------------------------------------------------------- 1 | """Constants for the Rocket Launch Live integration.""" 2 | 3 | DOMAIN = "rocketlaunchlive" 4 | COORDINATOR = "coordinator" 5 | ROCKET_API = "rocket_api" 6 | ATTR_IDENTIFIERS = "identifiers" 7 | ATTR_MANUFACTURER = "manufacturer" 8 | ATTR_MODEL = "model" 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/rocketlaunchlive/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "rocketlaunchlive", 3 | "name": "Rocket Launch Live - Next 5 Launches", 4 | "config_flow": true, 5 | "documentation": "https://github.com/djtimca/harocketlaunchlive", 6 | "requirements": [ 7 | "rocketlaunchlive==0.0.2" 8 | ], 9 | "ssdp": [], 10 | "zeroconf": [], 11 | "homekit": {}, 12 | "dependencies": [], 13 | "codeowners": [ 14 | "@djtimca" 15 | ], 16 | "version": "009" 17 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/rocketlaunchlive/strings.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Rocket Launch Live - Next 5 Launches", 3 | "config": { 4 | "step": { 5 | "user": { 6 | "data": { 7 | "api_key": "Optional: Enter your paid RocketLaunch.live API key." 8 | } 9 | } 10 | }, 11 | "error": { 12 | "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", 13 | "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]", 14 | "unknown": "[%key:common::config_flow::error::unknown%]" 15 | }, 16 | "abort": { 17 | "single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]" 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/rocketlaunchlive/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Rocket Launch Live - Next 5 Launches", 3 | "config": { 4 | "step": { 5 | "user": { 6 | "data": { 7 | "api_key": "Optional: Enter your paid RocketLaunch.live API key." 8 | } 9 | } 10 | }, 11 | "error": { 12 | "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", 13 | "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]", 14 | "unknown": "[%key:common::config_flow::error::unknown%]" 15 | }, 16 | "abort": { 17 | "single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]" 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/samsung_multi_room/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | __version__ = '1.0.0' -------------------------------------------------------------------------------- /home-assistant/custom_components/samsung_multi_room/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "soundbar", 3 | "vetsion": "1.0", 4 | "name": "SamsungMultiRoom", 5 | "documentation": "http://macbury.ninja", 6 | "requirements": [ 7 | "xmltodict==0.11.0" 8 | ], 9 | "dependencies": [], 10 | "codeowners": [ 11 | "@macbury" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /home-assistant/custom_components/smartthinq_sensors/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "smartthinq_sensors", 3 | "name": "SmartThinQ LGE Sensors", 4 | "documentation": "https://github.com/ollo69/ha-smartthinq-sensors", 5 | "issue_tracker": "https://github.com/ollo69/ha-smartthinq-sensors/issues", 6 | "dependencies": [], 7 | "codeowners": ["@ollo69"], 8 | "requirements": [ 9 | "pycountry>=20.7.3", 10 | "xmltodict>=0.12.0", 11 | "chardet>=4.0.0" 12 | ], 13 | "config_flow": true, 14 | "iot_class": "cloud_polling", 15 | "version": "0.23.3" 16 | } 17 | -------------------------------------------------------------------------------- /home-assistant/custom_components/smartthinq_sensors/services.yaml: -------------------------------------------------------------------------------- 1 | remote_start: 2 | name: Remote Start 3 | description: Send to ThinQ device the remote start command. 4 | target: 5 | entity: 6 | integration: smartthinq_sensors 7 | domain: sensor 8 | 9 | wake_up: 10 | name: WakeUp 11 | description: Send to ThinQ device the wakeup command. 12 | target: 13 | entity: 14 | integration: smartthinq_sensors 15 | domain: sensor 16 | 17 | set_fan_mode: 18 | name: Set fan mode 19 | description: Set fan operation for dehumidifier device. 20 | target: 21 | entity: 22 | integration: smartthinq_sensors 23 | domain: humidifier 24 | fields: 25 | fan_mode: 26 | name: Fan mode 27 | description: New value of fan mode. 28 | required: true 29 | example: "low" 30 | selector: 31 | text: 32 | -------------------------------------------------------------------------------- /home-assistant/custom_components/smartthinq_sensors/wideq/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Support for LG SmartThinQ device. 3 | """ 4 | 5 | from .const import * 6 | from .device_info import * 7 | from .factory import get_lge_device 8 | -------------------------------------------------------------------------------- /home-assistant/custom_components/smartthinq_sensors/wideq/core_util.py: -------------------------------------------------------------------------------- 1 | """ 2 | Support for LG SmartThinQ device. 3 | """ 4 | import uuid 5 | 6 | 7 | def as_list(obj): 8 | """Wrap non-lists in lists. 9 | 10 | If `obj` is a list, return it unchanged. Otherwise, return a 11 | single-element list containing it. 12 | """ 13 | 14 | if isinstance(obj, list): 15 | return obj 16 | else: 17 | return [obj] 18 | 19 | 20 | def add_end_slash(url: str): 21 | """Add final slash to url.""" 22 | if not url.endswith("/"): 23 | return url + "/" 24 | return url 25 | 26 | 27 | def gen_uuid(): 28 | return str(uuid.uuid4()) 29 | -------------------------------------------------------------------------------- /home-assistant/custom_components/spacex/config_flow.py: -------------------------------------------------------------------------------- 1 | """Config flow for SpaceX Launches and Starman.""" 2 | from spacexpypi import SpaceX 3 | 4 | from homeassistant.helpers import config_entry_flow 5 | 6 | from .const import DOMAIN 7 | 8 | 9 | async def _async_has_devices(hass) -> bool: 10 | """Return if there are devices that can be discovered.""" 11 | api_client = SpaceX() 12 | 13 | devices = await api_client.get_next_launch() 14 | return len(devices) > 0 15 | 16 | 17 | config_entry_flow.register_discovery_flow( 18 | DOMAIN, 19 | "SpaceX Launches and Starman", 20 | _async_has_devices, 21 | ) 22 | -------------------------------------------------------------------------------- /home-assistant/custom_components/spacex/const.py: -------------------------------------------------------------------------------- 1 | """Constants for the SpaceX integration.""" 2 | 3 | DOMAIN = "spacex" 4 | COORDINATOR = "coordinator" 5 | SPACEX_API = "spacex_api" 6 | ATTR_IDENTIFIERS = "identifiers" 7 | ATTR_MANUFACTURER = "manufacturer" 8 | ATTR_MODEL = "model" 9 | -------------------------------------------------------------------------------- /home-assistant/custom_components/spacex/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "spacex", 3 | "name": "SpaceX Launches and Starman", 4 | "config_flow": true, 5 | "documentation": "https://github.com/djtimca/haspacex", 6 | "issue_tracker": "https://github.com/djtimca/HASpaceX/issues", 7 | "requirements": [ 8 | "spacexpypi==0.0.12" 9 | ], 10 | "ssdp": [], 11 | "zeroconf": [], 12 | "homekit": {}, 13 | "dependencies": [], 14 | "codeowners": [ 15 | "@djtimca" 16 | ], 17 | "version": "029", 18 | "iot_class": "cloud_polling" 19 | } 20 | -------------------------------------------------------------------------------- /home-assistant/custom_components/spacex/strings.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "SpaceX Launches and Starman", 3 | "config": { 4 | "step": { 5 | "confirm": { 6 | "description": "[%key:common::config_flow::description::confirm_setup%]" 7 | } 8 | }, 9 | "abort": { 10 | "single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]", 11 | "no_devices_found": "[%key:common::config_flow::abort::no_devices_found%]" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/spacex/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "abort": { 4 | "no_devices_found": "[%key:common::config_flow::abort::no_devices_found%]", 5 | "single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]" 6 | }, 7 | "step": { 8 | "confirm": { 9 | "description": "Are you sure you want to install the SpaceX integration?" 10 | } 11 | } 12 | }, 13 | "title": "SpaceX Launches and Starman" 14 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/spotify_cover_sensor/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | __version__ = '1.0.0' -------------------------------------------------------------------------------- /home-assistant/custom_components/spotify_cover_sensor/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "spotify_cover", 3 | "name": "SpotifyCoverSensor", 4 | "documentation": "http://macbury.ninja", 5 | "requirements": [ 6 | "colorthief==0.2.1", 7 | "spotipy-homeassistant==2.4.4.dev1" 8 | ], 9 | "dependencies": [], 10 | "codeowners": [ 11 | "@macbury" 12 | ] 13 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/tauron_amiplus/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "tauron_amiplus", 3 | "name": "Tauron AMIplus", 4 | "documentation": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Tauron-AMIplus", 5 | "dependencies": [], 6 | "codeowners": ["@PiotrMachowski"], 7 | "requirements": ["requests"] 8 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/tuya_v2/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "tuya_v2", 3 | "name": "Tuya v2", 4 | "version": "1.5.0", 5 | "documentation": "https://github.com/tuya/tuya-home-assistant", 6 | "requirements": [ 7 | "tuya-iot-py-sdk==0.4.1" 8 | ], 9 | "codeowners": [ 10 | "@Tuya" 11 | ], 12 | "config_flow": true, 13 | "iot_class": "cloud_push" 14 | } 15 | -------------------------------------------------------------------------------- /home-assistant/custom_components/tuya_v2/strings.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "flow_title": "Tuya configuration", 4 | "step": { 5 | "user":{ 6 | "title":"Tuya Integration", 7 | "data":{ 8 | "tuya_project_type": "Tuya cloud project type" 9 | } 10 | }, 11 | "login": { 12 | "title": "Tuya", 13 | "description": "Enter your Tuya credential", 14 | "data": { 15 | "endpoint": "Availability Zone", 16 | "access_id": "Access ID", 17 | "access_secret": "Access Secret", 18 | "tuya_app_type": "Mobile App", 19 | "country_code": "Country Code", 20 | "username": "Account", 21 | "password": "Password" 22 | } 23 | } 24 | }, 25 | "error": { 26 | "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]" 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /home-assistant/custom_components/tuya_v2/translations/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "flow_title": "涂鸦配置", 4 | "step": { 5 | "user":{ 6 | "title":"Tuya插件", 7 | "data":{ 8 | "tuya_project_type": "涂鸦云项目类型" 9 | } 10 | }, 11 | "login": { 12 | "title": "涂鸦", 13 | "description": "请输入涂鸦账户信息。", 14 | "data": { 15 | "endpoint": "可用区域", 16 | "access_id": "Access ID", 17 | "access_secret": "Access Secret", 18 | "tuya_app_type": "移动应用", 19 | "country_code": "国家码", 20 | "username": "账号", 21 | "password": "密码" 22 | } 23 | } 24 | }, 25 | "error": { 26 | "invalid_auth": "身份认证无效" 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/__init__.py: -------------------------------------------------------------------------------- 1 | """Xiaomi cloud map extractor.""" 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/common/__init__.py: -------------------------------------------------------------------------------- 1 | """Basic functionalities, common for all vacuums.""" 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/dreame/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/xiaomi_cloud_map_extractor/dreame/__init__.py -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "xiaomi_cloud_map_extractor", 3 | "name": "Xiaomi Cloud Map Extractor", 4 | "documentation": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor", 5 | "issue_tracker": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/issues", 6 | "dependencies": [], 7 | "codeowners": [ 8 | "@PiotrMachowski" 9 | ], 10 | "requirements": [ 11 | "pillow", 12 | "pybase64", 13 | "python-miio", 14 | "requests", 15 | "pycryptodome" 16 | ], 17 | "version": "v2.2.0", 18 | "iot_class": "cloud_polling" 19 | } 20 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/roidmi/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/xiaomi_cloud_map_extractor/roidmi/__init__.py -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/services.yaml: -------------------------------------------------------------------------------- 1 | reload: 2 | name: Reload 3 | description: Reload all entities of Xiaomi Cloud Map Extractor platform 4 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/types.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict, List, Tuple, Union 2 | 3 | Color = Union[Tuple[int, int, int], Tuple[int, int, int, int]] 4 | Colors = Dict[str, Color] 5 | Drawables = List[str] 6 | Texts = List[Any] 7 | Sizes = Dict[str, float] 8 | ImageConfig = Dict[str, Any] 9 | CalibrationPoints = List[Dict[str, Dict[str, Union[float, int]]]] 10 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/unsupported/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/custom_components/xiaomi_cloud_map_extractor/unsupported/__init__.py -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/unsupported/vacuum.py: -------------------------------------------------------------------------------- 1 | from custom_components.xiaomi_cloud_map_extractor.common.vacuum_v2 import XiaomiCloudVacuumV2 2 | 3 | 4 | class UnsupportedVacuum(XiaomiCloudVacuumV2): 5 | 6 | def __init__(self, connector, country, user_id, device_id, model): 7 | super().__init__(connector, country, user_id, device_id, model) 8 | 9 | def get_map_archive_extension(self): 10 | return "unknown" 11 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/viomi/__init__.py: -------------------------------------------------------------------------------- 1 | """Functionalities specific for Viomi vacuums.""" 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/xiaomi_cloud_map_extractor/xiaomi/__init__.py: -------------------------------------------------------------------------------- 1 | """Functionalities specific for Xiaomi and Roborock vacuums.""" 2 | -------------------------------------------------------------------------------- /home-assistant/custom_components/yahoofinance/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "yahoofinance", 3 | "name": "Yahoo Finance", 4 | "documentation": "https://github.com/iprak/yahoofinance", 5 | "requirements": [], 6 | "dependencies": [], 7 | "codeowners": [ 8 | "@iprak" 9 | ], 10 | "issue_tracker": "https://github.com/iprak/yahoofinance/issues", 11 | "version": "1.1.6" 12 | } 13 | -------------------------------------------------------------------------------- /home-assistant/custom_components/yahoofinance/services.yaml: -------------------------------------------------------------------------------- 1 | # Describes the format of available services for yahoofinance 2 | 3 | refresh_symbols: 4 | description: Refresh data for all the symbols. -------------------------------------------------------------------------------- /home-assistant/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | exec python -m homeassistant --config /config -------------------------------------------------------------------------------- /home-assistant/groups.yaml: -------------------------------------------------------------------------------- 1 | family: 2 | entities: 3 | - person.arek 4 | - person.ola 5 | 6 | windows: 7 | entities: 8 | - binary_sensor.bedroom_window 9 | - binary_sensor.living_room_window 10 | - binary_sensor.balcone_door 11 | -------------------------------------------------------------------------------- /home-assistant/known_devices.yaml.example: -------------------------------------------------------------------------------- 1 | arek: 2 | hide_if_away: false 3 | icon: 4 | mac: C9:37:AE:8E:0D:BD 5 | name: life360 arek 6 | picture: /local/arek.png 7 | track: true 8 | 9 | ola: 10 | hide_if_away: false 11 | icon: 12 | mac: FA:A2:BD:12:9D:32 13 | name: life360 ola 14 | picture: /local/ola.png 15 | track: true 16 | -------------------------------------------------------------------------------- /home-assistant/lovelace/briefing.yaml: -------------------------------------------------------------------------------- 1 | - type: custom:layout-card 2 | layout: horizontal 3 | max_columns: 3 4 | cards: 5 | - type: vertical-stack 6 | cards: 7 | - type: "custom:kkm-card" 8 | entity_id: sensor.arek_karta_miejsca 9 | - type: custom:transit-card 10 | entity: sensor.to_work_transit 11 | - type: custom:qr-card 12 | code: !env_var HOME_ASSISTANT_SSID_QR_CODE -------------------------------------------------------------------------------- /home-assistant/lovelace/cameras.yaml: -------------------------------------------------------------------------------- 1 | - type: custom:layout-card 2 | layout: horizontal 3 | max_columns: 3 4 | cards: 5 | - type: picture-entity 6 | title: Kuchnia 7 | entity: camera.him_cam 8 | camera_view: 'live' 9 | - type: picture-entity 10 | entity: camera.main_square 11 | camera_view: 'live' 12 | - type: picture-entity 13 | entity: camera.wawel 14 | camera_view: 'live' 15 | -------------------------------------------------------------------------------- /home-assistant/lovelace/work.yaml: -------------------------------------------------------------------------------- 1 | - type: custom:layout-card 2 | layout: vertical 3 | max_columns: 4 4 | cards: 5 | - type: horizontal-stack 6 | cards: 7 | - type: picture-entity 8 | entity: sensor.arek_jedzenie 9 | name: "Zamówienie żarło?" 10 | state_image: 11 | "on": /local/food_on.gif 12 | "off": /local/food_off.gif 13 | 14 | - type: picture-entity 15 | entity: sensor.arek_czas_pracy 16 | name: "Fajrant?" 17 | state_image: 18 | "on": /local/working_on.gif 19 | "off": /local/working_off.gif 20 | - break 21 | - type: "custom:kkm-card" 22 | entity_id: sensor.arek_karta_miejsca 23 | - type: custom:transit-card 24 | entity: sensor.back_from_work_transit 25 | -------------------------------------------------------------------------------- /home-assistant/scenes/tv.yaml: -------------------------------------------------------------------------------- 1 | - name: Watching tv 2 | entities: 3 | light.tv_stand: on 4 | light.main: off 5 | light.dinner_table: off 6 | light.work_desk: off 7 | light.work_ambient_desk: off 8 | cover.living_room: closed 9 | media_player.tv: on -------------------------------------------------------------------------------- /home-assistant/scenes/work.yaml: -------------------------------------------------------------------------------- 1 | - name: Work 2 | entities: 3 | light.tv_stand: off 4 | light.main: off 5 | light.dinner_table: off 6 | light.work_desk: on 7 | light.work_ambient_desk: off 8 | switch.macmini: on 9 | cover.living_room: closed 10 | media_player.tv: on -------------------------------------------------------------------------------- /home-assistant/scripts/grocy.yaml: -------------------------------------------------------------------------------- 1 | consume_pepsi: 2 | alias: 'Consume pepsi' 3 | sequence: 4 | - service: grocy.consume_product 5 | data: 6 | product_id: 65 7 | transaction_type: CONSUME 8 | amount: 1 9 | - service: notify.alexa_media_kitchen 10 | data: 11 | message: 'Congratulations! You have consumed one pepsi' 12 | data: 13 | type: announce 14 | method: all -------------------------------------------------------------------------------- /home-assistant/scripts/switch_off_mac_mini.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ssh-keyscan -H 192.168.1.91 >> ~/.ssh/known_hosts 4 | ssh -i /config/.storage/id_rsa macbury@192.168.1.91 'pmset sleepnow' -------------------------------------------------------------------------------- /home-assistant/sensors/air_purifier.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | sensors: 3 | main_cover_position: 4 | unit_of_measurement: '%' 5 | value_template: '{{ states.cover.living_room.attributes.current_position }}' 6 | 7 | -------------------------------------------------------------------------------- /home-assistant/sensors/currency.yaml: -------------------------------------------------------------------------------- 1 | - platform: currencylayer 2 | api_key: !env_var HOME_ASSISTANT_CURRENCY_LAYER 3 | base: PLN 4 | quote: 5 | - EUR 6 | - USD 7 | - GBP 8 | - XBT 9 | -------------------------------------------------------------------------------- /home-assistant/sensors/deluge.yaml: -------------------------------------------------------------------------------- 1 | # - platform: deluge 2 | # host: 0.0.0.0 3 | # username: deluge 4 | # password: '' 5 | # monitored_variables: 6 | # - current_status -------------------------------------------------------------------------------- /home-assistant/sensors/fail2ban.yaml: -------------------------------------------------------------------------------- 1 | - platform: fail2ban 2 | jails: 3 | - nginx-noscript 4 | - nginx-http-auth 5 | - nginx-badbots 6 | - nginx-forbidden 7 | - ssh 8 | - ha 9 | file_path: /fail2ban/fail2ban.log -------------------------------------------------------------------------------- /home-assistant/sensors/food.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | state_topic: "poland/zboza/price" 3 | name: 'Cena Zboża' 4 | icon: 'mdi:barley' 5 | unit_of_measurement: 'zł netto/tonę' 6 | 7 | - platform: mqtt 8 | state_topic: "poland/wieprzowina/price" 9 | name: 'Cena Wieprzowina' 10 | icon: 'mdi:pig' 11 | unit_of_measurement: 'zł/kg' 12 | 13 | - platform: mqtt 14 | state_topic: "poland/wolowina/price" 15 | name: 'Cena Wołowina' 16 | icon: 'mdi:cow' 17 | unit_of_measurement: 'zł/kg' 18 | 19 | -------------------------------------------------------------------------------- /home-assistant/sensors/fuel.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/sensors/fuel.yaml -------------------------------------------------------------------------------- /home-assistant/sensors/kkm.yaml: -------------------------------------------------------------------------------- 1 | - platform: kkm 2 | name: Arek Karta Miejsca 3 | identity: !env_var HOME_ASSISTANT_KKM_IDENDITY 4 | city_card: !env_var HOME_ASSISTANT_KKM_CITY_CARD 5 | -------------------------------------------------------------------------------- /home-assistant/sensors/money.yaml: -------------------------------------------------------------------------------- 1 | 2 | - platform: template 3 | sensors: 4 | all_portfolio_value: 5 | friendly_name: "Całkowity wynik" 6 | unit_of_measurement: 'zł' 7 | value_template: >- 8 | {{ float(states.sensor.obligacje.state) + float(states.sensor.portfolio_market_value.state) }} 9 | -------------------------------------------------------------------------------- /home-assistant/sensors/power.yaml: -------------------------------------------------------------------------------- 1 | - platform: integration 2 | source: sensor.power_consumption 3 | name: energy_spent 4 | unit_prefix: k 5 | round: 4 6 | 7 | - platform: integration 8 | source: sensor.cool_as_ice_energy_current 9 | name: "Air condition energy used" 10 | unit_prefix: k 11 | round: 4 12 | -------------------------------------------------------------------------------- /home-assistant/sensors/qnap.yaml: -------------------------------------------------------------------------------- 1 | # - platform: qnap 2 | # host: 192.168.1.181 3 | # username: !env_var HOME_ASSISTANT_QNAP_USERNAME 4 | # password: !env_var HOME_ASSISTANT_QNAP_PASSWORD 5 | # verify_ssl: false # Shame 6 | # monitored_conditions: 7 | # - system_temp 8 | # - status 9 | # - cpu_usage 10 | # - cpu_temp 11 | # - memory_percent_used 12 | # - network_tx 13 | # - network_rx -------------------------------------------------------------------------------- /home-assistant/sensors/scale.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | name: "Arek Weight" 3 | state_topic: "home/miscale/Arek/weight" 4 | value_template: "{{ value_json['Weight'] }}" 5 | unit_of_measurement: "kg" 6 | json_attributes_topic: "home/miscale/Arek/weight" 7 | icon: mdi:scale-bathroom 8 | 9 | - platform: mqtt 10 | name: "Arek BMI" 11 | state_topic: "home/miscale/Arek/weight" 12 | value_template: "{{ value_json['BMI'] }}" 13 | icon: mdi:human-pregnant 14 | 15 | - platform: mqtt 16 | name: "Ola Weight" 17 | state_topic: "home/miscale/Ola/weight" 18 | value_template: "{{ value_json['Weight'] }}" 19 | unit_of_measurement: "kg" 20 | json_attributes_topic: "home/miscale/Ola/weight" 21 | icon: mdi:scale-bathroom 22 | 23 | - platform: mqtt 24 | name: "Ola BMI" 25 | state_topic: "home/miscale/Ola/weight" 26 | value_template: "{{ value_json['BMI'] }}" 27 | icon: mdi:human-pregnant 28 | -------------------------------------------------------------------------------- /home-assistant/sensors/sonarr.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/sensors/sonarr.yaml -------------------------------------------------------------------------------- /home-assistant/sensors/spotify.yaml: -------------------------------------------------------------------------------- 1 | # - platform: spotify_cover_sensor 2 | # cache_path: '/config/spotify-token-cache.json' -------------------------------------------------------------------------------- /home-assistant/sensors/system.yaml: -------------------------------------------------------------------------------- 1 | - platform: uptime 2 | -------------------------------------------------------------------------------- /home-assistant/sensors/time.yaml: -------------------------------------------------------------------------------- 1 | - platform: time_date 2 | display_options: 3 | - 'time' 4 | - 'date' 5 | - 'date_time' 6 | - 'time_date' 7 | - 'time_utc' 8 | - 'beat' -------------------------------------------------------------------------------- /home-assistant/sensors/trackers.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | sensors: 3 | arek_last_update: 4 | value_template: '{{ states.device_tracker.arek.attributes.last_seen }}' 5 | ola_last_update: 6 | value_template: '{{ states.device_tracker.arek.attributes.last_seen }}' -------------------------------------------------------------------------------- /home-assistant/sensors/transit.yaml: -------------------------------------------------------------------------------- 1 | - platform: mmpk 2 | name: back_from_work_transit 3 | stop_id: 130 4 | direction: 'Wzgórza K.' 5 | 6 | - platform: mmpk 7 | name: to_work_transit 8 | stop_id: 2685 9 | direction: 'Bronowice Małe' -------------------------------------------------------------------------------- /home-assistant/sensors/vacuum.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | sensors: 3 | vacuum_status: 4 | friendly_name: "Vacuum - Status" 5 | value_template: "Status: {{ states.vacuum.main_vacuum.attributes.status }}" 6 | vacuum_battery: 7 | friendly_name: "Vacuum - Battery" 8 | value_template: "Battery: {{ states.vacuum.main_vacuum.attributes.battery_level }}" 9 | device_class: battery 10 | unit_of_measurement: '%' -------------------------------------------------------------------------------- /home-assistant/sensors/work.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | sensors: 3 | ordered_food: 4 | value_template: '{{ states.sensor.arek_jedzenie.attributes.meal }}' 5 | 6 | -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/aqua.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/aqua.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/blue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/blue.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/coral.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/coral.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/gray.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/green.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/green.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/orange.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/orange.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/pink.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/pink.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/purple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/purple.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/rose.jpg -------------------------------------------------------------------------------- /home-assistant/themes/caule-themes-pack-1/yellow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/themes/caule-themes-pack-1/yellow.jpg -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-battery-entity-row/battery-entity-row.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/lovelace-battery-entity-row/battery-entity-row.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-card-tools/card-tools.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/lovelace-card-tools/card-tools.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-card-tools/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | entry: './src/main.js', 5 | mode: 'production', 6 | output: { 7 | filename: 'card-tools.js', 8 | path: path.resolve(__dirname) 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-card-tools/webpack.config.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/lovelace-card-tools/webpack.config.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-layout-card/layout-card.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/lovelace-layout-card/layout-card.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-layout-card/rollup.config.js: -------------------------------------------------------------------------------- 1 | import nodeResolve from "@rollup/plugin-node-resolve"; 2 | import json from "@rollup/plugin-json"; 3 | import commonjs from "@rollup/plugin-commonjs"; 4 | import typescript from "rollup-plugin-typescript2"; 5 | import { terser } from "rollup-plugin-terser"; 6 | import babel from "@rollup/plugin-babel"; 7 | 8 | const dev = process.env.ROLLUP_WATCH; 9 | 10 | export default { 11 | input: "src/main.ts", 12 | output: { 13 | file: "layout-card.js", 14 | format: "es", 15 | }, 16 | plugins: [ 17 | nodeResolve(), 18 | commonjs(), 19 | json(), 20 | typescript(), 21 | babel({ 22 | exclude: "node_modules/**", 23 | }), 24 | !dev && terser({ format: { comments: false } }), 25 | ], 26 | }; 27 | -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-layout-card/rollup.config.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/lovelace-layout-card/rollup.config.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/lovelace-xiaomi-vacuum-map-card/xiaomi-vacuum-map-card.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/lovelace-xiaomi-vacuum-map-card/xiaomi-vacuum-map-card.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/mini-graph-card/mini-graph-card-bundle.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/mini-graph-card/mini-graph-card-bundle.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/mini-media-player/mini-media-player-bundle.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/mini-media-player/mini-media-player-bundle.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/weather-card/icons/weather_sagittarius.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Created with Sketch. 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /home-assistant/www/community/weather-card/weather-card-editor.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/weather-card/weather-card-editor.js.gz -------------------------------------------------------------------------------- /home-assistant/www/community/weather-card/weather-card.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/community/weather-card/weather-card.js.gz -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/air-purifier/idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/air-purifier/idle.png -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/air-purifier/standby.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/air-purifier/standby.gif -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/air-purifier/working.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/air-purifier/working.gif -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/linak-desk/table_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/linak-desk/table_bottom.png -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/linak-desk/table_middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/linak-desk/table_middle.png -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/linak-desk/table_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/linak-desk/table_top.png -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/thermostat-card/VERSION: -------------------------------------------------------------------------------- 1 | 0.1.1 -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/thermostat-card/changelog.md: -------------------------------------------------------------------------------- 1 | ## 0.1.1 2 | Fix #155 for increments being only .5 3 | 4 | ## 0.1.0 5 | Add ability to specify external sensor for ambient temperature 6 | 7 | ## 0.0.2 8 | Fix alignment on Firefox 9 | 10 | ## 0.0.1 11 | Initial release that supports versioning -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/vacuum/robot_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/vacuum/robot_bg.png -------------------------------------------------------------------------------- /home-assistant/www/custom-lovelace/vacuum/robot_bg_disable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom-lovelace/vacuum/robot_bg_disable.png -------------------------------------------------------------------------------- /home-assistant/www/custom_ui/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/custom_ui/.gitkeep -------------------------------------------------------------------------------- /home-assistant/www/food_off.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/food_off.gif -------------------------------------------------------------------------------- /home-assistant/www/food_on.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/food_on.gif -------------------------------------------------------------------------------- /home-assistant/www/icons/weather_icons/animated/weather_sagittarius.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Created with Sketch. 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /home-assistant/www/kiosk/kiosk.js: -------------------------------------------------------------------------------- 1 | const { ipcRenderer } = require('electron') 2 | class KioskApp { 3 | constructor() { 4 | const style = document.createElement('style'); 5 | style.type = 'text/css'; 6 | style.appendChild(document.createTextNode(` 7 | ::-webkit-scrollbar { 8 | display: none; 9 | } 10 | `)); 11 | 12 | document.body.appendChild(style); 13 | 14 | document.body.addEventListener('touchstart', function(e) { 15 | ipcRenderer.send('kiosk:wake'); 16 | }); 17 | ipcRenderer.send('kiosk:wake'); 18 | } 19 | } 20 | 21 | window.kioskApp = new KioskApp(); 22 | -------------------------------------------------------------------------------- /home-assistant/www/ping.txt: -------------------------------------------------------------------------------- 1 | kopytko 2 | -------------------------------------------------------------------------------- /home-assistant/www/presence/arek/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/presence/arek/away.png -------------------------------------------------------------------------------- /home-assistant/www/presence/arek/codesthq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/presence/arek/codesthq.png -------------------------------------------------------------------------------- /home-assistant/www/presence/arek/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/presence/arek/home.png -------------------------------------------------------------------------------- /home-assistant/www/presence/ola/away.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/presence/ola/away.png -------------------------------------------------------------------------------- /home-assistant/www/presence/ola/codesthq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/presence/ola/codesthq.png -------------------------------------------------------------------------------- /home-assistant/www/presence/ola/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/presence/ola/home.png -------------------------------------------------------------------------------- /home-assistant/www/wallpapers/afternoon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/wallpapers/afternoon.png -------------------------------------------------------------------------------- /home-assistant/www/wallpapers/evening.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/wallpapers/evening.png -------------------------------------------------------------------------------- /home-assistant/www/wallpapers/morning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/wallpapers/morning.png -------------------------------------------------------------------------------- /home-assistant/www/wallpapers/night.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/wallpapers/night.png -------------------------------------------------------------------------------- /home-assistant/www/working_off.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/working_off.gif -------------------------------------------------------------------------------- /home-assistant/www/working_on.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/home-assistant/www/working_on.gif -------------------------------------------------------------------------------- /home-assistant/zwave_device_config.yaml: -------------------------------------------------------------------------------- 1 | sensor.fibaro_system_fgrm223_roller_shutter_controller_3_energy: 2 | ignored: false 3 | polling_intensity: 10 4 | sensor.cover_power: 5 | ignored: false 6 | polling_intensity: 10 7 | cover.living_room: 8 | ignored: false 9 | polling_intensity: 10 10 | -------------------------------------------------------------------------------- /mosquitto/mosquitto.conf: -------------------------------------------------------------------------------- 1 | allow_anonymous false 2 | password_file /mosquitto/data/users.db 3 | 4 | persistence true 5 | persistence_location /mosquitto/data/ 6 | log_dest stdout 7 | log_dest file /mosquitto/log/mosquitto.log 8 | port 4105 9 | -------------------------------------------------------------------------------- /nextcloud/Upgrade.md: -------------------------------------------------------------------------------- 1 | docker exec -u 33 -it support_nextcloud_1 bash 2 | ./occ maintenance:mode --on 3 | ./occ upgrade 4 | ./occ maintenance:mode --off 5 | -------------------------------------------------------------------------------- /nextcloud/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | logfile=/var/log/supervisord/supervisord.log 4 | pidfile=/var/run/supervisord/supervisord.pid 5 | childlogdir=/var/log/supervisord/ 6 | logfile_maxbytes=50MB ; maximum size of logfile before rotation 7 | logfile_backups=10 ; number of backed up logfiles 8 | loglevel=error 9 | 10 | [program:php-fpm] 11 | stdout_logfile=/dev/stdout 12 | stdout_logfile_maxbytes=0 13 | stderr_logfile=/dev/stderr 14 | stderr_logfile_maxbytes=0 15 | command=php-fpm 16 | 17 | [program:cron] 18 | stdout_logfile=/dev/stdout 19 | stdout_logfile_maxbytes=0 20 | stderr_logfile=/dev/stderr 21 | stderr_logfile_maxbytes=0 22 | command=/cron.sh 23 | -------------------------------------------------------------------------------- /node-red/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nodered/node-red:latest-12 2 | 3 | USER root 4 | 5 | RUN apk update && apk add py3-setuptools ffmpeg 6 | RUN curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl 7 | RUN chmod a+rx /usr/local/bin/youtube-dl 8 | RUN youtube-dl --version 9 | USER node-red 10 | 11 | -------------------------------------------------------------------------------- /notes/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | 3 | ENV PROJECT_DIR=/data/src/ 4 | 5 | RUN DEBIAN_FRONTEND=noninteractive \ 6 | apt-get -y update && \ 7 | apt-get -y install git build-essential ruby-dev ruby-rails libz-dev libmysqlclient-dev curl tzdata && \ 8 | curl -sL https://deb.nodesource.com/setup_6.x | bash - && \ 9 | apt-get -y update && \ 10 | apt-get -y install nodejs && \ 11 | rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ 12 | apt-get autoremove -y && \ 13 | apt-get clean 14 | 15 | WORKDIR $PROJECT_DIR 16 | 17 | RUN git clone https://github.com/standardfile/ruby-server.git $PROJECT_DIR 18 | ADD entrypoint . 19 | RUN chmod +x entrypoint 20 | RUN bundle install 21 | RUN bundle exec rake assets:precompile 22 | 23 | EXPOSE 3000 24 | 25 | ENTRYPOINT [ "./docker/entrypoint" ] 26 | CMD [ "start" ] -------------------------------------------------------------------------------- /notes/entrypoint: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # $0 is a script name, 3 | # $1, $2, $3 etc are passed arguments 4 | # $1 is our command 5 | CMD=$1 6 | 7 | case "$CMD" in 8 | 'start' ) 9 | echo `pwd` 10 | rm -f /data/src/tmp/pids/server.pid 11 | bundle exec rails s -b 0.0.0.0 12 | ;; 13 | 14 | 'bootstrap' ) 15 | bundle exec rails db:create db:migrate 16 | ;; 17 | 18 | * ) 19 | # Run custom command. Thanks to this line we can still use 20 | # "docker run our_image /bin/bash" and it will work 21 | exec "$@" 22 | ;; 23 | esac -------------------------------------------------------------------------------- /orion/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | 3 | EXPOSE 5000 4 | 5 | RUN apt-get update && apt-get install \ 6 | -y --no-install-recommends curl libmysqlclient-dev python-dev python python-setuptools python-pip build-essential git ca-certificates 7 | 8 | 9 | RUN pip install setuptools --upgrade 10 | RUN git clone https://github.com/LINKIWI/orion-server.git /server 11 | 12 | WORKDIR /server 13 | 14 | RUN pip install -r requirements.txt 15 | RUN mkdir -p /etc/orion 16 | ADD config.json /etc/orion/config.json 17 | 18 | ENV PYTHONPATH /server 19 | ADD entrypoint.sh . 20 | ADD web/index.html . 21 | ADD web/main.js . 22 | RUN chmod +x ./entrypoint.sh 23 | CMD ["bash", "entrypoint.sh"] -------------------------------------------------------------------------------- /orion/config.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "database": { 3 | "host": "mysql", 4 | "port": 3306, 5 | "name": "orion", 6 | "user": "orion", 7 | "password": "super-secret-password" 8 | }, 9 | "redis": { 10 | "addr": "redis:6379" 11 | }, 12 | "frontend_url": "http://orion.example.com", 13 | "mapbox_access_token": "pk.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 14 | } -------------------------------------------------------------------------------- /orion/entrypoint.sh: -------------------------------------------------------------------------------- 1 | python -m SimpleHTTPServer 8080 & 2 | python orion/server.py -------------------------------------------------------------------------------- /panel/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SmartHouse", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "main.js", 6 | "scripts": { 7 | "start": "electron .", 8 | "dev": "electron . --dev" 9 | }, 10 | "repository": "https://github.com/electron/electron-quick-start", 11 | "keywords": [ 12 | "Electron", 13 | "quick", 14 | "start", 15 | "tutorial", 16 | "demo" 17 | ], 18 | "author": "GitHub", 19 | "license": "CC0-1.0", 20 | "devDependencies": { 21 | "electron": "^4.0.1" 22 | }, 23 | "dependencies": { 24 | "yargs": "^12.0.5" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /panel/renderer.js: -------------------------------------------------------------------------------- 1 | const { remote } = require('electron') 2 | const electron = require('electron'); 3 | 4 | async function waithForHa() { 5 | const host = remote.getCurrentWindow().argv.host 6 | try { 7 | const resp = await fetch(host) 8 | if (resp.ok) { 9 | window.location.href = host 10 | } else { 11 | setTimeout(waithForHa, 5000) 12 | } 13 | } catch (e) { 14 | setTimeout(waithForHa, 5000) 15 | } 16 | } 17 | 18 | document.addEventListener("DOMContentLoaded", () => { 19 | const webFrame = electron.webFrame; 20 | webFrame.setZoomLevel(1.0); 21 | webFrame.setVisualZoomLevelLimits(1, 1); 22 | webFrame.setLayoutZoomLevelLimits(0, 0); 23 | document.body.requestPointerLock(); 24 | waithForHa(); 25 | }) -------------------------------------------------------------------------------- /panel/wakeup.js: -------------------------------------------------------------------------------- 1 | const exec = require('child_process').exec; 2 | 3 | class WakeUp { 4 | constructor() { 5 | this.timeout = null 6 | } 7 | 8 | reset() { 9 | if (this.timeout != null) { 10 | clearTimeout(this.timeout); 11 | this.timeout = null; 12 | } 13 | this.timeout = setTimeout(() => this.screenOff(), 25 * 1000) 14 | } 15 | 16 | screenOff() { 17 | console.log("Screen off"); 18 | try { 19 | exec("xset -display :0.0 dpms force off", null); 20 | } catch(e) { 21 | console.error(e); 22 | } 23 | } 24 | 25 | screenOn() { 26 | console.log("Screen on"); 27 | try { 28 | exec("xset -display :0.0 dpms force on", null); 29 | } catch(e) { 30 | console.error(e); 31 | } 32 | } 33 | } 34 | 35 | module.exports = WakeUp -------------------------------------------------------------------------------- /postgresql/init-user-db.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL 5 | CREATE USER nextcloud WITH PASSWORD 'nextcloud'; 6 | CREATE DATABASE nextcloud; 7 | GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; 8 | EOSQL -------------------------------------------------------------------------------- /provision/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/provision/.gitkeep -------------------------------------------------------------------------------- /provision/install_roles.yml: -------------------------------------------------------------------------------- 1 | - src: geerlingguy.nginx 2 | - src: weareinteractive.ufw 3 | - src: nickjj.fail2ban 4 | - src: geerlingguy.certbot 5 | - src: geerlingguy.nodejs 6 | - src: petermosmans.customize-gnome 7 | - src: brianhartsock.netatalk 8 | - src: oefenweb.postfix 9 | - src: mikolak-net.raspi_config 10 | - src: elboletaire.transmission 11 | - src: aeimer.install_bat -------------------------------------------------------------------------------- /provision/inventory.ini.example: -------------------------------------------------------------------------------- 1 | [master] 2 | 127.0.0.1 ansible_connection=ssh ansible_user=vagrant ansible_port=2222 3 | 4 | [panel] 5 | 127.0.0.1 ansible_connection=ssh ansible_user=vagrant ansible_port=2222 6 | 7 | [gateway] 8 | 127.0.0.1 ansible_connection=ssh ansible_user=vagrant ansible_port=2222 9 | 10 | [vacuum] 11 | 192.168.1.222 ansible_connection=ssh ansible_user=root ansible_port=22 12 | 13 | [cat_feeder] 14 | 192.168.1.222 ansible_connection=ssh ansible_user=root ansible_port=22 15 | 16 | [decibel_meter] 17 | 192.168.1.169 ansible_connection=ssh ansible_user=pi ansible_port=22 -------------------------------------------------------------------------------- /provision/inventory.vagrant.ini: -------------------------------------------------------------------------------- 1 | [master] 2 | 127.0.0.1 ansible_connection=ssh ansible_user=vagrant ansible_port=2222 3 | -------------------------------------------------------------------------------- /provision/playbooks/anarchopi/adguard/ads.conf.j2: -------------------------------------------------------------------------------- 1 | upstream adguard { 2 | server 192.168.1.157:80 fail_timeout=0; 3 | } 4 | 5 | server { 6 | listen 80; 7 | listen [::]:80; 8 | server_name {{ adguard_domain }}; 9 | return 301 https://$server_name$request_uri; 10 | } 11 | 12 | server { 13 | listen 443 ssl; 14 | ssl on; 15 | ssl_certificate /etc/letsencrypt/live/{{ adguard_domain }}/fullchain.pem; 16 | ssl_certificate_key /etc/letsencrypt/live/{{ adguard_domain }}/privkey.pem; 17 | server_name {{ adguard_domain }}; 18 | 19 | location / { 20 | allow 192.168.0.0/16; 21 | allow 10.0.0.0/16; 22 | deny all; 23 | proxy_pass http://adguard/; 24 | } 25 | 26 | error_page 404 403 @error; 27 | 28 | location @error { 29 | root /var/www; 30 | try_files /403.html /403.html; 31 | } 32 | 33 | client_max_body_size 50M; 34 | keepalive_timeout 10; 35 | } -------------------------------------------------------------------------------- /provision/playbooks/anarchopi/bin/unlock-hard-drive: -------------------------------------------------------------------------------- 1 | sudo cryptsetup luksOpen /dev/sda1 encrypted 2 | sudo mount -t ext4 /dev/mapper/encrypted /data 3 | sudo systemctl start transmission-daemon.service -------------------------------------------------------------------------------- /provision/playbooks/anarchopi/bitcoind/btc_explorer.conf.j2: -------------------------------------------------------------------------------- 1 | upstream btc_explorer { 2 | server 192.168.1.157:80 fail_timeout=0; 3 | } 4 | 5 | server { 6 | listen 80; 7 | listen [::]:80; 8 | server_name {{ btc_explorer_domain }}; 9 | 10 | location / { 11 | allow 192.168.0.0/16; 12 | allow 10.0.0.0/16; 13 | deny all; 14 | proxy_pass http://btc_explorer/; 15 | 16 | proxy_set_header Host $host; 17 | proxy_set_header X-Real-IP $remote_addr; 18 | proxy_http_version 1.1; 19 | proxy_set_header Upgrade $http_upgrade; 20 | proxy_set_header Connection "upgrade"; 21 | } 22 | 23 | error_page 404 403 @error; 24 | 25 | location @error { 26 | root /var/www; 27 | try_files /403.html /403.html; 28 | } 29 | 30 | client_max_body_size 50M; 31 | keepalive_timeout 10; 32 | } -------------------------------------------------------------------------------- /provision/playbooks/anarchopi/electrum/backup.j2: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | mkdir -p /data/backup/raspibolt 4 | rm /data/backup/raspibolt/bitcoin.tar 5 | tar cvf /data/backup/raspibolt/bitcoin.tar ~/.bitcoin/bitcoin.conf ~/.bitcoin/wallet.dat ~/.bitcoin/peers.dat ~/.bitcoin/banlist.dat 6 | rm /data/backup/raspibolt/lnd.tar 7 | tar cvf /data/backup/raspibolt/lnd.tar ~/.lnd/lnd.conf 8 | rm /data/backup/raspibolt/lnd_channels.json 9 | lncli exportchanbackup --all --output_file /data/backup/raspibolt/lnd_channels.json -------------------------------------------------------------------------------- /provision/playbooks/anarchopi/ipfs/ipfs.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=IPFS daemon 3 | Wants=network.target 4 | After=network.target 5 | [Service] 6 | User=ipfs 7 | Group=ipfs 8 | Type=simple 9 | Environment=IPFS_PATH=/mnt/hdd/ipfs 10 | ExecStart=/usr/local/bin/ipfs daemon --migrate 11 | ExecStop=/usr/bin/pkill -f ipfs 12 | Restart=on-failure 13 | RestartSec=10s 14 | [Install] 15 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/playbooks/anarchopi/torrents/torrents.conf.j2: -------------------------------------------------------------------------------- 1 | upstream torrents { 2 | server 192.168.1.200:9091 fail_timeout=5; 3 | } 4 | 5 | server { 6 | listen 80; 7 | listen [::]:80; 8 | server_name {{ torrents_domain }}; 9 | 10 | location / { 11 | allow 192.168.0.0/16; 12 | allow 10.0.0.0/16; 13 | deny all; 14 | proxy_pass http://torrents/; 15 | } 16 | 17 | error_page 404 403 @error; 18 | 19 | location @error { 20 | root /var/www; 21 | try_files /403.html /403.html; 22 | } 23 | 24 | client_max_body_size 50M; 25 | keepalive_timeout 10; 26 | } -------------------------------------------------------------------------------- /provision/playbooks/blog/blog.yaml: -------------------------------------------------------------------------------- 1 | # Nginx 2 | - hosts: master 3 | become: yes 4 | roles: 5 | - role: geerlingguy.nginx 6 | handlers: 7 | - name: restart nginx 8 | become: yes 9 | service: 10 | name: nginx 11 | enabled: yes 12 | state: restarted 13 | tasks: 14 | - name: Create /etc/nginx/sites-enabled/blog.conf 15 | template: 16 | src: blog.conf.j2 17 | dest: /etc/nginx/sites-enabled/blog.conf 18 | notify: 19 | - reload nginx 20 | - restart nginx -------------------------------------------------------------------------------- /provision/playbooks/cat_feeder/cat-motion.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Led Service 3 | After=network.target ntpdate.service 4 | 5 | [Service] 6 | Environment=PATH=/pussificator:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 7 | ExecStartPre=/bin/bash -c 'test -p /tmp/motion-status || /bin/mknod /tmp/motion-status p' 8 | ExecStart=/usr/bin/python3 -u src/motion.py > /tmp/watch_map.log 2>&1" 22 | - name: Reboot vacuum to start watch map in background 23 | reboot: 24 | -------------------------------------------------------------------------------- /provision/playbooks/vacuum/watch_map.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export TERM=xterm 3 | watch -n1 ./upload_map.sh -------------------------------------------------------------------------------- /provision/playbooks/youtube/youtube.yaml: -------------------------------------------------------------------------------- 1 | - hosts: master 2 | become: yes 3 | roles: 4 | - role: geerlingguy.certbot 5 | vars: 6 | certbot_auto_renew: false 7 | certbot_admin_email: "{{ email }}" 8 | certbot_create_if_missing: true 9 | certbot_certs: 10 | - domains: 11 | - "{{ youtube_domain }}" 12 | 13 | # Nginx 14 | - hosts: master 15 | become: yes 16 | roles: 17 | - role: geerlingguy.nginx 18 | handlers: 19 | - name: restart nginx 20 | become: yes 21 | service: 22 | name: nginx 23 | enabled: yes 24 | state: restarted 25 | tasks: 26 | - name: Create /etc/nginx/sites-enabled/youtube.conf 27 | template: 28 | src: youtube.conf.j2 29 | dest: /etc/nginx/sites-enabled/youtube.conf 30 | notify: 31 | - reload nginx 32 | - restart nginx -------------------------------------------------------------------------------- /provision/playbooks/ytd/ytd.conf.j2: -------------------------------------------------------------------------------- 1 | upstream ytd { 2 | server 127.0.0.1:7887 fail_timeout=0; 3 | } 4 | 5 | server { 6 | listen 80; 7 | listen [::]:80; 8 | server_name {{ ytd_domain }}; 9 | 10 | location / { 11 | allow 192.168.0.0/16; 12 | allow 10.0.0.0/16; 13 | deny all; 14 | proxy_pass http://ytd/; 15 | proxy_set_header Host $host; 16 | 17 | proxy_http_version 1.1; 18 | proxy_set_header Upgrade $http_upgrade; 19 | proxy_set_header Connection "upgrade"; 20 | 21 | proxy_set_header X-Real-IP $remote_addr; 22 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 23 | } 24 | 25 | error_page 404 403 @error; 26 | 27 | location @error { 28 | root /var/www; 29 | try_files /403.html /403.html; 30 | } 31 | 32 | client_max_body_size 50M; 33 | keepalive_timeout 10; 34 | } -------------------------------------------------------------------------------- /provision/playbooks/ytd/ytd.yaml: -------------------------------------------------------------------------------- 1 | 2 | # Nginx 3 | - hosts: master 4 | become: yes 5 | roles: 6 | - role: geerlingguy.nginx 7 | handlers: 8 | - name: restart nginx 9 | become: yes 10 | service: 11 | name: nginx 12 | enabled: yes 13 | state: restarted 14 | tasks: 15 | - name: Create /etc/nginx/sites-enabled/ytd.conf 16 | template: 17 | src: ytd.conf.j2 18 | dest: /etc/nginx/sites-enabled/ytd.conf 19 | notify: 20 | - reload nginx 21 | - restart nginx 22 | -------------------------------------------------------------------------------- /provision/playbooks/zwave/zwave.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | ConditionPathExists=/smart-house/.env.home-assistant 3 | Description=Smart House Support 4 | Requires=docker.service 5 | After=docker.service 6 | 7 | [Service] 8 | Environment=SMART_HOUSE_DIR=/smart-house 9 | Restart=always 10 | User=root 11 | StandardOutput=syslog 12 | StandardError=syslog 13 | 14 | ExecStart=/usr/bin/zsh -l -c "/usr/bin/smart-house zwave up" 15 | ExecStop=/usr/bin/zsh -l -c "/usr/bin/smart-house zwave down" 16 | 17 | [Install] 18 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/playbooks/zwave/zwave.yaml: -------------------------------------------------------------------------------- 1 | - hosts: master 2 | become: yes 3 | tasks: 4 | - name: Create zwave.service 5 | template: 6 | src: zwave.service.j2 7 | dest: /lib/systemd/system/zwave.service 8 | - name: Reload daemon 9 | systemd: 10 | daemon_reload: yes 11 | - name: Reload service zwave, in all cases 12 | systemd: 13 | name: zwave 14 | state: reloaded 15 | enabled: yes -------------------------------------------------------------------------------- /provision/templates/.env.local.j2: -------------------------------------------------------------------------------- 1 | {% for key, value in env.items() %} 2 | {{ key }}={{ value }} 3 | {% endfor %} -------------------------------------------------------------------------------- /provision/templates/etc/default/cloudflared.j2: -------------------------------------------------------------------------------- 1 | # Commandline args for cloudflared, generated by ansible 2 | CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query -------------------------------------------------------------------------------- /provision/templates/etc/dnsmasq.d/02-localhosts.conf.j2: -------------------------------------------------------------------------------- 1 | addn-hosts=/etc/pihole/lan.list -------------------------------------------------------------------------------- /provision/templates/etc/fail2ban/filter.d/ha.conf: -------------------------------------------------------------------------------- 1 | [INCLUDES] 2 | before = common.conf 3 | 4 | [Definition] 5 | failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from .*$ 6 | 7 | ignoreregex = 8 | 9 | [Init] 10 | datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S -------------------------------------------------------------------------------- /provision/templates/etc/fail2ban/filter.d/mosquitto-auth.conf: -------------------------------------------------------------------------------- 1 | [Definition] 2 | 3 | failregex = Client connection from failed 4 | ignoreregex = -------------------------------------------------------------------------------- /provision/templates/etc/fail2ban/filter.d/nginx-badbots.conf: -------------------------------------------------------------------------------- 1 | 2 | # Fail2Ban configuration file 3 | # 4 | # Regexp to catch known spambots and software alike. Please verify 5 | # that it is your intent to block IPs which were driven by 6 | # above mentioned bots. 7 | 8 | 9 | [Definition] 10 | 11 | badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider 12 | badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse$ 13 | 14 | failregex = ^ -.*"(GET|POST|HEAD).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$ 15 | 16 | ignoreregex = 17 | 18 | # DEV Notes: 19 | # List of bad bots fetched from http://www.user-agents.org 20 | # Generated on Thu Nov 7 14:23:35 PST 2013 by files/gen_badbots. 21 | # 22 | # Author: Yaroslav Halchenko 23 | 24 | -------------------------------------------------------------------------------- /provision/templates/etc/fail2ban/filter.d/nginx-forbidden.conf: -------------------------------------------------------------------------------- 1 | [Definition] 2 | failregex = ^ \[error\] \d+#\d+: .* forbidden .*, client: , .*$ 3 | ignoreregex = -------------------------------------------------------------------------------- /provision/templates/etc/fail2ban/filter.d/nginx-http-auth.conf: -------------------------------------------------------------------------------- 1 | # fail2ban filter configuration for nginx 2 | 3 | 4 | [Definition] 5 | 6 | 7 | failregex = ^ \[error\] \d+#\d+: \*\d+ user "\S+":? (password mismatch|was not found in ".*"), client: , server: \S*, request: "\S+ \S+ HTTP/\d+\.\d+",$ 8 | 9 | ignoreregex = 10 | 11 | # DEV NOTES: 12 | # Based on samples in https://github.com/fail2ban/fail2ban/pull/43/files 13 | # Extensive search of all nginx auth failures not done yet. 14 | # 15 | # Author: Daniel Black -------------------------------------------------------------------------------- /provision/templates/etc/fail2ban/filter.d/nginx-noscript.conf: -------------------------------------------------------------------------------- 1 | [Definition] 2 | 3 | failregex = ^ -.*GET.*(\.php|\.asp|\.exe|\.pl|\.cgi|\.scgi) 4 | 5 | ignoreregex = 6 | -------------------------------------------------------------------------------- /provision/templates/etc/nginx/sites-enabled/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/provision/templates/etc/nginx/sites-enabled/.gitkeep -------------------------------------------------------------------------------- /provision/templates/etc/nginx/sites-enabled/default.conf.j2: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | 4 | root /var/www/html; 5 | 6 | location ~ / { 7 | allow 192.168.0.0/24; 8 | allow 192.168.1.0/24; 9 | allow 10.0.0.0/24; 10 | allow 10.0.2.0/24; 11 | deny all; 12 | expires max; 13 | try_files /index.html =404; 14 | } 15 | 16 | error_page 403 https://www.youtube.com/watch?v=Ucmy0Yw141U; 17 | } -------------------------------------------------------------------------------- /provision/templates/etc/pihole/lan.list.j2: -------------------------------------------------------------------------------- 1 | {{ ansible_default_ipv4.address }} {{ domain }} 2 | {{ ansible_default_ipv4.address }} budget.{{ domain }} 3 | {{ ansible_default_ipv4.address }} {{ ipfs_domain }} 4 | {{ ansible_default_ipv4.address }} api-{{ ipfs_domain }} 5 | 192.168.1.181 mr-pickle.here -------------------------------------------------------------------------------- /provision/templates/etc/systemd/bt-mqtt-gateway.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Bluetooth MQTT gateway 3 | Documentation=https://github.com/zewelor/bt-mqtt-gateway 4 | After=network.target 5 | 6 | [Service] 7 | Type=simple 8 | WorkingDirectory=/home/pi/bt-mqtt-gateway 9 | ExecStart=/home/pi/bt-mqtt-gateway/gateway.py 10 | Restart=always 11 | 12 | [Install] 13 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/templates/etc/systemd/resolved.conf: -------------------------------------------------------------------------------- 1 | # This file is part of systemd. 2 | # 3 | # systemd is free software; you can redistribute it and/or modify it 4 | # under the terms of the GNU Lesser General Public License as published by 5 | # the Free Software Foundation; either version 2.1 of the License, or 6 | # (at your option) any later version. 7 | # 8 | # Entries in this file show the compile time defaults. 9 | # You can change settings by editing this file. 10 | # Defaults can be restored by simply deleting this file. 11 | # 12 | # See resolved.conf(5) for details 13 | 14 | [Resolve] 15 | DNS=192.168.1.157 16 | FallbackDNS=1.1.1.1 17 | #Domains= 18 | #LLMNR=no 19 | #MulticastDNS=no 20 | #DNSSEC=no 21 | Cache=no 22 | DNSStubListener=no 23 | 24 | 25 | -------------------------------------------------------------------------------- /provision/templates/home/pi/mqtt2rf/config.yaml.j2: -------------------------------------------------------------------------------- 1 | rf_switch: 2 | command_topic: 'home/rf_emitter/set' 3 | state_topic: 'home/rf_emitter' 4 | gpio: 3 5 | pulselength: 321 6 | protocol: 1 7 | 8 | mqtt: 9 | host: '{{ mqtt_host }}' 10 | port: {{ mqtt_port }} 11 | username: '{{ mqtt_username }}' 12 | password: '{{ mqtt_password }}' -------------------------------------------------------------------------------- /provision/templates/lib/systemd/system/cloudflared.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=cloudflared DNS over HTTPS proxy 3 | After=syslog.target network-online.target 4 | 5 | [Service] 6 | Type=simple 7 | User=cloudflared 8 | EnvironmentFile=/etc/default/cloudflared 9 | ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS 10 | Restart=on-failure 11 | RestartSec=10 12 | KillMode=process 13 | 14 | [Install] 15 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/templates/lib/systemd/system/health.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | ConditionPathExists=/smart-house/.env.home-assistant 3 | Description=Smart House Health stuff 4 | Requires=docker.service 5 | After=docker.service 6 | 7 | [Service] 8 | Environment=SMART_HOUSE_DIR=/smart-house 9 | Restart=always 10 | User=root 11 | StandardOutput=syslog 12 | StandardError=syslog 13 | 14 | ExecStart=/usr/bin/zsh -l -c "/usr/bin/smart-house health up" 15 | ExecStop=/usr/bin/zsh -l -c "/usr/bin/smart-house health down" 16 | 17 | [Install] 18 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/templates/lib/systemd/system/kiosk.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Kiosk UI 3 | ConditionPathExists=/smart-house/.env.home-assistant 4 | After=network.target 5 | 6 | [Service] 7 | Type=simple 8 | User={{ ansible_user }} 9 | Group={{ ansible_user }} 10 | LimitNOFILE=1024 11 | 12 | Restart=on-failure 13 | RestartSec=10 14 | Environment=DISPLAY=:0.0 15 | 16 | WorkingDirectory=/smart-house/ 17 | ExecStart=/usr/bin/zsh -l -c "source /home/{{ ansible_user }}/.zshrc && cd /smart-house/panel && npx electron . --host=https://{{ domain }} --production" 18 | 19 | PermissionsStartOnly=true 20 | StandardOutput=syslog 21 | StandardError=syslog 22 | SyslogIdentifier=panel 23 | 24 | [Install] 25 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/templates/lib/systemd/system/media.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | ConditionPathExists=/smart-house/.env.home-assistant 3 | Description=Smart House Media 4 | Requires=docker.service 5 | After=docker.service 6 | 7 | [Service] 8 | Environment=SMART_HOUSE_DIR=/smart-house 9 | Restart=always 10 | User=root 11 | StandardOutput=syslog 12 | StandardError=syslog 13 | 14 | ExecStart=/usr/bin/zsh -l -c "/usr/bin/smart-house media up" 15 | ExecStop=/usr/bin/zsh -l -c "/usr/bin/smart-house media down" 16 | 17 | [Install] 18 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/templates/lib/systemd/system/smart-house.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | ConditionPathExists=/smart-house/.env.home-assistant 3 | Description=Smart House 4 | Requires=docker.service 5 | After=docker.service 6 | 7 | [Service] 8 | Environment=SMART_HOUSE_DIR=/smart-house 9 | Restart=always 10 | User=root 11 | StandardOutput=syslog 12 | StandardError=syslog 13 | 14 | ExecStart=/usr/bin/zsh -l -c "/usr/bin/smart-house docker-compose up" 15 | ExecStop=/usr/bin/zsh -l -c "/usr/bin/smart-house docker-compose down" 16 | 17 | [Install] 18 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/templates/lib/systemd/system/support.service.j2: -------------------------------------------------------------------------------- 1 | [Unit] 2 | ConditionPathExists=/smart-house/.env.home-assistant 3 | Description=Smart House Support 4 | Requires=docker.service 5 | After=docker.service 6 | 7 | [Service] 8 | Environment=SMART_HOUSE_DIR=/smart-house 9 | Restart=always 10 | User=root 11 | StandardOutput=syslog 12 | StandardError=syslog 13 | 14 | ExecStart=/usr/bin/zsh -l -c "/usr/bin/smart-house support up" 15 | ExecStop=/usr/bin/zsh -l -c "/usr/bin/smart-house support down" 16 | 17 | [Install] 18 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /provision/templates/var/www/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dupa nie internet 5 | 6 | 7 |

Dupa nie internet!

8 | 9 | -------------------------------------------------------------------------------- /provision/vars.yml.example: -------------------------------------------------------------------------------- 1 | partition_size: '130G' 2 | encrypted_disk: /dev/sda3 3 | disk_password: 'admin1234' 4 | email: 5 | domain: 'test.local' 6 | ipfs_domain: 'ipfs.test.local' 7 | 8 | ipfs_peer_id: asda 9 | ipfs_private_key: '' 10 | ipfs_storage_max: 20GB 11 | ipfs_version: v0.4.21 12 | ipfs_http_api_listen_multiaddress: /ip4/0.0.0.0/tcp/5001 13 | ipfs_http_gateway_listen_multiaddress: /ip4/0.0.0.0/tcp/8080 -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | homeassistant 2 | requests 3 | Jinja2>=2.10.1 4 | ruamel.yaml==0.15.86 5 | mkdocs>=1.1 6 | mkdocs-material 7 | pygments 8 | pymdown-extensions -------------------------------------------------------------------------------- /tor/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:latest 2 | 3 | RUN apk update \ 4 | && apk upgrade \ 5 | && apk add tor \ 6 | && rm /var/cache/apk/* 7 | 8 | EXPOSE 9051 9 | ADD ./torrc /etc/tor/torrc 10 | 11 | RUN mkdir /data 12 | USER tor 13 | USER root 14 | RUN chown tor /data 15 | USER tor 16 | CMD /usr/bin/tor -f /etc/tor/torrc -------------------------------------------------------------------------------- /tor/torrc: -------------------------------------------------------------------------------- 1 | ControlPort 127.0.0.1:9051 2 | CookieAuthentication 1 3 | 4 | CookieAuthFileGroupReadable 1 5 | SOCKSPort 0.0.0.0:9050 6 | 7 | AvoidDiskWrites 1 8 | DataDirectory /data 9 | 10 | HiddenServiceDir /data/services/macbury.ninja/ 11 | HiddenServicePort 80 127.0.0.1:80 12 | 13 | HiddenServiceDir /data/services/electrs/ 14 | HiddenServiceVersion 3 15 | HiddenServicePort 50002 192.168.1.157:50002 16 | 17 | HiddenServiceDir /data/services/bitcoin/ 18 | HiddenServiceVersion 3 19 | HiddenServicePort 8333 192.168.1.157:8333 20 | -------------------------------------------------------------------------------- /vacuum/.gitignore: -------------------------------------------------------------------------------- 1 | public/**/*.png 2 | -------------------------------------------------------------------------------- /vacuum/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12.2.0-stretch 2 | 3 | RUN mkdir /app 4 | WORKDIR /app 5 | 6 | RUN apt-get update && apt-get install -y imagemagick build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev 7 | 8 | COPY ./package.json . 9 | COPY ./yarn.lock . 10 | 11 | RUN yarn 12 | 13 | COPY index.js . 14 | COPY map.js . 15 | 16 | RUN mkdir /app/public 17 | 18 | ENTRYPOINT [ "yarn", "start" ] -------------------------------------------------------------------------------- /vacuum/bin/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build . -t vacuum 3 | docker run -t vacuum -p 3000:3000 -------------------------------------------------------------------------------- /vacuum/bin/run: -------------------------------------------------------------------------------- 1 | docker run -p 3000:3000 --rm -t vacuum -------------------------------------------------------------------------------- /vacuum/bin/upload: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | curl -X POST -F map=@./fixtures/map.ppm -F log=@./fixtures/SLAM_fprintf.log http://0.0.0.0:3000/map 4 | -------------------------------------------------------------------------------- /vacuum/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | const multipart = require('connect-multiparty')(); 4 | const port = 3000 5 | const process = require('./map') 6 | 7 | const outputPath = __dirname + '/public/map' 8 | 9 | app.use(express.static('public')) 10 | 11 | app.post('/map', multipart, async function (req, res) { 12 | const { log, map } = req.files 13 | console.log("Processing: ", [map.path, log.path]) 14 | await process(map.path, log.path, outputPath) 15 | res.send({ success: true }) 16 | }) 17 | 18 | app.listen(port, '0.0.0.0', () => console.log(`Example app listening 0.0.0.0 on port ${port}!`)) -------------------------------------------------------------------------------- /vacuum/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "node index.js" 4 | }, 5 | "dependencies": { 6 | "canvas": "^2.5.0", 7 | "connect-multiparty": "^2.2.0", 8 | "express": "^4.17.0" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /vacuum/public/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macbury/SmartHouse/796afdf7552c7798fc6a2a238537a36fa1073efe/vacuum/public/.gitkeep -------------------------------------------------------------------------------- /youtube/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM archlinux/base 2 | 3 | RUN pacman -Sy --noconfirm shards crystal imagemagick librsvg \ 4 | which pkgconf gcc ttf-liberation && \ 5 | git clone https://github.com/omarroth/invidious 6 | 7 | WORKDIR /invidious 8 | 9 | RUN shards && \ 10 | crystal build src/invidious.cr 11 | 12 | EXPOSE 3000 13 | 14 | CMD [ "/invidious/invidious" ] -------------------------------------------------------------------------------- /zwave/docker-entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ -z "$1" ]; then 5 | if [ ! -c "$USB_PATH" ]; then 6 | echo "USB path \"$USB_PATH\" does not exist or is not a character device" 7 | exit 1 8 | fi 9 | 10 | if [ -n "$NETWORK_KEY" ]; then 11 | echo "NETWORK_KEY is deprecated, use S0_LEGACY_KEY instead" 12 | fi 13 | 14 | set -- zwave-server --config options.js "$USB_PATH" 15 | echo "Starting zwave-server:" "$@" 16 | elif [ "$1" = "server" ]; then 17 | shift 18 | set -- zwave-server "$@" 19 | elif [ "$1" = "client" ]; then 20 | shift 21 | set -- zwave-client "$@" 22 | fi 23 | 24 | exec "$@" 25 | --------------------------------------------------------------------------------