Big restructuring - repo is now a full home assistant config directory

This commit is contained in:
Martin Bauer 2019-06-30 19:37:32 +02:00
parent d35b9e132e
commit 808727ad92
79 changed files with 14378 additions and 27 deletions

1
.HA_VERSION Normal file
View File

@ -0,0 +1 @@
0.94.3

11
.gitignore vendored Normal file
View File

@ -0,0 +1,11 @@
__pycache__
*.pyc
node_modules
/tts
/deps
/home-assistant.log
# Generated files
/groups.yaml
/configuration.yaml
/home-assistant_v2.db

382
.storage/auth Normal file
View File

@ -0,0 +1,382 @@
{
"data": {
"credentials": [
{
"auth_provider_id": null,
"auth_provider_type": "homeassistant",
"data": {
"username": "martin"
},
"id": "bfdbc07398af4dd5ab5a22d963ec3afa",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"auth_provider_id": null,
"auth_provider_type": "homeassistant",
"data": {
"username": "rebecca"
},
"id": "cf2a56609dd345f4b21901822fb8f88b",
"user_id": "bd0f10a32b324e85998881cb5b748d0f"
}
],
"groups": [
{
"id": "system-admin",
"name": "Administrators"
},
{
"id": "system-users",
"name": "Users"
},
{
"id": "system-read-only",
"name": "Read Only"
}
],
"refresh_tokens": [
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://127.0.0.1:8123/",
"client_name": null,
"created_at": "2019-05-27T19:02:46.741963+00:00",
"id": "418cd23f4af34b64b97a3a29f77173d3",
"jwt_key": "f2895be51bd7039326b73f70ae40b9a2f72fa4b4c4869bdab7ec5d2ad0fbde7ede4de98606c63480b9f7d69a244039ff6c23a271b5bd093207e0ce0528c2ce0c",
"last_used_at": "2019-06-29T09:25:42.288312+00:00",
"last_used_ip": "127.0.0.1",
"token": "f30618fff4b38cc6097580e074537fd8208cccf9e3437ccb04a93f22ec568b73e29cca037090bb8d52c8a2f65c2ab6e65a38c0638442daa34a7b09b9317db205",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-05-28T15:35:23.340043+00:00",
"id": "e06d1f28c5be4f95b091bb621c5f079a",
"jwt_key": "92c2eb6bfccc48b1f3bc075fa1b19fb5196ea3ed8ff154ea3581f19a43cbfcef52bc3b1b0dcd5c19bde77dfd420e0865661388bf57478dd618dff1af138a52b1",
"last_used_at": "2019-05-28T16:42:18.590142+00:00",
"last_used_ip": "192.168.178.71",
"token": "15efebd9f67c79195cf56d502320c1d134f8fbf1116588c19e30424be9576d9013ff12355f889865c83100f3860e8f3a018b7ffc1a8f92163101794258879e65",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "https://home-assistant.io/iOS",
"client_name": null,
"created_at": "2019-05-28T15:36:44.634951+00:00",
"id": "952866338b694f5b806eb4cdb8fd19f4",
"jwt_key": "fb1989218b2d6690fc17636866615d04f53352c179ded55cfc4d7d509c1c8354b17088f51a016b14e9b851a6faae274bf0f83fb7049bd0707c435f23113f3316",
"last_used_at": "2019-06-25T19:58:03.380113+00:00",
"last_used_ip": "192.168.178.71",
"token": "5f7f4f3e8063e4e74570095749ec752bc1b74b26f6e4c20d0fe219753339e9d5ac44e2582d02257a9e2dc9116a79f668350bbad81dabd21ff52b08a109a2f5d8",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-05-30T19:47:41.264217+00:00",
"id": "5fb33c5c914e46179afba4c24ac97558",
"jwt_key": "8af71560528dd3319d5d94e3d2840b0349c31094f0b7b6c2d057784930c088ea9a229c4726501c553903e4bc804b89c95e8a6c52ee2ebe9d66520beef47ff55f",
"last_used_at": "2019-05-30T19:47:41.264337+00:00",
"last_used_ip": "192.168.178.26",
"token": "1fe62d7c3b0c0b77c06ce9c5cf6b9959c3bb447acf80fe39a92fed4425ed4b96e2dc4801994e0b40e0880e777078a963118f5e8db6a32e1dcfa847844db59a45",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-05-30T19:48:26.826095+00:00",
"id": "8cb189b347454918bfba81b565cc866c",
"jwt_key": "52781eef5968c6c8af48e2d303d70d6a02f58c952197621a75e0913139ef99a87783dbdd468d4aacf3d69dbd61fbf7edc32cfa8fdb5de6079bcad269b0cd8b4d",
"last_used_at": "2019-06-23T15:29:51.079676+00:00",
"last_used_ip": "192.168.178.26",
"token": "7bd6806e815fd0513e4d6ca1e0d0f7d12f0f2c33f681e350bab7d4aede736a10c42e51ff0a65c354e53dbf952adaa76c0ab270861ac533b0169cef9fd9ca7cbf",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-02T07:53:10.504505+00:00",
"id": "8d42460083534a52872490e8aa1ce762",
"jwt_key": "142a6502020613015c72f26c5bf0e2ad076a82e7e4ca65f81f041e6143f997e097193d3c701924fbd3a90cc5a83e499dcf0698920b3af67b105f84be5d07bcfc",
"last_used_at": "2019-06-02T07:53:10.504538+00:00",
"last_used_ip": "127.0.0.1",
"token": "6790601cbb355047c024861dfd623e6fbcc3949b5b180004f087236956c1cd9a5194c9c237f10f47edb4a580074f9ec67f745bb7fe80f23ab444b14dd63e72cf",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-02T07:53:21.581669+00:00",
"id": "66a812872e53493bb6379d52b444b9b3",
"jwt_key": "9ce6925879285ae3df55adab6393b920f2efdceb70230f5bd68d0ceb61aed0569cb15fe76ce29c464d7482ba2feb83599827aa97668c13ce5fd8093d73058449",
"last_used_at": "2019-06-02T07:53:21.581718+00:00",
"last_used_ip": "127.0.0.1",
"token": "4c7eeec023c638618428910ded60ea76a65b26884333cea8fa0e26214318c2bc774f13b9a529acd51b4928fbaa53f057a3ea423c5cc31380b77017e3de0dc22f",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-02T07:53:39.475361+00:00",
"id": "816f5b08e5bc4fc38966d8860fd02af5",
"jwt_key": "b44c116363459b62a4a074b6e0a01baf7d9a11cdc34e9d3ad00deab5a1b6d2a0f81e8345bb435927293023e67fc025d96dd02220b958f5bb2baea5685afb7a8c",
"last_used_at": "2019-06-21T20:54:45.172131+00:00",
"last_used_ip": "127.0.0.1",
"token": "a8333cb289caeec32cf521f956256ccac742be3ba7dee183fd944b9ee436eb6f299476f3c0da1435cd71645562fcac88ad6712aa05f58f94883ac24e25f95408",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-10T18:23:39.797928+00:00",
"id": "d7c61c651390436595378b558cdd00fb",
"jwt_key": "3daefcca586668c12484a7f2372fac260b837710dc9a298d1e6adc1a928364c47b295b3a2b5410f007ade8823296f93cf750798f205ebb3f3bce18eaffbfa128",
"last_used_at": "2019-06-25T20:25:26.226441+00:00",
"last_used_ip": "127.0.0.1",
"token": "7a9c065397dc0e80d14827855e98f4b1e8a58c78a6679a02e205aeb693663ce55ff64c379e7ed5d1998dc84114ef4ec2d5e905ccb8f2c749ceb86d5c01bc15dc",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-10T18:36:25.543964+00:00",
"id": "445c2a89a2ac4261ab24a4fe8ba97cb1",
"jwt_key": "e113309271143f16540f1b0d47d21d68785a99db8c89bc0dbb46daf26914386c512470576657fe2135ab79f04c40255750003575ec66567f6c6a0187db73601c",
"last_used_at": "2019-06-10T18:36:25.543997+00:00",
"last_used_ip": "127.0.0.1",
"token": "16c3cb3c248e46c42c8a32a020fbe39b48244361dd8bb544f55ed0429a12772f30bf7460b2ffce06639b22ffe04b39ac4e0800ef33b3ecdc4d0745f059db3b00",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-10T18:36:32.488003+00:00",
"id": "2662aa32a38d488c9b17a6a648937083",
"jwt_key": "4575e54c08bb609d56fc92f4fb3e18ef59e369f0860663dd7bd5f487608037903ce53b303318650cb745d5f0c0657203a76181e3855e664cc6cc5f88a15b92f7",
"last_used_at": "2019-06-10T18:36:32.488044+00:00",
"last_used_ip": "127.0.0.1",
"token": "a1f81dc903f74baa7aa4a2c2b8d847239736051ae2b726da1139cede581a35d2b69a01251f7e79c95e2a4e3e9b59eb77a7a2b1dd8965cff6c8e083eddebbb04b",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-10T18:38:00.450713+00:00",
"id": "f6ad12d5d53b44ea89b3e048d41ec969",
"jwt_key": "9927b73ea3aae2ad9628013112c24a0a2b6ae2d19b88aa55bb490f36c2672333730763740cafb528fb22bd4aac6f09058f2303a98f0faf91fe626cc0809f87c7",
"last_used_at": "2019-06-10T18:38:00.450763+00:00",
"last_used_ip": "127.0.0.1",
"token": "b9cfb77552494713b7a75f61c12d43823ad200e71fe7e08d7c46ba713d1e96d496fad5ee73b0ea4feeaf3343b3b123241454decbfcbed275be4113e94178a235",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://localhost:8123/",
"client_name": null,
"created_at": "2019-06-10T19:19:55.553688+00:00",
"id": "336df0eeb119476888c21351266dd32f",
"jwt_key": "73748dd9c463fa06eab7755c9d504589892f6f584a0a7fc009c89603c3abae58cb08efe9550c0a6b200b361a6048454ed3944388943b10922330e6a51bb8a185",
"last_used_at": "2019-06-10T19:54:53.567287+00:00",
"last_used_ip": "127.0.0.1",
"token": "9feb05596b0895cba8c7ccc1114782671e5dbbb568b8112d08d4277aac3c681a52c05f2a1fe2386799f843632e456c4552fbb323162ff6c74080baf209985939",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-06-11T17:03:45.983486+00:00",
"id": "bba6b214c827445884e453c016d33347",
"jwt_key": "ac75fb70026db7ac0df2a996d2244e4f934edb2512198ae5de8a0eb665b83cab99f5aa5940b64ed1d1454818a6bf96c99ee28651cfdcc3f0f7de733923c13a04",
"last_used_at": "2019-06-11T17:03:45.983528+00:00",
"last_used_ip": "192.168.178.71",
"token": "88e8ab38935b67ed202db9136ce65e9049881eceef52869da010627e8cdbd8987015bc3a38c763f48887e556cccaffabb84eec2ed005faa977fccce6c877f290",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 315360000.0,
"client_icon": null,
"client_id": null,
"client_name": "token_for_scenegen",
"created_at": "2019-06-19T18:52:52.367311+00:00",
"id": "986f34ebd26a4096b55e7b43825e151f",
"jwt_key": "a90fa2bacec94c21f80e005d8cdeda18c3f58ac9c2c705cd1723941accfe00abf7144d182e7a6da6d8e37c43416392af8883f5aad62d25678672e420f8579f84",
"last_used_at": "2019-06-19T18:52:52.367373+00:00",
"last_used_ip": null,
"token": "e3827d577b1abf292c5b6ac4c1e205be843d68a047c378d43f528166730c01fa7592ec95a9b36e1bbc30c208a1b21bf7d44074014b3488e1e0c3773838586a5d",
"token_type": "long_lived_access_token",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "https://home-assistant.io/iOS",
"client_name": null,
"created_at": "2019-06-22T13:47:29.603532+00:00",
"id": "5041ccc15e174888ae4a97e53b11aa76",
"jwt_key": "ca201b3af1badc52fcce3330da09e8a2124abe04209914d9511626de2b043a8ff5977e77f0f95407018f71e16e2cf18ee4f5fbd3ec53d9201487c14de274ad55",
"last_used_at": "2019-06-22T13:47:29.603660+00:00",
"last_used_ip": "192.168.178.66",
"token": "309e78646a728b8b7188bdc8c3f41bf70b174ced932fc59df9143cccd9ff3cccc687df6129207d296e77b603c8ffcf06ac792ca979173a853d8327b341165c57",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://192.168.178.73:8123/",
"client_name": null,
"created_at": "2019-06-22T13:48:13.201279+00:00",
"id": "79616563c0a642349b5abb621a703095",
"jwt_key": "4f2ec2f9b727faad4babcd510705137dd7723ce3140fe8889d10ffd2f59ef65a5439d761fd9ce6601f2893917939cda09b1f70c45ab0c1e5f742312af64cbf3b",
"last_used_at": "2019-06-22T13:48:13.201311+00:00",
"last_used_ip": "192.168.178.66",
"token": "1fd93a0b42c43727a19c6e1715ef2022981a41531080722bff2974658a8d2232c9e414a6f28d4fcf1c6e4755f964090300505bb41140dc9111224298cacd77d1",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-06-22T13:53:13.333135+00:00",
"id": "a81a5856855a4a20a274cfe1ae526249",
"jwt_key": "d19bdced4b2b17ebfef3bda9c117b7868482a872ec76923fbe2bf80592fc162bfd006f0121daeb3142b7c63e7272d6e58fd5c9620fed773f2bad55d0aa51fc3b",
"last_used_at": "2019-06-24T19:17:49.501214+00:00",
"last_used_ip": "192.168.178.66",
"token": "6f92732839be6db6199912453b3714663c97fd8f6f5454f58eb975b48022c41864663b1c796bba6d714b76c39622fcf36dd57af525bc4dfe537e9424a766405c",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-06-22T13:59:11.445590+00:00",
"id": "6ec98438997247fc88fc97835062bed7",
"jwt_key": "2bf3f88e3dd714c3d745431568ab33b79b16fce8fefba17263caeb9f6a1c0d105e8e9f0df14390d3321acea83d41656f192eb7378d5846ffb319e4f20b4c947e",
"last_used_at": "2019-06-24T19:17:17.090408+00:00",
"last_used_ip": "192.168.178.66",
"token": "e780422a18ba897e2d00858f12b89cdc64f6ec33dd5fadf737ccd2488c0d122af6aed0573224ff2688e94d5871a4b41d330152d80c1e85a70163c47e6a275cc5",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-06-24T19:19:11.406866+00:00",
"id": "6689ab234cf9444c9337b2a273c8f00f",
"jwt_key": "2c64be6971dfc53967aeae6e9eb80c2d8cbdee1066de18fa67e5b94d253afeeda0d2d9a0c213e1dc9a349414382f8fcbebea8825208eaebb757682013a20bc28",
"last_used_at": "2019-06-25T20:26:27.502979+00:00",
"last_used_ip": "192.168.178.66",
"token": "5f13627b42b67f09f24db41d9badab3f07005329bd2adf9063e54c942f05ee70f65e1003748d5d50b8184a8469fa009c0a8006acd6e93d77546e820eda2576a0",
"token_type": "normal",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-06-20T22:33:56.538680+00:00",
"id": "d4d17dd9a19946bb994f904d08af346a",
"jwt_key": "c8063bf412e7711ef2d80dfefb82071c4f75c29594cf3a2e62b487947b249f76f879e89e1a6b44475d58f236434f5b887e1439b90bfaf279105eef9ce599c0f1",
"last_used_at": "2019-06-20T22:33:56.538810+00:00",
"last_used_ip": "192.168.178.48",
"token": "03b839e622f5c40210bda91cdb2e491e2f30be404110ccdeb00e8b6e59ed6a8fec14fec1befee7c3dc13c955239df278b4c392db2d6a3bcf6b78db4a1d597ad0",
"token_type": "normal",
"user_id": "bd0f10a32b324e85998881cb5b748d0f"
},
{
"access_token_expiration": 1800.0,
"client_icon": null,
"client_id": "http://martin-desktop-linux:8123/",
"client_name": null,
"created_at": "2019-06-20T22:34:38.409654+00:00",
"id": "676954b1ddd64935a3ac0e88bf831947",
"jwt_key": "53efc6629ab6d7a8536c8d6a26c5d058ce0658b5568004977b162359dadb392f3bdca36eaa225cec980c1973db5e3e99778f31d2c6fa334c8a403a321079b982",
"last_used_at": "2019-06-21T12:03:42.352349+00:00",
"last_used_ip": "192.168.178.48",
"token": "3453228edae484bc436ba6f41a22fcb46973d8957ac67691ff662d5feab135bcf2b8d7b574e34386b241c9239e7cb1aa8f4aa6089cece5cb24f0491fdf63922d",
"token_type": "normal",
"user_id": "bd0f10a32b324e85998881cb5b748d0f"
}
],
"users": [
{
"group_ids": [
"system-admin"
],
"id": "49b3e2aefcd040ac82f4c1419db619eb",
"is_active": true,
"is_owner": false,
"name": "Home Assistant Cloud",
"system_generated": true
},
{
"group_ids": [
"system-admin"
],
"id": "2ffcb10d3db745b396789364fdef72ec",
"is_active": true,
"is_owner": true,
"name": "Martin Bauer",
"system_generated": false
},
{
"group_ids": [
"system-users"
],
"id": "bd0f10a32b324e85998881cb5b748d0f",
"is_active": true,
"is_owner": false,
"name": "Rebecca Bauer",
"system_generated": false
}
]
},
"key": "auth",
"version": 1
}

