Big restructuring - repo is now a full home assistant config directory
|
@ -0,0 +1 @@
|
|||
0.94.3
|
|
@ -0,0 +1,11 @@
|
|||
__pycache__
|
||||
*.pyc
|
||||
node_modules
|
||||
/tts
|
||||
/deps
|
||||
/home-assistant.log
|
||||
# Generated files
|
||||
/groups.yaml
|
||||
/configuration.yaml
|
||||
/home-assistant_v2.db
|
||||
|
|
@ -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
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"data": {
|
||||
"users": [
|
||||
{
|
||||
"password": "JDJiJDEyJGs1YjlscVNTbW9XdEt5N1R1ZzVXSi4xajFab0cycG5RYlUvMEEzS3VjOVkzYmJma2g2RUpT",
|
||||
"username": "martin"
|
||||
},
|
||||
{
|
||||
"password": "JDJiJDEyJGpMMW5WR3BiSWJwajdSOWxrWG9qZ3VoM1hTMDdOdC5DY2FlVlFmZGE2QkhRVmRVQURadURX",
|
||||
"username": "rebecca"
|
||||
}
|
||||
]
|
||||
},
|
||||
"key": "auth_provider.homeassistant",
|
||||
"version": 1
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"data": {
|
||||
"language": {
|
||||
"language": "de"
|
||||
}
|
||||
},
|
||||
"key": "frontend.user_data_2ffcb10d3db745b396789364fdef72ec",
|
||||
"version": 1
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"data": {
|
||||
"done": [
|
||||
"user",
|
||||
"core_config",
|
||||
"integration"
|
||||
]
|
||||
},
|
||||
"key": "onboarding",
|
||||
"version": 3
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"data": {
|
||||
"persons": [
|
||||
{
|
||||
"device_trackers": [],
|
||||
"id": "d433f5e7758548dab8baa44b545a8668",
|
||||
"name": "Martin Bauer",
|
||||
"user_id": "2ffcb10d3db745b396789364fdef72ec"
|
||||
}
|
||||
]
|
||||
},
|
||||
"key": "person",
|
||||
"version": 1
|
||||
}
|
|
@ -1,8 +1,9 @@
|
|||
import os
|
||||
from util import DeviceInfo, add_to_group
|
||||
from ruamel.yaml import YAML
|
||||
import knx_conf as knx
|
||||
|
||||
|
||||
script_path = os.path.dirname(os.path.realpath(__file__))
|
||||
yaml = YAML()
|
||||
|
||||
|
||||
|
@ -74,8 +75,8 @@ def add_knx_devices(devices, groups):
|
|||
DeviceInfo("WohnzimmerSteckdose2", "Wohnzimmer Steckdose 2", 'living_area'),
|
||||
]
|
||||
|
||||
imported_csv = knx.import_ets5_csv_file('knx_data/export_project1.csv')
|
||||
imported_csv.update(knx.import_ets5_csv_file('knx_data/export_project2.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(os.path.join(script_path, 'knx_data/export_project2.csv')))
|
||||
|
||||
knx.extent(devices, knx.create_lights(lights, 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):
|
||||
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():
|
||||
if device_type not in devices:
|
||||
devices[device_type] = []
|
||||
|
@ -111,19 +113,25 @@ def add_light_groups(groups):
|
|||
groups.update(light_groups)
|
||||
|
||||
|
||||
def main():
|
||||
group_dict = yaml.load(open('groups.yaml'))
|
||||
def create_config(target_directory):
|
||||
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 = {}
|
||||
add_knx_devices(all_devices, group_dict)
|
||||
add_fhem_devices(all_devices, group_dict)
|
||||
|
||||
with open('output/configuration.yaml', 'w') as output:
|
||||
output.write(open('manual_config.yaml', 'r').read())
|
||||
with open(os.path.join(target_directory, 'configuration.yaml'), 'w') as output:
|
||||
output.write("# Dont' edit manually! this is generated!\n\n")
|
||||
output.write(open(manual_config_path, 'r').read())
|
||||
yaml.dump(all_devices, output)
|
||||
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__':
|
||||
main()
|
||||
create_config(target_directory=os.getcwd())
|
||||
|
|
|
@ -86,6 +86,12 @@ media_player:
|
|||
host: avreceiver
|
||||
|
||||
|
||||
vacuum:
|
||||
- platform: xiaomi_miio
|
||||
host: rockrobo
|
||||
token: 515a69497537766d4f7a38756b4b654d
|
||||
|
||||
|
||||
group: !include groups.yaml
|
||||
automation: !include automations.yaml
|
||||
script: !include scripts.yaml
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
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
|
||||
|
@ -12,6 +14,11 @@ resources:
|
|||
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
|
||||
|
@ -23,11 +30,22 @@ views:
|
|||
- color: '#2eacd7'
|
||||
name: Blau
|
||||
scene: scene.wohnbereich_blau_grun
|
||||
- color: green
|
||||
name: Grün
|
||||
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üche
|
||||
|
@ -52,6 +70,31 @@ views:
|
|||
show_header_toggle: true
|
||||
title: Küche/Esszimmer
|
||||
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:
|
||||
- entity: light.wohnzimmer_deckenlampe
|
||||
name: Decke
|
||||
|
@ -88,6 +131,7 @@ views:
|
|||
icon: 'mdi:sofa'
|
||||
title: Wohnbereich
|
||||
- cards:
|
||||
- type: 'custom:compact-custom-header'
|
||||
- aspect_ratio: 16x9
|
||||
entities:
|
||||
- group.bedroom
|
||||
|
@ -110,7 +154,6 @@ views:
|
|||
- card:
|
||||
title: Lichter die noch an sind
|
||||
type: entities
|
||||
show_empty: false
|
||||
entities:
|
||||
- entity: group.light_hallway
|
||||
icon: 'mdi:door-closed'
|
||||
|
@ -121,14 +164,57 @@ views:
|
|||
- entity: group.light_office_martin
|
||||
icon: 'mdi:monitor-multiple'
|
||||
name: Martins Büro
|
||||
show_empty: false
|
||||
state_filter:
|
||||
- 'on'
|
||||
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'
|
||||
title: Schlafzimmer
|
||||
- title: Martins Büro
|
||||
icon: 'mdi:monitor-multiple'
|
||||
cards:
|
||||
- cards:
|
||||
- type: 'custom:compact-custom-header'
|
||||
- aspect_ratio: 16x9
|
||||
entities:
|
||||
- group.office_martin
|
||||
|
@ -155,17 +241,20 @@ views:
|
|||
- entity: light.arbeitszimmer_martin_unten
|
||||
name: Stehlampe Unten
|
||||
- entity: cover.arbeitszimmer_martin_rollo
|
||||
name: Rollo Arbeitszimmer
|
||||
name: Rollo
|
||||
type: 'custom:state-card-custom-cover'
|
||||
- entity: binary_sensor.arbeitszimmer_martin_bewegungsmelder_bewegung
|
||||
format: relative
|
||||
name: Bewegung
|
||||
secondary_info: last-changed
|
||||
format: relative
|
||||
- entity: sensor.arbeitszimmer_martin_bewegungsmelder_helligkeit
|
||||
name: Helligkeit
|
||||
show_header_toggle: false
|
||||
type: entities
|
||||
icon: 'mdi:monitor-multiple'
|
||||
title: Martins Büro
|
||||
- cards:
|
||||
- type: 'custom:compact-custom-header'
|
||||
- entities:
|
||||
- entity: sensor.trockner_verbrauch
|
||||
name: Trockner aktuell
|
||||
|
@ -234,13 +323,4 @@ views:
|
|||
points_per_hour: 30
|
||||
type: 'custom:mini-graph-card'
|
||||
title: Admin
|
||||
- cards:
|
||||
- artwork: cover
|
||||
entity: media_player.kitchenpi
|
||||
hide:
|
||||
power_state: false
|
||||
source: true
|
||||
volume: true
|
||||
icon: 'mdi:spotify'
|
||||
type: 'custom:mini-media-player'
|
||||
title: Test
|
||||
icon: mdi:settings
|
|
@ -0,0 +1,7 @@
|
|||
To install dependencies run:
|
||||
npm install
|
||||
|
||||
|
||||
To build:
|
||||
npm run build
|
||||
copy file from dist folder
|
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 548 KiB |
After Width: | Height: | Size: 977 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 331 KiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 3.0 MiB |
After Width: | Height: | Size: 2.3 MiB |
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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>;
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
207
custom_frontend_sources/state-card-custom-cover/dist/state-card-custom-cover.js
vendored
Normal 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"
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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>;
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
python3 config_creation/main.py
|
||||
|
|
@ -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 ../..
|
||||
|
|
@ -339,7 +339,7 @@
|
|||
brightness: 15
|
||||
color_temp: 477
|
||||
|
||||
- name: Schalfzimmer Orange
|
||||
- name: Schlafzimmer Orange
|
||||
entities:
|
||||
light.schlafzimmer_deckenlampe:
|
||||
state: off
|
|
@ -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);
|
After Width: | Height: | Size: 319 KiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 548 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 977 KiB |