Schlafzimmer szenen, stillen usw

This commit is contained in:
Martin Bauer 2021-02-01 20:02:55 +00:00
parent fbfd8a3557
commit 6ee8c9c348
23 changed files with 2540 additions and 1208 deletions

View File

@ -1 +1 @@
0.115.6 2021.1.5

View File

@ -594,7 +594,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "b05205cd745f9313e410b1ae8b6c3244986e4bd12e1f5196caac378619184ed804de6b1df56b77f60e8aa18c659886f4c2ca0815098e3c554726b4450bb37f13", "token": "b05205cd745f9313e410b1ae8b6c3244986e4bd12e1f5196caac378619184ed804de6b1df56b77f60e8aa18c659886f4c2ca0815098e3c554726b4450bb37f13",
"jwt_key": "b2d8eb38f6507f5b16322b6885405d34690fdbf2ec2a531647c89f0145bc7fa576b80572d2ee1cda9fbedf347facd6aca9f640310cbbb088d3208781989c0760", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -734,7 +734,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "c60c252317f548195ea325c527f8b2e5c0d8690cd24503fb5128d7d42076086998d7fc8705fbe9ee9e523673c209f33aa58ed80e1baaba896c1790c28792521a", "token": "c60c252317f548195ea325c527f8b2e5c0d8690cd24503fb5128d7d42076086998d7fc8705fbe9ee9e523673c209f33aa58ed80e1baaba896c1790c28792521a",
"jwt_key": "a6f25bdc44af136f1b64c23dccc72184a87285fa080a2b59851d1f0e34ab89ecc39b7d8cde055872ab0dbd5759aabefe6bfe5474aece6155d853e894dbc27913", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -776,7 +776,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "386819a111578c2b8f82434a9cf2bcb3cef896f4f16c3e0a1f951be439ab851e76702f30779f636a8d51bb28b0adcd36bc960c643481b75ebe8a9eeebc5a32ed", "token": "386819a111578c2b8f82434a9cf2bcb3cef896f4f16c3e0a1f951be439ab851e76702f30779f636a8d51bb28b0adcd36bc960c643481b75ebe8a9eeebc5a32ed",
"jwt_key": "db54f0ea0b76b021ed019b10364014313c1557fe8117fd46bb862cb537720b4e1ad4fe11a61c7a4306b2a0ca33babd7aff6d039f2e4888f87d8de4d92ffeec2e", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -874,7 +874,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "587f6d7a948d526f32f41db51cd186ace3d884a03ed46b3f4cbfa869fba1a45b4274a111053c038279449821143f995cd50f1f381801471f84d00385564caff6", "token": "587f6d7a948d526f32f41db51cd186ace3d884a03ed46b3f4cbfa869fba1a45b4274a111053c038279449821143f995cd50f1f381801471f84d00385564caff6",
"jwt_key": "8acd2221e057a48d290443abd8ad5a5bfbabb18d8131576356a298aeb253b8cc02b5295d6fa8832512ee39f24b9fc87579832c2028233365ea3ebaa5e55d2544", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -888,7 +888,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "c255c95f61126b8064f8ae84e621ee0a770d2023de82ff066dce12074f950fa29defa6efbf71c538916cd92a00e2849e189b5ce1268c2d48a737e8a5e81d2ade", "token": "c255c95f61126b8064f8ae84e621ee0a770d2023de82ff066dce12074f950fa29defa6efbf71c538916cd92a00e2849e189b5ce1268c2d48a737e8a5e81d2ade",
"jwt_key": "d86702343e9712dbf76b25d832d1b81d3185ccec78d59087a27b37e348ac89de7f2a63e14ed0f3f38886577bda919f5258732a1b083a89d98853296c29e47106", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -944,7 +944,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "5413aa9dfb9b944f384c07ebc0242e2b7b26c1e674b0c74ace992029b64302e12d0fe038ece34d425714a757ebafce5de46bd101d5b85dc7e3c96cca4f5595ca", "token": "5413aa9dfb9b944f384c07ebc0242e2b7b26c1e674b0c74ace992029b64302e12d0fe038ece34d425714a757ebafce5de46bd101d5b85dc7e3c96cca4f5595ca",
"jwt_key": "afc76b9a4127faea57f23d7020be74daaaaba30e99084db2f2e79fe86775841203355bde3268b851b507e964faa10b6cb15c66beb48a08c9b9cab96648372b87", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -986,7 +986,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "5ef3ab121bf8da837141c97d6d3cee163ab8f3d9500ccfa88b00e7d5541eead3ce479329c4ba2c7cdacd73535f830e60424ae21841de0967416f694cab8b9c0b", "token": "5ef3ab121bf8da837141c97d6d3cee163ab8f3d9500ccfa88b00e7d5541eead3ce479329c4ba2c7cdacd73535f830e60424ae21841de0967416f694cab8b9c0b",
"jwt_key": "1888a3611f1a42b55b412ba801a7ffca654e347049e285a9b5513b15ded3c0f729c7463e9a0f957e0ef878c210338fef196cc449170c4a4f925c38678c07ad70", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -1014,7 +1014,77 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "1e1726001ee4616f716875a4d8de6f149195902d407334106f774a7aafd9b8c5348414d93c1b7280874746399c81f4e4b27b7b765f23034a3077b943690cfc9e", "token": "1e1726001ee4616f716875a4d8de6f149195902d407334106f774a7aafd9b8c5348414d93c1b7280874746399c81f4e4b27b7b765f23034a3077b943690cfc9e",
"jwt_key": "d4a7bc29bca15964c03ad344771f9a74304c1d46a0b663f8547d76159f3ba318748fd35e3ec5bdf944cbae9c21449294993e3735a68c3971ed85e489d49ee91a", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -1056,7 +1126,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "c008fe893f268d124033d1258fc59917cbf4b392c36016f4f78740688abcb6a1edf23ace480bc2d65b39b616859218a18d8695d4162622c2a5dc5d234c84fe77", "token": "c008fe893f268d124033d1258fc59917cbf4b392c36016f4f78740688abcb6a1edf23ace480bc2d65b39b616859218a18d8695d4162622c2a5dc5d234c84fe77",
"jwt_key": "5b37cbd04e7087318173ec3df627120cb88f9043126f17e2d4cfff9684e2d782793493d0c847ba7e6f68e8fe82af2d0f324984514c5630833a73620b39e130de", "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" "last_used_ip": "192.168.178.80"
}, },
{ {
@ -1070,8 +1140,8 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "a9b15071e0ed591eea3d66d903cfba5efa872b44acc5a0abeb7c4518b122ca6136be3c53df37246fbcb2e9abbb085b25921e911907e2346fc0f6fcc4c99f5f05", "token": "a9b15071e0ed591eea3d66d903cfba5efa872b44acc5a0abeb7c4518b122ca6136be3c53df37246fbcb2e9abbb085b25921e911907e2346fc0f6fcc4c99f5f05",
"jwt_key": "2a6b9ccfe7a040ceae2e77a05d0c97cd67150297b33f2b4316dfb527418a5dcbc0f96eb0edd11d8288e28824bb7bc65c2ceeeb5d5c893f0c50b3dc9ed77b40ee", "jwt_key": "2a6b9ccfe7a040ceae2e77a05d0c97cd67150297b33f2b4316dfb527418a5dcbc0f96eb0edd11d8288e28824bb7bc65c2ceeeb5d5c893f0c50b3dc9ed77b40ee",
"last_used_at": "2020-02-20T14:04:02.173629+00:00", "last_used_at": "2020-12-28T21:28:12.883673+00:00",
"last_used_ip": "127.0.0.1" "last_used_ip": "192.168.178.80"
}, },
{ {
"id": "d94991861636455788d6e0ed5ddc8827", "id": "d94991861636455788d6e0ed5ddc8827",
@ -1154,7 +1224,7 @@
"access_token_expiration": 1800.0, "access_token_expiration": 1800.0,
"token": "832326bd02b23b62d231f5129d18042028215dbdee358a4bb25687764faf3815db2818e8a9001f11ba4518c4e9401563d182987eb55e2eb9ddf97135f678e0ba", "token": "832326bd02b23b62d231f5129d18042028215dbdee358a4bb25687764faf3815db2818e8a9001f11ba4518c4e9401563d182987eb55e2eb9ddf97135f678e0ba",
"jwt_key": "dffb82d95a8fb848f6ae645aeb8445242f093aa61f99749283904e0f6e2b0c01717a02bc0892bf0b35beca61400e27aae2b742dc14878a107eb60b730b44a025", "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" "last_used_ip": "172.30.32.2"
} }
] ]