View File

@ -0,0 +1,16 @@
{
"data": {
"users": [
{
"password": "JDJiJDEyJGs1YjlscVNTbW9XdEt5N1R1ZzVXSi4xajFab0cycG5RYlUvMEEzS3VjOVkzYmJma2g2RUpT",
"username": "martin"
},
{
"password": "JDJiJDEyJGpMMW5WR3BiSWJwajdSOWxrWG9qZ3VoM1hTMDdOdC5DY2FlVlFmZGE2QkhRVmRVQURadURX",
"username": "rebecca"
}
]
},
"key": "auth_provider.homeassistant",
"version": 1
}

12
.storage/cloud Normal file
View File

@ -0,0 +1,12 @@
{
"data": {
"alexa_enabled": true,
"cloud_user": "49b3e2aefcd040ac82f4c1419db619eb",
"cloudhooks": {},
"google_enabled": true,
"google_secure_devices_pin": null,
"remote_enabled": false
},
"key": "cloud",
"version": 1
}

View File

@ -0,0 +1,20 @@
{
"data": {
"areas": [
{
"id": "46ebd507f8f348508653f61054f67eb0",
"name": "Arbeitszimmer Martin"
},
{
"id": "93728f2df4d94517803b87de4d4028bb",
"name": "Wohnbereich"
},
{
"id": "e58ae8bf5c7847af89a727d7949016f0",
"name": "K\u00fcche"
}
]
},
"key": "core.area_registry",
"version": 1
}

12
.storage/core.config Normal file
View File

