Schlafzimmer szenen, stillen usw
This commit is contained in:
parent
fbfd8a3557
commit
6ee8c9c348
|
@ -1 +1 @@
|
|||
0.115.6
|
||||
2021.1.5
|
|
@ -594,7 +594,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "b05205cd745f9313e410b1ae8b6c3244986e4bd12e1f5196caac378619184ed804de6b1df56b77f60e8aa18c659886f4c2ca0815098e3c554726b4450bb37f13",
|
||||
"jwt_key": "b2d8eb38f6507f5b16322b6885405d34690fdbf2ec2a531647c89f0145bc7fa576b80572d2ee1cda9fbedf347facd6aca9f640310cbbb088d3208781989c0760",
|
||||
"last_used_at": "2020-09-17T20:26:40.619361+00:00",
|
||||
"last_used_at": "2021-01-23T10:18:02.917658+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -734,7 +734,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "c60c252317f548195ea325c527f8b2e5c0d8690cd24503fb5128d7d42076086998d7fc8705fbe9ee9e523673c209f33aa58ed80e1baaba896c1790c28792521a",
|
||||
"jwt_key": "a6f25bdc44af136f1b64c23dccc72184a87285fa080a2b59851d1f0e34ab89ecc39b7d8cde055872ab0dbd5759aabefe6bfe5474aece6155d853e894dbc27913",
|
||||
"last_used_at": "2020-10-05T14:17:02.995113+00:00",
|
||||
"last_used_at": "2020-10-20T08:37:24.674779+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -776,7 +776,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "386819a111578c2b8f82434a9cf2bcb3cef896f4f16c3e0a1f951be439ab851e76702f30779f636a8d51bb28b0adcd36bc960c643481b75ebe8a9eeebc5a32ed",
|
||||
"jwt_key": "db54f0ea0b76b021ed019b10364014313c1557fe8117fd46bb862cb537720b4e1ad4fe11a61c7a4306b2a0ca33babd7aff6d039f2e4888f87d8de4d92ffeec2e",
|
||||
"last_used_at": "2020-10-05T19:10:33.896412+00:00",
|
||||
"last_used_at": "2020-12-25T07:45:40.563312+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -874,7 +874,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "587f6d7a948d526f32f41db51cd186ace3d884a03ed46b3f4cbfa869fba1a45b4274a111053c038279449821143f995cd50f1f381801471f84d00385564caff6",
|
||||
"jwt_key": "8acd2221e057a48d290443abd8ad5a5bfbabb18d8131576356a298aeb253b8cc02b5295d6fa8832512ee39f24b9fc87579832c2028233365ea3ebaa5e55d2544",
|
||||
"last_used_at": "2020-07-18T11:04:01.222594+00:00",
|
||||
"last_used_at": "2021-01-27T16:40:51.883783+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -888,7 +888,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "c255c95f61126b8064f8ae84e621ee0a770d2023de82ff066dce12074f950fa29defa6efbf71c538916cd92a00e2849e189b5ce1268c2d48a737e8a5e81d2ade",
|
||||
"jwt_key": "d86702343e9712dbf76b25d832d1b81d3185ccec78d59087a27b37e348ac89de7f2a63e14ed0f3f38886577bda919f5258732a1b083a89d98853296c29e47106",
|
||||
"last_used_at": "2020-10-03T21:39:41.378450+00:00",
|
||||
"last_used_at": "2020-10-23T17:34:08.745574+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -944,7 +944,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "5413aa9dfb9b944f384c07ebc0242e2b7b26c1e674b0c74ace992029b64302e12d0fe038ece34d425714a757ebafce5de46bd101d5b85dc7e3c96cca4f5595ca",
|
||||
"jwt_key": "afc76b9a4127faea57f23d7020be74daaaaba30e99084db2f2e79fe86775841203355bde3268b851b507e964faa10b6cb15c66beb48a08c9b9cab96648372b87",
|
||||
"last_used_at": "2020-10-05T14:03:10.284411+00:00",
|
||||
"last_used_at": "2021-02-01T15:31:11.680396+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -986,7 +986,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "5ef3ab121bf8da837141c97d6d3cee163ab8f3d9500ccfa88b00e7d5541eead3ce479329c4ba2c7cdacd73535f830e60424ae21841de0967416f694cab8b9c0b",
|
||||
"jwt_key": "1888a3611f1a42b55b412ba801a7ffca654e347049e285a9b5513b15ded3c0f729c7463e9a0f957e0ef878c210338fef196cc449170c4a4f925c38678c07ad70",
|
||||
"last_used_at": "2020-10-05T20:56:08.570270+00:00",
|
||||
"last_used_at": "2021-02-01T16:02:58.382652+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -1014,7 +1014,77 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "1e1726001ee4616f716875a4d8de6f149195902d407334106f774a7aafd9b8c5348414d93c1b7280874746399c81f4e4b27b7b765f23034a3077b943690cfc9e",
|
||||
"jwt_key": "d4a7bc29bca15964c03ad344771f9a74304c1d46a0b663f8547d76159f3ba318748fd35e3ec5bdf944cbae9c21449294993e3735a68c3971ed85e489d49ee91a",
|
||||
"last_used_at": "2020-10-05T20:50:06.540955+00:00",
|
||||
"last_used_at": "2021-02-01T17:23:26.464097+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
"id": "6e0642fab2524df2b472f94bf1b40ab1",
|
||||
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||
"client_id": "https://ha.bauer.tech/",
|
||||
"client_name": null,
|
||||
"client_icon": null,
|
||||
"token_type": "normal",
|
||||
"created_at": "2020-10-21T11:06:15.175190+00:00",
|
||||
"access_token_expiration": 1800.0,
|
||||
"token": "5b070b65e9b585ae0eccf81577c6943aef4b602a8f165348d8394ef2b2f6e976071f728699ca9b5f4e7ff7ff6d44e75d3c79b1258e21698253a44d3d154bf5fd",
|
||||
"jwt_key": "fd4f48ed396555336989559fff54ba8c840a009dd8368085a35ec725c163865e326a01f3e2695e8f466d017ec69c5173a5c692868642c7d7ed8639bfba308cfc",
|
||||
"last_used_at": "2020-10-21T11:06:15.175587+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
"id": "bbb1287659bd40bb87d72666d8547817",
|
||||
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||
"client_id": "https://ha.bauer.tech/",
|
||||
"client_name": null,
|
||||
"client_icon": null,
|
||||
"token_type": "normal",
|
||||
"created_at": "2020-10-22T15:18:22.558241+00:00",
|
||||
"access_token_expiration": 1800.0,
|
||||
"token": "d84e7b86d10020c0fbf3908486d3f1546af9e5ebb69608f8c4e8872ff0bb870da53273ae799f4167a10115243ea96a5672b89a10753882b57ab032a3fa3019ee",
|
||||
"jwt_key": "c7fcd4e2f9bb698841f19b58e7380535ab48d7ca01c7c13b988e6983b043d075fd2134a1c1ba082ed45e603cbd55047510b1ee0b9fa45e06ccdb335c5e94c911",
|
||||
"last_used_at": "2020-10-31T16:54:45.479969+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
"id": "60932b9f71444d7e98cd80f786bd711c",
|
||||
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||
"client_id": "https://ha.bauer.tech/",
|
||||
"client_name": null,
|
||||
"client_icon": null,
|
||||
"token_type": "normal",
|
||||
"created_at": "2020-11-04T15:10:34.927590+00:00",
|
||||
"access_token_expiration": 1800.0,
|
||||
"token": "b35109ef6674416018047ee788db58de150dc137af697800ddc84743c1f6012ce5561170b49135c0f39fa42da80c47c52284dc599be894038e5dfeedc2d7bc69",
|
||||
"jwt_key": "ed33e5df5c16d07afe773fb25ca4a8515c7a991d00f347b4e2f4e23c7fd128c2bf19c838d856aa01385bf32e3e8be619d0f90f9a79a036f425013149580e9f46",
|
||||
"last_used_at": "2021-01-27T12:38:45.853836+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
"id": "34c89180e1e54a5fbd7d2c13b531fc81",
|
||||
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||
"client_id": "https://ha.bauer.tech/",
|
||||
"client_name": null,
|
||||
"client_icon": null,
|
||||
"token_type": "normal",
|
||||
"created_at": "2020-12-01T22:57:07.836498+00:00",
|
||||
"access_token_expiration": 1800.0,
|
||||
"token": "72a02d37245ba4f2d4aab5e5ad42375721b39f83bdac0328e0144842eab954771e0905963bb6a5c35d5fd9789f1d7a57d3517de933465cc1a24d8f6c9c355aa7",
|
||||
"jwt_key": "23a9f917060a2843d6b67b34d1a48b6f1867ea38fd9794b10e8543f027f6f2f44b535e36417fdd8b610067f76921a93fcd4e4ef371ff7638d2880f553f5a21a6",
|
||||
"last_used_at": "2021-01-30T20:21:01.473466+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
"id": "bc4ef31fcdec416c9aa9c2e89d42c351",
|
||||
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||
"client_id": "https://ha.bauer.tech/",
|
||||
"client_name": null,
|
||||
"client_icon": null,
|
||||
"token_type": "normal",
|
||||
"created_at": "2021-01-16T08:36:47.198883+00:00",
|
||||
"access_token_expiration": 1800.0,
|
||||
"token": "d50fdcf16944578977db4f0ea2ba627112e737caa23e282ab3121e4216b96794d2fcd663c713c1812fd1cc411352c2d912d52b277743cf4fd125d146f70f9bed",
|
||||
"jwt_key": "671f3313aa53b5b5e99927a47525c3a852e47581aa525591cb29e8494261818ef88058dd0935395c947b7573993101513d4717ae55d3aefd5dce49c12a3a80a2",
|
||||
"last_used_at": "2021-02-01T19:31:51.963048+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -1056,7 +1126,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "c008fe893f268d124033d1258fc59917cbf4b392c36016f4f78740688abcb6a1edf23ace480bc2d65b39b616859218a18d8695d4162622c2a5dc5d234c84fe77",
|
||||
"jwt_key": "5b37cbd04e7087318173ec3df627120cb88f9043126f17e2d4cfff9684e2d782793493d0c847ba7e6f68e8fe82af2d0f324984514c5630833a73620b39e130de",
|
||||
"last_used_at": "2020-10-04T11:34:17.996735+00:00",
|
||||
"last_used_at": "2021-02-01T14:29:45.045034+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
|
@ -1070,8 +1140,8 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "a9b15071e0ed591eea3d66d903cfba5efa872b44acc5a0abeb7c4518b122ca6136be3c53df37246fbcb2e9abbb085b25921e911907e2346fc0f6fcc4c99f5f05",
|
||||
"jwt_key": "2a6b9ccfe7a040ceae2e77a05d0c97cd67150297b33f2b4316dfb527418a5dcbc0f96eb0edd11d8288e28824bb7bc65c2ceeeb5d5c893f0c50b3dc9ed77b40ee",
|
||||
"last_used_at": "2020-02-20T14:04:02.173629+00:00",
|
||||
"last_used_ip": "127.0.0.1"
|
||||
"last_used_at": "2020-12-28T21:28:12.883673+00:00",
|
||||
"last_used_ip": "192.168.178.80"
|
||||
},
|
||||
{
|
||||
"id": "d94991861636455788d6e0ed5ddc8827",
|
||||
|
@ -1154,7 +1224,7 @@
|
|||
"access_token_expiration": 1800.0,
|
||||
"token": "832326bd02b23b62d231f5129d18042028215dbdee358a4bb25687764faf3815db2818e8a9001f11ba4518c4e9401563d182987eb55e2eb9ddf97135f678e0ba",
|
||||
"jwt_key": "dffb82d95a8fb848f6ae645aeb8445242f093aa61f99749283904e0f6e2b0c01717a02bc0892bf0b35beca61400e27aae2b742dc14878a107eb60b730b44a025",
|
||||
"last_used_at": "2020-10-05T19:11:11.528051+00:00",
|
||||
"last_used_at": "2021-02-01T19:37:49.113104+00:00",
|
||||
"last_used_ip": "172.30.32.2"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -167,15 +167,16 @@
|
|||
"light.kinderzimmer_deckenlampe",
|
||||
"cover.kinderzimmer_rollo"
|
||||
],
|
||||
"include_entity_globs": [],
|
||||
"exclude_entity_globs": [],
|
||||
"exclude_entities": [],
|
||||
"include_domains": [],
|
||||
"exclude_domains": [],
|
||||
"exclude_entity_globs": [],
|
||||
"include_entity_globs": []
|
||||
"exclude_domains": []
|
||||
},
|
||||
"auto_start": true,
|
||||
"safe_mode": false,
|
||||
"entity_config": {}
|
||||
"entity_config": {},
|
||||
"mode": "bridge"
|
||||
},
|
||||
"system_options": {
|
||||
"disable_new_entities": false
|
||||
|
@ -270,7 +271,7 @@
|
|||
"title": "HP Officejet Pro 8610 [9B7880]",
|
||||
"data": {
|
||||
"base_path": "/ipp/print",
|
||||
"host": "192.168.178.74",
|
||||
"host": "192.168.178.55",
|
||||
"name": "HP Officejet Pro 8610 [9B7880]",
|
||||
"port": 631,
|
||||
"ssl": false,
|
||||
|
@ -316,12 +317,12 @@
|
|||
"title": "MartinHandyP30",
|
||||
"data": {
|
||||
"app_data": {
|
||||
"push_token": "ckSTknpJRqyUSbSvM_zr9Q:APA91bE79K_wlJfkLAQwkKU4qK6aTFahehG3RBfk06bEdZGcJTeO3Qfk9XAezXaFmSfj2-65JoIeBb5s-Xztio1Kc2miqaovquePASnz6WZoGPVfnDqlwjkp9fGR46o58uPRzz6g0tkr",
|
||||
"push_url": "https://mobile-apps.home-assistant.io/api/sendPush/android/v1"
|
||||
"push_url": "https://mobile-apps.home-assistant.io/api/sendPush/android/v1",
|
||||
"push_token": "ckSTknpJRqyUSbSvM_zr9Q:APA91bE79K_wlJfkLAQwkKU4qK6aTFahehG3RBfk06bEdZGcJTeO3Qfk9XAezXaFmSfj2-65JoIeBb5s-Xztio1Kc2miqaovquePASnz6WZoGPVfnDqlwjkp9fGR46o58uPRzz6g0tkr"
|
||||
},
|
||||
"app_id": "io.homeassistant.companion.android",
|
||||
"app_name": "Home Assistant",
|
||||
"app_version": "2.5.0-full (400)",
|
||||
"app_version": "2021.1.1-full (555)",
|
||||
"device_id": "3889c45a8d9e2c62",
|
||||
"device_name": "MartinHandy",
|
||||
"manufacturer": "HUAWEI",
|
||||
|
@ -347,10 +348,10 @@
|
|||
"title": "Martin\u2019s iPad",
|
||||
"data": {
|
||||
"device_id": "8191AC71-330B-4784-8634-E6F4F0C2DFA2",
|
||||
"app_version": "2020.6.2 (1)",
|
||||
"app_version": "2021.1.1 (9)",
|
||||
"app_name": "Home Assistant",
|
||||
"manufacturer": "Apple",
|
||||
"os_version": "14.0.1",
|
||||
"os_version": "14.4",
|
||||
"supports_encryption": true,
|
||||
"device_name": "Martin\u2019s iPad",
|
||||
"os_name": "iOS",
|
||||
|
|
|
@ -22,12 +22,13 @@
|
|||
"manufacturer": "Signify",
|
||||
"model": "BSB002",
|
||||
"name": "Philips hue",
|
||||
"sw_version": "1941056000",
|
||||
"sw_version": "1942135050",
|
||||
"entry_type": null,
|
||||
"id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -48,7 +49,8 @@
|
|||
"id": "31d95a5c59b24732934b4bcde46654a7",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -69,7 +71,8 @@
|
|||
"id": "1dbec2bfe7594794a516405b1a164027",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -90,7 +93,8 @@
|
|||
"id": "00429941ced6498495803f7e1ae65d55",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -111,7 +115,8 @@
|
|||
"id": "00e0dc89c87240699d1286fb79bcc877",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": "46ebd507f8f348508653f61054f67eb0",
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -132,7 +137,8 @@
|
|||
"id": "da7bdf516f614f8fa75f6f611a8cef3c",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": "e58ae8bf5c7847af89a727d7949016f0",
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -153,7 +159,8 @@
|
|||
"id": "27e519bd18974605b39e17156f903a94",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -174,7 +181,8 @@
|
|||
"id": "42fcf3d4fab243d3b3535b88da5520cb",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": "46ebd507f8f348508653f61054f67eb0",
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -195,7 +203,8 @@
|
|||
"id": "d285533d588c4dd98cb2184cd299b882",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": "e58ae8bf5c7847af89a727d7949016f0",
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -216,7 +225,8 @@
|
|||
"id": "77b2e3e9e127481d8b508f8952c08762",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -237,7 +247,8 @@
|
|||
"id": "075d6edf32bb4d6e9c564101a3b253ca",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -258,7 +269,8 @@
|
|||
"id": "4c3bbd2722774287bef53f0eae996c43",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": "e58ae8bf5c7847af89a727d7949016f0",
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -279,7 +291,8 @@
|
|||
"id": "ed71ab3618e04b26b65c561c48b12704",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": "46ebd507f8f348508653f61054f67eb0",
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -300,7 +313,8 @@
|
|||
"id": "c5d6ba59208e4f05a7f8e573f7372316",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -321,7 +335,8 @@
|
|||
"id": "973ccf8026ed4dec8ac55c0c646dafbd",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -342,7 +357,8 @@
|
|||
"id": "80f3a81098d345c5a848625f7c7f934f",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -368,7 +384,8 @@
|
|||
"id": "51f4012aed0b4093b353cdc851755281",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -389,7 +406,8 @@
|
|||
"id": "cff99cfa5ca84b24ba4ff1883f08e02b",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -410,7 +428,8 @@
|
|||
"id": "8e45736652404feda92084feb86a5745",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -431,7 +450,8 @@
|
|||
"id": "7df169040686480db2b1ad5979037e80",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -452,7 +472,8 @@
|
|||
"id": "dd9403c58f084442b1606fe616b3cfb7",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -473,7 +494,8 @@
|
|||
"id": "aa4821c78db245ef90119b9af6fd97bc",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -494,7 +516,8 @@
|
|||
"id": "620ada4df9fc493ca53677a979768dee",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -515,7 +538,8 @@
|
|||
"id": "2d0e7717b4194ecca91589bd83bef38c",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -536,7 +560,8 @@
|
|||
"id": "7465dff14c5e472d904ddb93b09b2770",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -557,7 +582,8 @@
|
|||
"id": "b6158f158b16427388a5dda943f494dd",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -578,7 +604,8 @@
|
|||
"id": "79711ec2ac314065a532b321eef24950",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -599,7 +626,8 @@
|
|||
"id": "487189a878ca49ad91d6b79ec3c7b70a",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -620,7 +648,8 @@
|
|||
"id": "b3954be50d02456ca1cf62085677d14d",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -641,7 +670,8 @@
|
|||
"id": "9b59a0accd104bb781b7136756c15835",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -662,7 +692,8 @@
|
|||
"id": "8ac42fc9656e4882a022db8402456d25",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -683,7 +714,8 @@
|
|||
"id": "4fa58dcef8af4af897a1a9558a015611",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -704,7 +736,8 @@
|
|||
"id": "50781ad2a8d14062a96f4a004924be56",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -725,7 +758,8 @@
|
|||
"id": "6ad58be1b42d4e0988a030fcd5e9d7e8",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -746,7 +780,8 @@
|
|||
"id": "454ec0863be74355983bfdc39531df45",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -767,7 +802,8 @@
|
|||
"id": "022a4fdbf7724dd3962d25a4b4628e20",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -788,7 +824,8 @@
|
|||
"id": "f13e9c76304f4d28983117137046e256",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -809,7 +846,8 @@
|
|||
"id": "6c79bf128b3f417690663f40e64fbc18",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -830,7 +868,8 @@
|
|||
"id": "766b2c2b9f1c4547974914edd271f6ba",
|
||||
"via_device_id": "6c79bf128b3f417690663f40e64fbc18",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -851,7 +890,8 @@
|
|||
"id": "f0876537265d48b28d9c8e9351379955",
|
||||
"via_device_id": "6c79bf128b3f417690663f40e64fbc18",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -872,7 +912,8 @@
|
|||
"id": "13fb850e77be4ca0bab70dc1e2c19aba",
|
||||
"via_device_id": "6c79bf128b3f417690663f40e64fbc18",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -893,7 +934,8 @@
|
|||
"id": "be1c1f75be0e4d40ac8be5e19c7aceb2",
|
||||
"via_device_id": "6c79bf128b3f417690663f40e64fbc18",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -914,7 +956,8 @@
|
|||
"id": "b0fd84c9313f408a9a7a404b60b71bde",
|
||||
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -935,7 +978,8 @@
|
|||
"id": "b8b532e7225448a5a7b1be5c91a501bc",
|
||||
"via_device_id": "6c79bf128b3f417690663f40e64fbc18",
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -962,7 +1006,8 @@
|
|||
"id": "abac1bcd6667484bad1460abe8a40412",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -983,7 +1028,8 @@
|
|||
"id": "86655186bf654126b5f179b2d0897eea",
|
||||
"via_device_id": null,
|
||||
"area_id": "46ebd507f8f348508653f61054f67eb0",
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -1013,7 +1059,8 @@
|
|||
"id": "17abd106e210436c8f7e95857cd2fc14",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -1029,12 +1076,13 @@
|
|||
"manufacturer": "Apple",
|
||||
"model": "iPad7,4",
|
||||
"name": "Martin\u2019s iPad",
|
||||
"sw_version": "14.0.1",
|
||||
"sw_version": "14.4",
|
||||
"entry_type": null,
|
||||
"id": "61029ebfaeb04736a98512e93110ebff",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
},
|
||||
{
|
||||
"config_entries": [
|
||||
|
@ -1055,7 +1103,8 @@
|
|||
"id": "4169e969251746c0b024e2d9b7f0a3c0",
|
||||
"via_device_id": null,
|
||||
"area_id": null,
|
||||
"name_by_user": null
|
||||
"name_by_user": null,
|
||||
"disabled_by": null
|
||||
}
|
||||
],
|
||||
"deleted_devices": [
|
||||
|
@ -1099,13 +1148,13 @@
|
|||
],
|
||||
"connections": [],
|
||||
"identifiers": [
|
||||
[
|
||||
"webhook_id",
|
||||
"87968208b8c13c3f79fbebf2700c0510ccf67e0d7b62b19651fed96fd9b4a40a"
|
||||
],
|
||||
[
|
||||
"device_id",
|
||||
"437ea82e3a924ee183d1511c7cc9a98a"
|
||||
],
|
||||
[
|
||||
"webhook_id",
|
||||
"87968208b8c13c3f79fbebf2700c0510ccf67e0d7b62b19651fed96fd9b4a40a"
|
||||
]
|
||||
],
|
||||
"id": "1aed3276db0143429ca26a0be846fa50"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -29,12 +29,6 @@
|
|||
"color": "#0050ff",
|
||||
"name": "Blau",
|
||||
"scene": "scene.wohnbereich_blau_grun"
|
||||
},
|
||||
{
|
||||
"color": "#ffffff",
|
||||
"icon": "mdi:weather-night",
|
||||
"name": "Kuscheln",
|
||||
"scene": "scene.wohnbereich_kuscheln"
|
||||
}
|
||||
],
|
||||
"type": "custom:room-glance-card"
|
||||
|
@ -62,12 +56,12 @@
|
|||
},
|
||||
{
|
||||
"entity": "cover.wohnzimmer_fenster_rollo",
|
||||
"name": "Wohnzimmer Fenster",
|
||||
"name": "WZ Fenster",
|
||||
"type": "custom:state-card-custom-cover"
|
||||
},
|
||||
{
|
||||
"entity": "cover.wohnzimmer_terrassentur_rollo",
|
||||
"name": "Wohnzimmer T\u00fcr",
|
||||
"name": "Terrassent\u00fcr",
|
||||
"type": "custom:state-card-custom-cover"
|
||||
},
|
||||
{
|
||||
|
@ -133,6 +127,39 @@
|
|||
]
|
||||
},
|
||||
"type": "custom:mini-media-player"
|
||||
},
|
||||
{
|
||||
"type": "entities",
|
||||
"entities": [
|
||||
{
|
||||
"entity": "switch.tasmota01",
|
||||
"icon": "mdi:led-strip-variant",
|
||||
"name": "Balkon Lichterkette"
|
||||
},
|
||||
{
|
||||
"entity": "switch.tasmota02",
|
||||
"icon": "mdi:star-face",
|
||||
"name": "Arbeitszimmer Stern"
|
||||
},
|
||||
{
|
||||
"entity": "switch.tasmota03",
|
||||
"icon": "mdi:star-four-points",
|
||||
"name": "Eingang Stern"
|
||||
},
|
||||
{
|
||||
"entity": "switch.mobile_steckdose_schalter_1",
|
||||
"icon": "mdi:star",
|
||||
"name": "K\u00fcche Stern"
|
||||
},
|
||||
{
|
||||
"entity": "switch.mobile_steckdose_schalter_2",
|
||||
"icon": "mdi:candle",
|
||||
"name": "Wohnzimmer"
|
||||
}
|
||||
],
|
||||
"title": "Weihnachten",
|
||||
"state_color": true,
|
||||
"icon": "mdi:pine-tree"
|
||||
}
|
||||
],
|
||||
"icon": "mdi:sofa",
|
||||
|
@ -465,6 +492,16 @@
|
|||
"entity": "cover.kinderzimmer_rollo",
|
||||
"name": "Rollo Klein",
|
||||
"type": "custom:state-card-custom-cover"
|
||||
},
|
||||
{
|
||||
"entity": "switch.tasmota06",
|
||||
"name": "Kamera Schlafzimmer",
|
||||
"icon": "mdi:video"
|
||||
},
|
||||
{
|
||||
"entity": "switch.tasmota07",
|
||||
"name": "F\u00f6n Schlafzimmer",
|
||||
"icon": "mdi:fan"
|
||||
}
|
||||
],
|
||||
"show_header_toggle": false,
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
"version": 1,
|
||||
"key": "lovelace_resources",
|
||||
"data": {
|
||||
"items": [
|
||||
{
|
||||
|
@ -29,10 +31,8 @@
|
|||
{
|
||||
"id": "02ac97946bb44092a5f073752a8b6deb",
|
||||
"type": "module",
|
||||
"url": "/local/custom_ui/multiple-entity-row.js?v=3.1.1"
|
||||
"url": "/local/custom_ui/multiple-entity-row.js?v=3.5.1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"key": "lovelace_resources",
|
||||
"version": 1
|
||||
}
|
||||
}
|
|
@ -17,9 +17,9 @@
|
|||
"added": true,
|
||||
"attributes": {},
|
||||
"device_class": "plug",
|
||||
"icon": "mdi:power-plug",
|
||||
"icon": "mdi:power-plug-off",
|
||||
"name": "Is Charging",
|
||||
"state": true,
|
||||
"state": false,
|
||||
"type": "binary_sensor",
|
||||
"unique_id": "is_charging",
|
||||
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
|
||||
|
@ -578,17 +578,7 @@
|
|||
},
|
||||
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_audio_sensor": {
|
||||
"added": true,
|
||||
"attributes": {
|
||||
"audio_mode": "normal",
|
||||
"is_headphones": false,
|
||||
"is_mic_muted": false,
|
||||
"is_music_active": false,
|
||||
"is_speakerphone_on": false,
|
||||
"volume_level_alarm": 6,
|
||||
"volume_level_call": 7,
|
||||
"volume_level_music": 8,
|
||||
"volume_level_ring": 4
|
||||
},
|
||||
"attributes": {},
|
||||
"icon": "mdi:volume-high",
|
||||
"name": "Audio Sensor",
|
||||
"state": "normal",
|
||||
|
@ -610,9 +600,9 @@
|
|||
"added": true,
|
||||
"attributes": {},
|
||||
"device_class": "battery",
|
||||
"icon": "mdi:battery-charging",
|
||||
"icon": "mdi:battery-70",
|
||||
"name": "Battery Level",
|
||||
"state": 100,
|
||||
"state": 74,
|
||||
"type": "sensor",
|
||||
"unique_id": "battery_level",
|
||||
"unit_of_measurement": "%",
|
||||
|
@ -620,15 +610,11 @@
|
|||
},
|
||||
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_battery_state": {
|
||||
"added": true,
|
||||
"attributes": {
|
||||
"battery_health": "good",
|
||||
"charger_type": "ac",
|
||||
"is_charging": true
|
||||
},
|
||||
"attributes": {},
|
||||
"device_class": "battery",
|
||||
"icon": "mdi:battery-charging",
|
||||
"icon": "mdi:battery-minus",
|
||||
"name": "Battery State",
|
||||
"state": "full",
|
||||
"state": "discharging",
|
||||
"type": "sensor",
|
||||
"unique_id": "battery_state",
|
||||
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
|
||||
|
@ -638,8 +624,7 @@
|
|||
"attributes": {
|
||||
"connected_not_paired_devices": "[]",
|
||||
"connected_paired_devices": "[]",
|
||||
"is_bt_on": false,
|
||||
"paired_devices": ""
|
||||
"paired_devices": "[3E:19:06:04:0D:50, A0:56:B2:15:C9:A4]"
|
||||
},
|
||||
"icon": "mdi:bluetooth",
|
||||
"name": "Bluetooth Connection",
|
||||
|
@ -652,9 +637,9 @@
|
|||
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_charger_type": {
|
||||
"added": true,
|
||||
"attributes": {},
|
||||
"icon": "mdi:power-plug",
|
||||
"icon": "mdi:battery",
|
||||
"name": "Charger Type",
|
||||
"state": "ac",
|
||||
"state": "none",
|
||||
"type": "sensor",
|
||||
"unique_id": "charger_type",
|
||||
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
|
||||
|
@ -706,13 +691,13 @@
|
|||
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_last_reboot": {
|
||||
"added": true,
|
||||
"attributes": {
|
||||
"Local Time": "Tue Sep 08 15:45:59 GMT+02:00 2020",
|
||||
"Time in Milliseconds": 1599572800000.0
|
||||
"Local Time": "Mon Jan 25 02:51:06 GMT+01:00 2021",
|
||||
"Time in Milliseconds": 1611539466409
|
||||
},
|
||||
"device_class": "timestamp",
|
||||
"icon": "mdi:restart",
|
||||
"name": "Last Reboot",
|
||||
"state": "2020-09-08T13:45:59Z",
|
||||
"state": "2021-01-25T01:51:06Z",
|
||||
"type": "sensor",
|
||||
"unique_id": "last_reboot",
|
||||
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
|
||||
|
@ -732,14 +717,14 @@
|
|||
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_next_alarm": {
|
||||
"added": true,
|
||||
"attributes": {
|
||||
"Local Time": "Tue Oct 06 07:50:00 GMT+02:00 2020",
|
||||
"Local Time": "Tue Feb 02 06:45:00 GMT+01:00 2021",
|
||||
"Package": "Unknown",
|
||||
"Time in Milliseconds": 1601963430000.0
|
||||
"Time in Milliseconds": 1612244700000
|
||||
},
|
||||
"device_class": "timestamp",
|
||||
"icon": "mdi:alarm",
|
||||
"name": "Next Alarm",
|
||||
"state": "2020-10-06T05:50:00.000Z",
|
||||
"state": "2021-02-02T05:45:00.000Z",
|
||||
"type": "sensor",
|
||||
"unique_id": "next_alarm",
|
||||
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
|
||||
|
@ -759,7 +744,7 @@
|
|||
"attributes": {},
|
||||
"icon": "mdi:leak",
|
||||
"name": "Proximity Sensor",
|
||||
"state": "far",
|
||||
"state": "near",
|
||||
"type": "sensor",
|
||||
"unique_id": "proximity_sensor",
|
||||
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
|
||||
|
@ -769,7 +754,7 @@
|
|||
"attributes": {},
|
||||
"icon": "mdi:walk",
|
||||
"name": "Schrittsensor",
|
||||
"state": "55576",
|
||||
"state": "19916",
|
||||
"type": "sensor",
|
||||
"unique_id": "steps_sensor",
|
||||
"unit_of_measurement": "steps",
|
||||
|
@ -777,15 +762,10 @@
|
|||
},
|
||||
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_storage_sensor": {
|
||||
"added": true,
|
||||
"attributes": {
|
||||
"Free external storage": "No SD Card",
|
||||
"Free internal storage": "90GB",
|
||||
"Total external storage": "No SD Card",
|
||||
"Total internal storage": "110GB"
|
||||
},
|
||||
"attributes": {},
|
||||
"icon": "mdi:harddisk",
|
||||
"name": "Storage Sensor",
|
||||
"state": 82,
|
||||
"state": 78,
|
||||
"type": "sensor",
|
||||
"unique_id": "storage_sensor",
|
||||
"unit_of_measurement": "%",
|
||||
|
@ -804,13 +784,7 @@
|
|||
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_wifi_connection": {
|
||||
"added": true,
|
||||
"attributes": {
|
||||
"bssid": "7c:ff:4d:05:2e:8d",
|
||||
"frequency": 5500,
|
||||
"ip_address": "192.168.178.115",
|
||||
"is_hidden": false,
|
||||
"is_wifi_on": true,
|
||||
"link_speed": 702,
|
||||
"signal_level": -25
|
||||
"is_hidden": false
|
||||
},
|
||||
"icon": "mdi:wifi",
|
||||
"name": "WLAN Verbindung",
|
||||
|
@ -823,12 +797,12 @@
|
|||
"attributes": {
|
||||
"Confidence": "High",
|
||||
"Types": [
|
||||
"Unknown"
|
||||
"Stationary"
|
||||
]
|
||||
},
|
||||
"icon": "mdi:help-circle",
|
||||
"icon": "mdi:human-male",
|
||||
"name": "Activity",
|
||||
"state": "Unknown",
|
||||
"state": "Stationary",
|
||||
"type": "sensor",
|
||||
"unique_id": "activity",
|
||||
"webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a",
|
||||
|
@ -836,14 +810,14 @@
|
|||
},
|
||||
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_storage": {
|
||||
"attributes": {
|
||||
"Available": "135,14 GB",
|
||||
"Available (Important)": "144,50 GB",
|
||||
"Available (Opportunistic)": "143,22 GB",
|
||||
"Available": "109,76 GB",
|
||||
"Available (Important)": "119,30 GB",
|
||||
"Available (Opportunistic)": "118,01 GB",
|
||||
"Total": "255,98 GB"
|
||||
},
|
||||
"icon": "mdi:database",
|
||||
"name": "Storage",
|
||||
"state": "55.95",
|
||||
"state": "46.10",
|
||||
"type": "sensor",
|
||||
"unique_id": "storage",
|
||||
"unit_of_measurement": "% available",
|
||||
|
@ -852,13 +826,13 @@
|
|||
},
|
||||
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_battery_level": {
|
||||
"attributes": {
|
||||
"Battery State": "Charging",
|
||||
"Battery State": "Not Charging",
|
||||
"Low Power Mode": false
|
||||
},
|
||||
"device_class": "battery",
|
||||
"icon": "mdi:battery-charging-20",
|
||||
"icon": "mdi:battery-50",
|
||||
"name": "Battery Level",
|
||||
"state": 22,
|
||||
"state": 58,
|
||||
"type": "sensor",
|
||||
"unique_id": "battery_level",
|
||||
"unit_of_measurement": "%",
|
||||
|
@ -867,13 +841,13 @@
|
|||
},
|
||||
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_battery_state": {
|
||||
"attributes": {
|
||||
"Battery Level": 22,
|
||||
"Battery Level": 58,
|
||||
"Low Power Mode": false
|
||||
},
|
||||
"device_class": "battery",
|
||||
"icon": "mdi:battery-charging-20",
|
||||
"icon": "mdi:battery-50",
|
||||
"name": "Battery State",
|
||||
"state": "Charging",
|
||||
"state": "Not Charging",
|
||||
"type": "sensor",
|
||||
"unique_id": "battery_state",
|
||||
"webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a",
|
||||
|
@ -923,8 +897,8 @@
|
|||
"ISO Country Code": "DE",
|
||||
"Locality": "Rohr",
|
||||
"Location": [
|
||||
49.36930146126737,
|
||||
10.983655038542027
|
||||
49.369293212890625,
|
||||
10.983685522613598
|
||||
],
|
||||
"Name": "Dietersdorfer Stra\u00dfe 19",
|
||||
"Ocean": "N/A",
|
||||
|
@ -961,7 +935,7 @@
|
|||
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_last_update_trigger": {
|
||||
"icon": "mdi:cellphone-wireless",
|
||||
"name": "Last Update Trigger",
|
||||
"state": "Background Fetch",
|
||||
"state": "Significant Location Change",
|
||||
"type": "sensor",
|
||||
"unique_id": "last_update_trigger",
|
||||
"attributes": {},
|
||||
|
|
107
automations.yaml
107
automations.yaml
|
@ -61,7 +61,9 @@
|
|||
- data:
|
||||
message: Bewegung im Gang
|
||||
title: Alarm
|
||||
service: notify.ios_martins_ipad
|
||||
service: notify.mobile_app_martins_ipad
|
||||
- delay: '30'
|
||||
mode: single
|
||||
- id: '1598594894559'
|
||||
alias: KlingelAufHandy
|
||||
description: ''
|
||||
|
@ -81,3 +83,106 @@
|
|||
title: Klingel
|
||||
service: notify.ios_martins_ipad
|
||||
mode: single
|
||||
- id: '1606655282153'
|
||||
alias: _WeihnachtslichterAnUm6
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: 06:00
|
||||
condition: []
|
||||
action:
|
||||
- service: switch.turn_on
|
||||
data: {}
|
||||
entity_id:
|
||||
- switch.tasmota01
|
||||
- switch.tasmota02
|
||||
- switch.tasmota03
|
||||
mode: single
|
||||
- id: '1607412098745'
|
||||
alias: _WeihnachtslichterAusMorgens
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: sun
|
||||
event: sunrise
|
||||
offset: 00:15:00
|
||||
condition: []
|
||||
action:
|
||||
- service: switch.turn_off
|
||||
data: {}
|
||||
entity_id:
|
||||
- switch.tasmota01
|
||||
- switch.tasmota02
|
||||
- switch.tasmota03
|
||||
- switch.mobile_steckdose_schalter_1
|
||||
- switch.mobile_steckdose_schalter_2
|
||||
mode: single
|
||||
- id: '1607412144113'
|
||||
alias: _Weihnachtslichter An Abends
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: sun
|
||||
event: sunset
|
||||
condition: []
|
||||
action:
|
||||
- service: switch.turn_on
|
||||
data: {}
|
||||
entity_id:
|
||||
- switch.tasmota01
|
||||
- switch.tasmota02
|
||||
- switch.tasmota03
|
||||
- switch.mobile_steckdose_schalter_1
|
||||
- switch.mobile_steckdose_schalter_2
|
||||
mode: single
|
||||
- id: '1607412210097'
|
||||
alias: _Weihnachtslichter Aus Abends
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: '22:30'
|
||||
condition: []
|
||||
action:
|
||||
- service: switch.turn_off
|
||||
data: {}
|
||||
entity_id:
|
||||
- switch.tasmota01
|
||||
- switch.tasmota02
|
||||
- switch.tasmota03
|
||||
- switch.mobile_steckdose_schalter_1
|
||||
- switch.mobile_steckdose_schalter_2
|
||||
mode: single
|
||||
- id: '1612028092169'
|
||||
alias: 0_BewegungsmelderSchlafzimmerNacht
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.arbeitszimmer_bewegungsmelder_bewegung
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: light.bett_rebecca
|
||||
state: 'off'
|
||||
- condition: state
|
||||
entity_id: light.bett_martin
|
||||
state: 'off'
|
||||
- condition: state
|
||||
entity_id: light.schlafzimmer_deckenlampe
|
||||
state: 'off'
|
||||
- condition: numeric_state
|
||||
entity_id: cover.schlafzimmer_rollo_gross
|
||||
attribute: current_position
|
||||
below: '20'
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
xy_color:
|
||||
- 0.502
|
||||
- 0.414
|
||||
brightness: 6
|
||||
entity_id: light.bett_martin, light.bett_rebecca
|
||||
- delay: '1'
|
||||
- service: light.turn_on
|
||||
data:
|
||||
transition: 120
|
||||
entity_id: light.bett_martin, light.bett_rebecca
|
||||
mode: single
|
||||
|
|
|
@ -9,7 +9,19 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Good Morning
|
||||
media_content_type: music
|
||||
|
@ -23,7 +35,19 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Good Night Long
|
||||
media_content_type: music
|
||||
|
@ -37,7 +61,19 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Good Night
|
||||
media_content_type: music
|
||||
|
@ -51,7 +87,19 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Bar Classics
|
||||
media_content_type: music
|
||||
|
@ -65,7 +113,19 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Sentimental Moods
|
||||
media_content_type: music
|
||||
|
@ -79,7 +139,19 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Pop
|
||||
media_content_type: music
|
||||
|
@ -121,7 +193,19 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3
|
||||
media_content_type: music
|
||||
|
@ -135,10 +219,22 @@
|
|||
repeat_counter: 0
|
||||
host: bedroompi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.repeat_set
|
||||
data:
|
||||
media_content_id: Antenne Bayern
|
||||
media_content_type: channel
|
||||
repeat: one
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 1
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Foen
|
||||
media_content_type: music
|
||||
entity_id: media_player.bedroompi
|
||||
- service: media_player.volume_set
|
||||
data:
|
||||
volume_level: 60
|
||||
entity_id: media_player.bedroompi
|
||||
- alias: IR bedroompi.fritz.box btn_0
|
||||
trigger:
|
||||
|
@ -215,7 +311,7 @@
|
|||
action:
|
||||
service: scene.turn_on
|
||||
data:
|
||||
entity_id: scene.schlafzimmer_blau
|
||||
entity_id: scene.nachtswennallelieberschlafen
|
||||
- alias: IR bedroompi.fritz.box key_tv
|
||||
trigger:
|
||||
platform: event
|
||||
|
|
|
@ -93,7 +93,19 @@
|
|||
repeat_counter: 0
|
||||
host: esszimmerradio.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Gesammelte Weihnachtslieder
|
||||
media_content_type: music
|
||||
|
@ -107,7 +119,19 @@
|
|||
repeat_counter: 0
|
||||
host: esszimmerradio.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Harmonic Brass Christmas
|
||||
media_content_type: music
|
||||
|
@ -121,7 +145,19 @@
|
|||
repeat_counter: 0
|
||||
host: esszimmerradio.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: German Brass Christmas
|
||||
media_content_type: music
|
||||
|
@ -135,7 +171,19 @@
|
|||
repeat_counter: 0
|
||||
host: esszimmerradio.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Weihnachten mit den Wiener Sängerknaben
|
||||
media_content_type: music
|
||||
|
@ -149,7 +197,19 @@
|
|||
repeat_counter: 0
|
||||
host: esszimmerradio.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Weihnachten mit den Wiener Sängerknaben
|
||||
media_content_type: music
|
||||
|
@ -163,7 +223,19 @@
|
|||
repeat_counter: 0
|
||||
host: esszimmerradio.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.esszimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: SammlungGeorg
|
||||
media_content_type: music
|
||||
|
|
|
@ -93,7 +93,19 @@
|
|||
repeat_counter: 0
|
||||
host: musikserverWohnzimmerOben.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Gesammelte Weihnachtslieder
|
||||
media_content_type: music
|
||||
|
@ -107,7 +119,19 @@
|
|||
repeat_counter: 0
|
||||
host: musikserverWohnzimmerOben.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Harmonic Brass Christmas
|
||||
media_content_type: music
|
||||
|
@ -121,7 +145,19 @@
|
|||
repeat_counter: 0
|
||||
host: musikserverWohnzimmerOben.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: German Brass Christmas
|
||||
media_content_type: music
|
||||
|
@ -135,7 +171,19 @@
|
|||
repeat_counter: 0
|
||||
host: musikserverWohnzimmerOben.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Weihnachten mit den Wiener Sängerknaben
|
||||
media_content_type: music
|
||||
|
@ -149,7 +197,19 @@
|
|||
repeat_counter: 0
|
||||
host: musikserverWohnzimmerOben.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Weihnachten mit den Wiener Sängerknaben
|
||||
media_content_type: music
|
||||
|
@ -163,7 +223,19 @@
|
|||
repeat_counter: 0
|
||||
host: musikserverWohnzimmerOben.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.wohnzimmer
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: SammlungGeorg
|
||||
media_content_type: music
|
||||
|
|
|
@ -9,7 +9,19 @@
|
|||
repeat_counter: 0
|
||||
host: kitchenpi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Bar Classics
|
||||
media_content_type: music
|
||||
|
@ -23,7 +35,19 @@
|
|||
repeat_counter: 0
|
||||
host: kitchenpi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Sentimental Moods
|
||||
media_content_type: music
|
||||
|
@ -37,7 +61,19 @@
|
|||
repeat_counter: 0
|
||||
host: kitchenpi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: Pop
|
||||
media_content_type: music
|
||||
|
@ -79,7 +115,19 @@
|
|||
repeat_counter: 0
|
||||
host: kitchenpi.fritz.box
|
||||
action:
|
||||
service: media_player.play_media
|
||||
- service: media_player.shuffle_set
|
||||
data:
|
||||
shuffle: false
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playlist repeat 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.squeezebox_call_method
|
||||
data:
|
||||
command: playerpref transitionType 0
|
||||
entity_id: media_player.kitchenpi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
media_content_id: http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3
|
||||
media_content_type: music
|
||||
|
|
|
@ -70,3 +70,16 @@ first_floor:
|
|||
- light.wohnzimmer_stehlampe_oben
|
||||
|
||||
|
||||
# ----------- Custom groups -----------------------------
|
||||
|
||||
eating_area:
|
||||
name: Esszimmer & Küche
|
||||
entities:
|
||||
- light.kuche_links
|
||||
- light.kuche_rechts
|
||||
- light.kuche_vorne
|
||||
- light.esszimmer_deckenlampe_west
|
||||
- light.esszimmer_deckenlampe_mitte
|
||||
- light.kuche_deckenlampe
|
||||
- cover.kuche_fenster_rollo
|
||||
- cover.esszimmer_fenster_rollo
|
||||
|
|
|
@ -6,6 +6,7 @@ yaml = YAML()
|
|||
|
||||
# -------------------------------------- put the config here -----------------------------------------------------------
|
||||
|
||||
|
||||
def get_config():
|
||||
return {
|
||||
'bedroom': {
|
||||
|
@ -26,14 +27,19 @@ def get_config():
|
|||
'btn_8': '[radio] BR-Klassik',
|
||||
'btn_9': '[playlist] http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3', # Klassik Radio
|
||||
|
||||
'key_numeric_star': '[radio] Antenne Bayern',
|
||||
'key_numeric_star': [
|
||||
*repeat_one_crossfade('media_player.bedroompi'),
|
||||
service('media_player.play_media', 'media_player.bedroompi',
|
||||
media_content_id='Foen', media_content_type='music'),
|
||||
service('media_player.volume_set', 'media_player.bedroompi', volume_level=60),
|
||||
],
|
||||
'btn_0': '[radio] Bayern 3',
|
||||
'key_numeric_pound': '[radio] Bayern 2',
|
||||
|
||||
'key_red': '[scene] schlafzimmer_stillen',
|
||||
'key_green': '[scene] schlafzimmer_orange',
|
||||
'key_yellow': '[scene] schlafzimmer_ganz_hell',
|
||||
'key_blue': '[scene] schlafzimmer_blau',
|
||||
'key_blue': '[scene] nachtswennallelieberschlafen',
|
||||
|
||||
'key_tv': [service('script.turn_on', 'script.timed_sleep',
|
||||
variables={'media_content_id': 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd', # Regen
|
||||
|
@ -131,7 +137,7 @@ def get_config():
|
|||
'btn_0': '[playlist] Weihnachten mit den Wiener Sängerknaben',
|
||||
'key_numeric_pound': '[playlist] SammlungGeorg',
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
@ -146,6 +152,21 @@ def split_description(d):
|
|||
return res.group(1).strip(), res.group(2).strip()
|
||||
|
||||
|
||||
def default_music_settings(media_player):
|
||||
return [
|
||||
service('media_player.shuffle_set', media_player, shuffle=False),
|
||||
service('media_player.squeezebox_call_method', media_player, command='playlist repeat 0'),
|
||||
service('media_player.squeezebox_call_method', media_player, command="playerpref transitionType 0"),
|
||||
]
|
||||
|
||||
|
||||
def repeat_one_crossfade(media_player):
|
||||
return [
|
||||
service('media_player.repeat_set', media_player, repeat='one'),
|
||||
service('media_player.squeezebox_call_method', media_player, command="playerpref transitionType 1"),
|
||||
]
|
||||
|
||||
|
||||
def automation_from_config(ir_description):
|
||||
ir_host = ir_description['ir_host']
|
||||
|
||||
|
@ -159,8 +180,9 @@ def automation_from_config(ir_description):
|
|||
function, value = split_description(description)
|
||||
if function == 'playlist':
|
||||
media_player = ir_description['media_player']
|
||||
action = service('media_player.play_media', media_player,
|
||||
media_content_id=value, media_content_type='music')
|
||||
action = [*default_music_settings(media_player),
|
||||
service('media_player.play_media', media_player,
|
||||
media_content_id=value, media_content_type='music')]
|
||||
elif function == 'radio':
|
||||
media_player = ir_description['media_player']
|
||||
action = service('media_player.play_media', media_player,
|
||||
|
|
|
@ -7,7 +7,7 @@ person:
|
|||
sun:
|
||||
system_health:
|
||||
updater:
|
||||
logbook:
|
||||
#logbook:
|
||||
|
||||
#input_boolean:
|
||||
#input_datetime:
|
||||
|
@ -157,6 +157,83 @@ switch:
|
|||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
- platform: mqtt
|
||||
name: Tasmota01
|
||||
state_topic: "stat/tasmota01/POWER"
|
||||
command_topic: "cmnd/tasmota01/POWER"
|
||||
availability_topic: "tele/tasmota01/LWT"
|
||||
qos: 1
|
||||
payload_on: "ON"
|
||||
payload_off: "OFF"
|
||||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
- platform: mqtt
|
||||
name: Tasmota02
|
||||
state_topic: "stat/tasmota02/POWER"
|
||||
command_topic: "cmnd/tasmota02/POWER"
|
||||
availability_topic: "tele/tasmota02/LWT"
|
||||
qos: 1
|
||||
payload_on: "ON"
|
||||
payload_off: "OFF"
|
||||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
- platform: mqtt
|
||||
name: Tasmota03
|
||||
state_topic: "stat/tasmota03/POWER"
|
||||
command_topic: "cmnd/tasmota03/POWER"
|
||||
availability_topic: "tele/tasmota03/LWT"
|
||||
qos: 1
|
||||
payload_on: "ON"
|
||||
payload_off: "OFF"
|
||||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
- platform: mqtt
|
||||
name: Tasmota04
|
||||
state_topic: "stat/tasmota04/POWER"
|
||||
command_topic: "cmnd/tasmota04/POWER"
|
||||
availability_topic: "tele/tasmota04/LWT"
|
||||
qos: 1
|
||||
payload_on: "ON"
|
||||
payload_off: "OFF"
|
||||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
- platform: mqtt
|
||||
name: Tasmota05
|
||||
state_topic: "stat/tasmota05/POWER"
|
||||
command_topic: "cmnd/tasmota05/POWER"
|
||||
availability_topic: "tele/tasmota05/LWT"
|
||||
qos: 1
|
||||
payload_on: "ON"
|
||||
payload_off: "OFF"
|
||||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
- platform: mqtt
|
||||
name: Tasmota06
|
||||
state_topic: "stat/tasmota06/POWER"
|
||||
command_topic: "cmnd/tasmota06/POWER"
|
||||
availability_topic: "tele/tasmota06/LWT"
|
||||
qos: 1
|
||||
payload_on: "ON"
|
||||
payload_off: "OFF"
|
||||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
- platform: mqtt
|
||||
name: Tasmota07
|
||||
state_topic: "stat/tasmota07/POWER"
|
||||
command_topic: "cmnd/tasmota07/POWER"
|
||||
availability_topic: "tele/tasmota07/LWT"
|
||||
qos: 1
|
||||
payload_on: "ON"
|
||||
payload_off: "OFF"
|
||||
payload_available: "Online"
|
||||
payload_not_available: "Offline"
|
||||
retain: false
|
||||
|
||||
long_click:
|
||||
duration: 0.6
|
||||
|
@ -444,6 +521,16 @@ vacuum:
|
|||
|
||||
|
||||
sensor:
|
||||
- platform: mqtt
|
||||
state_topic: 'monitor/kitchen/martin_handy'
|
||||
value_template: '{{ value_json.confidence }}'
|
||||
unit_of_measurement: '%'
|
||||
name: 'bluetooth_martin_handy_kitchen'
|
||||
- platform: mqtt
|
||||
state_topic: 'monitor/kitchen/martin_ipad'
|
||||
value_template: '{{ value_json.confidence }}'
|
||||
unit_of_measurement: '%'
|
||||
name: 'bluetooth_martin_ipad_kitchen'
|
||||
- platform: template
|
||||
sensors:
|
||||
motion_combined:
|
||||
|
@ -485,8 +572,8 @@ sensor:
|
|||
group: !include groups.yaml
|
||||
automation: !include automations.yaml
|
||||
script: !include scripts.yaml
|
||||
scene: !include_dir_merge_list scenes
|
||||
|
||||
scene: !include scenes.yaml
|
||||
scene old: !include_dir_merge_list scenes
|
||||
|
||||
# Light groups
|
||||
|
||||
|
|
|
@ -14,8 +14,9 @@ from homeassistant.components.media_player.const import (
|
|||
ATTR_MEDIA_ENQUEUE, DOMAIN, MEDIA_TYPE_MUSIC,
|
||||
SUPPORT_CLEAR_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE,
|
||||
SUPPORT_PLAY, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK,
|
||||
SUPPORT_SHUFFLE_SET, SUPPORT_TURN_OFF, SUPPORT_TURN_ON,
|
||||
SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET)
|
||||
SUPPORT_SHUFFLE_SET, SUPPORT_REPEAT_SET, SUPPORT_TURN_OFF, SUPPORT_TURN_ON,
|
||||
SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, REPEAT_MODE_ALL, REPEAT_MODE_OFF,
|
||||
REPEAT_MODE_ONE,)
|
||||
from homeassistant.const import (
|
||||
ATTR_COMMAND, CONF_HOST, CONF_PASSWORD, CONF_PORT, CONF_USERNAME, ATTR_ENTITY_ID,
|
||||
STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING)
|
||||
|
@ -29,7 +30,7 @@ DEFAULT_PORT = 9090
|
|||
SUPPORT_SQUEEZEBOX = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | \
|
||||
SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \
|
||||
SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | \
|
||||
SUPPORT_PLAY | SUPPORT_SHUFFLE_SET | SUPPORT_CLEAR_PLAYLIST
|
||||
SUPPORT_PLAY | SUPPORT_SHUFFLE_SET | SUPPORT_CLEAR_PLAYLIST | SUPPORT_REPEAT_SET
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_HOST): cv.string,
|
||||
|
@ -299,8 +300,10 @@ class SqueezeBoxDevice(MediaPlayerDevice):
|
|||
self._status['time'] = cmd[1]
|
||||
elif cmd[:3] == ['prefset', 'server', 'volume']:
|
||||
self._status['mixer volume'] = cmd[3]
|
||||
elif cmd[:3] == ['prefset', 'server', 'shuffle']:
|
||||
self._status['playlist shuffle'] = int(cmd[3])
|
||||
elif cmd[:3] == ['prefset', 'server', 'repeat']:
|
||||
self._status['playlist shuffle'] = cmd[3]
|
||||
self._status['playlist repeat'] = int(cmd[3])
|
||||
|
||||
if self.media_position != last_media_position:
|
||||
self._last_media_position_update = utcnow()
|
||||
|
@ -436,6 +439,25 @@ class SqueezeBoxDevice(MediaPlayerDevice):
|
|||
elif 'playlist_shuffle' in self._status:
|
||||
return self._status['playlist_shuffle'] == '1'
|
||||
|
||||
@property
|
||||
def repeat(self):
|
||||
repeat_status = self._status.get('playlist repeat', 0)
|
||||
if repeat_status == 1:
|
||||
return REPEAT_MODE_ONE
|
||||
elif repeat_status == 2:
|
||||
return REPEAT_MODE_ALL
|
||||
else:
|
||||
return REPEAT_MODE_OFF
|
||||
|
||||
def set_repeat(self, repeat: str) -> None:
|
||||
"""Set repeat mode."""
|
||||
if repeat == REPEAT_MODE_OFF:
|
||||
self.call_method('playlist', 'repeat', 0)
|
||||
elif repeat == REPEAT_MODE_ONE:
|
||||
self.call_method('playlist', 'repeat', 1)
|
||||
elif repeat == REPEAT_MODE_ALL:
|
||||
self.call_method('playlist', 'repeat', 2)
|
||||
|
||||
@property
|
||||
def supported_features(self):
|
||||
"""Flag media player features that are supported."""
|
||||
|
@ -448,7 +470,7 @@ class SqueezeBoxDevice(MediaPlayerDevice):
|
|||
self.call_method('mixer', 'volume', '-5')
|
||||
|
||||
def set_volume_level(self, volume):
|
||||
volume_percent = str(int(volume*100))
|
||||
volume_percent = str(int(volume * 100))
|
||||
self.call_method('mixer', 'volume', volume_percent)
|
||||
|
||||
def mute_volume(self, mute):
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
- id: '1594067418882'
|
||||
name: Stillen
|
||||
entities:
|
||||
light.bett_rebecca:
|
||||
brightness: 10
|
||||
effect: none
|
||||
effect_list:
|
||||
- colorloop
|
||||
- random
|
||||
friendly_name: Bett Rebecca
|
||||
hs_color:
|
||||
- 35.714
|
||||
- 65.882
|
||||
max_mireds: 500
|
||||
min_mireds: 153
|
||||
rgb_color:
|
||||
- 255
|
||||
- 186
|
||||
- 87
|
||||
state: 'on'
|
||||
supported_features: 63
|
||||
xy_color:
|
||||
- 0.503
|
||||
- 0.411
|
||||
- id: '1594067605702'
|
||||
name: Stillen
|
||||
entities:
|
||||
light.bett_rebecca:
|
||||
brightness: 10
|
||||
effect: none
|
||||
effect_list:
|
||||
- colorloop
|
||||
- random
|
||||
friendly_name: Bett Rebecca
|
||||
hs_color:
|
||||
- 35.21
|
||||
- 65.49
|
||||
max_mireds: 500
|
||||
min_mireds: 153
|
||||
rgb_color:
|
||||
- 255
|
||||
- 186
|
||||
- 88
|
||||
state: 'on'
|
||||
supported_features: 63
|
||||
xy_color:
|
||||
- 0.503
|
||||
- 0.41
|
||||
- id: '1611999354955'
|
||||
name: 0_NachtsWennAlleLieberSchlafen
|
||||
entities:
|
||||
light.kinderzimmer_fluter:
|
||||
min_mireds: 153
|
||||
max_mireds: 500
|
||||
effect_list:
|
||||
- colorloop
|
||||
- random
|
||||
brightness: 5
|
||||
color_temp: 500
|
||||
effect: none
|
||||
friendly_name: Kinderzimmer Stehlampe
|
||||
supported_features: 63
|
||||
state: 'on'
|
||||
light.bad_licht:
|
||||
friendly_name: Bad Licht
|
||||
supported_features: 1
|
||||
state: 'off'
|
||||
light.bett_rebecca:
|
||||
min_mireds: 153
|
||||
max_mireds: 500
|
||||
effect_list:
|
||||
- colorloop
|
||||
- random
|
||||
brightness: 6
|
||||
color_temp: 500
|
||||
effect: none
|
||||
friendly_name: Bett Rebecca
|
||||
supported_features: 63
|
||||
state: 'on'
|
||||
light.wohnzimmer_regal_rechts:
|
||||
effect_list:
|
||||
- colorloop
|
||||
- random
|
||||
brightness: 76
|
||||
hs_color:
|
||||
- 30.356
|
||||
- 99.216
|
||||
rgb_color:
|
||||
- 255
|
||||
- 130
|
||||
- 1
|
||||
xy_color:
|
||||
- 0.609
|
||||
- 0.377
|
||||
effect: none
|
||||
friendly_name: Wohnzimmer Regal rechts
|
||||
supported_features: 61
|
||||
state: 'on'
|
||||
light.wohnzimmer_regal_links:
|
||||
effect_list:
|
||||
- colorloop
|
||||
- random
|
||||
brightness: 76
|
||||
hs_color:
|
||||
- 31.542
|
||||
- 99.216
|
||||
rgb_color:
|
||||
- 255
|
||||
- 135
|
||||
- 1
|
||||
xy_color:
|
||||
- 0.602
|
||||
- 0.382
|
||||
effect: none
|
||||
friendly_name: Wohnzimmer Regal links
|
||||
supported_features: 61
|
||||
state: 'on'
|
||||
icon: mdi:sleep
|
|
@ -40,7 +40,7 @@
|
|||
entities:
|
||||
light.bett_rebecca:
|
||||
state: true
|
||||
brightness: 10
|
||||
brightness: 6
|
||||
xy_color:
|
||||
- 0.502
|
||||
- 0.414
|
||||
|
|
|
@ -404,9 +404,7 @@
|
|||
light.wohnzimmer_kugel:
|
||||
state: false
|
||||
light.wohnzimmer_stehlampe:
|
||||
state: true
|
||||
brightness: 120
|
||||
color_temp: 428
|
||||
state: false
|
||||
light.wohnzimmer_stehlampe_oben:
|
||||
state: false
|
||||
light.wohnzimmer_regal_rechts:
|
||||
|
|
|
@ -44,6 +44,10 @@ timed_sleep:
|
|||
entity_id: "media_player.bedroompi"
|
||||
shuffle: >
|
||||
{% if shuffle %}True{% else %}False{% endif %}
|
||||
- service: media_player.repeat_set
|
||||
data:
|
||||
entity_id: "media_player.bedroompi"
|
||||
repeat: "off"
|
||||
- service: media_player.play_media
|
||||
data_template:
|
||||
entity_id: "media_player.bedroompi"
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
((LitElement) => {
|
||||
console.info(
|
||||
'%c MULTIPLE-ENTITY-ROW %c 3.5.1 ',
|
||||
'color: cyan; background: black; font-weight: bold;',
|
||||
'color: darkblue; background: white; font-weight: bold;',
|
||||
);
|
||||
|
||||
const html = LitElement.prototype.html;
|
||||
const css = LitElement.prototype.css;
|
||||
|
||||
const UNAVAILABLE = 'unavailable';
|
||||
const UNKNOWN = 'unknown';
|
||||
|
||||
class MultipleEntityRow extends LitElement {
|
||||
|
||||
static get properties() {
|
||||
|
@ -46,12 +55,17 @@
|
|||
display: block;
|
||||
color: var(--secondary-text-color);
|
||||
}
|
||||
hui-warning {
|
||||
width: 100%;
|
||||
}
|
||||
state-badge {
|
||||
flex: 0 0 40px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.icon-small {
|
||||
width: auto;
|
||||
}
|
||||
.entity {
|
||||
margin-right: 16px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -59,22 +73,32 @@
|
|||
font-size: 10px;
|
||||
color: var(--secondary-text-color);
|
||||
}
|
||||
.entity:last-of-type {
|
||||
.entities-row {
|
||||
flex-direction: row;
|
||||
display: inline-flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.entities-row .entity {
|
||||
margin-right: 16px;
|
||||
}
|
||||
.entities-row .entity:last-of-type {
|
||||
margin-right: 0;
|
||||
}
|
||||
.state {
|
||||
min-width: 45px;
|
||||
.entities-column {
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
.toggle {
|
||||
margin-left: 8px;
|
||||
}
|
||||
.icon-small {
|
||||
width: auto;
|
||||
.entities-column .entity div {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}`;
|
||||
}
|
||||
|
||||
render() {
|
||||
return html`
|
||||
return this.state.stateObj ? html`
|
||||
<state-badge
|
||||
.stateObj="${this.state.stateObj}"
|
||||
.overrideIcon="${this._config.icon}"
|
||||
|
@ -84,39 +108,50 @@
|
|||
<div class="flex">
|
||||
<div class="info" @click="${this.onRowClick}">
|
||||
${this.state.name}
|
||||
<div class="secondary">${this.renderSecondaryInfo()}</div>
|
||||
<div class="secondary" style="${this.state.info && this.state.info.style}">${this.renderSecondaryInfo()}</div>
|
||||
</div>
|
||||
${this.state.entities.map(entity => this.renderEntity(entity))}
|
||||
${this.state.value ? html`
|
||||
<div class="state entity" @click="${this.onStateClick}">
|
||||
${this.stateHeader && html`<span>${this.stateHeader}</span>`}
|
||||
${this.renderMainState()}
|
||||
</div>` : null}
|
||||
</div>`;
|
||||
<div class="${this._config.column ? 'entities-column' : 'entities-row'}">
|
||||
${this.state.entities.map(entity => this.renderEntity(entity))}
|
||||
${this.state.value ? html`
|
||||
<div class="state entity" style="${this.state.style}" @click="${this.onRowClick}">
|
||||
${this.stateHeader && html`<span>${this.stateHeader}</span>`}
|
||||
<div>${this.renderMainState()}</div>
|
||||
</div>` : null}
|
||||
</div>
|
||||
</div>` : html`
|
||||
<hui-warning>
|
||||
${this._hass.localize('ui.panel.lovelace.warning.entity_not_found', 'entity', this._config.entity)}
|
||||
</hui-warning>`;
|
||||
}
|
||||
|
||||
renderMainState() {
|
||||
if (this.state.toggle) return html`<div class="toggle">${this.renderToggle(this.state.stateObj)}</div>`;
|
||||
else if (this._config.format) return this.renderTimestamp(this.state.value, this._config.format);
|
||||
else return html`<div>${this.state.value}</div>`;
|
||||
if (this.state.toggle) return this.renderToggle(this.state.stateObj);
|
||||
const unit = this.state.unit && !this.state.unavailable ? ` ${this.state.unit}` : null;
|
||||
return html`${this.renderValue(this.state)}${unit}`;
|
||||
}
|
||||
|
||||
renderSecondaryInfo() {
|
||||
return this.lastChanged
|
||||
? html`<ha-relative-time datetime="${this.state.stateObj.last_changed}" .hass="${this._hass}"></ha-relative-time>`
|
||||
: this.state.info && this.state.info.format
|
||||
? this.renderTimestamp(this.state.info.value, this.state.info.format)
|
||||
: (this.state.info && `${this.state.info.name ? `${this.state.info.name} ` : ''}${this.state.info.value}`)
|
||||
if (this.lastChanged)
|
||||
return html`<ha-relative-time datetime="${this.state.stateObj.last_changed}" .hass="${this._hass}"></ha-relative-time>`;
|
||||
if (this.state.info) {
|
||||
const name = this.state.info.name ? `${this.state.info.name} ` : null;
|
||||
const unit = this.state.info.unit && !this.state.info.unavailable ? ` ${this.state.info.unit}` : null;
|
||||
return html`${name}${this.renderValue(this.state.info)}${unit}`;
|
||||
}
|
||||
}
|
||||
|
||||
renderToggle(stateObj) {
|
||||
return html`<ha-entity-toggle .stateObj="${stateObj}" .hass="${this._hass}"></ha-entity-toggle>`;
|
||||
}
|
||||
|
||||
renderTimestamp(value, format) {
|
||||
return !['unknown', 'unavailable'].includes(value.toLowerCase())
|
||||
? html`<hui-timestamp-display .ts=${new Date(value)} .format=${format} .hass=${this._hass}></hui-timestamp-display>`
|
||||
: html`${value}`;
|
||||
renderValue(entity) {
|
||||
if (entity.unavailable || !entity.format) return entity.value;
|
||||
if (entity.format === 'duration') return html`${this.secondsToDuration(entity.value)}`;
|
||||
if (entity.format.startsWith('precision')) {
|
||||
const precision = parseInt(entity.format.slice(-1), 10);
|
||||
return html`${parseFloat(entity.value).toFixed(precision)}`;
|
||||
}
|
||||
return html`<hui-timestamp-display .ts=${new Date(entity.value)} .format=${entity.format} .hass=${this._hass}></hui-timestamp-display>`;
|
||||
}
|
||||
|
||||
renderIcon(entity) {
|
||||
|
@ -125,14 +160,14 @@
|
|||
|
||||
renderEntityValue(entity) {
|
||||
if (entity.toggle) return this.renderToggle(entity.stateObj);
|
||||
else if (entity.icon) return this.renderIcon(entity);
|
||||
else if (entity.format) return this.renderTimestamp(entity.value, entity.format);
|
||||
else return html`${entity.value}`;
|
||||
if (entity.icon !== undefined) return this.renderIcon(entity);
|
||||
const unit = entity.unit && !entity.unavailable ? ` ${entity.unit}` : null;
|
||||
return html`${this.renderValue(entity)}${unit}`;
|
||||
}
|
||||
|
||||
renderEntity(entity) {
|
||||
return entity ? html`
|
||||
<div class="entity" @click="${entity.onClick}">
|
||||
<div class="entity" style="${entity.style}" @click="${entity.onClick}">
|
||||
<span>${entity.name}</span>
|
||||
<div>${this.renderEntityValue(entity)}</div>
|
||||
</div>` : null;
|
||||
|
@ -147,10 +182,7 @@
|
|||
|
||||
this.lastChanged = config.secondary_info === 'last-changed';
|
||||
this.stateHeader = config.state_header !== undefined ? config.state_header : null;
|
||||
this.onRowClick = (!config.tap_action || config.tap_action.action !== 'none')
|
||||
? this.moreInfoAction(config.tap_action, config.entity)
|
||||
: null;
|
||||
this.onStateClick = this.getAction(config.tap_action, config.entity);
|
||||
this.onRowClick = this.getAction(config.tap_action, config.entity);
|
||||
|
||||
this._config = config;
|
||||
}
|
||||
|
@ -161,22 +193,24 @@
|
|||
if (hass && this._config) {
|
||||
const mainStateObj = hass.states[this._config.entity];
|
||||
|
||||
if (!mainStateObj) throw new Error(`Entity '${this._config.entity}' does not exist.`);
|
||||
|
||||
this.state = {
|
||||
this.state = mainStateObj ? {
|
||||
...this.state,
|
||||
|
||||
stateObj: mainStateObj,
|
||||
name: this.entityName(this._config.name, mainStateObj),
|
||||
value: this._config.show_state !== false ? this.entityStateValue(mainStateObj, this._config.unit) : null,
|
||||
value: this._config.show_state !== false ? this.entityStateValue(mainStateObj) : null,
|
||||
unit: this._config.unit === false ? null : (this._config.unit || mainStateObj.attributes.unit_of_measurement),
|
||||
unavailable: [UNKNOWN, UNAVAILABLE].includes(mainStateObj.state),
|
||||
toggle: this.checkToggle(this._config, mainStateObj),
|
||||
format: this._config.format || false,
|
||||
style: this.entityStyles(this._config),
|
||||
|
||||
entities: this._config.entities ? this._config.entities.map(entity => this.initEntity(entity, mainStateObj)) : [],
|
||||
info: this.lastChanged ? null :
|
||||
typeof this._config.secondary_info === 'string'
|
||||
? {value: this._config.secondary_info}
|
||||
: this.initEntity(this._config.secondary_info, mainStateObj),
|
||||
}
|
||||
} : {};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -191,7 +225,7 @@
|
|||
}
|
||||
|
||||
checkToggle(config, stateObj) {
|
||||
return config.toggle === true && stateObj.state && !['unknown', 'unavailable'].includes(stateObj.state)
|
||||
return config.toggle === true && stateObj.state && ![UNKNOWN, UNAVAILABLE].includes(stateObj.state)
|
||||
}
|
||||
|
||||
initEntity(config, mainStateObj) {
|
||||
|
@ -200,18 +234,23 @@
|
|||
const entity = typeof config === 'string' ? config : config.entity;
|
||||
const stateObj = entity ? (this._hass && this._hass.states[entity]) : mainStateObj;
|
||||
|
||||
if (!stateObj) return {value: this._hass.localize('state.default.unavailable')};
|
||||
if (config.hide_unavailable && (!stateObj || [UNKNOWN, UNAVAILABLE].includes(stateObj.state))) return null;
|
||||
|
||||
if (!stateObj) return {value: this._hass.localize('state.default.unavailable'), unavailable: true};
|
||||
|
||||
return {
|
||||
stateObj: stateObj,
|
||||
name: entity ? this.entityName(config.name, stateObj) : (config.name || null),
|
||||
value: config.attribute !== undefined
|
||||
? this.entityAttribute(stateObj, config.attribute, config.unit)
|
||||
: this.entityStateValue(stateObj, config.unit),
|
||||
? this.entityAttribute(stateObj, config.attribute)
|
||||
: this.entityStateValue(stateObj),
|
||||
unit: config.unit === false ? null : config.attribute !== undefined ? config.unit : (config.unit || stateObj.attributes.unit_of_measurement),
|
||||
unavailable: [UNKNOWN, UNAVAILABLE].includes(config.attribute !== undefined ? stateObj.attributes[config.attribute] : stateObj.state),
|
||||
toggle: this.checkToggle(config, stateObj),
|
||||
icon: config.icon === true ? stateObj.attributes.icon : config.icon,
|
||||
icon: config.icon === true ? (stateObj.attributes.icon || null) : config.icon,
|
||||
format: config.format || false,
|
||||
state_color: config.state_color || false,
|
||||
style: this.entityStyles(config),
|
||||
onClick: this.getAction(config.tap_action, stateObj.entity_id),
|
||||
};
|
||||
}
|
||||
|
@ -224,94 +263,128 @@
|
|||
: stateObj.attributes.friendly_name || '';
|
||||
}
|
||||
|
||||
entityAttribute(stateObj, attribute, unit) {
|
||||
entityAttribute(stateObj, attribute) {
|
||||
return (attribute in stateObj.attributes)
|
||||
? `${stateObj.attributes[attribute]}${unit ? ` ${unit}` : ''}`
|
||||
? stateObj.attributes[attribute]
|
||||
: this._hass.localize('state.default.unavailable');
|
||||
}
|
||||
|
||||
entityStateValue(stateObj, unit) {
|
||||
let display;
|
||||
const domain = stateObj.entity_id.substr(0, stateObj.entity_id.indexOf("."));
|
||||
|
||||
if (domain === 'binary_sensor') {
|
||||
if (stateObj.attributes.device_class) {
|
||||
display = this._hass.localize(`state.${domain}.${stateObj.attributes.device_class}.${stateObj.state}`);
|
||||
}
|
||||
if (!display) {
|
||||
display = this._hass.localize(`state.${domain}.default.${stateObj.state}`);
|
||||
}
|
||||
} else if (unit !== false && (unit || stateObj.attributes.unit_of_measurement) && !['unknown', 'unavailable'].includes(stateObj.state)) {
|
||||
display = `${stateObj.state} ${unit || stateObj.attributes.unit_of_measurement}`;
|
||||
} else if (domain === 'zwave') {
|
||||
display = ['initializing', 'dead'].includes(stateObj.state)
|
||||
? this._hass.localize(`state.zwave.query_stage.${stateObj.state}`, 'query_stage', stateObj.attributes.query_stage)
|
||||
: this._hass.localize(`state.zwave.default.${stateObj.state}`);
|
||||
} else {
|
||||
display = this._hass.localize(`state.${domain}.${stateObj.state}`);
|
||||
entityStateValue(stateObj) {
|
||||
if (stateObj.state === UNKNOWN || stateObj.state === UNAVAILABLE) {
|
||||
return this._hass.localize(`state.default.${stateObj.state}`);
|
||||
}
|
||||
|
||||
return display ||
|
||||
this._hass.localize(`state.default.${stateObj.state}`) ||
|
||||
this._hass.localize(`component.${domain}.state.${stateObj.state}`) ||
|
||||
stateObj.state;
|
||||
const domain = stateObj.entity_id.substr(0, stateObj.entity_id.indexOf('.'));
|
||||
return (
|
||||
(stateObj.attributes.device_class
|
||||
&& this._hass.localize(`component.${domain}.state.${stateObj.attributes.device_class}.${stateObj.state}`))
|
||||
|| this._hass.localize(`component.${domain}.state._.${stateObj.state}`)
|
||||
|| stateObj.state
|
||||
);
|
||||
}
|
||||
|
||||
entityStyles(config) {
|
||||
return config.styles && typeof config.styles === 'object'
|
||||
? Object.keys(config.styles).map(key => `${key}: ${config.styles[key]};`).join('') : '';
|
||||
}
|
||||
|
||||
getAction(config, entityId) {
|
||||
if (config && config.action) {
|
||||
if (config.action === 'none') {
|
||||
return null;
|
||||
}
|
||||
const confirmation = config.confirmation === true ? 'Are you sure?' : config.confirmation;
|
||||
if (config.action === 'call-service') {
|
||||
const [domain, service] = config.service.split(".");
|
||||
return () => {
|
||||
if (!confirmation || confirm(confirmation)) {
|
||||
this._hass.callService(domain, service, config.service_data);
|
||||
this.forwardHaptic('light');
|
||||
}
|
||||
if (!config || !config.action || config.action === 'more-info') {
|
||||
return () => this.fireEvent(this, 'hass-more-info', {entityId: (config && config.entity) || entityId});
|
||||
}
|
||||
if (config.action === 'none') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (config.confirmation) {
|
||||
this.forwardHaptic('warning');
|
||||
|
||||
if (!confirm(config.confirmation === true ? `Are you sure?` : config.confirmation)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (config.action === 'toggle') {
|
||||
return () => {
|
||||
if (!confirmation || confirm(confirmation)) {
|
||||
this._hass.callService('homeassistant', 'toggle', {entity_id: entityId});
|
||||
this.forwardHaptic('light');
|
||||
|
||||
switch (config.action) {
|
||||
case 'call-service': {
|
||||
if (!config.service) {
|
||||
this.forwardHaptic('failure');
|
||||
return;
|
||||
}
|
||||
const [domain, service] = config.service.split('.');
|
||||
this._hass.callService(domain, service, config.service_data);
|
||||
this.forwardHaptic('light');
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (config.action === 'url') {
|
||||
return () => {
|
||||
if (!confirmation || confirm(confirmation)) {
|
||||
const win = window.open(config.url_path, '_blank');
|
||||
if (win) win.focus();
|
||||
case 'toggle': {
|
||||
this.toggleEntity(entityId);
|
||||
this.forwardHaptic('light');
|
||||
break;
|
||||
}
|
||||
case 'url': {
|
||||
if (config.url_path) {
|
||||
window.open(config.url_path);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'navigate': {
|
||||
if (config.navigation_path) {
|
||||
history.pushState(null, '', config.navigation_path);
|
||||
this.fireEvent(window, 'location-changed', {replace: false});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.moreInfoAction(config, entityId);
|
||||
}
|
||||
|
||||
moreInfoAction(config, entityId) {
|
||||
return () => this.fireEvent('hass-more-info', (config && config.entity) || entityId);
|
||||
toggleEntity(entityId) {
|
||||
const turnOn = ["closed", "locked", "off"].includes(this._hass.states[entityId].state);
|
||||
const stateDomain = entityId.split('.')[0];
|
||||
const serviceDomain = stateDomain === "group" ? "homeassistant" : stateDomain;
|
||||
|
||||
let service;
|
||||
switch (stateDomain) {
|
||||
case "lock":
|
||||
service = turnOn ? "unlock" : "lock";
|
||||
break;
|
||||
case "cover":
|
||||
service = turnOn ? "open_cover" : "close_cover";
|
||||
break;
|
||||
default:
|
||||
service = turnOn ? "turn_on" : "turn_off";
|
||||
}
|
||||
this._hass.callService(serviceDomain, service, {entity_id: entityId});
|
||||
}
|
||||
|
||||
fireEvent(type, entity, options = {}) {
|
||||
fireEvent(node, type, detail = {}, options = {}) {
|
||||
const event = new Event(type, {
|
||||
bubbles: options.bubbles || true,
|
||||
cancelable: options.cancelable || true,
|
||||
composed: options.composed || true,
|
||||
});
|
||||
event.detail = {entityId: entity};
|
||||
this.dispatchEvent(event);
|
||||
event.detail = detail;
|
||||
node.dispatchEvent(event);
|
||||
}
|
||||
|
||||
forwardHaptic(type) {
|
||||
const event = new Event("haptic", {bubbles: true, cancelable: false, composed: true});
|
||||
const event = new Event('haptic', {bubbles: true, cancelable: false, composed: true});
|
||||
event.detail = type;
|
||||
this.dispatchEvent(event);
|
||||
}
|
||||
|
||||
secondsToDuration(sec) {
|
||||
const h = Math.floor(sec / 3600);
|
||||
const m = Math.floor((sec % 3600) / 60);
|
||||
const s = Math.floor((sec % 3600) % 60);
|
||||
const leftPad = (num) => (num < 10 ? `0${num}` : num);
|
||||
|
||||
if (h > 0) return `${h}:${leftPad(m)}:${leftPad(s)}`;
|
||||
if (m > 0) return `${m}:${leftPad(s)}`;
|
||||
if (s > 0) return `${s}`;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('multiple-entity-row', MultipleEntityRow);
|
||||
})(window.LitElement || Object.getPrototypeOf(customElements.get('hui-view')));
|
||||
})(window.LitElement || Object.getPrototypeOf(customElements.get('hui-masonry-view') || customElements.get('hui-view')));
|
||||
|
|
Loading…
Reference in New Issue