View File

@ -167,15 +167,16 @@
"light.kinderzimmer_deckenlampe", "light.kinderzimmer_deckenlampe",
"cover.kinderzimmer_rollo" "cover.kinderzimmer_rollo"
], ],
"include_entity_globs": [],
"exclude_entity_globs": [],
"exclude_entities": [], "exclude_entities": [],
"include_domains": [], "include_domains": [],
"exclude_domains": [], "exclude_domains": []
"exclude_entity_globs": [],
"include_entity_globs": []
}, },
"auto_start": true, "auto_start": true,
"safe_mode": false, "safe_mode": false,
"entity_config": {} "entity_config": {},
"mode": "bridge"
}, },
"system_options": { "system_options": {
"disable_new_entities": false "disable_new_entities": false
@ -270,7 +271,7 @@
"title": "HP Officejet Pro 8610 [9B7880]", "title": "HP Officejet Pro 8610 [9B7880]",
"data": { "data": {
"base_path": "/ipp/print", "base_path": "/ipp/print",
"host": "192.168.178.74", "host": "192.168.178.55",
"name": "HP Officejet Pro 8610 [9B7880]", "name": "HP Officejet Pro 8610 [9B7880]",
"port": 631, "port": 631,
"ssl": false, "ssl": false,
@ -316,12 +317,12 @@
"title": "MartinHandyP30", "title": "MartinHandyP30",
"data": { "data": {
"app_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_id": "io.homeassistant.companion.android",
"app_name": "Home Assistant", "app_name": "Home Assistant",
"app_version": "2.5.0-full (400)", "app_version": "2021.1.1-full (555)",
"device_id": "3889c45a8d9e2c62", "device_id": "3889c45a8d9e2c62",
"device_name": "MartinHandy", "device_name": "MartinHandy",
"manufacturer": "HUAWEI", "manufacturer": "HUAWEI",
@ -347,10 +348,10 @@
"title": "Martin\u2019s iPad", "title": "Martin\u2019s iPad",
"data": { "data": {
"device_id": "8191AC71-330B-4784-8634-E6F4F0C2DFA2", "device_id": "8191AC71-330B-4784-8634-E6F4F0C2DFA2",
"app_version": "2020.6.2 (1)", "app_version": "2021.1.1 (9)",
"app_name": "Home Assistant", "app_name": "Home Assistant",
"manufacturer": "Apple", "manufacturer": "Apple",
"os_version": "14.0.1", "os_version": "14.4",
"supports_encryption": true, "supports_encryption": true,
"device_name": "Martin\u2019s iPad", "device_name": "Martin\u2019s iPad",
"os_name": "iOS", "os_name": "iOS",

View File

@ -22,12 +22,13 @@
"manufacturer": "Signify", "manufacturer": "Signify",
"model": "BSB002", "model": "BSB002",
"name": "Philips hue", "name": "Philips hue",
"sw_version": "1941056000", "sw_version": "1942135050",
"entry_type": null, "entry_type": null,
"id": "8e09114c26574165a8f8fa43ff0c5395", "id": "8e09114c26574165a8f8fa43ff0c5395",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -48,7 +49,8 @@
"id": "31d95a5c59b24732934b4bcde46654a7", "id": "31d95a5c59b24732934b4bcde46654a7",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -69,7 +71,8 @@
"id": "1dbec2bfe7594794a516405b1a164027", "id": "1dbec2bfe7594794a516405b1a164027",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -90,7 +93,8 @@
"id": "00429941ced6498495803f7e1ae65d55", "id": "00429941ced6498495803f7e1ae65d55",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -111,7 +115,8 @@
"id": "00e0dc89c87240699d1286fb79bcc877", "id": "00e0dc89c87240699d1286fb79bcc877",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": "46ebd507f8f348508653f61054f67eb0", "area_id": "46ebd507f8f348508653f61054f67eb0",
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -132,7 +137,8 @@
"id": "da7bdf516f614f8fa75f6f611a8cef3c", "id": "da7bdf516f614f8fa75f6f611a8cef3c",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": "e58ae8bf5c7847af89a727d7949016f0", "area_id": "e58ae8bf5c7847af89a727d7949016f0",
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -153,7 +159,8 @@
"id": "27e519bd18974605b39e17156f903a94", "id": "27e519bd18974605b39e17156f903a94",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -174,7 +181,8 @@
"id": "42fcf3d4fab243d3b3535b88da5520cb", "id": "42fcf3d4fab243d3b3535b88da5520cb",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": "46ebd507f8f348508653f61054f67eb0", "area_id": "46ebd507f8f348508653f61054f67eb0",
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -195,7 +203,8 @@
"id": "d285533d588c4dd98cb2184cd299b882", "id": "d285533d588c4dd98cb2184cd299b882",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": "e58ae8bf5c7847af89a727d7949016f0", "area_id": "e58ae8bf5c7847af89a727d7949016f0",
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -216,7 +225,8 @@
"id": "77b2e3e9e127481d8b508f8952c08762", "id": "77b2e3e9e127481d8b508f8952c08762",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -237,7 +247,8 @@
"id": "075d6edf32bb4d6e9c564101a3b253ca", "id": "075d6edf32bb4d6e9c564101a3b253ca",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -258,7 +269,8 @@
"id": "4c3bbd2722774287bef53f0eae996c43", "id": "4c3bbd2722774287bef53f0eae996c43",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": "e58ae8bf5c7847af89a727d7949016f0", "area_id": "e58ae8bf5c7847af89a727d7949016f0",
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -279,7 +291,8 @@
"id": "ed71ab3618e04b26b65c561c48b12704", "id": "ed71ab3618e04b26b65c561c48b12704",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": "46ebd507f8f348508653f61054f67eb0", "area_id": "46ebd507f8f348508653f61054f67eb0",
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -300,7 +313,8 @@
"id": "c5d6ba59208e4f05a7f8e573f7372316", "id": "c5d6ba59208e4f05a7f8e573f7372316",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -321,7 +335,8 @@
"id": "973ccf8026ed4dec8ac55c0c646dafbd", "id": "973ccf8026ed4dec8ac55c0c646dafbd",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -342,7 +357,8 @@
"id": "80f3a81098d345c5a848625f7c7f934f", "id": "80f3a81098d345c5a848625f7c7f934f",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -368,7 +384,8 @@
"id": "51f4012aed0b4093b353cdc851755281", "id": "51f4012aed0b4093b353cdc851755281",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -389,7 +406,8 @@
"id": "cff99cfa5ca84b24ba4ff1883f08e02b", "id": "cff99cfa5ca84b24ba4ff1883f08e02b",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -410,7 +428,8 @@
"id": "8e45736652404feda92084feb86a5745", "id": "8e45736652404feda92084feb86a5745",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -431,7 +450,8 @@
"id": "7df169040686480db2b1ad5979037e80", "id": "7df169040686480db2b1ad5979037e80",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -452,7 +472,8 @@
"id": "dd9403c58f084442b1606fe616b3cfb7", "id": "dd9403c58f084442b1606fe616b3cfb7",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -473,7 +494,8 @@
"id": "aa4821c78db245ef90119b9af6fd97bc", "id": "aa4821c78db245ef90119b9af6fd97bc",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -494,7 +516,8 @@
"id": "620ada4df9fc493ca53677a979768dee", "id": "620ada4df9fc493ca53677a979768dee",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -515,7 +538,8 @@
"id": "2d0e7717b4194ecca91589bd83bef38c", "id": "2d0e7717b4194ecca91589bd83bef38c",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -536,7 +560,8 @@
"id": "7465dff14c5e472d904ddb93b09b2770", "id": "7465dff14c5e472d904ddb93b09b2770",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -557,7 +582,8 @@
"id": "b6158f158b16427388a5dda943f494dd", "id": "b6158f158b16427388a5dda943f494dd",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -578,7 +604,8 @@
"id": "79711ec2ac314065a532b321eef24950", "id": "79711ec2ac314065a532b321eef24950",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -599,7 +626,8 @@
"id": "487189a878ca49ad91d6b79ec3c7b70a", "id": "487189a878ca49ad91d6b79ec3c7b70a",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -620,7 +648,8 @@
"id": "b3954be50d02456ca1cf62085677d14d", "id": "b3954be50d02456ca1cf62085677d14d",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -641,7 +670,8 @@
"id": "9b59a0accd104bb781b7136756c15835", "id": "9b59a0accd104bb781b7136756c15835",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -662,7 +692,8 @@
"id": "8ac42fc9656e4882a022db8402456d25", "id": "8ac42fc9656e4882a022db8402456d25",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -683,7 +714,8 @@
"id": "4fa58dcef8af4af897a1a9558a015611", "id": "4fa58dcef8af4af897a1a9558a015611",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -704,7 +736,8 @@
"id": "50781ad2a8d14062a96f4a004924be56", "id": "50781ad2a8d14062a96f4a004924be56",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -725,7 +758,8 @@
"id": "6ad58be1b42d4e0988a030fcd5e9d7e8", "id": "6ad58be1b42d4e0988a030fcd5e9d7e8",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -746,7 +780,8 @@
"id": "454ec0863be74355983bfdc39531df45", "id": "454ec0863be74355983bfdc39531df45",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -767,7 +802,8 @@
"id": "022a4fdbf7724dd3962d25a4b4628e20", "id": "022a4fdbf7724dd3962d25a4b4628e20",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -788,7 +824,8 @@
"id": "f13e9c76304f4d28983117137046e256", "id": "f13e9c76304f4d28983117137046e256",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -809,7 +846,8 @@
"id": "6c79bf128b3f417690663f40e64fbc18", "id": "6c79bf128b3f417690663f40e64fbc18",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -830,7 +868,8 @@
"id": "766b2c2b9f1c4547974914edd271f6ba", "id": "766b2c2b9f1c4547974914edd271f6ba",
"via_device_id": "6c79bf128b3f417690663f40e64fbc18", "via_device_id": "6c79bf128b3f417690663f40e64fbc18",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -851,7 +890,8 @@
"id": "f0876537265d48b28d9c8e9351379955", "id": "f0876537265d48b28d9c8e9351379955",
"via_device_id": "6c79bf128b3f417690663f40e64fbc18", "via_device_id": "6c79bf128b3f417690663f40e64fbc18",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -872,7 +912,8 @@
"id": "13fb850e77be4ca0bab70dc1e2c19aba", "id": "13fb850e77be4ca0bab70dc1e2c19aba",
"via_device_id": "6c79bf128b3f417690663f40e64fbc18", "via_device_id": "6c79bf128b3f417690663f40e64fbc18",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -893,7 +934,8 @@
"id": "be1c1f75be0e4d40ac8be5e19c7aceb2", "id": "be1c1f75be0e4d40ac8be5e19c7aceb2",
"via_device_id": "6c79bf128b3f417690663f40e64fbc18", "via_device_id": "6c79bf128b3f417690663f40e64fbc18",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -914,7 +956,8 @@
"id": "b0fd84c9313f408a9a7a404b60b71bde", "id": "b0fd84c9313f408a9a7a404b60b71bde",
"via_device_id": "8e09114c26574165a8f8fa43ff0c5395", "via_device_id": "8e09114c26574165a8f8fa43ff0c5395",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -935,7 +978,8 @@
"id": "b8b532e7225448a5a7b1be5c91a501bc", "id": "b8b532e7225448a5a7b1be5c91a501bc",
"via_device_id": "6c79bf128b3f417690663f40e64fbc18", "via_device_id": "6c79bf128b3f417690663f40e64fbc18",
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -962,7 +1006,8 @@
"id": "abac1bcd6667484bad1460abe8a40412", "id": "abac1bcd6667484bad1460abe8a40412",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -983,7 +1028,8 @@
"id": "86655186bf654126b5f179b2d0897eea", "id": "86655186bf654126b5f179b2d0897eea",
"via_device_id": null, "via_device_id": null,
"area_id": "46ebd507f8f348508653f61054f67eb0", "area_id": "46ebd507f8f348508653f61054f67eb0",
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -1013,7 +1059,8 @@
"id": "17abd106e210436c8f7e95857cd2fc14", "id": "17abd106e210436c8f7e95857cd2fc14",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -1029,12 +1076,13 @@
"manufacturer": "Apple", "manufacturer": "Apple",
"model": "iPad7,4", "model": "iPad7,4",
"name": "Martin\u2019s iPad", "name": "Martin\u2019s iPad",
"sw_version": "14.0.1", "sw_version": "14.4",
"entry_type": null, "entry_type": null,
"id": "61029ebfaeb04736a98512e93110ebff", "id": "61029ebfaeb04736a98512e93110ebff",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
}, },
{ {
"config_entries": [ "config_entries": [
@ -1055,7 +1103,8 @@
"id": "4169e969251746c0b024e2d9b7f0a3c0", "id": "4169e969251746c0b024e2d9b7f0a3c0",
"via_device_id": null, "via_device_id": null,
"area_id": null, "area_id": null,
"name_by_user": null "name_by_user": null,
"disabled_by": null
} }
], ],
"deleted_devices": [ "deleted_devices": [
@ -1099,13 +1148,13 @@
], ],
"connections": [], "connections": [],
"identifiers": [ "identifiers": [
[
"webhook_id",
"87968208b8c13c3f79fbebf2700c0510ccf67e0d7b62b19651fed96fd9b4a40a"
],
[ [
"device_id", "device_id",
"437ea82e3a924ee183d1511c7cc9a98a" "437ea82e3a924ee183d1511c7cc9a98a"
],
[
"webhook_id",
"87968208b8c13c3f79fbebf2700c0510ccf67e0d7b62b19651fed96fd9b4a40a"
] ]
], ],
"id": "1aed3276db0143429ca26a0be846fa50" "id": "1aed3276db0143429ca26a0be846fa50"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -29,12 +29,6 @@
"color": "#0050ff", "color": "#0050ff",
"name": "Blau", "name": "Blau",
"scene": "scene.wohnbereich_blau_grun" "scene": "scene.wohnbereich_blau_grun"
},
{
"color": "#ffffff",
"icon": "mdi:weather-night",
"name": "Kuscheln",
"scene": "scene.wohnbereich_kuscheln"
} }
], ],
"type": "custom:room-glance-card" "type": "custom:room-glance-card"
@ -62,12 +56,12 @@
}, },
{ {
"entity": "cover.wohnzimmer_fenster_rollo", "entity": "cover.wohnzimmer_fenster_rollo",
"name": "Wohnzimmer Fenster", "name": "WZ Fenster",
"type": "custom:state-card-custom-cover" "type": "custom:state-card-custom-cover"
}, },
{ {
"entity": "cover.wohnzimmer_terrassentur_rollo", "entity": "cover.wohnzimmer_terrassentur_rollo",
"name": "Wohnzimmer T\u00fcr", "name": "Terrassent\u00fcr",
"type": "custom:state-card-custom-cover" "type": "custom:state-card-custom-cover"
}, },
{ {
@ -133,6 +127,39 @@
] ]
}, },
"type": "custom:mini-media-player" "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", "icon": "mdi:sofa",
@ -465,6 +492,16 @@
"entity": "cover.kinderzimmer_rollo", "entity": "cover.kinderzimmer_rollo",
"name": "Rollo Klein", "name": "Rollo Klein",
"type": "custom:state-card-custom-cover" "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, "show_header_toggle": false,