@ -0,0 +1,12 @@
{
"data": {
"elevation": 368,
"latitude": 49.369477,
"location_name": "Home",
"longitude": 10.9831468,
"time_zone": "Europe/Berlin",
"unit_system": "metric"
},
"key": "core.config",
"version": 1
}

View File

@ -0,0 +1,34 @@
{
"data": {
"entries": [
{
"connection_class": "local_poll",
"data": {
"bridge_id": "001788FFFE284411",
"host": "192.168.178.20",
"username": "dElg-A-1TtbLThgrsNxEn5FoBcB9pUFSA7JDGXls"
},
"domain": "hue",
"entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"options": {},
"source": "discovery",
"title": "Philips hue",
"version": 1
},
{
"connection_class": "local_poll",
"data": {
"udn": "uuid:75802409-bccb-40e7-8e6c-3431C416294A"
},
"domain": "upnp",
"entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"options": {},
"source": "discovery",
"title": "UPnP/IGD",
"version": 1
}
]
},
"key": "core.config_entries",
"version": 1
}

View File

@ -0,0 +1,518 @@
{
"data": {
"devices": [
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [
[
"mac",
"00:17:88:28:44:11"
]
],
"hub_device_id": null,
"id": "8e09114c26574165a8f8fa43ff0c5395",
"identifiers": [
[
"hue",
"001788FFFE284411"
]
],
"manufacturer": "Signify",
"model": "BSB002",
"name": "Philips hue",
"name_by_user": null,
"sw_version": "1932126170"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "31d95a5c59b24732934b4bcde46654a7",
"identifiers": [
[
"hue",
"00:17:88:01:00:cd:c7:fe-0b"
]
],
"manufacturer": "Philips",
"model": "Hue lightstrip",
"name": "Wohnzimmer Regal rechts",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "1dbec2bfe7594794a516405b1a164027",
"identifiers": [
[
"hue",
"00:17:88:01:10:4e:75:a8-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Wohnzimmer Stehlampe Oben",
"name_by_user": null,
"sw_version": "5.127.1.26420"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "00429941ced6498495803f7e1ae65d55",
"identifiers": [
[
"hue",
"00:17:88:01:00:cd:c7:fa-0b"
]
],
"manufacturer": "Philips",
"model": "Hue lightstrip",
"name": "Wohnzimmer Regal links",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": "46ebd507f8f348508653f61054f67eb0",
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "00e0dc89c87240699d1286fb79bcc877",
"identifiers": [
[
"hue",
"00:17:88:01:02:07:a2:e7-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Arbeitszimmer Martin Oben",
"name_by_user": null,
"sw_version": "5.127.1.26420"
},
{
"area_id": "e58ae8bf5c7847af89a727d7949016f0",
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "da7bdf516f614f8fa75f6f611a8cef3c",
"identifiers": [
[
"hue",
"00:17:88:01:00:cb:8b:3d-0b"
]
],
"manufacturer": "Philips",
"model": "Hue lightstrip",
"name": "K\u00fcche links",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "27e519bd18974605b39e17156f903a94",
"identifiers": [
[
"hue",
"00:17:88:01:00:b5:63:66-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Arbeitszimmer Rebecca",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": "46ebd507f8f348508653f61054f67eb0",
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "42fcf3d4fab243d3b3535b88da5520cb",
"identifiers": [
[
"hue",
"00:17:88:01:02:07:a1:f7-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Arbeitszimmer Martin Unten",
"name_by_user": null,
"sw_version": "5.127.1.26420"
},
{
"area_id": "e58ae8bf5c7847af89a727d7949016f0",
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "d285533d588c4dd98cb2184cd299b882",
"identifiers": [
[
"hue",
"00:17:88:01:00:cb:65:3c-0b"
]
],
"manufacturer": "Philips",
"model": "Hue lightstrip",
"name": "K\u00fcche rechts",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "77b2e3e9e127481d8b508f8952c08762",
"identifiers": [
[
"hue",
"00:17:88:01:00:b5:39:23-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Wohnzimmer Stehlampe",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "075d6edf32bb4d6e9c564101a3b253ca",
"identifiers": [
[
"hue",
"00:17:88:01:02:0a:26:cc-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Lampe ErsterStock",
"name_by_user": null,
"sw_version": "5.105.0.21536"
},
{
"area_id": "e58ae8bf5c7847af89a727d7949016f0",
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "4c3bbd2722774287bef53f0eae996c43",
"identifiers": [
[
"hue",
"00:17:88:01:01:1b:4f:25-0b"
]
],
"manufacturer": "Philips",
"model": "Hue lightstrip plus",
"name": "K\u00fcche vorne",
"name_by_user": null,
"sw_version": "5.127.1.26420"
},
{
"area_id": "46ebd507f8f348508653f61054f67eb0",
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "ed71ab3618e04b26b65c561c48b12704",
"identifiers": [
[
"hue",
"00:17:88:01:10:37:b3:58-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Arbeitszimmer Martin",
"name_by_user": null,
"sw_version": "5.127.1.26420"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "c5d6ba59208e4f05a7f8e573f7372316",
"identifiers": [
[
"hue",
"00:12:4b:00:02:5f:c0:44-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Wohnzimmer Kugel",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "973ccf8026ed4dec8ac55c0c646dafbd",
"identifiers": [
[
"hue",
"00:17:88:01:10:4e:5e:ff-0b"
]
],
"manufacturer": "Philips",
"model": "Hue color lamp",
"name": "Schlafzimmer",
"name_by_user": null,
"sw_version": "5.127.1.26420"
},
{
"area_id": null,
"config_entries": [
"e0ebcf51d57b4df4baaf36894d59979d"
],
"connections": [],
"hub_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"id": "80f3a81098d345c5a848625f7c7f934f",
"identifiers": [
[
"hue",
"00:17:88:01:00:cb:65:11-0b"
]
],
"manufacturer": "Philips",
"model": "Hue lightstrip",
"name": "Gang Bogen",
"name_by_user": null,
"sw_version": "5.127.1.26581"
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A"
]
],
"hub_device_id": null,
"id": "51f4012aed0b4093b353cdc851755281",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "cff99cfa5ca84b24ba4ff1883f08e02b",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets/sec_received"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 packets/sec received",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "8e45736652404feda92084feb86a5745",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets_received"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 packets received",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "7df169040686480db2b1ad5979037e80",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets_sent"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 packets sent",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "dd9403c58f084442b1606fe616b3cfb7",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_kbyte/sec_received"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 kbyte/sec received",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "aa4821c78db245ef90119b9af6fd97bc",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_bytes_received"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 bytes received",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "620ada4df9fc493ca53677a979768dee",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets/sec_sent"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 packets/sec sent",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "2d0e7717b4194ecca91589bd83bef38c",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_bytes_sent"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 bytes sent",
"name_by_user": null,
"sw_version": null
},
{
"area_id": null,
"config_entries": [
"c4adbdd188db4f34ad27d14ba2d71abe"
],
"connections": [],
"hub_device_id": null,
"id": "7465dff14c5e472d904ddb93b09b2770",
"identifiers": [
[
"upnp",
"uuid:75802409-bccb-40e7-8e6c-3431C416294A_kbyte/sec_sent"
]
],
"manufacturer": "AVM Berlin",
"model": null,
"name": "FRITZ!Box 7490 kbyte/sec sent",
"name_by_user": null,
"sw_version": null
}
]
},
"key": "core.device_registry",
"version": 1
}

View File

@ -0,0 +1,278 @@
{
"data": {
"entities": [
{
"config_entry_id": null,
"device_id": null,
"disabled_by": null,
"entity_id": "person.martin_bauer",
"name": null,
"platform": "person",
"unique_id": "d433f5e7758548dab8baa44b545a8668"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "31d95a5c59b24732934b4bcde46654a7",
"disabled_by": null,
"entity_id": "light.wohnzimmer_regal_rechts",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:00:cd:c7:fe-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "1dbec2bfe7594794a516405b1a164027",
"disabled_by": null,
"entity_id": "light.wohnzimmer_stehlampe_oben",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:10:4e:75:a8-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "00429941ced6498495803f7e1ae65d55",
"disabled_by": null,
"entity_id": "light.wohnzimmer_regal_links",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:00:cd:c7:fa-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "00e0dc89c87240699d1286fb79bcc877",
"disabled_by": null,
"entity_id": "light.arbeitszimmer_martin_oben",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:02:07:a2:e7-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "da7bdf516f614f8fa75f6f611a8cef3c",
"disabled_by": null,
"entity_id": "light.kuche_links",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:00:cb:8b:3d-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "27e519bd18974605b39e17156f903a94",
"disabled_by": null,
"entity_id": "light.arbeitszimmer_rebecca",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:00:b5:63:66-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "42fcf3d4fab243d3b3535b88da5520cb",
"disabled_by": null,
"entity_id": "light.arbeitszimmer_martin_unten",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:02:07:a1:f7-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "d285533d588c4dd98cb2184cd299b882",
"disabled_by": null,
"entity_id": "light.kuche_rechts",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:00:cb:65:3c-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "77b2e3e9e127481d8b508f8952c08762",
"disabled_by": null,
"entity_id": "light.wohnzimmer_stehlampe",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:00:b5:39:23-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "075d6edf32bb4d6e9c564101a3b253ca",
"disabled_by": null,
"entity_id": "light.lampe_ersterstock",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:02:0a:26:cc-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "4c3bbd2722774287bef53f0eae996c43",
"disabled_by": null,
"entity_id": "light.kuche_vorne",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:01:1b:4f:25-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "ed71ab3618e04b26b65c561c48b12704",
"disabled_by": null,
"entity_id": "light.arbeitszimmer_martin",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:10:37:b3:58-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "c5d6ba59208e4f05a7f8e573f7372316",
"disabled_by": null,
"entity_id": "light.wohnzimmer_kugel",
"name": null,
"platform": "hue",
"unique_id": "00:12:4b:00:02:5f:c0:44-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "973ccf8026ed4dec8ac55c0c646dafbd",
"disabled_by": null,
"entity_id": "light.schlafzimmer_2",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:10:4e:5e:ff-0b"
},
{
"config_entry_id": "e0ebcf51d57b4df4baaf36894d59979d",
"device_id": "80f3a81098d345c5a848625f7c7f934f",
"disabled_by": null,
"entity_id": "light.gang_bogen",
"name": null,
"platform": "hue",
"unique_id": "00:17:88:01:00:cb:65:11-0b"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "cff99cfa5ca84b24ba4ff1883f08e02b",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_packets_sec_received",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets/sec_received"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "8e45736652404feda92084feb86a5745",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_packets_received",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets_received"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "7df169040686480db2b1ad5979037e80",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_packets_sent",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets_sent"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "dd9403c58f084442b1606fe616b3cfb7",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_kbyte_sec_received",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_kbyte/sec_received"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "aa4821c78db245ef90119b9af6fd97bc",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_bytes_received",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_bytes_received"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "620ada4df9fc493ca53677a979768dee",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_packets_sec_sent",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_packets/sec_sent"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "2d0e7717b4194ecca91589bd83bef38c",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_bytes_sent",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_bytes_sent"
},
{
"config_entry_id": "c4adbdd188db4f34ad27d14ba2d71abe",
"device_id": "7465dff14c5e472d904ddb93b09b2770",
"disabled_by": null,
"entity_id": "sensor.fritz_box_7490_kbyte_sec_sent",
"name": null,
"platform": "upnp",
"unique_id": "uuid:75802409-bccb-40e7-8e6c-3431C416294A_kbyte/sec_sent"
},
{
"config_entry_id": null,
"device_id": null,
"disabled_by": null,
"entity_id": "media_player.martins_ipad",
"name": null,
"platform": "squeezebox",
"unique_id": "01:86:d5:2c:c9:d4"
},
{
"config_entry_id": null,
"device_id": null,
"disabled_by": null,
"entity_id": "media_player.bedroompi",
"name": null,
"platform": "squeezebox_telnet",
"unique_id": "b8:27:eb:75:97:34"
},
{
"config_entry_id": null,
"device_id": null,
"disabled_by": null,
"entity_id": "media_player.wohnzimmerradio",
"name": null,
"platform": "squeezebox_telnet",
"unique_id": "00:04:20:28:11:87"
},
{
"config_entry_id": null,
"device_id": null,
"disabled_by": null,
"entity_id": "media_player.kitchenpi",
"name": null,
"platform": "squeezebox_telnet",
"unique_id": "b8:27:eb:3e:27:d0"
},
{
"config_entry_id": null,
"device_id": null,
"disabled_by": null,
"entity_id": "media_player.arbeitszimmer_martin",
"name": null,
"platform": "squeezebox_telnet",
"unique_id": "00:01:c0:0c:af:87"
},
{
"config_entry_id": null,
"device_id": null,
"disabled_by": null,
"entity_id": "media_player.martins_ipad_2",
"name": null,
"platform": "squeezebox_telnet",
"unique_id": "01:86:d5:2c:c9:d4"
}
]
},
"key": "core.entity_registry",
"version": 1
}

View File

@ -0,0 +1,26 @@
{
"data": [
{
"last_seen": "2019-06-30T17:25:18.396584+00:00",
"state": {
"attributes": {
"editable": true,
"friendly_name": "Martin Bauer",
"id": "d433f5e7758548dab8baa44b545a8668",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
},
"context": {
"id": "b7e50b38dcf2428d81604ec71459b297",
"parent_id": null,
"user_id": null
},
"entity_id": "person.martin_bauer",
"last_changed": "2019-06-30T17:25:11.790632+00:00",
"last_updated": "2019-06-30T17:25:17.430562+00:00",
"state": "unknown"
}
}
],
"key": "core.restore_state",
"version": 1
}

View File

@ -0,0 +1,9 @@
{
"data": {
"language": {
"language": "de"
}
},
"key": "frontend.user_data_2ffcb10d3db745b396789364fdef72ec",
"version": 1
}

583
.storage/lovelace Normal file
View File

@ -0,0 +1,583 @@
{
"data": {
"config": {
"resources": [
{
"type": "module",
"url": "/local/custom_ui/compact-custom-header.js?v=0.0.1"
},
{
"type": "js",
"url": "/local/custom_ui/state-card-custom-cover.js"
},
{
"type": "js",
"url": "/local/custom_ui/lovelace-toggle-lock-entity-row/toggle-lock-entity-row.js"
},
{
"type": "module",
"url": "/local/custom_ui/mini-graph-card-bundle.js?v=0.4.3"
},
{
"type": "module",
"url": "/local/custom_ui/mini-media-player-bundle.js?v=1.2.0"
},
{
"type": "js",
"url": "/local/custom_ui/room-glance-card.js"
}
],
"title": "Home",
"views": [
{
"cards": [
{
"main_config": true,
"swipe": true,
"swipe_animate": "flip",
"type": "custom:compact-custom-header",
"voice": "hide"
},
{
"aspect_ratio": "16x9",
"entities": [
"group.living_area"
],
"image": "/local/img/living_area_16_9.jpg",
"scenes": [
{
"color": "#f07a1d",
"name": "Orange",
"scene": "scene.wohnbereich_orange"
},
{
"color": "#2eacd7",
"name": "Blau",
"scene": "scene.wohnbereich_blau_grun"
},
{
"color": "green",
"name": "Gr\u00fcn",
"scene": "scene.wohnbereich_grun"
},
{
"color": "#9f9cac",
"icon": "mdi:weather-night",
"name": "Kuscheln",
"scene": "scene.wohnbereich_kuscheln"
}
],
"type": "custom:room-glance-card"
},
{
"artwork": "cover",
"entity": "media_player.martins_ipad_2",
"hide": {
"power_state": false,
"source": true,
"volume": true
},
"icon": "mdi:spotify",
"type": "custom:mini-media-player"
},
{
"entities": [
{
"entity": "light.kuche_deckenlampe",
"name": "Decke K\u00fcche"
},
{
"entity": "light.esszimmer_deckenlampe_mitte",
"name": "Decke Esszimmer Mitte"
},
{
"entity": "light.esszimmer_deckenlampe_west",
"name": "Decke Esszimmer"
},
{
"type": "divider"
},
{
"entity": "light.kuche_links",
"name": "K\u00fcche LED links"
},
{
"entity": "light.kuche_rechts",
"name": "K\u00fcche LED rechts"
},
{
"entity": "light.kuche_vorne",
"name": "K\u00fcche LED vorne"
},
{
"type": "divider"
},
{
"entity": "cover.kuche_fenster_rollo",
"name": "K\u00fcche",
"type": "custom:state-card-custom-cover"
},
{
"entity": "cover.esszimmer_fenster_rollo",
"name": "Esszimmer",
"type": "custom:state-card-custom-cover"
}
],
"show_header_toggle": true,
"title": "K\u00fcche/Esszimmer",
"type": "entities"
},
{
"artwork": "cover",
"entity": "media_player.kitchenpi",
"hide": {
"power_state": false,
"shuffle": false,
"source": true,
"volume": false
},
"icon": "mdi:music",
"shortcuts": {
"columns": 4,
"list": [
{
"icon": "mdi:alpha-r",
"id": "http://dg-br-http-dus-dtag-cdn.cast.addradio.de/br/b5aktuell/live/mp3/128/stream.mp3?ar-distributor=f0a1",
"name": "B5",
"type": "music"
},
{
"icon": "mdi:alpha-b",
"id": "spotify:playlist:37i9dQZF1DX6G7arXBXa3A",
"name": "BigBand",
"type": "music"
},
{
"icon": "mdi:alpha-j",
"id": "spotify:playlist:37i9dQZF1DX4wta20PHgwo",
"name": "LateNightJazz",
"type": "music"
}
]
},
"type": "custom:mini-media-player"
},
{
"entities": [
{
"entity": "light.wohnzimmer_deckenlampe",
"name": "Decke"
},
{
"type": "divider"
},
{
"entity": "light.wohnzimmer_kugel",
"name": "Kugel"
},
{
"entity": "light.wohnzimmer_regal_links",
"name": "Regal links"
},
{
"entity": "light.wohnzimmer_regal_rechts",
"name": "Regal rechts"
},
{
"type": "divider"
},
{
"entity": "light.wohnzimmer_stehlampe_oben",
"name": "Stehlampe oben"
},
{
"entity": "light.wohnzimmer_stehlampe",
"name": "Stehlampe unten"
},
{
"type": "divider"
},
{
"entity": "cover.wohnzimmer_fenster_rollo",
"name": "Fenster",
"type": "custom:state-card-custom-cover"
},
{
"entity": "cover.wohnzimmer_terrassentur_rollo",
"name": "T\u00fcr",
"type": "custom:state-card-custom-cover"
}
],
"show_header_toggle": true,
"title": "Wohnzimmer",
"type": "entities"
},
{
"entities": [
{
"entity": "light.gang_licht",
"name": "Licht"
},
{
"entity": "light.gang_bogen",
"name": "Bogen"
}
],
"show_header_toggle": true,
"title": "Gang",
"type": "entities"
}
],
"icon": "mdi:sofa",
"title": "Wohnbereich"
},
{
"cards": [
{
"type": "custom:compact-custom-header"
},
{
"aspect_ratio": "16x9",
"entities": [
"group.bedroom"
],
"image": "/local/img/bedroom_16_9.jpg",
"scenes": [
{
"color": "#ccc",
"icon": "mdi:sleep",
"name": "Dunkel",
"scene": "scene.schlafzimmer_ganz_dunkel"
},
{
"color": "#f07a1d",
"name": "Orange",
"scene": "scene.schlafzimmer_orange"
},
{
"color": "#fdef56",
"name": "Hell",
"scene": "scene.schlafzimmer_ganz_hell"
},
{
"color": "#2eacd7",
"name": "Blau",
"scene": "scene.schlafzimmer_blau"
}
],
"type": "custom:room-glance-card"
},
{
"card": {
"title": "Lichter die noch an sind",
"type": "entities"
},
"entities": [
{
"entity": "group.light_hallway",
"icon": "mdi:door-closed",
"name": "Gang"
},
{
"entity": "group.light_living_area",
"icon": "mdi:sofa",
"name": "Wohnzimmer/Esszimmer"
},
{
"entity": "group.light_office_martin",
"icon": "mdi:monitor-multiple",
"name": "Martins B\u00fcro"
}
],
"show_empty": false,
"state_filter": [
"on"
],
"type": "entity-filter"
},
{
"artwork": "cover",
"entity": "media_player.bedroompi",
"hide": {
"power_state": false,
"shuffle": false,
"source": true,
"volume": false
},
"icon": "mdi:music",
"shortcuts": {
"label": "Playlists",
"list": [
{
"id": "spotify:playlist:37i9dQZF1DXbcPC6Vvqudd",
"name": "Regen",
"type": "music"
},
{
"id": "spotify:playlist:37i9dQZF1DX9if5QDLdzCa",
"name": "Wellen",
"type": "music"
},
{
"id": "spotify:playlist:37i9dQZF1DX7heGeZ10YDi",
"name": "Different Sleeping List",
"type": "music"
},
{
"id": "spotify:playlist:37i9dQZF1DX4wta20PHgwo",
"name": "LateNightJazz",
"type": "music"
},
{
"id": "spotify:playlist:2AmjhSAm6iI0qrXXhQyHgk",
"name": "Romantic Jazz",
"type": "music"
},
{
"id": "spotify:playlist:37i9dQZF1DX8Dd9bxD1WYH",
"name": "Klassik zum Entspannen",
"type": "music"
}
]
},
"type": "custom:mini-media-player"
},
{
"entities": [
{
"entity": "light.schlafzimmer_deckenlampe",
"name": "Deckenlampe"
},
{
"entity": "light.schlafzimmer",
"name": "Fluter"
},
{
"entity": "cover.schlafzimmer_rollo_gross",
"name": "Rollo Gro\u00df",
"type": "custom:state-card-custom-cover"
},
{
"entity": "cover.schlafzimmer_rollo_klein",
"name": "Rollo Klein",
"type": "custom:state-card-custom-cover"
}
],
"show_header_toggle": false,
"type": "entities"
}
],
"icon": "mdi:bed-empty",
"title": "Schlafzimmer"
},
{
"cards": [
{
"type": "custom:compact-custom-header"
},
{
"aspect_ratio": "16x9",
"entities": [
"group.office_martin"
],
"image": "/local/img/office_martin_16_9.jpg",
"name": "Arbeitszimmer",
"scenes": [
{
"color": "#f07a1d",
"name": "Orange",
"scene": "scene.arbeitszimmer_martin_orange"
},
{
"color": "#2eacd7",
"name": "Blau",
"scene": "scene.arbeitszimmer_martin_blau_grun"
},
{
"color": "#fff",
"name": "Hell",
"scene": "scene.arbeitszimmer_martin_hell"
}
],
"type": "custom:room-glance-card"
},
{
"entities": [
{
"entity": "light.arbeitszimmer_martin_deckenlampe",
"name": "Deckenlampe"
},
{
"entity": "light.arbeitszimmer_martin",
"name": "Fluter"
},
{
"entity": "light.arbeitszimmer_martin_oben",
"name": "Stehlampe Oben"
},
{
"entity": "light.arbeitszimmer_martin_unten",
"name": "Stehlampe Unten"
},
{
"entity": "cover.arbeitszimmer_martin_rollo",
"name": "Rollo",
"type": "custom:state-card-custom-cover"
},
{
"entity": "binary_sensor.arbeitszimmer_martin_bewegungsmelder_bewegung",
"format": "relative",
"name": "Bewegung",
"secondary_info": "last-changed"
},
{
"entity": "sensor.arbeitszimmer_martin_bewegungsmelder_helligkeit",
"name": "Helligkeit"
}
],
"show_header_toggle": false,
"type": "entities"
}
],
"icon": "mdi:monitor-multiple",
"title": "Martins B\u00fcro"
},
{
"cards": [
{
"type": "custom:compact-custom-header"
},
{
"entities": [
{
"entity": "sensor.trockner_verbrauch",
"name": "Trockner aktuell"
},
{
"entity": "sensor.trockner_verbrauch_summe",
"name": "Trockner insgesamt"
},
{
"entity": "sensor.trockner_betriebsstunden",
"name": "Trockner Stunden"
},
{
"type": "divider"
},
{
"entity": "sensor.waschmaschine_verbrauch",
"name": "Waschmaschine aktuell"
},
{
"entity": "sensor.waschmaschine_verbrauch_summe",
"name": "Waschmaschine insgesamt"
},
{
"entity": "sensor.waschmaschine_betriebsstunden",
"name": "Waschmaschine Stunden"
}
],
"show_header_toggle": false,
"title": "Verbrauch",
"type": "entities"
},
{
"entities": [
{
"entity": "switch.trockner",
"type": "custom:toggle-lock-entity-row"
},
{
"entity": "switch.waschmaschine",
"type": "custom:toggle-lock-entity-row"
},
{
"entity": "switch.spulmaschine",
"type": "custom:toggle-lock-entity-row"
},
{
"entity": "switch.backofen",
"type": "custom:toggle-lock-entity-row"
},
{
"entity": "switch.herd_phase_1",
"type": "custom:toggle-lock-entity-row"
},
{
"entity": "switch.herd_phase_2",
"type": "custom:toggle-lock-entity-row"
},
{
"entity": "switch.herd_phase_3",
"type": "custom:toggle-lock-entity-row"
}
],
"show_header_toggle": false,
"title": "Sicherheitsabschaltung",
"type": "entities"
},
{
"animate": true,
"entities": [
"sensor.waschmaschine_verbrauch",
"sensor.trockner_verbrauch"
],
"name": "Waschen & Trocknen",
"type": "custom:mini-graph-card"
},
{
"animate": true,
"entities": [
{
"entity": "sensor.spulmaschine_verbrauch",
"name": "Sp\u00fchlmaschine"
},
{
"entity": "sensor.backofen_verbrauch",
"name": "Backofen"
},
{
"entity": "sensor.herd_phase_1_verbrauch",
"name": "Herd P1"
},
{
"entity": "sensor.herd_phase_2_verbrauch",
"name": "Herd P2"
},
{
"entity": "sensor.herd_phase_3_verbrauch",
"name": "Herd P3"
}
],
"hours_to_show": 8,
"name": "K\u00fcche",
"points_per_hour": 4,
"type": "custom:mini-graph-card"
},
{
"animate": true,
"entities": [
{
"entity": "sensor.fritz_box_7490_kbyte_sec_received",
"name": "Down"
},
{
"entity": "sensor.fritz_box_7490_kbyte_sec_sent",
"name": "Up"
}
],
"hours_to_show": 2,
"name": "Internet",
"points_per_hour": 30,
"type": "custom:mini-graph-card"
}
],
"icon": "mdi:settings",
"title": "Admin"
}
]
}
},
"key": "lovelace",
"version": 1
}

11
.storage/onboarding Normal file
View File

@ -0,0 +1,11 @@
{
"data": {
"done": [
"user",
"core_config",
"integration"
]
},
"key": "onboarding",
"version": 3
}

14
.storage/person Normal file
View File

@ -0,0 +1,14 @@
{
"data": {
"persons": [
{
"device_trackers": [],
"id": "d433f5e7758548dab8baa44b545a8668",
"name": "Martin Bauer",
"user_id": "2ffcb10d3db745b396789364fdef72ec"
}
]
},
"key": "person",
"version": 1
}

0
automations.yaml Normal file
View File

View File

@ -1,8 +1,9 @@
import os
from util import DeviceInfo, add_to_group from util import DeviceInfo, add_to_group
from ruamel.yaml import YAML from ruamel.yaml import YAML
import knx_conf as knx import knx_conf as knx
script_path = os.path.dirname(os.path.realpath(__file__))
yaml = YAML() yaml = YAML()
@ -74,8 +75,8 @@ def add_knx_devices(devices, groups):
DeviceInfo("WohnzimmerSteckdose2", "Wohnzimmer Steckdose 2", 'living_area'), DeviceInfo("WohnzimmerSteckdose2", "Wohnzimmer Steckdose 2", 'living_area'),
] ]
imported_csv = knx.import_ets5_csv_file('knx_data/export_project1.csv') imported_csv = knx.import_ets5_csv_file(os.path.join(script_path, 'knx_data/export_project1.csv'))
imported_csv.update(knx.import_ets5_csv_file('knx_data/export_project2.csv')) imported_csv.update(knx.import_ets5_csv_file(os.path.join(script_path, 'knx_data/export_project2.csv')))
knx.extent(devices, knx.create_lights(lights, imported_csv)) knx.extent(devices, knx.create_lights(lights, imported_csv))
knx.extent(devices, knx.create_shutters(shutters, imported_csv)) knx.extent(devices, knx.create_shutters(shutters, imported_csv))
@ -88,7 +89,8 @@ def add_knx_devices(devices, groups):
def add_fhem_devices(devices, groups): def add_fhem_devices(devices, groups):
fhem_yaml = yaml.load(open('fhem.yaml')) fhem_yaml_path = os.path.join(script_path, 'fhem.yaml')
fhem_yaml = yaml.load(open(fhem_yaml_path))
for device_type, device_list in fhem_yaml.items(): for device_type, device_list in fhem_yaml.items():
if device_type not in devices: if device_type not in devices:
devices[device_type] = [] devices[device_type] = []
@ -111,19 +113,25 @@ def add_light_groups(groups):
groups.update(light_groups) groups.update(light_groups)
def main(): def create_config(target_directory):
group_dict = yaml.load(open('groups.yaml')) groups_yaml_path = os.path.join(script_path, 'groups.yaml')
manual_config_path = os.path.join(script_path, 'manual_config.yaml')
group_dict = yaml.load(open(groups_yaml_path))
all_devices = {} all_devices = {}
add_knx_devices(all_devices, group_dict) add_knx_devices(all_devices, group_dict)
add_fhem_devices(all_devices, group_dict) add_fhem_devices(all_devices, group_dict)
with open('output/configuration.yaml', 'w') as output: with open(os.path.join(target_directory, 'configuration.yaml'), 'w') as output:
output.write(open('manual_config.yaml', 'r').read()) output.write("# Dont' edit manually! this is generated!\n\n")
output.write(open(manual_config_path, 'r').read())
yaml.dump(all_devices, output) yaml.dump(all_devices, output)
add_light_groups(group_dict) add_light_groups(group_dict)
yaml.dump(group_dict, open('output/groups.yaml', 'w'))
with open(os.path.join(target_directory, 'groups.yaml'), 'w') as output:
output.write("# Dont' edit manually! this is generated!\n\n")
yaml.dump(group_dict, output)
if __name__ == '__main__': if __name__ == '__main__':
main() create_config(target_directory=os.getcwd())

View File

@ -86,6 +86,12 @@ media_player:
host: avreceiver host: avreceiver
vacuum:
- platform: xiaomi_miio
host: rockrobo
token: 515a69497537766d4f7a38756b4b654d
group: !include groups.yaml group: !include groups.yaml
automation: !include automations.yaml automation: !include automations.yaml
script: !include scripts.yaml script: !include scripts.yaml

View File

@ -1,4 +1,6 @@
resources: resources:
- type: module
url: /local/custom_ui/compact-custom-header.js?v=0.0.1
- type: js - type: js
url: /local/custom_ui/state-card-custom-cover.js url: /local/custom_ui/state-card-custom-cover.js
- type: js - type: js
@ -12,6 +14,11 @@ resources:
title: Home title: Home
views: views:
- cards: - cards:
- main_config: true
swipe: true
swipe_animate: flip
type: 'custom:compact-custom-header'
voice: hide
- aspect_ratio: 16x9 - aspect_ratio: 16x9
entities: entities:
- group.living_area - group.living_area
@ -23,11 +30,22 @@ views:
- color: '#2eacd7' - color: '#2eacd7'
name: Blau name: Blau
scene: scene.wohnbereich_blau_grun scene: scene.wohnbereich_blau_grun
- color: green
name: Grün
scene: scene.wohnbereich_grun
- color: '#9f9cac' - color: '#9f9cac'
icon: 'mdi:weather-night' icon: 'mdi:weather-night'
name: Kuscheln name: Kuscheln
scene: scene.wohnbereich_kuscheln scene: scene.wohnbereich_kuscheln
type: 'custom:room-glance-card' type: 'custom:room-glance-card'
- artwork: cover
entity: media_player.martins_ipad_2
hide:
power_state: false
source: true
volume: true
icon: 'mdi:spotify'
type: 'custom:mini-media-player'
- entities: - entities:
- entity: light.kuche_deckenlampe - entity: light.kuche_deckenlampe
name: Decke Küche name: Decke Küche
@ -52,6 +70,31 @@ views:
show_header_toggle: true show_header_toggle: true
title: Küche/Esszimmer title: Küche/Esszimmer
type: entities type: entities
- artwork: cover
entity: media_player.kitchenpi
hide:
power_state: false
source: true
volume: false
shuffle: false
icon: 'mdi:music'
type: 'custom:mini-media-player'
shortcuts:
columns: 4
list:
- name: B5
type: music
id: >-
http://dg-br-http-dus-dtag-cdn.cast.addradio.de/br/b5aktuell/live/mp3/128/stream.mp3?ar-distributor=f0a1
icon: 'mdi:alpha-r'
- name: BigBand
icon: 'mdi:alpha-b'
type: music
id: 'spotify:playlist:37i9dQZF1DX6G7arXBXa3A'
- name: LateNightJazz
icon: 'mdi:alpha-j'
type: music
id: 'spotify:playlist:37i9dQZF1DX4wta20PHgwo'
- entities: - entities:
- entity: light.wohnzimmer_deckenlampe - entity: light.wohnzimmer_deckenlampe
name: Decke name: Decke
@ -88,6 +131,7 @@ views:
icon: 'mdi:sofa' icon: 'mdi:sofa'
title: Wohnbereich title: Wohnbereich
- cards: - cards:
- type: 'custom:compact-custom-header'
- aspect_ratio: 16x9 - aspect_ratio: 16x9
entities: entities:
- group.bedroom - group.bedroom
@ -110,7 +154,6 @@ views:
- card: - card:
title: Lichter die noch an sind title: Lichter die noch an sind
type: entities type: entities
show_empty: false
entities: entities:
- entity: group.light_hallway - entity: group.light_hallway
icon: 'mdi:door-closed' icon: 'mdi:door-closed'
@ -121,14 +164,57 @@ views:
- entity: group.light_office_martin - entity: group.light_office_martin
icon: 'mdi:monitor-multiple' icon: 'mdi:monitor-multiple'
name: Martins Büro name: Martins Büro
show_empty: false
state_filter: state_filter:
- 'on' - 'on'
type: entity-filter type: entity-filter
- artwork: cover
entity: media_player.bedroompi
hide:
power_state: false
source: true
volume: false
shuffle: false
icon: 'mdi:music'
type: 'custom:mini-media-player'
shortcuts:
label: Playlists
list:
- name: Regen
type: music
id: 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd'
- name: Wellen
type: music
id: 'spotify:playlist:37i9dQZF1DX9if5QDLdzCa'
- name: Different Sleeping List
type: music
id: 'spotify:playlist:37i9dQZF1DX7heGeZ10YDi'
- name: LateNightJazz
type: music
id: 'spotify:playlist:37i9dQZF1DX4wta20PHgwo'
- name: Romantic Jazz
type: music
id: 'spotify:playlist:2AmjhSAm6iI0qrXXhQyHgk'
- name: Klassik zum Entspannen
type: music
id: 'spotify:playlist:37i9dQZF1DX8Dd9bxD1WYH'
- entities:
- entity: light.schlafzimmer_deckenlampe
name: Deckenlampe
- entity: light.schlafzimmer
name: Fluter
- entity: cover.schlafzimmer_rollo_gross
name: Rollo Groß
type: 'custom:state-card-custom-cover'
- entity: cover.schlafzimmer_rollo_klein
name: Rollo Klein
type: 'custom:state-card-custom-cover'
show_header_toggle: false
type: entities
icon: 'mdi:bed-empty' icon: 'mdi:bed-empty'
title: Schlafzimmer title: Schlafzimmer
- title: Martins Büro - cards:
icon: 'mdi:monitor-multiple' - type: 'custom:compact-custom-header'
cards:
- aspect_ratio: 16x9 - aspect_ratio: 16x9
entities: entities:
- group.office_martin - group.office_martin
@ -155,17 +241,20 @@ views:
- entity: light.arbeitszimmer_martin_unten - entity: light.arbeitszimmer_martin_unten
name: Stehlampe Unten name: Stehlampe Unten
- entity: cover.arbeitszimmer_martin_rollo - entity: cover.arbeitszimmer_martin_rollo
name: Rollo Arbeitszimmer name: Rollo
type: 'custom:state-card-custom-cover' type: 'custom:state-card-custom-cover'
- entity: binary_sensor.arbeitszimmer_martin_bewegungsmelder_bewegung - entity: binary_sensor.arbeitszimmer_martin_bewegungsmelder_bewegung
format: relative
name: Bewegung name: Bewegung
secondary_info: last-changed secondary_info: last-changed
format: relative
- entity: sensor.arbeitszimmer_martin_bewegungsmelder_helligkeit - entity: sensor.arbeitszimmer_martin_bewegungsmelder_helligkeit
name: Helligkeit name: Helligkeit
show_header_toggle: false show_header_toggle: false
type: entities type: entities
icon: 'mdi:monitor-multiple'
title: Martins Büro
- cards: - cards:
- type: 'custom:compact-custom-header'
- entities: - entities:
- entity: sensor.trockner_verbrauch - entity: sensor.trockner_verbrauch
name: Trockner aktuell name: Trockner aktuell
@ -234,13 +323,4 @@ views:
points_per_hour: 30 points_per_hour: 30
type: 'custom:mini-graph-card' type: 'custom:mini-graph-card'
title: Admin title: Admin
- cards: icon: mdi:settings
- artwork: cover
entity: media_player.kitchenpi
hide:
power_state: false
source: true
volume: true
icon: 'mdi:spotify'
type: 'custom:mini-media-player'
title: Test

View File

@ -0,0 +1,7 @@
To install dependencies run:
npm install
To build:
npm run build
copy file from dist folder

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
{
"name": "state-card-custom-cover",
"version": "0.0.1",
"description": "Cover card from home assistant",
"main": "src/state-card-custom-cover.ts",
"scripts": {
"build": "webpack",
"test": "echo \"Error: no test specified\" && exit 1"
},
"private": true,
"author": "Martin Bauer",
"license": "GPLv3",
"devDependencies": {
"home-assistant-js-websocket": "^4.2.2",
"lit-element": "^2.1.0",
"ts-loader": "^6.0.2",
"typescript": "^3.5.1",
"webpack": "^4.33.0",
"webpack-cli": "^3.3.4"
}
}

View File

@ -0,0 +1,26 @@
import {Connection, HassConfig, HassEntities, HassServices, MessageBase} from "home-assistant-js-websocket";
export interface HomeAssistant {
connection: Connection;
connected: boolean;
states: HassEntities;
services: HassServices;
config: HassConfig;
callService: (
domain: string,
service: string,
serviceData?: { [key: string]: any }
) => Promise<void>;
callApi: <T>(
method: "GET" | "POST" | "PUT" | "DELETE",
path: string,
parameters?: { [key: string]: any }
) => Promise<T>;
fetchWithAuth: (
path: string,
init?: { [key: string]: any }
) => Promise<Response>;
sendWS: (msg: MessageBase) => void;
callWS: <T>(msg: MessageBase) => Promise<T>;
}

View File

@ -0,0 +1,208 @@
import {LitElement, html, css, customElement, property, TemplateResult, CSSResult} from "lit-element";
import {classMap} from "lit-html/directives/class-map";
import {HomeAssistant} from "./home-assistant-interface";
@customElement("room-glance-card")
export class RoomGlanceCard extends LitElement {
@property() public hass?: HomeAssistant;
@property() private _config?: any;
public setConfig(config: any) {
//if (!config || !config.entity) {
// throw new Error("Invalid configuration");
//}
console.log("Setting config", config);
this._config = config;
}
public static getCardSize(): number {
return 3;
}
protected render(): TemplateResult | void {
return html`
<ha-card>
<hui-image
class="${classMap({
clickable: true,
})}"
@ha-click="${this._handleTap}"
@ha-hold="${this._handleHold}"
.hass="${this.hass}"
image="${this._config.image}"
aspectRatio="${this._config.aspect_ratio}"
></hui-image>
<div class="box box-upper">
<div>${this._config.name}</div>
<div>
${this.renderCoverControl()}
</div>
</div>
<div class="box box-lower">
<div class="title"></div>
<div>
${this._config.scenes.map( (sceneButtonCfg) => this.renderSceneButton(sceneButtonCfg))}
<paper-icon-button
icon="mdi:close-circle"
@click=${this.serviceHandler("light", "turn_off")}
></paper-icon-button>
<paper-icon-button
icon="mdi:chevron-up"
title="Heller"
@click=${this.serviceHandler("dimmer", "dim", {offset: 30})}
></paper-icon-button>
<paper-icon-button
icon="mdi:chevron-down"
title="Dunkler"
@click=${this.serviceHandler("dimmer", "dim", {offset: -30})}
></paper-icon-button>
</div>
</div>
</ha-card>
`;
}
private renderSceneButton(buttonCfg: any) {
return html`
<paper-icon-button
icon="${buttonCfg.icon || "mdi:checkbox-blank"}"
style="color: ${buttonCfg.color || ""};"
title="${buttonCfg.name}"
@click=${this.serviceHandler("scene", "turn_on", {entity_id: buttonCfg.scene})}
></paper-icon-button>
`;
}
private renderCoverControl() {
return html`
<paper-icon-button
icon="hass:menu"
@click=${this.serviceHandler("cover_half", "set_half")}
></paper-icon-button>
<paper-icon-button
icon="hass:arrow-up"
@click=${this.serviceHandler("cover", "open_cover")}
></paper-icon-button>
<paper-icon-button
icon="hass:stop"
@click=${this.serviceHandler("cover", "stop_cover")}
></paper-icon-button>
<paper-icon-button
icon="hass:arrow-down"
@click=${this.serviceHandler("cover", "close_cover")}
></paper-icon-button>
`;
}
private serviceHandler(domain: string, service: string, serviceData: { [key: string]: any } = {})
{
const thisObj = this;
return function(ev) {
ev.stopPropagation();
thisObj.callServiceForAllEntities(domain, service, serviceData);
}
}
private callServiceForAllEntities(domain: string, service:string, serviceData: { [key: string]: any } = {}) {
if (!serviceData.hasOwnProperty('entity_id')) {
for (let entity_id of this._config!.entities) {
serviceData['entity_id'] = entity_id;
console.log("Calling service", domain, service, serviceData);
this.hass!.callService(domain, service, serviceData);
}
} else {
console.log("Calling service with given entity_id", domain, service, serviceData);
this.hass!.callService(domain, service, serviceData);
}
}
private _handleTap() {
console.log("Image tap");
}
private _handleHold() {
console.log("Image hold");
}
static get styles(): CSSResult {
return css`
ha-card {
position: relative;
min-height: 48px;
overflow: hidden;
}
hui-image.clickable {
cursor: pointer;
}
.box {
/* start paper-font-common-nowrap style */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* end paper-font-common-nowrap style */
position: absolute;
left: 0;
right: 0;
padding-left: 8px;
padding-right: 8px;
font-size: 16px;
line-height: 40px;
color: white;
display: flex;
justify-content: space-between;
background-color: rgba(0, 0, 0, 0.3);
}
.box-upper {
bottom: 45px;
padding-top: 4px;
padding-bottom: 0;
}
.box-lower {
bottom: 0;
padding-top: 0;
padding-bottom: 0px;
height:45px;
}
.box .title {
font-weight: 500;
margin-left: 8px;
}
ha-icon {
cursor: pointer;
padding: 8px;
color: #a9a9a9;
}
ha-icon.state-on {
color: white;
}
`;
}
}

View File

@ -0,0 +1,20 @@
{
"compilerOptions": {
"target": "es2017",
"module": "esnext",
"moduleResolution": "node",
"lib": [
"es2017",
"dom",
"dom.iterable"
],
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"strict": true,
"noImplicitAny": false,
"skipLibCheck": true,
"resolveJsonModule": true,
"experimentalDecorators": true
}
}

View File

@ -0,0 +1,19 @@
const path = require('path');
module.exports = {
entry: "./src/room-glance-card.ts",
output: {
filename: 'room-glance-card.js',
path: path.resolve(__dirname, 'dist')
},
resolve: {
extensions: [".tsx", ".ts", ".js", ".json"]
},
module: {
rules: [
// all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
{test: /\.tsx?$/, use: ["ts-loader"], exclude: /node_modules/}
]
},
mode: "production"
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
{
"name": "state-card-custom-cover",
"version": "0.0.1",
"description": "Cover card from home assistant",
"main": "src/state-card-custom-cover.ts",
"scripts": {
"build": "webpack",
"test": "echo \"Error: no test specified\" && exit 1"
},
"private": true,
"author": "Martin Bauer",
"license": "GPLv3",
"devDependencies": {
"home-assistant-js-websocket": "^4.2.2",
"lit-element": "^2.1.0",
"ts-loader": "^6.0.2",
"typescript": "^3.5.1",
"webpack": "^4.33.0",
"webpack-cli": "^3.3.4"
}
}

View File

@ -0,0 +1,168 @@
import {
HassEntity,
} from "home-assistant-js-websocket";
import {HomeAssistant} from "./home-assistant-interface";
const supportsFeature = (
stateObj: HassEntity,
feature: number
): boolean => {
// tslint:disable-next-line:no-bitwise
return (stateObj.attributes.supported_features! & feature) !== 0;
};
/* eslint-enable no-bitwise */
export class CoverEntity {
public hass: HomeAssistant;
public stateObj: HassEntity;
private _attr: { [key: string]: any; };
private _feat: any;
constructor(hass : HomeAssistant, stateObj) {
this.hass = hass;
this.stateObj = stateObj;
this._attr = stateObj.attributes;
this._feat = this._attr.supported_features;
}
get isFullyOpen() {
if (this._attr.current_position !== undefined) {
return this._attr.current_position === 100;
}
return this.stateObj.state === "open";
}
get isFullyClosed() {
if (this._attr.current_position !== undefined) {
return this._attr.current_position === 0;
}
return this.stateObj.state === "closed";
}
get isFullyOpenTilt() {
return this._attr.current_tilt_position === 100;
}
get isFullyClosedTilt() {
return this._attr.current_tilt_position === 0;
}
get isOpening() {
return this.stateObj.state === "opening";
}
get isClosing() {
return this.stateObj.state === "closing";
}
get supportsOpen() {
return supportsFeature(this.stateObj, 1);
}
get supportsClose() {
return supportsFeature(this.stateObj, 2);
}
get supportsSetPosition() {
return supportsFeature(this.stateObj, 4);
}
get supportsStop() {
return supportsFeature(this.stateObj, 8);
}
get supportsOpenTilt() {
return supportsFeature(this.stateObj, 16);
}
get supportsCloseTilt() {
return supportsFeature(this.stateObj, 32);
}
get supportsStopTilt() {
return supportsFeature(this.stateObj, 64);
}
get supportsSetTiltPosition() {
return supportsFeature(this.stateObj, 128);
}
get isTiltOnly() {
const supportsCover =
this.supportsOpen || this.supportsClose || this.supportsStop;
const supportsTilt =
this.supportsOpenTilt || this.supportsCloseTilt || this.supportsStopTilt;
return supportsTilt && !supportsCover;
}
openCover() {
this.callService("open_cover");
}
closeCover() {
this.callService("close_cover");
}
stopCover() {
this.callService("stop_cover");
}
openCoverTilt() {
this.callService("open_cover_tilt");
}
closeCoverTilt() {
this.callService("close_cover_tilt");
}
stopCoverTilt() {
this.callService("stop_cover_tilt");
}
setCoverPosition(position) {
this.callService("set_cover_position", { position });
}
setCoverTiltPosition(tiltPosition) {
this.callService("set_cover_tilt_position", {
tilt_position: tiltPosition,
});
}
// helper method
callService(service, data = {}) {
data['entity_id'] = this.stateObj.entity_id;
this.hass.callService("cover", service, data);
}
}
export const supportsOpen = (stateObj) => supportsFeature(stateObj, 1);
export const supportsClose = (stateObj) => supportsFeature(stateObj, 2);
export const supportsSetPosition = (stateObj) => supportsFeature(stateObj, 4);
export const supportsStop = (stateObj) => supportsFeature(stateObj, 8);
export const supportsOpenTilt = (stateObj) => supportsFeature(stateObj, 16);
export const supportsCloseTilt = (stateObj) => supportsFeature(stateObj, 32);
export const supportsStopTilt = (stateObj) => supportsFeature(stateObj, 64);
export const supportsSetTiltPosition = (stateObj) =>
supportsFeature(stateObj, 128);
export function isTiltOnly(stateObj) {
const supportsCover =
supportsOpen(stateObj) || supportsClose(stateObj) || supportsStop(stateObj);
const supportsTilt =
supportsOpenTilt(stateObj) ||
supportsCloseTilt(stateObj) ||
supportsStopTilt(stateObj);
return supportsTilt && !supportsCover;
}

View File

@ -0,0 +1,26 @@
import {Connection, HassConfig, HassEntities, HassServices, MessageBase} from "home-assistant-js-websocket";
export interface HomeAssistant {
connection: Connection;
connected: boolean;
states: HassEntities;
services: HassServices;
config: HassConfig;
callService: (
domain: string,
service: string,
serviceData?: { [key: string]: any }
) => Promise<void>;
callApi: <T>(
method: "GET" | "POST" | "PUT" | "DELETE",
path: string,
parameters?: { [key: string]: any }
) => Promise<T>;
fetchWithAuth: (
path: string,
init?: { [key: string]: any }
) => Promise<Response>;
sendWS: (msg: MessageBase) => void;
callWS: <T>(msg: MessageBase) => Promise<T>;
}

View File

@ -0,0 +1,140 @@
import {LitElement, html, customElement, property, TemplateResult} from "lit-element";
import {CoverEntity} from "./cover-model"
import {HomeAssistant} from "./home-assistant-interface";
export interface CustomCoverStateCardConfig {
type: string;
entity: string;
name?: string;
}
@customElement("state-card-custom-cover")
export class StateCardCustomCover extends LitElement {
@property() public hass?: HomeAssistant;
@property() private _config?: CustomCoverStateCardConfig;
@property()
public get stateObj() {
if (this.hass && this._config)
return this.hass.states[this._config.entity];
else
return null;
}
@property() public inDialog: boolean = false;
public setConfig(config: CustomCoverStateCardConfig | undefined) {
if (!config || !config.entity) {
throw new Error("Invalid configuration");
}
this._config = config;
}
get entityObj(): CoverEntity {
if (this.hass && this.stateObj)
return new CoverEntity(this.hass, this.stateObj);
else
throw new Error("Trying to get entityObj before setting hass & config");
}
public static getCardSize(): number {
return 1;
}
protected stateInfoTemplate() {
return html`
State info template
`;
}
protected render(): TemplateResult | void {
if (!this._config || !this.hass) {
return html``;
}
const entityObj = this.entityObj;
const stateObj = this.hass.states[this._config.entity];
if (!stateObj) {
return html`
<hui-warning
>Does not work :(</hui-warning
>
`;
}
return html`
<style include="iron-flex iron-flex-alignment"></style>
<style>
:host {
line-height: 1.5;
}
.state {
white-space: nowrap;
}
[invisible] {
visibility: hidden !important;
}
</style>
<hui-generic-entity-row .config="${this._config}" .hass="${this.hass}">
<div class="state">
<paper-icon-button
icon="hass:menu"
@click=${this.onHalfOpenTap}
></paper-icon-button>
<paper-icon-button
icon="hass:arrow-up"
@click=${this.onOpenTap}
.disabled="${this.computeOpenDisabled(stateObj, this.entityObj)}"
></paper-icon-button>
<paper-icon-button
icon="hass:stop"
@click=${this.onStopTap}
></paper-icon-button>
<paper-icon-button
icon="hass:arrow-down"
@click=${this.onCloseTap}
.disabled="${this.computeClosedDisabled(stateObj, entityObj)}"
></paper-icon-button>
</div>
</hui-generic-entity-row>
`;
}
computeOpenDisabled(stateObj, entityObj) {
const assumedState = stateObj.attributes.assumed_state === true;
return (entityObj.isFullyOpen || entityObj.isOpening) && !assumedState;
}
computeClosedDisabled(stateObj, entityObj) {
const assumedState = stateObj.attributes.assumed_state === true;
return (entityObj.isFullyClosed || entityObj.isClosing) && !assumedState;
}
private onHalfOpenTap(ev) {
const stateObj = this.hass!.states[this._config!.entity];
ev.stopPropagation();
this.entityObj.setCoverPosition(stateObj.attributes['half_position']);
}
private onOpenTap(ev) {
ev.stopPropagation();
this.entityObj.openCover();
}
private onCloseTap(ev) {
ev.stopPropagation();
this.entityObj.closeCover();
}
private onStopTap(ev) {
ev.stopPropagation();
this.entityObj.stopCover();
}
}

View File

@ -0,0 +1,20 @@
{
"compilerOptions": {
"target": "es2017",
"module": "esnext",
"moduleResolution": "node",
"lib": [
"es2017",
"dom",
"dom.iterable"
],
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"strict": true,
"noImplicitAny": false,
"skipLibCheck": true,
"resolveJsonModule": true,
"experimentalDecorators": true
}
}

View File

@ -0,0 +1,19 @@
const path = require('path');
module.exports = {
entry: "./src/state-card-custom-cover.ts",
output: {
filename: 'state-card-custom-cover.js',
path: path.resolve(__dirname, 'dist')
},
resolve: {
extensions: [".tsx", ".ts", ".js", ".json"]
},
module: {
rules: [
// all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
{test: /\.tsx?$/, use: ["ts-loader"], exclude: /node_modules/}
]
},
mode: "production"
}

4
make_custom_components.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
python3 config_creation/main.py

26
make_custom_frontend.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# ------ Room Glance Card -------------------------
cd custom_frontend_sources/room-glance-card
if [ ! -d "node_modules" ]; then
echo "Installing node_modules"
npm install
fi
npm run build
cp dist/room-glance-card.js ../../www/custom_ui
cd ../..
# ----- State Card Custom Cover --------------------
cd custom_frontend_sources/state-card-custom-cover
if [ ! -d "node_modules" ]; then
echo "Installing node_modules"
npm install
fi
npm run build
cp dist/state-card-custom-cover.js ../../www/custom_ui
cd ../..

View File

@ -339,7 +339,7 @@
brightness: 15 brightness: 15
color_temp: 477 color_temp: 477
- name: Schalfzimmer Orange - name: Schlafzimmer Orange
entities: entities:
light.schlafzimmer_deckenlampe: light.schlafzimmer_deckenlampe:
state: off state: off

0
scripts.yaml Normal file
View File

0
secrets.yaml Normal file
View File

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,99 @@
class ToggleLockEntityRow extends Polymer.Element {
static get template() {
return Polymer.html`
<style>
hui-generic-entity-row {
margin: var(--ha-themed-slider-margin, initial);
}
.flex {
display: flex;
align-items: center;
}
#overlay {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
text-align: right;
z-index: 1;
}
#lock {
margin-top: 8px;
color: #3f3f3f;
opacity: 1;
margin-right: 7px;
-webkit-animation-duration: 5s;animation-duration 5s;
-webkit-animation-fill-mode: both;animation-full-mode: both;
}
.wrapper {
position: relative;
}
@keyframes fadeOut{
0% {opacity: 1;}
20% {opacity: 0;}
80% {opacity: 0;}
100% {opacity: 1;}
}
.fadeOut {
-webkit-animation-name: fadeOut;animation-name: fadeOut;
}
</style>
<hui-generic-entity-row
config="[[_config]]"
hass="[[_hass]]"
>
<div class="wrapper">
<div class="flex">
<ha-entity-toggle
state-obj="[[stateObj]]"
hass="[[_hass]]"
></ha-entity-toggle>
</div>
<div id="overlay" on-click='clickHandler'>
<iron-icon id="lock" icon="hass:lock"></iron-icon>
</div>
</div>
</hui-generic-entity-row>
`
}
setConfig(config)
{
this._config = config;
this.users = null;
if(config.users) {
this.users = config.users;
}
}
set hass(hass) {
this._hass = hass;
this.stateObj = this._config.entity in hass.states ? hass.states[this._config.entity] : null;
}
clickHandler(e) {
e.stopPropagation();
if(this.users) {
if(! document.querySelector("home-assistant").hass.user) return;
let user = document.querySelector("home-assistant").hass.user.name;
if(this.users.indexOf(user) < 0) return;
}
this.$.overlay.style.pointerEvents = 'none';
const lock = this.$.lock;
if(lock) {
lock.icon = 'hass:lock-open';
lock.classList.add('fadeOut');
}
window.setTimeout(() => {
this.$.overlay.style.pointerEvents = '';
if(lock) {
lock.classList.remove('fadeOut');
lock.icon = 'hass:lock';
}
}, 5000);
}
}
customElements.define('toggle-lock-entity-row', ToggleLockEntityRow);

BIN
www/img/bedroom.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

BIN
www/img/bedroom_16_9.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

BIN
www/img/living_room.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
www/img/office_martin.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 KiB