View File

@ -1,4 +1,6 @@
{ {
"version": 1,
"key": "lovelace_resources",
"data": { "data": {
"items": [ "items": [
{ {
@ -29,10 +31,8 @@
{ {
"id": "02ac97946bb44092a5f073752a8b6deb", "id": "02ac97946bb44092a5f073752a8b6deb",
"type": "module", "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
} }

View File

@ -17,9 +17,9 @@
"added": true, "added": true,
"attributes": {}, "attributes": {},
"device_class": "plug", "device_class": "plug",
"icon": "mdi:power-plug", "icon": "mdi:power-plug-off",
"name": "Is Charging", "name": "Is Charging",
"state": true, "state": false,
"type": "binary_sensor", "type": "binary_sensor",
"unique_id": "is_charging", "unique_id": "is_charging",
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e" "webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
@ -578,17 +578,7 @@
}, },
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_audio_sensor": { "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_audio_sensor": {
"added": true, "added": true,
"attributes": { "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
},
"icon": "mdi:volume-high", "icon": "mdi:volume-high",
"name": "Audio Sensor", "name": "Audio Sensor",
"state": "normal", "state": "normal",
@ -610,9 +600,9 @@
"added": true, "added": true,
"attributes": {}, "attributes": {},
"device_class": "battery", "device_class": "battery",
"icon": "mdi:battery-charging", "icon": "mdi:battery-70",
"name": "Battery Level", "name": "Battery Level",
"state": 100, "state": 74,
"type": "sensor", "type": "sensor",
"unique_id": "battery_level", "unique_id": "battery_level",
"unit_of_measurement": "%", "unit_of_measurement": "%",
@ -620,15 +610,11 @@
}, },
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_battery_state": { "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_battery_state": {
"added": true, "added": true,
"attributes": { "attributes": {},
"battery_health": "good",
"charger_type": "ac",
"is_charging": true
},
"device_class": "battery", "device_class": "battery",
"icon": "mdi:battery-charging", "icon": "mdi:battery-minus",
"name": "Battery State", "name": "Battery State",
"state": "full", "state": "discharging",
"type": "sensor", "type": "sensor",
"unique_id": "battery_state", "unique_id": "battery_state",
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e" "webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
@ -638,8 +624,7 @@
"attributes": { "attributes": {
"connected_not_paired_devices": "[]", "connected_not_paired_devices": "[]",
"connected_paired_devices": "[]", "connected_paired_devices": "[]",
"is_bt_on": false, "paired_devices": "[3E:19:06:04:0D:50, A0:56:B2:15:C9:A4]"
"paired_devices": ""
}, },
"icon": "mdi:bluetooth", "icon": "mdi:bluetooth",
"name": "Bluetooth Connection", "name": "Bluetooth Connection",
@ -652,9 +637,9 @@
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_charger_type": { "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_charger_type": {
"added": true, "added": true,
"attributes": {}, "attributes": {},
"icon": "mdi:power-plug", "icon": "mdi:battery",
"name": "Charger Type", "name": "Charger Type",
"state": "ac", "state": "none",
"type": "sensor", "type": "sensor",
"unique_id": "charger_type", "unique_id": "charger_type",
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e" "webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
@ -706,13 +691,13 @@
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_last_reboot": { "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_last_reboot": {
"added": true, "added": true,
"attributes": { "attributes": {
"Local Time": "Tue Sep 08 15:45:59 GMT+02:00 2020", "Local Time": "Mon Jan 25 02:51:06 GMT+01:00 2021",
"Time in Milliseconds": 1599572800000.0 "Time in Milliseconds": 1611539466409
}, },
"device_class": "timestamp", "device_class": "timestamp",
"icon": "mdi:restart", "icon": "mdi:restart",
"name": "Last Reboot", "name": "Last Reboot",
"state": "2020-09-08T13:45:59Z", "state": "2021-01-25T01:51:06Z",
"type": "sensor", "type": "sensor",
"unique_id": "last_reboot", "unique_id": "last_reboot",
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e" "webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
@ -732,14 +717,14 @@
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_next_alarm": { "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_next_alarm": {
"added": true, "added": true,
"attributes": { "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", "Package": "Unknown",
"Time in Milliseconds": 1601963430000.0 "Time in Milliseconds": 1612244700000
}, },
"device_class": "timestamp", "device_class": "timestamp",
"icon": "mdi:alarm", "icon": "mdi:alarm",
"name": "Next Alarm", "name": "Next Alarm",
"state": "2020-10-06T05:50:00.000Z", "state": "2021-02-02T05:45:00.000Z",
"type": "sensor", "type": "sensor",
"unique_id": "next_alarm", "unique_id": "next_alarm",
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e" "webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
@ -759,7 +744,7 @@
"attributes": {}, "attributes": {},
"icon": "mdi:leak", "icon": "mdi:leak",
"name": "Proximity Sensor", "name": "Proximity Sensor",
"state": "far", "state": "near",
"type": "sensor", "type": "sensor",
"unique_id": "proximity_sensor", "unique_id": "proximity_sensor",
"webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e" "webhook_id": "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e"
@ -769,7 +754,7 @@
"attributes": {}, "attributes": {},
"icon": "mdi:walk", "icon": "mdi:walk",
"name": "Schrittsensor", "name": "Schrittsensor",
"state": "55576", "state": "19916",
"type": "sensor", "type": "sensor",
"unique_id": "steps_sensor", "unique_id": "steps_sensor",
"unit_of_measurement": "steps", "unit_of_measurement": "steps",
@ -777,15 +762,10 @@
}, },
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_storage_sensor": { "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_storage_sensor": {
"added": true, "added": true,
"attributes": { "attributes": {},
"Free external storage": "No SD Card",
"Free internal storage": "90GB",
"Total external storage": "No SD Card",
"Total internal storage": "110GB"
},
"icon": "mdi:harddisk", "icon": "mdi:harddisk",
"name": "Storage Sensor", "name": "Storage Sensor",
"state": 82, "state": 78,
"type": "sensor", "type": "sensor",
"unique_id": "storage_sensor", "unique_id": "storage_sensor",
"unit_of_measurement": "%", "unit_of_measurement": "%",
@ -804,13 +784,7 @@
"cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_wifi_connection": { "cf6ed33d60ed7470befdf2ec4bd12feecf0be745491431fe61cf57fe91cf400e_wifi_connection": {
"added": true, "added": true,
"attributes": { "attributes": {
"bssid": "7c:ff:4d:05:2e:8d", "is_hidden": false
"frequency": 5500,
"ip_address": "192.168.178.115",
"is_hidden": false,
"is_wifi_on": true,
"link_speed": 702,
"signal_level": -25
}, },
"icon": "mdi:wifi", "icon": "mdi:wifi",
"name": "WLAN Verbindung", "name": "WLAN Verbindung",
@ -823,12 +797,12 @@
"attributes": { "attributes": {
"Confidence": "High", "Confidence": "High",
"Types": [ "Types": [
"Unknown" "Stationary"
] ]
}, },
"icon": "mdi:help-circle", "icon": "mdi:human-male",
"name": "Activity", "name": "Activity",
"state": "Unknown", "state": "Stationary",
"type": "sensor", "type": "sensor",
"unique_id": "activity", "unique_id": "activity",
"webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a", "webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a",
@ -836,14 +810,14 @@
}, },
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_storage": { "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_storage": {
"attributes": { "attributes": {
"Available": "135,14 GB", "Available": "109,76 GB",
"Available (Important)": "144,50 GB", "Available (Important)": "119,30 GB",
"Available (Opportunistic)": "143,22 GB", "Available (Opportunistic)": "118,01 GB",
"Total": "255,98 GB" "Total": "255,98 GB"
}, },
"icon": "mdi:database", "icon": "mdi:database",
"name": "Storage", "name": "Storage",
"state": "55.95", "state": "46.10",
"type": "sensor", "type": "sensor",
"unique_id": "storage", "unique_id": "storage",
"unit_of_measurement": "% available", "unit_of_measurement": "% available",
@ -852,13 +826,13 @@
}, },
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_battery_level": { "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_battery_level": {
"attributes": { "attributes": {
"Battery State": "Charging", "Battery State": "Not Charging",
"Low Power Mode": false "Low Power Mode": false
}, },
"device_class": "battery", "device_class": "battery",
"icon": "mdi:battery-charging-20", "icon": "mdi:battery-50",
"name": "Battery Level", "name": "Battery Level",
"state": 22, "state": 58,
"type": "sensor", "type": "sensor",
"unique_id": "battery_level", "unique_id": "battery_level",
"unit_of_measurement": "%", "unit_of_measurement": "%",
@ -867,13 +841,13 @@
}, },
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_battery_state": { "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_battery_state": {
"attributes": { "attributes": {
"Battery Level": 22, "Battery Level": 58,
"Low Power Mode": false "Low Power Mode": false
}, },
"device_class": "battery", "device_class": "battery",
"icon": "mdi:battery-charging-20", "icon": "mdi:battery-50",
"name": "Battery State", "name": "Battery State",
"state": "Charging", "state": "Not Charging",
"type": "sensor", "type": "sensor",
"unique_id": "battery_state", "unique_id": "battery_state",
"webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a", "webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a",
@ -923,8 +897,8 @@
"ISO Country Code": "DE", "ISO Country Code": "DE",
"Locality": "Rohr", "Locality": "Rohr",
"Location": [ "Location": [
49.36930146126737, 49.369293212890625,
10.983655038542027 10.983685522613598
], ],
"Name": "Dietersdorfer Stra\u00dfe 19", "Name": "Dietersdorfer Stra\u00dfe 19",
"Ocean": "N/A", "Ocean": "N/A",
@ -961,7 +935,7 @@
"2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_last_update_trigger": { "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a_last_update_trigger": {
"icon": "mdi:cellphone-wireless", "icon": "mdi:cellphone-wireless",
"name": "Last Update Trigger", "name": "Last Update Trigger",
"state": "Background Fetch", "state": "Significant Location Change",
"type": "sensor", "type": "sensor",
"unique_id": "last_update_trigger", "unique_id": "last_update_trigger",
"attributes": {}, "attributes": {},

View File

@ -61,7 +61,9 @@
- data: - data:
message: Bewegung im Gang message: Bewegung im Gang
title: Alarm title: Alarm
service: notify.ios_martins_ipad service: notify.mobile_app_martins_ipad
- delay: '30'
mode: single
- id: '1598594894559' - id: '1598594894559'
alias: KlingelAufHandy alias: KlingelAufHandy
description: '' description: ''
@ -81,3 +83,106 @@
title: Klingel title: Klingel
service: notify.ios_martins_ipad service: notify.ios_martins_ipad
mode: single 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

View File

@ -9,7 +9,19 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: 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: data:
media_content_id: Good Morning media_content_id: Good Morning
media_content_type: music media_content_type: music
@ -23,7 +35,19 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: 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: data:
media_content_id: Good Night Long media_content_id: Good Night Long
media_content_type: music media_content_type: music
@ -37,7 +61,19 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: 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: data:
media_content_id: Good Night media_content_id: Good Night
media_content_type: music media_content_type: music
@ -51,7 +87,19 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: 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: data:
media_content_id: Bar Classics media_content_id: Bar Classics
media_content_type: music media_content_type: music
@ -65,7 +113,19 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: 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: data:
media_content_id: Sentimental Moods media_content_id: Sentimental Moods
media_content_type: music media_content_type: music
@ -79,7 +139,19 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: 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: data:
media_content_id: Pop media_content_id: Pop
media_content_type: music media_content_type: music
@ -121,7 +193,19 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: 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: data:
media_content_id: http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3 media_content_id: http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3
media_content_type: music media_content_type: music
@ -135,10 +219,22 @@
repeat_counter: 0 repeat_counter: 0
host: bedroompi.fritz.box host: bedroompi.fritz.box
action: action:
service: media_player.play_media - service: media_player.repeat_set
data: data:
media_content_id: Antenne Bayern repeat: one
media_content_type: channel 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 entity_id: media_player.bedroompi
- alias: IR bedroompi.fritz.box btn_0 - alias: IR bedroompi.fritz.box btn_0
trigger: trigger:
@ -215,7 +311,7 @@
action: action:
service: scene.turn_on service: scene.turn_on
data: data:
entity_id: scene.schlafzimmer_blau entity_id: scene.nachtswennallelieberschlafen
- alias: IR bedroompi.fritz.box key_tv - alias: IR bedroompi.fritz.box key_tv
trigger: trigger:
platform: event platform: event

View File

@ -93,7 +93,19 @@
repeat_counter: 0 repeat_counter: 0
host: esszimmerradio.fritz.box host: esszimmerradio.fritz.box
action: 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: data:
media_content_id: Gesammelte Weihnachtslieder media_content_id: Gesammelte Weihnachtslieder
media_content_type: music media_content_type: music
@ -107,7 +119,19 @@
repeat_counter: 0 repeat_counter: 0
host: esszimmerradio.fritz.box host: esszimmerradio.fritz.box
action: 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: data:
media_content_id: Harmonic Brass Christmas media_content_id: Harmonic Brass Christmas
media_content_type: music media_content_type: music
@ -121,7 +145,19 @@
repeat_counter: 0 repeat_counter: 0
host: esszimmerradio.fritz.box host: esszimmerradio.fritz.box
action: 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: data:
media_content_id: German Brass Christmas media_content_id: German Brass Christmas
media_content_type: music media_content_type: music
@ -135,7 +171,19 @@
repeat_counter: 0 repeat_counter: 0
host: esszimmerradio.fritz.box host: esszimmerradio.fritz.box
action: 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: data:
media_content_id: Weihnachten mit den Wiener Sängerknaben media_content_id: Weihnachten mit den Wiener Sängerknaben
media_content_type: music media_content_type: music
@ -149,7 +197,19 @@
repeat_counter: 0 repeat_counter: 0
host: esszimmerradio.fritz.box host: esszimmerradio.fritz.box
action: 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: data:
media_content_id: Weihnachten mit den Wiener Sängerknaben media_content_id: Weihnachten mit den Wiener Sängerknaben
media_content_type: music media_content_type: music
@ -163,7 +223,19 @@
repeat_counter: 0 repeat_counter: 0
host: esszimmerradio.fritz.box host: esszimmerradio.fritz.box
action: 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: data:
media_content_id: SammlungGeorg media_content_id: SammlungGeorg
media_content_type: music media_content_type: music

View File

@ -93,7 +93,19 @@
repeat_counter: 0 repeat_counter: 0
host: musikserverWohnzimmerOben.fritz.box host: musikserverWohnzimmerOben.fritz.box
action: 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: data:
media_content_id: Gesammelte Weihnachtslieder media_content_id: Gesammelte Weihnachtslieder
media_content_type: music media_content_type: music
@ -107,7 +119,19 @@
repeat_counter: 0 repeat_counter: 0
host: musikserverWohnzimmerOben.fritz.box host: musikserverWohnzimmerOben.fritz.box
action: 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: data:
media_content_id: Harmonic Brass Christmas media_content_id: Harmonic Brass Christmas
media_content_type: music media_content_type: music
@ -121,7 +145,19 @@
repeat_counter: 0 repeat_counter: 0
host: musikserverWohnzimmerOben.fritz.box host: musikserverWohnzimmerOben.fritz.box
action: 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: data:
media_content_id: German Brass Christmas media_content_id: German Brass Christmas
media_content_type: music media_content_type: music
@ -135,7 +171,19 @@
repeat_counter: 0 repeat_counter: 0
host: musikserverWohnzimmerOben.fritz.box host: musikserverWohnzimmerOben.fritz.box
action: 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: data:
media_content_id: Weihnachten mit den Wiener Sängerknaben media_content_id: Weihnachten mit den Wiener Sängerknaben
media_content_type: music media_content_type: music
@ -149,7 +197,19 @@
repeat_counter: 0 repeat_counter: 0
host: musikserverWohnzimmerOben.fritz.box host: musikserverWohnzimmerOben.fritz.box
action: 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: data:
media_content_id: Weihnachten mit den Wiener Sängerknaben media_content_id: Weihnachten mit den Wiener Sängerknaben
media_content_type: music media_content_type: music
@ -163,7 +223,19 @@
repeat_counter: 0 repeat_counter: 0
host: musikserverWohnzimmerOben.fritz.box host: musikserverWohnzimmerOben.fritz.box
action: 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: data:
media_content_id: SammlungGeorg media_content_id: SammlungGeorg
media_content_type: music media_content_type: music

View File

@ -9,7 +9,19 @@
repeat_counter: 0 repeat_counter: 0
host: kitchenpi.fritz.box host: kitchenpi.fritz.box
action: 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: data:
media_content_id: Bar Classics media_content_id: Bar Classics
media_content_type: music media_content_type: music
@ -23,7 +35,19 @@
repeat_counter: 0 repeat_counter: 0
host: kitchenpi.fritz.box host: kitchenpi.fritz.box
action: 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: data:
media_content_id: Sentimental Moods media_content_id: Sentimental Moods
media_content_type: music media_content_type: music
@ -37,7 +61,19 @@
repeat_counter: 0 repeat_counter: 0
host: kitchenpi.fritz.box host: kitchenpi.fritz.box
action: 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: data:
media_content_id: Pop media_content_id: Pop
media_content_type: music media_content_type: music
@ -79,7 +115,19 @@
repeat_counter: 0 repeat_counter: 0
host: kitchenpi.fritz.box host: kitchenpi.fritz.box
action: 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: data:
media_content_id: http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3 media_content_id: http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3
media_content_type: music media_content_type: music

View File

@ -70,3 +70,16 @@ first_floor:
- light.wohnzimmer_stehlampe_oben - 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

View File

@ -6,6 +6,7 @@ yaml = YAML()
# -------------------------------------- put the config here ----------------------------------------------------------- # -------------------------------------- put the config here -----------------------------------------------------------
def get_config(): def get_config():
return { return {
'bedroom': { 'bedroom': {
@ -26,14 +27,19 @@ def get_config():
'btn_8': '[radio] BR-Klassik', 'btn_8': '[radio] BR-Klassik',
'btn_9': '[playlist] http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3', # Klassik Radio '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', 'btn_0': '[radio] Bayern 3',
'key_numeric_pound': '[radio] Bayern 2', 'key_numeric_pound': '[radio] Bayern 2',
'key_red': '[scene] schlafzimmer_stillen', 'key_red': '[scene] schlafzimmer_stillen',
'key_green': '[scene] schlafzimmer_orange', 'key_green': '[scene] schlafzimmer_orange',
'key_yellow': '[scene] schlafzimmer_ganz_hell', 'key_yellow': '[scene] schlafzimmer_ganz_hell',
'key_blue': '[scene] schlafzimmer_blau', 'key_blue': '[scene] nachtswennallelieberschlafen',
'key_tv': [service('script.turn_on', 'script.timed_sleep', 'key_tv': [service('script.turn_on', 'script.timed_sleep',
variables={'media_content_id': 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd', # Regen variables={'media_content_id': 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd', # Regen
@ -131,7 +137,7 @@ def get_config():
'btn_0': '[playlist] Weihnachten mit den Wiener Sängerknaben', 'btn_0': '[playlist] Weihnachten mit den Wiener Sängerknaben',
'key_numeric_pound': '[playlist] SammlungGeorg', 'key_numeric_pound': '[playlist] SammlungGeorg',
} }
}, },
} }
@ -146,6 +152,21 @@ def split_description(d):
return res.group(1).strip(), res.group(2).strip() 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): def automation_from_config(ir_description):
ir_host = ir_description['ir_host'] ir_host = ir_description['ir_host']
@ -159,8 +180,9 @@ def automation_from_config(ir_description):
function, value = split_description(description) function, value = split_description(description)
if function == 'playlist': if function == 'playlist':
media_player = ir_description['media_player'] media_player = ir_description['media_player']
action = service('media_player.play_media', media_player, action = [*default_music_settings(media_player),
media_content_id=value, media_content_type='music') service('media_player.play_media', media_player,
media_content_id=value, media_content_type='music')]
elif function == 'radio': elif function == 'radio':
media_player = ir_description['media_player'] media_player = ir_description['media_player']
action = service('media_player.play_media', media_player, action = service('media_player.play_media', media_player,

View File

@ -7,7 +7,7 @@ person:
sun: sun:
system_health: system_health:
updater: updater:
logbook: #logbook:
#input_boolean: #input_boolean:
#input_datetime: #input_datetime:
@ -157,6 +157,83 @@ switch:
payload_available: "Online" payload_available: "Online"
payload_not_available: "Offline" payload_not_available: "Offline"
retain: false 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: long_click:
duration: 0.6 duration: 0.6
@ -444,6 +521,16 @@ vacuum:
sensor: 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 - platform: template
sensors: sensors:
motion_combined: motion_combined:
@ -485,8 +572,8 @@ sensor:
group: !include groups.yaml group: !include groups.yaml
automation: !include automations.yaml automation: !include automations.yaml
script: !include scripts.yaml script: !include scripts.yaml
scene: !include_dir_merge_list scenes scene: !include scenes.yaml
scene old: !include_dir_merge_list scenes
# Light groups # Light groups

View File

@ -14,8 +14,9 @@ from homeassistant.components.media_player.const import (
ATTR_MEDIA_ENQUEUE, DOMAIN, MEDIA_TYPE_MUSIC, ATTR_MEDIA_ENQUEUE, DOMAIN, MEDIA_TYPE_MUSIC,
SUPPORT_CLEAR_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_CLEAR_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE,
SUPPORT_PLAY, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_PLAY, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK,
SUPPORT_SHUFFLE_SET, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_SHUFFLE_SET, SUPPORT_REPEAT_SET, SUPPORT_TURN_OFF, SUPPORT_TURN_ON,
SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET) SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, REPEAT_MODE_ALL, REPEAT_MODE_OFF,
REPEAT_MODE_ONE,)
from homeassistant.const import ( from homeassistant.const import (
ATTR_COMMAND, CONF_HOST, CONF_PASSWORD, CONF_PORT, CONF_USERNAME, ATTR_ENTITY_ID, ATTR_COMMAND, CONF_HOST, CONF_PASSWORD, CONF_PORT, CONF_USERNAME, ATTR_ENTITY_ID,
STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING) STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING)
@ -29,7 +30,7 @@ DEFAULT_PORT = 9090
SUPPORT_SQUEEZEBOX = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | \ SUPPORT_SQUEEZEBOX = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | \
SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \
SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | \ 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({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string, vol.Required(CONF_HOST): cv.string,
@ -299,8 +300,10 @@ class SqueezeBoxDevice(MediaPlayerDevice):
self._status['time'] = cmd[1] self._status['time'] = cmd[1]
elif cmd[:3] == ['prefset', 'server', 'volume']: elif cmd[:3] == ['prefset', 'server', 'volume']:
self._status['mixer volume'] = cmd[3] 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']: 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: if self.media_position != last_media_position:
self._last_media_position_update = utcnow() self._last_media_position_update = utcnow()
@ -436,6 +439,25 @@ class SqueezeBoxDevice(MediaPlayerDevice):
elif 'playlist_shuffle' in self._status: elif 'playlist_shuffle' in self._status:
return self._status['playlist_shuffle'] == '1' 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 @property
def supported_features(self): def supported_features(self):
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
@ -448,7 +470,7 @@ class SqueezeBoxDevice(MediaPlayerDevice):
self.call_method('mixer', 'volume', '-5') self.call_method('mixer', 'volume', '-5')
def set_volume_level(self, volume): 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) self.call_method('mixer', 'volume', volume_percent)
def mute_volume(self, mute): def mute_volume(self, mute):

118
scenes.yaml Normal file
View File

@ -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

View File

@ -40,7 +40,7 @@
entities: entities:
light.bett_rebecca: light.bett_rebecca:
state: true state: true
brightness: 10 brightness: 6
xy_color: xy_color:
- 0.502 - 0.502
- 0.414 - 0.414

View File

@ -404,9 +404,7 @@
light.wohnzimmer_kugel: light.wohnzimmer_kugel:
state: false state: false
light.wohnzimmer_stehlampe: light.wohnzimmer_stehlampe:
state: true state: false
brightness: 120
color_temp: 428
light.wohnzimmer_stehlampe_oben: light.wohnzimmer_stehlampe_oben:
state: false state: false
light.wohnzimmer_regal_rechts: light.wohnzimmer_regal_rechts:

View File

@ -44,6 +44,10 @@ timed_sleep:
entity_id: "media_player.bedroompi" entity_id: "media_player.bedroompi"
shuffle: > shuffle: >
{% if shuffle %}True{% else %}False{% endif %} {% if shuffle %}True{% else %}False{% endif %}
- service: media_player.repeat_set
data:
entity_id: "media_player.bedroompi"
repeat: "off"
- service: media_player.play_media - service: media_player.play_media
data_template: data_template:
entity_id: "media_player.bedroompi" entity_id: "media_player.bedroompi"

View File

@ -1,7 +1,16 @@
((LitElement) => { ((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 html = LitElement.prototype.html;
const css = LitElement.prototype.css; const css = LitElement.prototype.css;
const UNAVAILABLE = 'unavailable';
const UNKNOWN = 'unknown';
class MultipleEntityRow extends LitElement { class MultipleEntityRow extends LitElement {
static get properties() { static get properties() {
@ -46,12 +55,17 @@
display: block; display: block;
color: var(--secondary-text-color); color: var(--secondary-text-color);
} }
hui-warning {
width: 100%;
}
state-badge { state-badge {
flex: 0 0 40px; flex: 0 0 40px;
cursor: pointer; cursor: pointer;
} }
.icon-small {
width: auto;
}
.entity { .entity {
margin-right: 16px;
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
} }
@ -59,22 +73,32 @@
font-size: 10px; font-size: 10px;
color: var(--secondary-text-color); 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; margin-right: 0;
} }
.state { .entities-column {
min-width: 45px; flex-direction: column;
display: flex;
align-items: flex-end;
justify-content: space-evenly;
} }
.toggle { .entities-column .entity div {
margin-left: 8px; display: inline-block;
} vertical-align: middle;
.icon-small {
width: auto;
}`; }`;
} }
render() { render() {
return html` return this.state.stateObj ? html`
<state-badge <state-badge
.stateObj="${this.state.stateObj}" .stateObj="${this.state.stateObj}"
.overrideIcon="${this._config.icon}" .overrideIcon="${this._config.icon}"
@ -84,39 +108,50 @@
<div class="flex"> <div class="flex">
<div class="info" @click="${this.onRowClick}"> <div class="info" @click="${this.onRowClick}">
${this.state.name} ${this.state.name}
<div class="secondary">${this.renderSecondaryInfo()}</div> <div class="secondary" style="${this.state.info && this.state.info.style}">${this.renderSecondaryInfo()}</div>
</div> </div>
${this.state.entities.map(entity => this.renderEntity(entity))} <div class="${this._config.column ? 'entities-column' : 'entities-row'}">
${this.state.value ? html` ${this.state.entities.map(entity => this.renderEntity(entity))}
<div class="state entity" @click="${this.onStateClick}"> ${this.state.value ? html`
${this.stateHeader && html`<span>${this.stateHeader}</span>`} <div class="state entity" style="${this.state.style}" @click="${this.onRowClick}">
${this.renderMainState()} ${this.stateHeader && html`<span>${this.stateHeader}</span>`}
</div>` : null} <div>${this.renderMainState()}</div>
</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() { renderMainState() {
if (this.state.toggle) return html`<div class="toggle">${this.renderToggle(this.state.stateObj)}</div>`; if (this.state.toggle) return this.renderToggle(this.state.stateObj);
else if (this._config.format) return this.renderTimestamp(this.state.value, this._config.format); const unit = this.state.unit && !this.state.unavailable ? ` ${this.state.unit}` : null;
else return html`<div>${this.state.value}</div>`; return html`${this.renderValue(this.state)}${unit}`;
} }
renderSecondaryInfo() { renderSecondaryInfo() {
return this.lastChanged if (this.lastChanged)
? html`<ha-relative-time datetime="${this.state.stateObj.last_changed}" .hass="${this._hass}"></ha-relative-time>` return html`<ha-relative-time datetime="${this.state.stateObj.last_changed}" .hass="${this._hass}"></ha-relative-time>`;
: this.state.info && this.state.info.format if (this.state.info) {
? this.renderTimestamp(this.state.info.value, this.state.info.format) const name = this.state.info.name ? `${this.state.info.name} ` : null;
: (this.state.info && `${this.state.info.name ? `${this.state.info.name} ` : ''}${this.state.info.value}`) 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) { renderToggle(stateObj) {
return html`<ha-entity-toggle .stateObj="${stateObj}" .hass="${this._hass}"></ha-entity-toggle>`; return html`<ha-entity-toggle .stateObj="${stateObj}" .hass="${this._hass}"></ha-entity-toggle>`;
} }
renderTimestamp(value, format) { renderValue(entity) {
return !['unknown', 'unavailable'].includes(value.toLowerCase()) if (entity.unavailable || !entity.format) return entity.value;
? html`<hui-timestamp-display .ts=${new Date(value)} .format=${format} .hass=${this._hass}></hui-timestamp-display>` if (entity.format === 'duration') return html`${this.secondsToDuration(entity.value)}`;
: html`${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) { renderIcon(entity) {
@ -125,14 +160,14 @@
renderEntityValue(entity) { renderEntityValue(entity) {
if (entity.toggle) return this.renderToggle(entity.stateObj); if (entity.toggle) return this.renderToggle(entity.stateObj);
else if (entity.icon) return this.renderIcon(entity); if (entity.icon !== undefined) return this.renderIcon(entity);
else if (entity.format) return this.renderTimestamp(entity.value, entity.format); const unit = entity.unit && !entity.unavailable ? ` ${entity.unit}` : null;
else return html`${entity.value}`; return html`${this.renderValue(entity)}${unit}`;
} }
renderEntity(entity) { renderEntity(entity) {
return entity ? html` return entity ? html`
<div class="entity" @click="${entity.onClick}"> <div class="entity" style="${entity.style}" @click="${entity.onClick}">
<span>${entity.name}</span> <span>${entity.name}</span>
<div>${this.renderEntityValue(entity)}</div> <div>${this.renderEntityValue(entity)}</div>
</div>` : null; </div>` : null;
@ -147,10 +182,7 @@
this.lastChanged = config.secondary_info === 'last-changed'; this.lastChanged = config.secondary_info === 'last-changed';
this.stateHeader = config.state_header !== undefined ? config.state_header : null; this.stateHeader = config.state_header !== undefined ? config.state_header : null;
this.onRowClick = (!config.tap_action || config.tap_action.action !== 'none') this.onRowClick = this.getAction(config.tap_action, config.entity);
? this.moreInfoAction(config.tap_action, config.entity)
: null;
this.onStateClick = this.getAction(config.tap_action, config.entity);
this._config = config; this._config = config;
} }
@ -161,22 +193,24 @@
if (hass && this._config) { if (hass && this._config) {
const mainStateObj = hass.states[this._config.entity]; const mainStateObj = hass.states[this._config.entity];
if (!mainStateObj) throw new Error(`Entity '${this._config.entity}' does not exist.`); this.state = mainStateObj ? {
this.state = {
...this.state, ...this.state,
stateObj: mainStateObj, stateObj: mainStateObj,
name: this.entityName(this._config.name, 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), 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)) : [], entities: this._config.entities ? this._config.entities.map(entity => this.initEntity(entity, mainStateObj)) : [],
info: this.lastChanged ? null : info: this.lastChanged ? null :
typeof this._config.secondary_info === 'string' typeof this._config.secondary_info === 'string'
? {value: this._config.secondary_info} ? {value: this._config.secondary_info}
: this.initEntity(this._config.secondary_info, mainStateObj), : this.initEntity(this._config.secondary_info, mainStateObj),
} } : {};
} }
} }
@ -191,7 +225,7 @@
} }
checkToggle(config, stateObj) { 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) { initEntity(config, mainStateObj) {
@ -200,18 +234,23 @@
const entity = typeof config === 'string' ? config : config.entity; const entity = typeof config === 'string' ? config : config.entity;
const stateObj = entity ? (this._hass && this._hass.states[entity]) : mainStateObj; 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 { return {
stateObj: stateObj, stateObj: stateObj,
name: entity ? this.entityName(config.name, stateObj) : (config.name || null), name: entity ? this.entityName(config.name, stateObj) : (config.name || null),
value: config.attribute !== undefined value: config.attribute !== undefined
? this.entityAttribute(stateObj, config.attribute, config.unit) ? this.entityAttribute(stateObj, config.attribute)
: this.entityStateValue(stateObj, config.unit), : 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), 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, format: config.format || false,
state_color: config.state_color || false, state_color: config.state_color || false,
style: this.entityStyles(config),
onClick: this.getAction(config.tap_action, stateObj.entity_id), onClick: this.getAction(config.tap_action, stateObj.entity_id),
}; };
} }
@ -224,94 +263,128 @@
: stateObj.attributes.friendly_name || ''; : stateObj.attributes.friendly_name || '';
} }
entityAttribute(stateObj, attribute, unit) { entityAttribute(stateObj, attribute) {
return (attribute in stateObj.attributes) return (attribute in stateObj.attributes)
? `${stateObj.attributes[attribute]}${unit ? ` ${unit}` : ''}` ? stateObj.attributes[attribute]
: this._hass.localize('state.default.unavailable'); : this._hass.localize('state.default.unavailable');
} }
entityStateValue(stateObj, unit) { entityStateValue(stateObj) {
let display; if (stateObj.state === UNKNOWN || stateObj.state === UNAVAILABLE) {
const domain = stateObj.entity_id.substr(0, stateObj.entity_id.indexOf(".")); return this._hass.localize(`state.default.${stateObj.state}`);
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}`);
} }
return display || const domain = stateObj.entity_id.substr(0, stateObj.entity_id.indexOf('.'));
this._hass.localize(`state.default.${stateObj.state}`) || return (
this._hass.localize(`component.${domain}.state.${stateObj.state}`) || (stateObj.attributes.device_class
stateObj.state; && 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) { getAction(config, entityId) {
if (config && config.action) { if (!config || !config.action || config.action === 'more-info') {
if (config.action === 'none') { return () => this.fireEvent(this, 'hass-more-info', {entityId: (config && config.entity) || entityId});
return null; }
} if (config.action === 'none') {
const confirmation = config.confirmation === true ? 'Are you sure?' : config.confirmation; return null;
if (config.action === 'call-service') { }
const [domain, service] = config.service.split(".");
return () => { return () => {
if (!confirmation || confirm(confirmation)) { if (config.confirmation) {
this._hass.callService(domain, service, config.service_data); this.forwardHaptic('warning');
this.forwardHaptic('light');
} if (!confirm(config.confirmation === true ? `Are you sure?` : config.confirmation)) {
return;
} }
} }
if (config.action === 'toggle') {
return () => { switch (config.action) {
if (!confirmation || confirm(confirmation)) { case 'call-service': {
this._hass.callService('homeassistant', 'toggle', {entity_id: entityId}); if (!config.service) {
this.forwardHaptic('light'); this.forwardHaptic('failure');
return;
} }
const [domain, service] = config.service.split('.');
this._hass.callService(domain, service, config.service_data);
this.forwardHaptic('light');
break;
} }
} case 'toggle': {
if (config.action === 'url') { this.toggleEntity(entityId);
return () => { this.forwardHaptic('light');
if (!confirmation || confirm(confirmation)) { break;
const win = window.open(config.url_path, '_blank'); }
if (win) win.focus(); 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) { toggleEntity(entityId) {
return () => this.fireEvent('hass-more-info', (config && config.entity) || 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, { const event = new Event(type, {
bubbles: options.bubbles || true, bubbles: options.bubbles || true,
cancelable: options.cancelable || true, cancelable: options.cancelable || true,
composed: options.composed || true, composed: options.composed || true,
}); });
event.detail = {entityId: entity}; event.detail = detail;
this.dispatchEvent(event); node.dispatchEvent(event);
} }
forwardHaptic(type) { 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; event.detail = type;
this.dispatchEvent(event); 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); 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')));