update
This commit is contained in:
parent
91fc9c38ff
commit
f261b582b0
|
@ -1 +1 @@
|
||||||
2021.9.6
|
2022.8.7
|
|
@ -15,3 +15,4 @@ node_modules
|
||||||
/custom_components/scheduler
|
/custom_components/scheduler
|
||||||
/custom_components/pyscript
|
/custom_components/pyscript
|
||||||
/themes
|
/themes
|
||||||
|
/.storage/hacs/*.hacs
|
176
.storage/auth
176
.storage/auth
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "auth",
|
"key": "auth",
|
||||||
"data": {
|
"data": {
|
||||||
"users": [
|
"users": [
|
||||||
|
@ -11,7 +12,8 @@
|
||||||
"is_owner": false,
|
"is_owner": false,
|
||||||
"is_active": true,
|
"is_active": true,
|
||||||
"name": "Home Assistant Cloud",
|
"name": "Home Assistant Cloud",
|
||||||
"system_generated": true
|
"system_generated": true,
|
||||||
|
"local_only": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2ffcb10d3db745b396789364fdef72ec",
|
"id": "2ffcb10d3db745b396789364fdef72ec",
|
||||||
|
@ -21,7 +23,8 @@
|
||||||
"is_owner": true,
|
"is_owner": true,
|
||||||
"is_active": true,
|
"is_active": true,
|
||||||
"name": "Martin Bauer",
|
"name": "Martin Bauer",
|
||||||
"system_generated": false
|
"system_generated": false,
|
||||||
|
"local_only": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "bd0f10a32b324e85998881cb5b748d0f",
|
"id": "bd0f10a32b324e85998881cb5b748d0f",
|
||||||
|
@ -31,7 +34,8 @@
|
||||||
"is_owner": false,
|
"is_owner": false,
|
||||||
"is_active": true,
|
"is_active": true,
|
||||||
"name": "Rebecca Bauer",
|
"name": "Rebecca Bauer",
|
||||||
"system_generated": false
|
"system_generated": false,
|
||||||
|
"local_only": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "508c7e7c70da41dcb39e2a6e23d6fac1",
|
"id": "508c7e7c70da41dcb39e2a6e23d6fac1",
|
||||||
|
@ -41,7 +45,19 @@
|
||||||
"is_owner": false,
|
"is_owner": false,
|
||||||
"is_active": true,
|
"is_active": true,
|
||||||
"name": "Supervisor",
|
"name": "Supervisor",
|
||||||
"system_generated": true
|
"system_generated": true,
|
||||||
|
"local_only": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "66ee14e588ef4a7bbd019a46eb9a3e29",
|
||||||
|
"group_ids": [
|
||||||
|
"system-read-only"
|
||||||
|
],
|
||||||
|
"is_owner": false,
|
||||||
|
"is_active": true,
|
||||||
|
"name": "Home Assistant Content",
|
||||||
|
"system_generated": true,
|
||||||
|
"local_only": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"groups": [
|
"groups": [
|
||||||
|
@ -618,8 +634,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "b05205cd745f9313e410b1ae8b6c3244986e4bd12e1f5196caac378619184ed804de6b1df56b77f60e8aa18c659886f4c2ca0815098e3c554726b4450bb37f13",
|
"token": "b05205cd745f9313e410b1ae8b6c3244986e4bd12e1f5196caac378619184ed804de6b1df56b77f60e8aa18c659886f4c2ca0815098e3c554726b4450bb37f13",
|
||||||
"jwt_key": "b2d8eb38f6507f5b16322b6885405d34690fdbf2ec2a531647c89f0145bc7fa576b80572d2ee1cda9fbedf347facd6aca9f640310cbbb088d3208781989c0760",
|
"jwt_key": "b2d8eb38f6507f5b16322b6885405d34690fdbf2ec2a531647c89f0145bc7fa576b80572d2ee1cda9fbedf347facd6aca9f640310cbbb088d3208781989c0760",
|
||||||
"last_used_at": "2021-08-10T19:41:50.904791+00:00",
|
"last_used_at": "2022-08-28T20:31:17.184325+00:00",
|
||||||
"last_used_ip": "79.194.224.220",
|
"last_used_ip": "46.83.0.208",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -954,8 +970,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "c255c95f61126b8064f8ae84e621ee0a770d2023de82ff066dce12074f950fa29defa6efbf71c538916cd92a00e2849e189b5ce1268c2d48a737e8a5e81d2ade",
|
"token": "c255c95f61126b8064f8ae84e621ee0a770d2023de82ff066dce12074f950fa29defa6efbf71c538916cd92a00e2849e189b5ce1268c2d48a737e8a5e81d2ade",
|
||||||
"jwt_key": "d86702343e9712dbf76b25d832d1b81d3185ccec78d59087a27b37e348ac89de7f2a63e14ed0f3f38886577bda919f5258732a1b083a89d98853296c29e47106",
|
"jwt_key": "d86702343e9712dbf76b25d832d1b81d3185ccec78d59087a27b37e348ac89de7f2a63e14ed0f3f38886577bda919f5258732a1b083a89d98853296c29e47106",
|
||||||
"last_used_at": "2021-07-19T21:44:55.498864+00:00",
|
"last_used_at": "2022-07-05T11:16:46.759681+00:00",
|
||||||
"last_used_ip": "192.168.178.80",
|
"last_used_ip": "80.142.98.240",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -1018,8 +1034,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "5413aa9dfb9b944f384c07ebc0242e2b7b26c1e674b0c74ace992029b64302e12d0fe038ece34d425714a757ebafce5de46bd101d5b85dc7e3c96cca4f5595ca",
|
"token": "5413aa9dfb9b944f384c07ebc0242e2b7b26c1e674b0c74ace992029b64302e12d0fe038ece34d425714a757ebafce5de46bd101d5b85dc7e3c96cca4f5595ca",
|
||||||
"jwt_key": "afc76b9a4127faea57f23d7020be74daaaaba30e99084db2f2e79fe86775841203355bde3268b851b507e964faa10b6cb15c66beb48a08c9b9cab96648372b87",
|
"jwt_key": "afc76b9a4127faea57f23d7020be74daaaaba30e99084db2f2e79fe86775841203355bde3268b851b507e964faa10b6cb15c66beb48a08c9b9cab96648372b87",
|
||||||
"last_used_at": "2021-10-04T19:39:25.995321+00:00",
|
"last_used_at": "2022-08-28T18:36:26.383075+00:00",
|
||||||
"last_used_ip": "80.142.108.58",
|
"last_used_ip": "46.83.0.208",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -1066,8 +1082,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "5ef3ab121bf8da837141c97d6d3cee163ab8f3d9500ccfa88b00e7d5541eead3ce479329c4ba2c7cdacd73535f830e60424ae21841de0967416f694cab8b9c0b",
|
"token": "5ef3ab121bf8da837141c97d6d3cee163ab8f3d9500ccfa88b00e7d5541eead3ce479329c4ba2c7cdacd73535f830e60424ae21841de0967416f694cab8b9c0b",
|
||||||
"jwt_key": "1888a3611f1a42b55b412ba801a7ffca654e347049e285a9b5513b15ded3c0f729c7463e9a0f957e0ef878c210338fef196cc449170c4a4f925c38678c07ad70",
|
"jwt_key": "1888a3611f1a42b55b412ba801a7ffca654e347049e285a9b5513b15ded3c0f729c7463e9a0f957e0ef878c210338fef196cc449170c4a4f925c38678c07ad70",
|
||||||
"last_used_at": "2021-10-04T22:00:24.860669+00:00",
|
"last_used_at": "2022-08-25T10:00:25.530928+00:00",
|
||||||
"last_used_ip": "54.240.197.117",
|
"last_used_ip": "54.240.197.49",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -1098,8 +1114,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "1e1726001ee4616f716875a4d8de6f149195902d407334106f774a7aafd9b8c5348414d93c1b7280874746399c81f4e4b27b7b765f23034a3077b943690cfc9e",
|
"token": "1e1726001ee4616f716875a4d8de6f149195902d407334106f774a7aafd9b8c5348414d93c1b7280874746399c81f4e4b27b7b765f23034a3077b943690cfc9e",
|
||||||
"jwt_key": "d4a7bc29bca15964c03ad344771f9a74304c1d46a0b663f8547d76159f3ba318748fd35e3ec5bdf944cbae9c21449294993e3735a68c3971ed85e489d49ee91a",
|
"jwt_key": "d4a7bc29bca15964c03ad344771f9a74304c1d46a0b663f8547d76159f3ba318748fd35e3ec5bdf944cbae9c21449294993e3735a68c3971ed85e489d49ee91a",
|
||||||
"last_used_at": "2021-10-05T11:30:41.242144+00:00",
|
"last_used_at": "2022-08-28T20:05:22.778662+00:00",
|
||||||
"last_used_ip": "80.142.108.58",
|
"last_used_ip": "46.83.0.208",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -1146,8 +1162,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "b35109ef6674416018047ee788db58de150dc137af697800ddc84743c1f6012ce5561170b49135c0f39fa42da80c47c52284dc599be894038e5dfeedc2d7bc69",
|
"token": "b35109ef6674416018047ee788db58de150dc137af697800ddc84743c1f6012ce5561170b49135c0f39fa42da80c47c52284dc599be894038e5dfeedc2d7bc69",
|
||||||
"jwt_key": "ed33e5df5c16d07afe773fb25ca4a8515c7a991d00f347b4e2f4e23c7fd128c2bf19c838d856aa01385bf32e3e8be619d0f90f9a79a036f425013149580e9f46",
|
"jwt_key": "ed33e5df5c16d07afe773fb25ca4a8515c7a991d00f347b4e2f4e23c7fd128c2bf19c838d856aa01385bf32e3e8be619d0f90f9a79a036f425013149580e9f46",
|
||||||
"last_used_at": "2021-09-28T07:12:20.912266+00:00",
|
"last_used_at": "2022-08-08T06:12:16.924562+00:00",
|
||||||
"last_used_ip": "91.103.43.254",
|
"last_used_ip": "79.194.230.132",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -1178,8 +1194,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "d50fdcf16944578977db4f0ea2ba627112e737caa23e282ab3121e4216b96794d2fcd663c713c1812fd1cc411352c2d912d52b277743cf4fd125d146f70f9bed",
|
"token": "d50fdcf16944578977db4f0ea2ba627112e737caa23e282ab3121e4216b96794d2fcd663c713c1812fd1cc411352c2d912d52b277743cf4fd125d146f70f9bed",
|
||||||
"jwt_key": "671f3313aa53b5b5e99927a47525c3a852e47581aa525591cb29e8494261818ef88058dd0935395c947b7573993101513d4717ae55d3aefd5dce49c12a3a80a2",
|
"jwt_key": "671f3313aa53b5b5e99927a47525c3a852e47581aa525591cb29e8494261818ef88058dd0935395c947b7573993101513d4717ae55d3aefd5dce49c12a3a80a2",
|
||||||
"last_used_at": "2021-10-05T11:29:35.459172+00:00",
|
"last_used_at": "2022-06-06T18:21:34.531783+00:00",
|
||||||
"last_used_ip": "80.142.108.58",
|
"last_used_ip": "79.194.230.164",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -1242,8 +1258,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "d1e3e3ed7ea4dc49e7a4bf869191cc4923b7ea414638351292bfb2b4e1eed781d09b9f51ea4365610bdd0f8788836cca2819a7b9cf439a3e1d463e176004e858",
|
"token": "d1e3e3ed7ea4dc49e7a4bf869191cc4923b7ea414638351292bfb2b4e1eed781d09b9f51ea4365610bdd0f8788836cca2819a7b9cf439a3e1d463e176004e858",
|
||||||
"jwt_key": "4153fa69e30645f25d41c1a15616889f93ededc9bc00b98adcf5e8e004d81a06ba0674a4995c9bafec80fd96e022d24035889c313bbc6ce129efcd5870ce5bd8",
|
"jwt_key": "4153fa69e30645f25d41c1a15616889f93ededc9bc00b98adcf5e8e004d81a06ba0674a4995c9bafec80fd96e022d24035889c313bbc6ce129efcd5870ce5bd8",
|
||||||
"last_used_at": "2021-10-05T08:26:29.895206+00:00",
|
"last_used_at": "2021-12-26T08:56:08.572627+00:00",
|
||||||
"last_used_ip": "80.142.108.58",
|
"last_used_ip": "80.142.99.31",
|
||||||
"credential_id": "bfdbc07398af4dd5ab5a22d963ec3afa",
|
"credential_id": "bfdbc07398af4dd5ab5a22d963ec3afa",
|
||||||
"version": "2021.7.4"
|
"version": "2021.7.4"
|
||||||
},
|
},
|
||||||
|
@ -1290,11 +1306,59 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "c57abfd9d16647b72f0dc4b19157fed51e09075601ca5fd2acd1e77bb1af81f2ac1f6dd347161d9977a4a4154bc74748179b13ea80a661b4a2fc9245d9a5a742",
|
"token": "c57abfd9d16647b72f0dc4b19157fed51e09075601ca5fd2acd1e77bb1af81f2ac1f6dd347161d9977a4a4154bc74748179b13ea80a661b4a2fc9245d9a5a742",
|
||||||
"jwt_key": "fdcb43a6dce27d5c669e8331d2ca76e31193d559ef277d2f72526befc4849cdb697dc98d7192f6152c60288c10cc8b6ac90eca0dd7cffe647ad7e51283544bd3",
|
"jwt_key": "fdcb43a6dce27d5c669e8331d2ca76e31193d559ef277d2f72526befc4849cdb697dc98d7192f6152c60288c10cc8b6ac90eca0dd7cffe647ad7e51283544bd3",
|
||||||
"last_used_at": "2021-10-01T14:03:45.792916+00:00",
|
"last_used_at": "2022-02-10T10:18:47.420452+00:00",
|
||||||
"last_used_ip": "91.103.43.254",
|
"last_used_ip": "91.103.43.254",
|
||||||
"credential_id": "bfdbc07398af4dd5ab5a22d963ec3afa",
|
"credential_id": "bfdbc07398af4dd5ab5a22d963ec3afa",
|
||||||
"version": "2021.9.7"
|
"version": "2021.9.7"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "4086d65fe6f2437a82d05d8dd69bc0ce",
|
||||||
|
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||||
|
"client_id": "http://192.168.178.101:8123/",
|
||||||
|
"client_name": null,
|
||||||
|
"client_icon": null,
|
||||||
|
"token_type": "normal",
|
||||||
|
"created_at": "2021-12-05T16:21:30.551340+00:00",
|
||||||
|
"access_token_expiration": 1800.0,
|
||||||
|
"token": "611b8bc54b9c7a01d50a67df6b6e1c43a92ae27ea83ebb84a92044e4840d1eded614afbd418b09cdc65b582422d226354dd1a3b717acafc9012b51dc8a580f28",
|
||||||
|
"jwt_key": "6c1965c468850627ec444d4bd54482a812e4d9925c45b3d8c1241272649ed75ba10fc52c2e8b9ef7368f2729d9a09449529d6dffad768f37fc397b298d2fd8b0",
|
||||||
|
"last_used_at": "2021-12-05T16:21:30.591121+00:00",
|
||||||
|
"last_used_ip": "192.168.178.76",
|
||||||
|
"credential_id": "bfdbc07398af4dd5ab5a22d963ec3afa",
|
||||||
|
"version": "2021.11.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7bf59775badb431d90b40dd078d51315",
|
||||||
|
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||||
|
"client_id": null,
|
||||||
|
"client_name": "musicmouse",
|
||||||
|
"client_icon": null,
|
||||||
|
"token_type": "long_lived_access_token",
|
||||||
|
"created_at": "2021-12-20T21:54:31.460456+00:00",
|
||||||
|
"access_token_expiration": 315360000.0,
|
||||||
|
"token": "04c2ba6fb1fcb43a8064c95e0a45da69184682638f6f202a969878406a9a50e54d2671a64a9381d1f3dada1f04870f147b248d35895648e607cf17208ede8fa0",
|
||||||
|
"jwt_key": "8f9ecf760f693b8a263146d6550f3b1f4b95cb52ad5d6368f3b3128d0a845114f77775a3ff10719515b1fdbe091fbd93355fcdf402ae4dc9957c63414f01734f",
|
||||||
|
"last_used_at": "2021-12-20T21:54:31.460963+00:00",
|
||||||
|
"last_used_ip": null,
|
||||||
|
"credential_id": null,
|
||||||
|
"version": "2021.11.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "e4bcd6ffaab14df087318c7db4e8c88f",
|
||||||
|
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||||
|
"client_id": "https://ha.bauer.tech/",
|
||||||
|
"client_name": null,
|
||||||
|
"client_icon": null,
|
||||||
|
"token_type": "normal",
|
||||||
|
"created_at": "2022-08-08T10:41:15.229838+00:00",
|
||||||
|
"access_token_expiration": 1800.0,
|
||||||
|
"token": "2cbfd92b942fa0f621d8ac0be8c3571e5847adda215606ea666800b2dd6193e9ddb526f43ac9bd79260b8211d56a0bac9516f3e042553937ab49658df5724d00",
|
||||||
|
"jwt_key": "4a2271faffe2e218682b4adfa1175bf89dbd14555c75627aed3c2ec0643b26fbac19dc3adc72c8b48633d720ee8d410c0a501be2e356bf60dd60a6509312336c",
|
||||||
|
"last_used_at": "2022-08-28T14:46:15.368389+00:00",
|
||||||
|
"last_used_ip": "46.83.0.208",
|
||||||
|
"credential_id": "bfdbc07398af4dd5ab5a22d963ec3afa",
|
||||||
|
"version": "2022.3.8"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "d4d17dd9a19946bb994f904d08af346a",
|
"id": "d4d17dd9a19946bb994f904d08af346a",
|
||||||
"user_id": "bd0f10a32b324e85998881cb5b748d0f",
|
"user_id": "bd0f10a32b324e85998881cb5b748d0f",
|
||||||
|
@ -1338,8 +1402,8 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "c008fe893f268d124033d1258fc59917cbf4b392c36016f4f78740688abcb6a1edf23ace480bc2d65b39b616859218a18d8695d4162622c2a5dc5d234c84fe77",
|
"token": "c008fe893f268d124033d1258fc59917cbf4b392c36016f4f78740688abcb6a1edf23ace480bc2d65b39b616859218a18d8695d4162622c2a5dc5d234c84fe77",
|
||||||
"jwt_key": "5b37cbd04e7087318173ec3df627120cb88f9043126f17e2d4cfff9684e2d782793493d0c847ba7e6f68e8fe82af2d0f324984514c5630833a73620b39e130de",
|
"jwt_key": "5b37cbd04e7087318173ec3df627120cb88f9043126f17e2d4cfff9684e2d782793493d0c847ba7e6f68e8fe82af2d0f324984514c5630833a73620b39e130de",
|
||||||
"last_used_at": "2021-10-05T06:09:14.474030+00:00",
|
"last_used_at": "2021-10-09T20:55:37.077986+00:00",
|
||||||
"last_used_ip": "80.142.108.58",
|
"last_used_ip": "80.142.105.177",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
@ -1439,6 +1503,54 @@
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "a7d343f96ba5414e835cc195d093061b",
|
||||||
|
"user_id": "bd0f10a32b324e85998881cb5b748d0f",
|
||||||
|
"client_id": "https://home-assistant.io/android",
|
||||||
|
"client_name": null,
|
||||||
|
"client_icon": null,
|
||||||
|
"token_type": "normal",
|
||||||
|
"created_at": "2021-10-09T20:56:58.177039+00:00",
|
||||||
|
"access_token_expiration": 1800.0,
|
||||||
|
"token": "0b25771ac83465537d908b5920523fdf2a1e847254791c6aa685042d952ee2cf95499bc217abf3d071512451c0a33eacf1f231e3d8c34dd38e474d02a884ab38",
|
||||||
|
"jwt_key": "e1f651d3878cbea62c296bac2cc977a5ec0e3d3d1161331d196d999ec1b0fed8d6486e02f3223f11987aed6c11225d3e3a18fe44d9fdb1928433f4ebd5093580",
|
||||||
|
"last_used_at": "2021-10-13T09:02:53.068031+00:00",
|
||||||
|
"last_used_ip": "2.247.255.117",
|
||||||
|
"credential_id": "cf2a56609dd345f4b21901822fb8f88b",
|
||||||
|
"version": "2021.9.7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "90320f1a903a46eebfaf952e2420c77b",
|
||||||
|
"user_id": "bd0f10a32b324e85998881cb5b748d0f",
|
||||||
|
"client_id": "https://home-assistant.io/android",
|
||||||
|
"client_name": null,
|
||||||
|
"client_icon": null,
|
||||||
|
"token_type": "normal",
|
||||||
|
"created_at": "2021-10-19T19:19:49.955363+00:00",
|
||||||
|
"access_token_expiration": 1800.0,
|
||||||
|
"token": "0040d17782b81435e0d2db7dcd8a1a52f680a785913e898e99ccd94bcaeb4babb96c9bc7e5e63b606465cdfa3cfdb9917462950bf0d0bb02204d2feaf8a9cdda",
|
||||||
|
"jwt_key": "88e8d8966a0760ec778dbbf7e7ad9ef0c1f19750039405225e85c9f6ad2bcf19c7c564ba8f114c77d6785927c3dca7f5056030a012870649bea1ab8f0200110f",
|
||||||
|
"last_used_at": "2022-05-26T13:52:10.640640+00:00",
|
||||||
|
"last_used_ip": "46.83.14.98",
|
||||||
|
"credential_id": "cf2a56609dd345f4b21901822fb8f88b",
|
||||||
|
"version": "2021.9.7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "317e5cca1af340478618643d2c6f69a8",
|
||||||
|
"user_id": "bd0f10a32b324e85998881cb5b748d0f",
|
||||||
|
"client_id": "https://home-assistant.io/android",
|
||||||
|
"client_name": null,
|
||||||
|
"client_icon": null,
|
||||||
|
"token_type": "normal",
|
||||||
|
"created_at": "2022-06-02T20:01:07.784214+00:00",
|
||||||
|
"access_token_expiration": 1800.0,
|
||||||
|
"token": "cc5824de8978b349ff1974aa0bfd42e8556790008e7a41d603d6b1dd6be374cf02957280c70d1eb0b07bd62b16cf0cfc7fb46406db9a8fc7fc0ccf9d76ab3a86",
|
||||||
|
"jwt_key": "e37bf4b917d15c6e438790efff1793140a17c7158746cc4eb2303a1b7219c81173bcf93f4459e95a657459e48d80e24ce2fb08c1f7a3a963de50b461aa357156",
|
||||||
|
"last_used_at": "2022-08-28T13:47:00.438857+00:00",
|
||||||
|
"last_used_ip": "46.83.0.208",
|
||||||
|
"credential_id": "cf2a56609dd345f4b21901822fb8f88b",
|
||||||
|
"version": "2022.3.8"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "df477f63f6234aaa935e96b2635ef022",
|
"id": "df477f63f6234aaa935e96b2635ef022",
|
||||||
"user_id": "508c7e7c70da41dcb39e2a6e23d6fac1",
|
"user_id": "508c7e7c70da41dcb39e2a6e23d6fac1",
|
||||||
|
@ -1450,10 +1562,26 @@
|
||||||
"access_token_expiration": 1800.0,
|
"access_token_expiration": 1800.0,
|
||||||
"token": "832326bd02b23b62d231f5129d18042028215dbdee358a4bb25687764faf3815db2818e8a9001f11ba4518c4e9401563d182987eb55e2eb9ddf97135f678e0ba",
|
"token": "832326bd02b23b62d231f5129d18042028215dbdee358a4bb25687764faf3815db2818e8a9001f11ba4518c4e9401563d182987eb55e2eb9ddf97135f678e0ba",
|
||||||
"jwt_key": "dffb82d95a8fb848f6ae645aeb8445242f093aa61f99749283904e0f6e2b0c01717a02bc0892bf0b35beca61400e27aae2b742dc14878a107eb60b730b44a025",
|
"jwt_key": "dffb82d95a8fb848f6ae645aeb8445242f093aa61f99749283904e0f6e2b0c01717a02bc0892bf0b35beca61400e27aae2b742dc14878a107eb60b730b44a025",
|
||||||
"last_used_at": "2021-10-05T11:13:17.868587+00:00",
|
"last_used_at": "2022-08-28T20:29:00.696690+00:00",
|
||||||
"last_used_ip": "172.30.32.2",
|
"last_used_ip": "172.30.32.2",
|
||||||
"credential_id": null,
|
"credential_id": null,
|
||||||
"version": null
|
"version": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dbcf6e2e24a74dee819b8771f7da0895",
|
||||||
|
"user_id": "66ee14e588ef4a7bbd019a46eb9a3e29",
|
||||||
|
"client_id": null,
|
||||||
|
"client_name": null,
|
||||||
|
"client_icon": null,
|
||||||
|
"token_type": "system",
|
||||||
|
"created_at": "2022-02-10T21:02:20.750235+00:00",
|
||||||
|
"access_token_expiration": 1800.0,
|
||||||
|
"token": "284aed584081d71953681969db69aebe587392493440564f21caf7bdab3d709bb8facabb3f69019a8c6a525aad6153bc82d67a647ea35c213465afb13b4e7299",
|
||||||
|
"jwt_key": "4a1702d3d95c730a61f865b0d4269a0d6571174338ed5f5663d389cea542c4e8f35af00860ef9c2113bac8934a4b0997d69002e0b4bff97cfa5e7d9709e433b7",
|
||||||
|
"last_used_at": null,
|
||||||
|
"last_used_ip": null,
|
||||||
|
"credential_id": null,
|
||||||
|
"version": "2022.2.5"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
{
|
{
|
||||||
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
|
"key": "auth_module.totp",
|
||||||
"data": {
|
"data": {
|
||||||
"users": {
|
"users": {
|
||||||
"2ffcb10d3db745b396789364fdef72ec": "VSSLF24TFVBBITYM"
|
"2ffcb10d3db745b396789364fdef72ec": "VSSLF24TFVBBITYM",
|
||||||
|
"bd0f10a32b324e85998881cb5b748d0f": "BUFHT7N5LWOYLARK2NPWFPTFN6FP6Z2D"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"key": "auth_module.totp",
|
|
||||||
"version": 1
|
|
||||||
}
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "core.config_entries",
|
"key": "core.config_entries",
|
||||||
"data": {
|
"data": {
|
||||||
"entries": [
|
"entries": [
|
||||||
|
@ -11,7 +12,8 @@
|
||||||
"data": {
|
"data": {
|
||||||
"bridge_id": "001788FFFE284411",
|
"bridge_id": "001788FFFE284411",
|
||||||
"host": "192.168.178.20",
|
"host": "192.168.178.20",
|
||||||
"username": "dElg-A-1TtbLThgrsNxEn5FoBcB9pUFSA7JDGXls"
|
"api_key": "dElg-A-1TtbLThgrsNxEn5FoBcB9pUFSA7JDGXls",
|
||||||
|
"api_version": 2
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"allow_hue_groups": false,
|
"allow_hue_groups": false,
|
||||||
|
@ -31,7 +33,10 @@
|
||||||
"data": {
|
"data": {
|
||||||
"hostname": "192.168.178.1",
|
"hostname": "192.168.178.1",
|
||||||
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
|
"st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1",
|
||||||
"udn": "uuid:75802409-bccb-40e7-8e6c-3431C416294A"
|
"udn": "uuid:75802409-bccb-40e7-8e6c-3431C416294A",
|
||||||
|
"original_udn": "uuid:75802409-bccb-40e7-8e6c-3431C416294A",
|
||||||
|
"mac_address": "34:31:c4:16:29:4a",
|
||||||
|
"location": "http://192.168.178.1:49000/igddesc.xml"
|
||||||
},
|
},
|
||||||
"options": {},
|
"options": {},
|
||||||
"pref_disable_new_entities": false,
|
"pref_disable_new_entities": false,
|
||||||
|
@ -84,7 +89,7 @@
|
||||||
"pref_disable_polling": false,
|
"pref_disable_polling": false,
|
||||||
"source": "user",
|
"source": "user",
|
||||||
"unique_id": null,
|
"unique_id": null,
|
||||||
"disabled_by": null
|
"disabled_by": "user"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entry_id": "e1101f79ce9b41a28359a95f85e57b63",
|
"entry_id": "e1101f79ce9b41a28359a95f85e57b63",
|
||||||
|
@ -166,14 +171,12 @@
|
||||||
"light.kinderzimmer_deckenlampe",
|
"light.kinderzimmer_deckenlampe",
|
||||||
"cover.kinderzimmer_rollo"
|
"cover.kinderzimmer_rollo"
|
||||||
],
|
],
|
||||||
"include_entity_globs": [],
|
"exclude_domains": [],
|
||||||
"exclude_entity_globs": [],
|
|
||||||
"exclude_entities": [],
|
"exclude_entities": [],
|
||||||
"include_domains": [],
|
"include_domains": [],
|
||||||
"exclude_domains": []
|
"exclude_entity_globs": [],
|
||||||
|
"include_entity_globs": []
|
||||||
},
|
},
|
||||||
"auto_start": true,
|
|
||||||
"safe_mode": false,
|
|
||||||
"entity_config": {},
|
"entity_config": {},
|
||||||
"mode": "bridge"
|
"mode": "bridge"
|
||||||
},
|
},
|
||||||
|
@ -319,12 +322,13 @@
|
||||||
"title": "MartinHandyP30",
|
"title": "MartinHandyP30",
|
||||||
"data": {
|
"data": {
|
||||||
"app_data": {
|
"app_data": {
|
||||||
|
"push_websocket_channel": true,
|
||||||
"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"
|
"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": "2021.9.0-full (723)",
|
"app_version": "2022.6.0-full (2398)",
|
||||||
"device_id": "3889c45a8d9e2c62",
|
"device_id": "3889c45a8d9e2c62",
|
||||||
"device_name": "MartinHandy",
|
"device_name": "MartinHandy",
|
||||||
"manufacturer": "HUAWEI",
|
"manufacturer": "HUAWEI",
|
||||||
|
@ -346,15 +350,15 @@
|
||||||
"entry_id": "c41bc99e068311eb93f751000202d9b1",
|
"entry_id": "c41bc99e068311eb93f751000202d9b1",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"domain": "mobile_app",
|
"domain": "mobile_app",
|
||||||
"title": "Martin\u2019s iPad",
|
"title": "Martin’s iPad",
|
||||||
"data": {
|
"data": {
|
||||||
"device_id": "8191AC71-330B-4784-8634-E6F4F0C2DFA2",
|
"device_id": "8191AC71-330B-4784-8634-E6F4F0C2DFA2",
|
||||||
"app_version": "2021.8 (2021.216)",
|
"app_version": "2022.8 (2022.387)",
|
||||||
"app_name": "Home Assistant",
|
"app_name": "Home Assistant",
|
||||||
"manufacturer": "Apple",
|
"manufacturer": "Apple",
|
||||||
"os_version": "15.0.1",
|
"os_version": "15.6.1",
|
||||||
"supports_encryption": true,
|
"supports_encryption": true,
|
||||||
"device_name": "Martin\u2019s iPad",
|
"device_name": "Martin’s iPad",
|
||||||
"os_name": "iOS",
|
"os_name": "iOS",
|
||||||
"app_id": "io.robbie.HomeAssistant",
|
"app_id": "io.robbie.HomeAssistant",
|
||||||
"model": "iPad7,4",
|
"model": "iPad7,4",
|
||||||
|
@ -364,7 +368,8 @@
|
||||||
},
|
},
|
||||||
"webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a",
|
"webhook_id": "2c1e087aa21f2de29ea717b0af4d5de61621ba42229d570cb93181e61c6dc72a",
|
||||||
"secret": "923e6bce56d69c3bff64277187aaeb439ed0eb2c65ff7e4df39e6809504cf3b4",
|
"secret": "923e6bce56d69c3bff64277187aaeb439ed0eb2c65ff7e4df39e6809504cf3b4",
|
||||||
"user_id": "2ffcb10d3db745b396789364fdef72ec"
|
"user_id": "2ffcb10d3db745b396789364fdef72ec",
|
||||||
|
"no_legacy_encryption": true
|
||||||
},
|
},
|
||||||
"options": {},
|
"options": {},
|
||||||
"pref_disable_new_entities": false,
|
"pref_disable_new_entities": false,
|
||||||
|
@ -373,25 +378,6 @@
|
||||||
"unique_id": "io.robbie.HomeAssistant-8191AC71-330B-4784-8634-E6F4F0C2DFA2",
|
"unique_id": "io.robbie.HomeAssistant-8191AC71-330B-4784-8634-E6F4F0C2DFA2",
|
||||||
"disabled_by": null
|
"disabled_by": null
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"entry_id": "d5687ad08f79a196f2d84f98062ce060",
|
|
||||||
"version": 1,
|
|
||||||
"domain": "xiaomi_miio",
|
|
||||||
"title": "Xiaomi Vacuum cleaner",
|
|
||||||
"data": {
|
|
||||||
"config_flow_device": "device",
|
|
||||||
"host": "vacuum.fritz.box",
|
|
||||||
"token": "484e676f586b36656a5a54704a327a59",
|
|
||||||
"model": "roborock.vacuum.s5",
|
|
||||||
"mac": "04:cf:8c:f9:2d:14"
|
|
||||||
},
|
|
||||||
"options": {},
|
|
||||||
"pref_disable_new_entities": false,
|
|
||||||
"pref_disable_polling": false,
|
|
||||||
"source": "import",
|
|
||||||
"unique_id": "04:cf:8c:f9:2d:14",
|
|
||||||
"disabled_by": null
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"entry_id": "5d920f4309e77398f77a9b8f06bef68e",
|
"entry_id": "5d920f4309e77398f77a9b8f06bef68e",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
@ -413,12 +399,12 @@
|
||||||
"data": {
|
"data": {
|
||||||
"auth_implementation": "ondilo_ico",
|
"auth_implementation": "ondilo_ico",
|
||||||
"token": {
|
"token": {
|
||||||
"access_token": "1e8753be555d598b59586c81ed04111911baf060",
|
"access_token": "56b224096f3e9c7ff977cc5816222772dca34af9",
|
||||||
"expires_in": 3600,
|
"expires_in": 3600,
|
||||||
"token_type": "Bearer",
|
"token_type": "Bearer",
|
||||||
"scope": "api",
|
"scope": "api",
|
||||||
"refresh_token": "f62890374741a79a967502decf42a71f7428a5d2",
|
"refresh_token": "f62890374741a79a967502decf42a71f7428a5d2",
|
||||||
"expires_at": 1633435013.2333195
|
"expires_at": 1661718835.2114637
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"options": {},
|
"options": {},
|
||||||
|
@ -661,7 +647,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"allow_all_imports": true,
|
"allow_all_imports": true,
|
||||||
"hass_is_global": true,
|
"hass_is_global": true,
|
||||||
"apps": "ir_remote_kitchenpi ir_remote_oben ir_remote_schlafzimmer herd knx_buttons licht_schlafzimmer licht_gang_bogen licht_wc"
|
"apps": "bad_luefter ir_remote_kitchenpi ir_remote_oben ir_remote_schlafzimmer herd knx_buttons licht_schlafzimmer licht_gang_bogen licht_wc"
|
||||||
},
|
},
|
||||||
"options": {},
|
"options": {},
|
||||||
"pref_disable_new_entities": false,
|
"pref_disable_new_entities": false,
|
||||||
|
@ -669,6 +655,308 @@
|
||||||
"source": "user",
|
"source": "user",
|
||||||
"unique_id": "pyscript",
|
"unique_id": "pyscript",
|
||||||
"disabled_by": null
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "68dac67fca42e3b520f58b928904557d",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "mobile_app",
|
||||||
|
"title": "HandyRebecca",
|
||||||
|
"data": {
|
||||||
|
"app_id": "io.homeassistant.companion.android",
|
||||||
|
"app_name": "Home Assistant",
|
||||||
|
"app_version": "2021.10.0-full (761)",
|
||||||
|
"device_name": "HandyRebecca",
|
||||||
|
"manufacturer": "HUAWEI",
|
||||||
|
"model": "VTR-L29",
|
||||||
|
"os_name": "Android",
|
||||||
|
"os_version": "28",
|
||||||
|
"supports_encryption": false,
|
||||||
|
"app_data": {
|
||||||
|
"push_url": "https://mobile-apps.home-assistant.io/api/sendPush/android/v1",
|
||||||
|
"push_token": "f7daqutLSZqFEUqQUrN434:APA91bGZpsNoeTPB5racwHMFkKfiqj0KdQIBu-ZyfF5Xn_RQZNxRW-eREnSUsR4w7Ds8fj7wzWQofLMWzxgDw9gMq_SQiMd9OmvYmlEvyfbuMQJtnt8FQlAoSyRkWS2qquBM1Cl5D0aX"
|
||||||
|
},
|
||||||
|
"device_id": "83979e8c7b4d63c9",
|
||||||
|
"webhook_id": "3d073a453d690c5b9d839b39059b8bee4b83915c3bb0f1ed9c97b60615f6bcee",
|
||||||
|
"user_id": "bd0f10a32b324e85998881cb5b748d0f"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "registration",
|
||||||
|
"unique_id": "io.homeassistant.companion.android-83979e8c7b4d63c9",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "1157109c70e265697c8485bd021b4ef7",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "mobile_app",
|
||||||
|
"title": "rebeccahandyP10",
|
||||||
|
"data": {
|
||||||
|
"app_id": "io.homeassistant.companion.android",
|
||||||
|
"app_name": "Home Assistant",
|
||||||
|
"app_version": "2022.3.0-full (2164)",
|
||||||
|
"device_name": "rebeccahandyP10",
|
||||||
|
"manufacturer": "HUAWEI",
|
||||||
|
"model": "VTR-L09",
|
||||||
|
"os_name": "Android",
|
||||||
|
"os_version": "28",
|
||||||
|
"supports_encryption": false,
|
||||||
|
"app_data": {
|
||||||
|
"push_websocket_channel": true,
|
||||||
|
"push_url": "https://mobile-apps.home-assistant.io/api/sendPush/android/v1",
|
||||||
|
"push_token": "fcSoa8coRh2HJnUZ7GREwy:APA91bFQn37UopTFO6iRriVjjvjK22Hl6spsYW0zhI-qaK1eVo4LLBzxvUoWzoAehbCkVF_7Q76vLzxBD3PSQEdkRc_v8Ym8YoDecKSOc80HG1M1U6CYdhm7xlBg9EzrNjNVD-s2nPU0"
|
||||||
|
},
|
||||||
|
"device_id": "733ffd986b7cf20c",
|
||||||
|
"webhook_id": "6ac83c5eb5688a11675c22ffa8ab8e86f9bae9289dd935da897c98fbb195ee5e",
|
||||||
|
"user_id": "bd0f10a32b324e85998881cb5b748d0f"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "registration",
|
||||||
|
"unique_id": "io.homeassistant.companion.android-733ffd986b7cf20c",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "4830ccb844609ea7b35926a816864705",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "tasmota",
|
||||||
|
"title": "Tasmota",
|
||||||
|
"data": {
|
||||||
|
"discovery_prefix": "tasmota/discovery"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "mqtt",
|
||||||
|
"unique_id": "tasmota",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "7eabb28baad4fb90a58994ed508af867",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "dlna_dmr",
|
||||||
|
"title": "[TV]UE32ES5700",
|
||||||
|
"data": {},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "ignore",
|
||||||
|
"unique_id": "uuid:0d1cef01-00dc-1000-94a2-c4731e320fc6",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "b372f6dd997ac90c32c904052af4ab9e",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "dlna_dmr",
|
||||||
|
"title": "VIERA E30 Series",
|
||||||
|
"data": {
|
||||||
|
"url": "http://192.168.178.103:55000/dmr/ddd.xml"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "ignore",
|
||||||
|
"unique_id": "uuid:4D454930-0100-1000-8001-04209A35F601",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "100d58ea4abe89dd019b9e1894d38402",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "octoprint",
|
||||||
|
"title": "192.168.178.134",
|
||||||
|
"data": {
|
||||||
|
"username": "martin",
|
||||||
|
"host": "192.168.178.134",
|
||||||
|
"port": 80,
|
||||||
|
"path": "/",
|
||||||
|
"ssl": false,
|
||||||
|
"api_key": "42C1C71877E04292BFD636E020DA9B6E",
|
||||||
|
"verify_ssl": true
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "zeroconf",
|
||||||
|
"unique_id": "de90f088-68ce-4563-8110-e97ba956bc34",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "6cc9d82efad072e33506e3fd32d5c456",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "knx",
|
||||||
|
"title": "Tunneling @ 192.168.178.65",
|
||||||
|
"data": {
|
||||||
|
"state_updater": true,
|
||||||
|
"rate_limit": 20,
|
||||||
|
"individual_address": "15.15.250",
|
||||||
|
"multicast_group": "224.0.23.12",
|
||||||
|
"multicast_port": 3671,
|
||||||
|
"host": "192.168.178.65",
|
||||||
|
"port": 3671,
|
||||||
|
"local_ip": null,
|
||||||
|
"route_back": false,
|
||||||
|
"connection_type": "tunneling"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "import",
|
||||||
|
"unique_id": null,
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "221428ba9e0f0d5b3240bd2162be99f4",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "zwave_js",
|
||||||
|
"title": "Z-Wave JS",
|
||||||
|
"data": {
|
||||||
|
"url": "ws://core-zwave-js:3000",
|
||||||
|
"usb_path": "/dev/serial/by-id/usb-0658_0200-if00",
|
||||||
|
"s0_legacy_key": "2C9F874C34673C796DEF53EBB588E88D",
|
||||||
|
"s2_access_control_key": "382392B2D342CA84EA67115CAE77EB11",
|
||||||
|
"s2_authenticated_key": "48EC46EAB7CE57061F161B95E0783F1B",
|
||||||
|
"s2_unauthenticated_key": "FA1F53A264806AD260D964C4E1AEF924",
|
||||||
|
"use_addon": true,
|
||||||
|
"integration_created_addon": false
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "usb",
|
||||||
|
"unique_id": "4231470061",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "7c5dfbab8e35dceb22447cabf1021451",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "dlna_dms",
|
||||||
|
"title": "MartinUndRebeccasServer",
|
||||||
|
"data": {
|
||||||
|
"url": "http://192.168.178.80:8200/rootDesc.xml"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "ignore",
|
||||||
|
"unique_id": "uuid:4d696e69-444c-164e-9d41-0001c00caf87::urn:schemas-upnp-org:device:MediaServer:1",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "95743dccec403bb3a97ecdb19e8657e3",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "dlna_dms",
|
||||||
|
"title": "MedienServer",
|
||||||
|
"data": {
|
||||||
|
"url": "http://192.168.178.1:49000/MediaServerDevDesc.xml",
|
||||||
|
"device_id": "uuid:fa095ecc-e13e-40e7-8e6c-3431c416294a::urn:schemas-upnp-org:device:MediaServer:1"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "ssdp",
|
||||||
|
"unique_id": "uuid:fa095ecc-e13e-40e7-8e6c-3431c416294a::urn:schemas-upnp-org:device:MediaServer:1",
|
||||||
|
"disabled_by": "user"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "21bd00d5cf8b8af55a9e1598aa1081da",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "apple_tv",
|
||||||
|
"title": "Zoom-MBR32 (Apple TV 3)",
|
||||||
|
"data": {
|
||||||
|
"address": "192.168.178.99"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "ignore",
|
||||||
|
"unique_id": "02:05:85:7F:EB:80",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "bb1c03069ffe5adc68e1c6ba9411b1ac",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "mobile_app",
|
||||||
|
"title": "rebeccaHandySamsung",
|
||||||
|
"data": {
|
||||||
|
"app_id": "io.homeassistant.companion.android",
|
||||||
|
"app_name": "Home Assistant",
|
||||||
|
"app_version": "2022.6.0-full (2398)",
|
||||||
|
"device_name": "rebeccaHandySamsung",
|
||||||
|
"manufacturer": "samsung",
|
||||||
|
"model": "SM-A528B",
|
||||||
|
"os_name": "Android",
|
||||||
|
"os_version": "31",
|
||||||
|
"supports_encryption": false,
|
||||||
|
"app_data": {
|
||||||
|
"push_websocket_channel": true,
|
||||||
|
"push_url": "https://mobile-apps.home-assistant.io/api/sendPush/android/v1",
|
||||||
|
"push_token": "d-q78MAnRemXJeTbXpzLjZ:APA91bHCzxH_wR-ozW0Ih5MUFmJ17u0R6MCSPoATMVA_6mzrJLJAWDbdVQI8qA3JgySUMEoP2PdtgE1xiLXKCMmbLRa9UFDbvnFF-wkHewCfRiy3_gmLlBgMFczZ1BKLOSK1QztxxSzX"
|
||||||
|
},
|
||||||
|
"device_id": "80efeec78207e1d5",
|
||||||
|
"webhook_id": "45dccd41b61bc14f6404403a92fdfb30d255d2cf690da417aab4bc8004600837",
|
||||||
|
"user_id": "bd0f10a32b324e85998881cb5b748d0f"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "registration",
|
||||||
|
"unique_id": "io.homeassistant.companion.android-80efeec78207e1d5",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "ac86e47d17add433f0cedd3f6bc02d41",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "sun",
|
||||||
|
"title": "Sun",
|
||||||
|
"data": {},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "import",
|
||||||
|
"unique_id": null,
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "e8d393e7209027e19dc79d238d4296b8",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "google_assistant",
|
||||||
|
"title": "homeassistant-d3afc",
|
||||||
|
"data": {
|
||||||
|
"project_id": "homeassistant-d3afc"
|
||||||
|
},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "import",
|
||||||
|
"unique_id": "homeassistant-d3afc",
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "2173ab6aa2063de5460e0122250ae87d",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "bluetooth",
|
||||||
|
"title": "Bluetooth",
|
||||||
|
"data": {},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "integration_discovery",
|
||||||
|
"unique_id": null,
|
||||||
|
"disabled_by": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entry_id": "616e070fbd30cd97be16e758cd420268",
|
||||||
|
"version": 1,
|
||||||
|
"domain": "upnp",
|
||||||
|
"title": "InternetGatewayDeviceV2 - FRITZ!Box 7490",
|
||||||
|
"data": {},
|
||||||
|
"options": {},
|
||||||
|
"pref_disable_new_entities": false,
|
||||||
|
"pref_disable_polling": false,
|
||||||
|
"source": "ignore",
|
||||||
|
"unique_id": "uuid:75802409-bccb-40e7-9f6c-3431C416294A::urn:schemas-upnp-org:device:InternetGatewayDevice:2",
|
||||||
|
"disabled_by": null
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "frontend.user_data_2ffcb10d3db745b396789364fdef72ec",
|
"key": "frontend.user_data_2ffcb10d3db745b396789364fdef72ec",
|
||||||
"data": {
|
"data": {
|
||||||
"core": {
|
"core": {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "frontend.user_data_bd0f10a32b324e85998881cb5b748d0f",
|
"key": "frontend.user_data_bd0f10a32b324e85998881cb5b748d0f",
|
||||||
"data": {
|
"data": {
|
||||||
"core": {
|
"core": {
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "google_assistant",
|
"key": "google_assistant",
|
||||||
"data": {
|
"data": {
|
||||||
"agent_user_ids": {
|
"agent_user_ids": {
|
||||||
"2ffcb10d3db745b396789364fdef72ec": {}
|
"2ffcb10d3db745b396789364fdef72ec": {
|
||||||
|
"local_webhook_id": "7f9f90ea0609767552e3c86e6b4629b30ccf378e57084c5d3a3d461c909102f5"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,20 +1,67 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs.hacs",
|
"key": "hacs.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"view": "Grid",
|
|
||||||
"compact": false,
|
|
||||||
"onboarding_done": false,
|
|
||||||
"archived_repositories": [
|
"archived_repositories": [
|
||||||
"atomic7777/atomic_calendar",
|
|
||||||
"atomic7777/atomic_calendar",
|
"atomic7777/atomic_calendar",
|
||||||
"mampfes/hacs_wiffi",
|
"mampfes/hacs_wiffi",
|
||||||
"PTST/O365-HomeAssistant"
|
"PTST/O365-HomeAssistant",
|
||||||
|
"pilotak/homeassistant-mikrotik",
|
||||||
|
"estevez-dev/extended-banner-card",
|
||||||
|
"custom-components/custom_components",
|
||||||
|
"custom-components/sensor.custom_components",
|
||||||
|
"Michsior14/ha-laser-egg",
|
||||||
|
"custom-components/sensor.tautulli",
|
||||||
|
"ppanagiotis/pymusiccast",
|
||||||
|
"Kraineff/philips-airpurifier",
|
||||||
|
"jensweimann/awb",
|
||||||
|
"briis/smartweather",
|
||||||
|
"KoljaWindeler/kaco",
|
||||||
|
"dr1rrb/ha-twinkly",
|
||||||
|
"heinoldenhuis/home_assistant_omnik_solar",
|
||||||
|
"DSorlov/hasl-platform",
|
||||||
|
"iantrich/aftership-card",
|
||||||
|
"nagyrobi/home-assistant-custom-components-pfsense-gateways",
|
||||||
|
"pippyn/Home-Assistant-Sensor-Groningen-Afvalwijzer",
|
||||||
|
"maykar/kiosk-mode",
|
||||||
|
"custom-cards/upcoming-media-card",
|
||||||
|
"maykar/lovelace-swipe-navigation",
|
||||||
|
"custom-components/sensor.plex_recently_added",
|
||||||
|
"custom-components/sensor.sonarr_upcoming_media",
|
||||||
|
"custom-components/sensor.radarr_upcoming_media",
|
||||||
|
"maykar/plex_assistant",
|
||||||
|
"custom-components/wienerlinien",
|
||||||
|
"GeorgeSG/lovelace-folder-card",
|
||||||
|
"KTibow/lovelace-dark-soft-ui-theme",
|
||||||
|
"KTibow/lovelace-light-soft-ui-theme",
|
||||||
|
"DCSBL/ha-homewizard-energy",
|
||||||
|
"eavanvalkenburg/sia",
|
||||||
|
"Cyr-ius/hass-hue-service-advanced",
|
||||||
|
"Cyr-ius/hass-cozytouch",
|
||||||
|
"georgezhao2010/climate_ewelink",
|
||||||
|
"custom-components/sensor.custom_aftership"
|
||||||
],
|
],
|
||||||
"renamed_repositories": {
|
"renamed_repositories": {
|
||||||
"xMrVizzy/Minecraft-Version": "kraineff/minecraft-version",
|
"xMrVizzy/Minecraft-Version": "kraineff/minecraft-version",
|
||||||
"xMrVizzy/Philips-AirPurifier": "kraineff/philips-airpurifier",
|
"xMrVizzy/Philips-AirPurifier": "kraineff/philips-airpurifier",
|
||||||
"scottyphillips/mitsubishi_hass": "scottyphillips/echonetlite_homeassistant"
|
"scottyphillips/mitsubishi_hass": "scottyphillips/echonetlite_homeassistant",
|
||||||
}
|
"idittansikte/bootstrap-grid-card": "ownbee/bootstrap-grid-card",
|
||||||
|
"marksie1988/atomic-calendar-revive": "totaldebug/atomic-calendar-revive",
|
||||||
|
"PepegaBruh/CryptoTracker": "BigNocciolino/CryptoTracker",
|
||||||
|
"custom-components/blueprint": "custom-components/integration_blueprint",
|
||||||
|
"9a4gl/hass-peltec": "9a4gl/hass-centrometal-boiler",
|
||||||
|
"78wesley/Darkish-Theme": "78wesley/Home-Assistant-Darkish-Theme",
|
||||||
|
"KartoffelToby/ai_thermostat": "KartoffelToby/better_thermostat",
|
||||||
|
"nbogojevic/homeassistant-midea-dehumidifier-lan": "nbogojevic/homeassistant-midea-air-appliances-lan",
|
||||||
|
"nikrolls/homeassistant-goldair-climate": "nicole-ashley/homeassistant-goldair-climate",
|
||||||
|
"ulic75/power-distribution-card": "ulic75/power-flow-card",
|
||||||
|
"wills106/homsassistant-solax-modbus": "wills106/homeassistant-solax-modbus",
|
||||||
|
"dmitry-k/yandex_smart_home": "dext0r/yandex_smart_home",
|
||||||
|
"uvjustin/alarmdotcom": "pyalarmdotcom/alarmdotcom",
|
||||||
|
"wernerhp/ha_integration_load_shedding": "wernerhp/ha.integration.load_shedding",
|
||||||
|
"TheLastProject/lovelace-valetudo-map-card": "Hypfer/lovelace-valetudo-map-card"
|
||||||
|
},
|
||||||
|
"ignored_repositories": []
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs/144899700.hacs",
|
"key": "hacs/144899700.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"archived": false,
|
"archived": false,
|
||||||
|
@ -13,9 +14,9 @@
|
||||||
"domain": "",
|
"domain": "",
|
||||||
"domains": [],
|
"domains": [],
|
||||||
"downloads": 0,
|
"downloads": 0,
|
||||||
"etag_repository": "W/\"342e0bde964bee684ad6a005abf2196c8b89b3c55ce9d6059659c29d33f84571\"",
|
"etag_repository": "W/\"dcee04e155a6f214619452084692a69a604122200203c448889608db87867fa8\"",
|
||||||
"file_name": "slider-entity-row.js",
|
"file_name": "slider-entity-row.js",
|
||||||
"filename": "",
|
"filename": null,
|
||||||
"first_install": false,
|
"first_install": false,
|
||||||
"fork": false,
|
"fork": false,
|
||||||
"full_name": "thomasloven/lovelace-slider-entity-row",
|
"full_name": "thomasloven/lovelace-slider-entity-row",
|
||||||
|
@ -26,28 +27,28 @@
|
||||||
"id": "144899700",
|
"id": "144899700",
|
||||||
"iot_class": null,
|
"iot_class": null,
|
||||||
"installed": true,
|
"installed": true,
|
||||||
"installed_commit": "99126b3",
|
"installed_commit": "3587bef",
|
||||||
"installed_version": "17.1.0",
|
"installed_version": "17.2.1",
|
||||||
"open_issues": 26,
|
"open_issues": 27,
|
||||||
"last_commit": "c227e5a",
|
"last_commit": "c84a0ad",
|
||||||
"last_version": "17.1.0",
|
"last_version": "17.2.1",
|
||||||
"last_updated": "2021-08-13T00:34:38Z",
|
"last_updated": "2022-08-13T19:01:37Z",
|
||||||
"manifest_name": null,
|
"manifest_name": null,
|
||||||
"new": false,
|
"new": false,
|
||||||
"persistent_directory": null,
|
"persistent_directory": null,
|
||||||
"pushed_at": "2021-08-13T00:34:38",
|
"pushed_at": "2022-08-13T19:01:37",
|
||||||
"releases": true,
|
"releases": true,
|
||||||
"render_readme": true,
|
"render_readme": true,
|
||||||
"published_tags": [
|
"published_tags": [
|
||||||
|
"17.2.1",
|
||||||
|
"17.2.0",
|
||||||
"17.1.0",
|
"17.1.0",
|
||||||
"17.0.1",
|
"17.0.1",
|
||||||
"17.0.0",
|
"17.0.0"
|
||||||
"16",
|
|
||||||
"15"
|
|
||||||
],
|
],
|
||||||
"selected_tag": null,
|
"selected_tag": null,
|
||||||
"show_beta": false,
|
"show_beta": false,
|
||||||
"stargazers_count": 501,
|
"stargazers_count": 648,
|
||||||
"topics": [],
|
"topics": [],
|
||||||
"zip_release": false
|
"zip_release": false
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs/172733314.hacs",
|
"key": "hacs/172733314.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"archived": false,
|
"archived": false,
|
||||||
|
@ -14,8 +15,8 @@
|
||||||
"description": "HACS gives you a powerful UI to handle downloads of all your custom needs.",
|
"description": "HACS gives you a powerful UI to handle downloads of all your custom needs.",
|
||||||
"domain": "hacs",
|
"domain": "hacs",
|
||||||
"domains": [],
|
"domains": [],
|
||||||
"downloads": 34817,
|
"downloads": 7257,
|
||||||
"etag_repository": "W/\"379595670a046ed8414f2a3a3fcf1547bfbac2dc64d78ead9f24630c16cb80ee\"",
|
"etag_repository": "W/\"711c9f5308bfaed56466dbb84dc11ce170e3abaf8bed0ee5cb0b4c189afc1f1c\"",
|
||||||
"file_name": "",
|
"file_name": "",
|
||||||
"filename": "hacs.zip",
|
"filename": "hacs.zip",
|
||||||
"first_install": false,
|
"first_install": false,
|
||||||
|
@ -24,32 +25,32 @@
|
||||||
"hacs": "0.19.0",
|
"hacs": "0.19.0",
|
||||||
"hide": false,
|
"hide": false,
|
||||||
"hide_default_branch": true,
|
"hide_default_branch": true,
|
||||||
"homeassistant": "2021.2.0",
|
"homeassistant": "2022.8.0",
|
||||||
"id": "172733314",
|
"id": "172733314",
|
||||||
"iot_class": null,
|
"iot_class": null,
|
||||||
"installed": true,
|
"installed": true,
|
||||||
"installed_commit": "b4ae25f",
|
"installed_commit": "8fa59ee",
|
||||||
"installed_version": "1.15.2",
|
"installed_version": "1.27.0",
|
||||||
"open_issues": 6,
|
"open_issues": 0,
|
||||||
"last_commit": "b4ae25f",
|
"last_commit": "8fa59ee",
|
||||||
"last_version": "1.15.2",
|
"last_version": "1.27.1",
|
||||||
"last_updated": "2021-09-19T01:33:31Z",
|
"last_updated": "2022-08-28T08:21:31Z",
|
||||||
"manifest_name": "HACS",
|
"manifest_name": "HACS",
|
||||||
"new": false,
|
"new": false,
|
||||||
"persistent_directory": null,
|
"persistent_directory": null,
|
||||||
"pushed_at": "2021-09-19T01:33:31",
|
"pushed_at": "2022-08-28T08:21:31",
|
||||||
"releases": true,
|
"releases": true,
|
||||||
"render_readme": false,
|
"render_readme": false,
|
||||||
"published_tags": [
|
"published_tags": [
|
||||||
"1.15.2",
|
"1.27.1",
|
||||||
"1.15.1",
|
"1.27.0",
|
||||||
"1.15.0",
|
"1.26.2",
|
||||||
"1.14.1",
|
"1.26.1",
|
||||||
"1.14.0"
|
"1.26.0"
|
||||||
],
|
],
|
||||||
"selected_tag": null,
|
"selected_tag": "1.27.0",
|
||||||
"show_beta": false,
|
"show_beta": false,
|
||||||
"stargazers_count": 1913,
|
"stargazers_count": 2860,
|
||||||
"topics": [
|
"topics": [
|
||||||
"community",
|
"community",
|
||||||
"hacktoberfest",
|
"hacktoberfest",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs/215327195.hacs",
|
"key": "hacs/215327195.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"archived": false,
|
"archived": false,
|
||||||
|
@ -9,13 +10,13 @@
|
||||||
"country": [],
|
"country": [],
|
||||||
"config_flow": false,
|
"config_flow": false,
|
||||||
"default_branch": "master",
|
"default_branch": "master",
|
||||||
"description": "\ud83d\udca1 A Lovelace custom card for RGB lights",
|
"description": "💡 A Lovelace custom card for RGB lights",
|
||||||
"domain": "",
|
"domain": "",
|
||||||
"domains": [
|
"domains": [
|
||||||
"light"
|
"light"
|
||||||
],
|
],
|
||||||
"downloads": 11082,
|
"downloads": 12380,
|
||||||
"etag_repository": "W/\"f9d6a68e2ff6e1221e937b06ad04632a8722eeb6d8f68274fb25e991e617131d\"",
|
"etag_repository": "W/\"b5f74cfb36458239d165665039ad8868468ef47299c90d6095e79f2e48ecc5e2\"",
|
||||||
"file_name": "card.js",
|
"file_name": "card.js",
|
||||||
"filename": "card.js",
|
"filename": "card.js",
|
||||||
"first_install": false,
|
"first_install": false,
|
||||||
|
@ -28,29 +29,30 @@
|
||||||
"id": "215327195",
|
"id": "215327195",
|
||||||
"iot_class": null,
|
"iot_class": null,
|
||||||
"installed": true,
|
"installed": true,
|
||||||
"installed_commit": "8390d2e",
|
"installed_commit": "abb7c78",
|
||||||
"installed_version": "1.9.0",
|
"installed_version": "1.11.0",
|
||||||
"open_issues": 7,
|
"open_issues": 6,
|
||||||
"last_commit": "8390d2e",
|
"last_commit": "abb7c78",
|
||||||
"last_version": "1.9.0",
|
"last_version": "1.11.0",
|
||||||
"last_updated": "2021-07-07T08:49:28Z",
|
"last_updated": "2022-07-02T09:17:13Z",
|
||||||
"manifest_name": null,
|
"manifest_name": null,
|
||||||
"new": false,
|
"new": false,
|
||||||
"persistent_directory": null,
|
"persistent_directory": null,
|
||||||
"pushed_at": "2021-07-07T08:49:28",
|
"pushed_at": "2022-07-02T09:17:13",
|
||||||
"releases": true,
|
"releases": true,
|
||||||
"render_readme": true,
|
"render_readme": true,
|
||||||
"published_tags": [
|
"published_tags": [
|
||||||
|
"1.11.0",
|
||||||
|
"1.10.0",
|
||||||
"1.9.0",
|
"1.9.0",
|
||||||
"1.8.0",
|
"1.8.0",
|
||||||
"1.7.1",
|
"1.7.1"
|
||||||
"1.6.0",
|
|
||||||
"1.5.0"
|
|
||||||
],
|
],
|
||||||
"selected_tag": null,
|
"selected_tag": null,
|
||||||
"show_beta": false,
|
"show_beta": false,
|
||||||
"stargazers_count": 228,
|
"stargazers_count": 311,
|
||||||
"topics": [
|
"topics": [
|
||||||
|
"hacktoberfest",
|
||||||
"home-assistant",
|
"home-assistant",
|
||||||
"lovelace",
|
"lovelace",
|
||||||
"lovelace-custom-card",
|
"lovelace-custom-card",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs/222422187.hacs",
|
"key": "hacs/222422187.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"archived": false,
|
"archived": false,
|
||||||
|
@ -13,9 +14,9 @@
|
||||||
"domain": "",
|
"domain": "",
|
||||||
"domains": [],
|
"domains": [],
|
||||||
"downloads": 0,
|
"downloads": 0,
|
||||||
"etag_repository": "W/\"16ee27999cb17285ad3ea04a235626d26d0f218fe81f5cce0d9e6218eaff6ece\"",
|
"etag_repository": "W/\"cecf357175700b3cc1db9c4389607d4d10ef7369436b93d42529460c5e1dd05c\"",
|
||||||
"file_name": "ios-dark-mode.yaml",
|
"file_name": "ios-dark-mode.yaml",
|
||||||
"filename": "",
|
"filename": null,
|
||||||
"first_install": false,
|
"first_install": false,
|
||||||
"fork": false,
|
"fork": false,
|
||||||
"full_name": "basnijholt/lovelace-ios-dark-mode-theme",
|
"full_name": "basnijholt/lovelace-ios-dark-mode-theme",
|
||||||
|
@ -26,22 +27,22 @@
|
||||||
"id": "222422187",
|
"id": "222422187",
|
||||||
"iot_class": null,
|
"iot_class": null,
|
||||||
"installed": true,
|
"installed": true,
|
||||||
"installed_commit": "555c937",
|
"installed_commit": "9c012f7",
|
||||||
"installed_version": null,
|
"installed_version": null,
|
||||||
"open_issues": 22,
|
"open_issues": 29,
|
||||||
"last_commit": "555c937",
|
"last_commit": "9c012f7",
|
||||||
"last_version": null,
|
"last_version": null,
|
||||||
"last_updated": "2021-07-06T10:58:37Z",
|
"last_updated": "2022-05-27T18:41:09Z",
|
||||||
"manifest_name": null,
|
"manifest_name": null,
|
||||||
"new": false,
|
"new": false,
|
||||||
"persistent_directory": null,
|
"persistent_directory": null,
|
||||||
"pushed_at": "2021-07-06T10:58:37",
|
"pushed_at": "2022-05-27T18:41:09",
|
||||||
"releases": false,
|
"releases": false,
|
||||||
"render_readme": true,
|
"render_readme": true,
|
||||||
"published_tags": [],
|
"published_tags": [],
|
||||||
"selected_tag": null,
|
"selected_tag": null,
|
||||||
"show_beta": false,
|
"show_beta": false,
|
||||||
"stargazers_count": 324,
|
"stargazers_count": 375,
|
||||||
"topics": [
|
"topics": [
|
||||||
"dark-mode",
|
"dark-mode",
|
||||||
"darkmode",
|
"darkmode",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs/231674882.hacs",
|
"key": "hacs/231674882.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"archived": false,
|
"archived": false,
|
||||||
|
@ -13,9 +14,9 @@
|
||||||
"domain": "",
|
"domain": "",
|
||||||
"domains": [],
|
"domains": [],
|
||||||
"downloads": 0,
|
"downloads": 0,
|
||||||
"etag_repository": "W/\"88f3462e324504ca32d5316d7b4ad0db14bf7c5cab7fd03b4eb1af815efd0015\"",
|
"etag_repository": "W/\"d9e5ddb563c27cbe6f0cc04e78ed92c7517cd7e1f3c872746eb5bfad4fa3ef87\"",
|
||||||
"file_name": "template-entity-row.js",
|
"file_name": "template-entity-row.js",
|
||||||
"filename": "",
|
"filename": null,
|
||||||
"first_install": false,
|
"first_install": false,
|
||||||
"fork": false,
|
"fork": false,
|
||||||
"full_name": "thomasloven/lovelace-template-entity-row",
|
"full_name": "thomasloven/lovelace-template-entity-row",
|
||||||
|
@ -28,14 +29,14 @@
|
||||||
"installed": true,
|
"installed": true,
|
||||||
"installed_commit": "3c7d493",
|
"installed_commit": "3c7d493",
|
||||||
"installed_version": "1.3.0",
|
"installed_version": "1.3.0",
|
||||||
"open_issues": 4,
|
"open_issues": 14,
|
||||||
"last_commit": "3c7d493",
|
"last_commit": "e3da7ba",
|
||||||
"last_version": "1.3.0",
|
"last_version": "1.3.0",
|
||||||
"last_updated": "2021-06-26T18:46:48Z",
|
"last_updated": "2022-08-24T08:27:00Z",
|
||||||
"manifest_name": null,
|
"manifest_name": null,
|
||||||
"new": false,
|
"new": false,
|
||||||
"persistent_directory": null,
|
"persistent_directory": null,
|
||||||
"pushed_at": "2021-06-26T18:46:48",
|
"pushed_at": "2022-08-24T08:27:00",
|
||||||
"releases": true,
|
"releases": true,
|
||||||
"render_readme": true,
|
"render_readme": true,
|
||||||
"published_tags": [
|
"published_tags": [
|
||||||
|
@ -47,7 +48,7 @@
|
||||||
],
|
],
|
||||||
"selected_tag": null,
|
"selected_tag": null,
|
||||||
"show_beta": false,
|
"show_beta": false,
|
||||||
"stargazers_count": 76,
|
"stargazers_count": 118,
|
||||||
"topics": [],
|
"topics": [],
|
||||||
"zip_release": false
|
"zip_release": false
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs/286186485.hacs",
|
"key": "hacs/286186485.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"archived": false,
|
"archived": false,
|
||||||
|
@ -13,13 +14,11 @@
|
||||||
"default_branch": "main",
|
"default_branch": "main",
|
||||||
"description": "Custom component for HA that enables the creation of scheduler entities",
|
"description": "Custom component for HA that enables the creation of scheduler entities",
|
||||||
"domain": "scheduler",
|
"domain": "scheduler",
|
||||||
"domains": [
|
"domains": [],
|
||||||
"switch"
|
"downloads": 173,
|
||||||
],
|
"etag_repository": "W/\"64b7c6bf6cebec946299473fb7ec1abfcdf1d3d69a65cc0dbfea133ed5b06360\"",
|
||||||
"downloads": 10,
|
|
||||||
"etag_repository": "W/\"b86deefce5d113affb12546b777cfc592f6cf10fc7c270a435310f1538cae127\"",
|
|
||||||
"file_name": "",
|
"file_name": "",
|
||||||
"filename": "",
|
"filename": null,
|
||||||
"first_install": false,
|
"first_install": false,
|
||||||
"fork": false,
|
"fork": false,
|
||||||
"full_name": "nielsfaber/scheduler-component",
|
"full_name": "nielsfaber/scheduler-component",
|
||||||
|
@ -28,32 +27,30 @@
|
||||||
"hide_default_branch": false,
|
"hide_default_branch": false,
|
||||||
"homeassistant": null,
|
"homeassistant": null,
|
||||||
"id": "286186485",
|
"id": "286186485",
|
||||||
"iot_class": [
|
"iot_class": null,
|
||||||
"Local Push"
|
|
||||||
],
|
|
||||||
"installed": true,
|
"installed": true,
|
||||||
"installed_commit": "731233c",
|
"installed_commit": "b683d53",
|
||||||
"installed_version": "v3.2.1",
|
"installed_version": "v3.2.10",
|
||||||
"open_issues": 8,
|
"open_issues": 5,
|
||||||
"last_commit": "731233c",
|
"last_commit": "b683d53",
|
||||||
"last_version": "v3.2.1",
|
"last_version": "v3.2.10",
|
||||||
"last_updated": "2021-09-12T06:58:44Z",
|
"last_updated": "2022-06-02T06:36:20Z",
|
||||||
"manifest_name": "Scheduler integration",
|
"manifest_name": "Scheduler integration",
|
||||||
"new": false,
|
"new": false,
|
||||||
"persistent_directory": null,
|
"persistent_directory": null,
|
||||||
"pushed_at": "2021-09-12T06:58:44",
|
"pushed_at": "2022-06-02T06:36:20",
|
||||||
"releases": true,
|
"releases": true,
|
||||||
"render_readme": "true",
|
"render_readme": true,
|
||||||
"published_tags": [
|
"published_tags": [
|
||||||
"v3.2.1",
|
"v3.2.10",
|
||||||
"v3.2.0",
|
"v3.2.9",
|
||||||
"v3.1.3",
|
"v3.2.8",
|
||||||
"v.3.1.2",
|
"v3.2.7",
|
||||||
"v3.1.1"
|
"v3.2.6"
|
||||||
],
|
],
|
||||||
"selected_tag": null,
|
"selected_tag": null,
|
||||||
"show_beta": false,
|
"show_beta": false,
|
||||||
"stargazers_count": 153,
|
"stargazers_count": 292,
|
||||||
"topics": [
|
"topics": [
|
||||||
"custom-component",
|
"custom-component",
|
||||||
"hacs",
|
"hacs",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "6",
|
"version": "6",
|
||||||
|
"minor_version": 1,
|
||||||
"key": "hacs/286270157.hacs",
|
"key": "hacs/286270157.hacs",
|
||||||
"data": {
|
"data": {
|
||||||
"archived": false,
|
"archived": false,
|
||||||
|
@ -12,10 +13,10 @@
|
||||||
"description": "HA Lovelace card for control of scheduler entities",
|
"description": "HA Lovelace card for control of scheduler entities",
|
||||||
"domain": "",
|
"domain": "",
|
||||||
"domains": [],
|
"domains": [],
|
||||||
"downloads": 3085,
|
"downloads": 4124,
|
||||||
"etag_repository": "W/\"2b51dcc9829014317e51aeae737ee5a6c89128a85a366d4a868728ad635c1c43\"",
|
"etag_repository": "W/\"ae9399bf823de6e5d633fc8e5c539f19b44ee94baa4d2c29a92686279538b91a\"",
|
||||||
"file_name": "scheduler-card.js",
|
"file_name": "scheduler-card.js",
|
||||||
"filename": "",
|
"filename": "scheduler-card.js",
|
||||||
"first_install": false,
|
"first_install": false,
|
||||||
"fork": false,
|
"fork": false,
|
||||||
"full_name": "nielsfaber/scheduler-card",
|
"full_name": "nielsfaber/scheduler-card",
|
||||||
|
@ -26,28 +27,28 @@
|
||||||
"id": "286270157",
|
"id": "286270157",
|
||||||
"iot_class": null,
|
"iot_class": null,
|
||||||
"installed": true,
|
"installed": true,
|
||||||
"installed_commit": "951cf22",
|
"installed_commit": "5b7d19b",
|
||||||
"installed_version": "v2.2.0",
|
"installed_version": "v2.3.6",
|
||||||
"open_issues": 10,
|
"open_issues": 9,
|
||||||
"last_commit": "951cf22",
|
"last_commit": "5b7d19b",
|
||||||
"last_version": "v2.2.0",
|
"last_version": "v2.3.6",
|
||||||
"last_updated": "2021-09-10T07:18:06Z",
|
"last_updated": "2022-08-23T19:00:00Z",
|
||||||
"manifest_name": null,
|
"manifest_name": null,
|
||||||
"new": false,
|
"new": false,
|
||||||
"persistent_directory": null,
|
"persistent_directory": null,
|
||||||
"pushed_at": "2021-09-10T07:18:06",
|
"pushed_at": "2022-08-23T19:00:00",
|
||||||
"releases": true,
|
"releases": true,
|
||||||
"render_readme": "true",
|
"render_readme": true,
|
||||||
"published_tags": [
|
"published_tags": [
|
||||||
"v2.2.0",
|
"v2.3.6",
|
||||||
"v2.1.4",
|
"v2.3.5",
|
||||||
"v2.1.3",
|
"v2.3.4",
|
||||||
"v2.1.2",
|
"v2.3.3",
|
||||||
"v2.1.1"
|
"v2.3.2"
|
||||||
],
|
],
|
||||||
"selected_tag": null,
|
"selected_tag": null,
|
||||||
"show_beta": false,
|
"show_beta": false,
|
||||||
"stargazers_count": 246,
|
"stargazers_count": 440,
|
||||||
"topics": [
|
"topics": [
|
||||||
"assistant",
|
"assistant",
|
||||||
"automation",
|
"automation",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "homekit.e1101f79ce9b41a28359a95f85e57b63.aids",
|
"key": "homekit.e1101f79ce9b41a28359a95f85e57b63.aids",
|
||||||
"data": {
|
"data": {
|
||||||
"allocations": {
|
"allocations": {
|
||||||
|
@ -89,7 +90,26 @@
|
||||||
"script.bedroom_waves": 3287422185,
|
"script.bedroom_waves": 3287422185,
|
||||||
"script.bedroom_rain": 2176118223,
|
"script.bedroom_rain": 2176118223,
|
||||||
"script.bedroom_sleep_music_long": 2167838011,
|
"script.bedroom_sleep_music_long": 2167838011,
|
||||||
"script.bedroom_sleep_music_short": 2422372189
|
"script.bedroom_sleep_music_short": 2422372189,
|
||||||
|
"hue.light.3ae16067-778e-47d9-86c5-d75d28b7f01b": 1762055787,
|
||||||
|
"hue.light.d6c3f683-2a24-4fc4-8055-eec68b3bb2f5": 4252871793,
|
||||||
|
"hue.light.22ffd26f-a76f-4c88-b2d8-2220ef7f8537": 1463708737,
|
||||||
|
"hue.light.a07ffc61-1d40-406b-b699-eb25c70d9cc4": 2276656891,
|
||||||
|
"hue.light.2e84b76c-748f-4375-82ab-05e15f4b7223": 2014439809,
|
||||||
|
"hue.light.58c1bf6f-844e-4690-a21e-f543ae544478": 363823799,
|
||||||
|
"hue.light.652b0901-18b3-4172-9c06-ca11a9cde172": 1710044888,
|
||||||
|
"hue.light.0aa6b6e3-7835-44bd-b1fe-06e7d38357bd": 3764471800,
|
||||||
|
"hue.light.8780e8b9-f420-4679-b434-3a3a02a32d17": 2802754275,
|
||||||
|
"hue.light.06259ccb-4b42-4f43-b33f-73b6fa5088c8": 3008706353,
|
||||||
|
"hue.light.56174d32-5767-458d-b3bf-f18fee04e33b": 3899854062,
|
||||||
|
"hue.light.c720f6e9-2444-4b36-be7a-b08cc4eed965": 1758205815,
|
||||||
|
"hue.light.de928995-bdc2-40d3-94a4-8aaee26a730f": 1173734377,
|
||||||
|
"hue.light.0d5d67e0-1f5b-4fe6-aae7-ac6f1f37fcaf": 2788850002,
|
||||||
|
"hue.light.78da0de5-c611-4b7e-8dc1-5d66347bed9b": 2202441427,
|
||||||
|
"hue.light.91b4abd8-c147-4b27-86ae-de083b6e860b": 2105360777,
|
||||||
|
"hue.light.d00eeb4b-0aa8-494f-aa64-1f84faa38213": 4065476362,
|
||||||
|
"hue.light.67247d33-bc41-4308-b2bb-144abd298001": 700545104,
|
||||||
|
"hue.light.515b9513-f060-4955-9dad-3e41e16f89ca": 2146599903
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1 +1 @@
|
||||||
{"mac": "2C:5F:45:B9:36:2A", "config_version": 61, "paired_clients": {"6ae4feba-9725-4653-8a32-bfae21591972": "4463182fbace66328d3e534cf78b6f81ccfd0e4250bdb1d954418e3eed738269"}, "client_properties": {"6ae4feba-9725-4653-8a32-bfae21591972": {"permissions": 1}}, "accessories_hash": "bed3649f89379771e280dffafd0465eb2a44ac1e67d939a65d8a9b95205f1806c1deb6b19d199ef517803acc4016f778bec3362e2db196b98c3a9957448cbf7d", "private_key": "03d847a9e20598ee99c5b47cfc64c07ce83c7aebc6720e26e83fdd4c359e33c7", "public_key": "f4de2e4b9a98f38d27af5914310f92b861f6cdbc02e22945554c07bbc3868f70"}
|
{"mac": "2C:5F:45:B9:36:2A", "config_version": 105, "paired_clients": {"6ae4feba-9725-4653-8a32-bfae21591972": "4463182fbace66328d3e534cf78b6f81ccfd0e4250bdb1d954418e3eed738269"}, "client_properties": {"6ae4feba-9725-4653-8a32-bfae21591972": {"permissions": 1}}, "accessories_hash": "3e51708bb39e78df9fc35a4d21ddd3074f65e8177782f44c74d9ddd16534a62372e388e17e23897dc6af9b39286e8742d6704ddd2d6a89e3623f7a083fa79749", "private_key": "03d847a9e20598ee99c5b47cfc64c07ce83c7aebc6720e26e83fdd4c359e33c7", "public_key": "f4de2e4b9a98f38d27af5914310f92b861f6cdbc02e22945554c07bbc3868f70"}
|
|
@ -1,17 +1,18 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "http",
|
"key": "http",
|
||||||
"data": {
|
"data": {
|
||||||
"use_x_forwarded_for": true,
|
"use_x_forwarded_for": true,
|
||||||
"trusted_proxies": [
|
"trusted_proxies": [
|
||||||
"192.168.178.80"
|
"192.168.178.80"
|
||||||
],
|
],
|
||||||
"ssl_profile": "modern",
|
|
||||||
"server_port": 8123,
|
|
||||||
"login_attempts_threshold": -1,
|
|
||||||
"ip_ban_enabled": true,
|
"ip_ban_enabled": true,
|
||||||
"cors_allowed_origins": [
|
"cors_allowed_origins": [
|
||||||
"https://cast.home-assistant.io"
|
"https://cast.home-assistant.io"
|
||||||
]
|
],
|
||||||
|
"login_attempts_threshold": -1,
|
||||||
|
"ssl_profile": "modern",
|
||||||
|
"server_port": 8123
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,62 +16,6 @@
|
||||||
"icon": "mdi:home",
|
"icon": "mdi:home",
|
||||||
"badges": [],
|
"badges": [],
|
||||||
"cards": [
|
"cards": [
|
||||||
{
|
|
||||||
"type": "conditional",
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"entity": "cover.kinderzimmer_rollo",
|
|
||||||
"state_not": "open"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"card": {
|
|
||||||
"type": "vertical-stack",
|
|
||||||
"cards": [
|
|
||||||
{
|
|
||||||
"type": "entities",
|
|
||||||
"entities": [
|
|
||||||
{
|
|
||||||
"entity": "switch.tasmota07",
|
|
||||||
"name": "F\u00f6n",
|
|
||||||
"icon": "mdi:hair-dryer"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"entity": "timer.fon_timer",
|
|
||||||
"name": "Timer",
|
|
||||||
"icon": "mdi:timer"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "button",
|
|
||||||
"name": "Aus in 10 min",
|
|
||||||
"action_name": "Los",
|
|
||||||
"tap_action": {
|
|
||||||
"action": "call-service",
|
|
||||||
"service": "timer.start",
|
|
||||||
"service_data": {
|
|
||||||
"entity_id": "timer.fon_timer",
|
|
||||||
"duration": "00:10:00"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "button",
|
|
||||||
"name": "Aus in 15 min",
|
|
||||||
"action_name": "Los",
|
|
||||||
"tap_action": {
|
|
||||||
"action": "call-service",
|
|
||||||
"service": "timer.start",
|
|
||||||
"service_data": {
|
|
||||||
"entity_id": "timer.fon_timer",
|
|
||||||
"duration": "00:15:00"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"title": "F\u00f6n"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "entities",
|
"type": "entities",
|
||||||
"entities": [
|
"entities": [
|
||||||
|
|
|
@ -91,6 +91,10 @@
|
||||||
{
|
{
|
||||||
"entity": "light.gang_bogen",
|
"entity": "light.gang_bogen",
|
||||||
"name": "Gang Bogen"
|
"name": "Gang Bogen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entity": "automation.gang_bogen_nachtlicht",
|
||||||
|
"name": "Autom. Bogenlicht"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"show_header_toggle": false,
|
"show_header_toggle": false,
|
||||||
|
@ -562,6 +566,11 @@
|
||||||
"entity": "light.kinderzimmer_deckenlampe",
|
"entity": "light.kinderzimmer_deckenlampe",
|
||||||
"name": "Deckenlampe"
|
"name": "Deckenlampe"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"entity": "light.music_mouse_regal_licht",
|
||||||
|
"name": "Regal",
|
||||||
|
"icon": "hue:bulb-group-lightstrip"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"entity": "light.kinderzimmer_fluter",
|
"entity": "light.kinderzimmer_fluter",
|
||||||
"name": "Fluter",
|
"name": "Fluter",
|
||||||
|
@ -572,16 +581,6 @@
|
||||||
"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:hair-dryer"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"entity": "cover.kinderzimmer_rollo",
|
"entity": "cover.kinderzimmer_rollo",
|
||||||
"name": "Rollo"
|
"name": "Rollo"
|
||||||
|
@ -644,82 +643,6 @@
|
||||||
"icon": "mdi:tree",
|
"icon": "mdi:tree",
|
||||||
"badges": [],
|
"badges": [],
|
||||||
"cards": [
|
"cards": [
|
||||||
{
|
|
||||||
"type": "vertical-stack",
|
|
||||||
"title": "Pool",
|
|
||||||
"cards": [
|
|
||||||
{
|
|
||||||
"type": "horizontal-stack",
|
|
||||||
"cards": [
|
|
||||||
{
|
|
||||||
"type": "button",
|
|
||||||
"name": "Pumpe",
|
|
||||||
"icon": "mdi:pump",
|
|
||||||
"entity": "switch.poolpumpesteckdose",
|
|
||||||
"show_state": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "gauge",
|
|
||||||
"entity": "sensor.pool_temperature",
|
|
||||||
"min": 10,
|
|
||||||
"name": "Temperatur",
|
|
||||||
"max": 30,
|
|
||||||
"severity": {
|
|
||||||
"green": 18,
|
|
||||||
"yellow": 20,
|
|
||||||
"red": 24
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "gauge",
|
|
||||||
"entity": "sensor.pool_ph",
|
|
||||||
"min": 6,
|
|
||||||
"name": "pH (7.0-7.4)",
|
|
||||||
"max": 9,
|
|
||||||
"severity": {
|
|
||||||
"green": 6.9,
|
|
||||||
"yellow": 7.4,
|
|
||||||
"red": 8
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "gauge",
|
|
||||||
"entity": "sensor.pool_oxydo_reduction_potential",
|
|
||||||
"min": 400,
|
|
||||||
"name": "Redox (650-750)",
|
|
||||||
"max": 650,
|
|
||||||
"severity": {
|
|
||||||
"green": 650,
|
|
||||||
"yellow": 500,
|
|
||||||
"red": 400
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "entities",
|
|
||||||
"entities": [
|
|
||||||
{
|
|
||||||
"entity": "sensor.pool_pumpe_heute"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"entity": "sensor.pool_pumpe_gestern"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "divider"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"entity": "sensor.pool_tds",
|
|
||||||
"name": "Partikel (TDS)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"entity": "sensor.pool_rssi",
|
|
||||||
"name": "Empfang Boje"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "entities",
|
"type": "entities",
|
||||||
"entities": [
|
"entities": [
|
||||||
|
@ -762,29 +685,41 @@
|
||||||
"state_color": true
|
"state_color": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "custom:mini-graph-card",
|
"type": "entities",
|
||||||
"hours_to_show": 96,
|
|
||||||
"line_color": "#FF8552",
|
|
||||||
"height": 250,
|
|
||||||
"smoothing": true,
|
|
||||||
"lower_bound": 7,
|
|
||||||
"upper_bound": 8.5,
|
|
||||||
"lower_bound_secondary": 500,
|
|
||||||
"upper_bound_secondary": 750,
|
|
||||||
"show": {
|
|
||||||
"labels": true
|
|
||||||
},
|
|
||||||
"entities": [
|
"entities": [
|
||||||
{
|
{
|
||||||
"entity": "sensor.pool_ph",
|
"entity": "switch.tasmota01",
|
||||||
"name": "pH"
|
"name": "Balkon",
|
||||||
|
"icon": "mdi:balcony"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entity": "sensor.pool_oxydo_reduction_potential",
|
"entity": "switch.tasmota02",
|
||||||
"y_axis": "secondary",
|
"name": "Eingang",
|
||||||
"name": "ORP"
|
"icon": "mdi:window-closed-variant"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entity": "switch.tasmota04",
|
||||||
|
"name": "Esszimmer",
|
||||||
|
"icon": "mdi:window-closed-variant"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entity": "switch.tasmota05",
|
||||||
|
"name": "Wohnzimmer",
|
||||||
|
"icon": "mdi:string-lights"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entity": "switch.tasmota06",
|
||||||
|
"name": "Arbeitszimmer",
|
||||||
|
"icon": "mdi:star-four-points"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"entity": "switch.tasmota07",
|
||||||
|
"name": "Treppe",
|
||||||
|
"icon": "mdi:stairs"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"title": "Weihnachten",
|
||||||
|
"show_header_toggle": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "lovelace.05_detail",
|
"key": "lovelace.05_detail",
|
||||||
"data": {
|
"data": {
|
||||||
"config": {
|
"config": {
|
||||||
|
@ -47,30 +48,13 @@
|
||||||
{
|
{
|
||||||
"entities": [
|
"entities": [
|
||||||
{
|
{
|
||||||
"entity": "binary_sensor.rauchmelder_gang_oben_sensor",
|
"entity": "binary_sensor.rauchmelder_schlafzimmer_smoke_alarm_smoke_detected"
|
||||||
"name": "Gang Erster Stock",
|
|
||||||
"secondary_info": "last-changed"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entity": "binary_sensor.rauchmelder_gang_sensor",
|
"entity": "binary_sensor.rauchmelder_unten_gang_smoke_alarm_smoke_detected"
|
||||||
"name": "Gang unten",
|
|
||||||
"secondary_info": "last-changed"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entity": "binary_sensor.rauchmelder_schlafzimmer_sensor",
|
"entity": "binary_sensor.smoke_detector_and_siren_smoke_alarm_smoke_detected"
|
||||||
"name": "Schlafzimmer unten",
|
|
||||||
"secondary_info": "last-changed"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"entity": "binary_sensor.rauchmelder_wohnzimmer_sensor",
|
|
||||||
"name": "Wohnzimmer unten",
|
|
||||||
"secondary_info": "last-changed"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "divider"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"entity": "binary_sensor.rauchmelder_heizraum_siren_sensor"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"show_header_toggle": false,
|
"show_header_toggle": false,
|
||||||
|
@ -134,6 +118,20 @@
|
||||||
"icon": "mdi:bell",
|
"icon": "mdi:bell",
|
||||||
"title": "Klingel",
|
"title": "Klingel",
|
||||||
"type": "entities"
|
"type": "entities"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "custom:valetudo-map-card",
|
||||||
|
"entity": "camera.map_data",
|
||||||
|
"title": "Staubsauger",
|
||||||
|
"vacuum_entity": "vacuum.vacuum",
|
||||||
|
"rotate": 0,
|
||||||
|
"crop": {
|
||||||
|
"top": 0,
|
||||||
|
"bottom": 0,
|
||||||
|
"left": 80,
|
||||||
|
"right": 0
|
||||||
|
},
|
||||||
|
"min_height": 0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -660,7 +658,7 @@
|
||||||
"type": "entities",
|
"type": "entities",
|
||||||
"entities": [
|
"entities": [
|
||||||
{
|
{
|
||||||
"entity": "sensor.prusaprinter_current_state",
|
"entity": "sensor.octoprint_current_state",
|
||||||
"name": "Status",
|
"name": "Status",
|
||||||
"secondary_info": "last-changed"
|
"secondary_info": "last-changed"
|
||||||
},
|
},
|
||||||
|
@ -668,17 +666,17 @@
|
||||||
"type": "custom:template-entity-row",
|
"type": "custom:template-entity-row",
|
||||||
"icon": "mdi:clock",
|
"icon": "mdi:clock",
|
||||||
"name": "Fertig in",
|
"name": "Fertig in",
|
||||||
"state": "{{ states('sensor.prusaprinter_time_remaining') | int // 3600}}h {{ states('sensor.prusaprinter_time_remaining') | int // 60 % 60}}min",
|
"state": "{{ states('sensor.octoprint_time_remaining') | int // 3600}}h {{ states('sensor.octoprint_time_remaining') | int // 60 % 60}}min",
|
||||||
"secondary": "Druckt seit {{ states('sensor.prusaprinter_time_elapsed') | int // 3600}}h {{ states('sensor.prusaprinter_time_elapsed') | int // 60 % 60}}min",
|
"secondary": "Druckt seit {{ states('sensor.octoprint_time_elapsed') | int // 3600}}h {{ states('sensor.octoprint_time_elapsed') | int // 60 % 60}}min",
|
||||||
"active": "{{ is_state('light.bed_light', 'off') }}"
|
"active": "{{ is_state('light.bed_light', 'off') }}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entity": "sensor.prusaprinter_actual_bed_temp",
|
"entity": "sensor.octoprint_actual_bed_temp",
|
||||||
"name": "Print Bed",
|
"name": "Print Bed",
|
||||||
"icon": "mdi:card"
|
"icon": "mdi:card"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entity": "sensor.prusaprinter_actual_tool0_temp",
|
"entity": "sensor.octoprint_actual_tool0_temp",
|
||||||
"name": "Nozzle",
|
"name": "Nozzle",
|
||||||
"icon": "mdi:printer-3d-nozzle"
|
"icon": "mdi:printer-3d-nozzle"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
|
"minor_version": 1,
|
||||||
"key": "lovelace_resources",
|
"key": "lovelace_resources",
|
||||||
"data": {
|
"data": {
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"id": "2dd231ecf4fa46d1b9ba696f28da7731",
|
"id": "2dd231ecf4fa46d1b9ba696f28da7731",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"url": "/local/custom_ui/state-card-custom-cover.js?v=1.04"
|
"url": "/local/custom_ui/state-card-custom-cover.js?v=1.09"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "526c1c7115cd4bb396cf02a83b884365",
|
"id": "526c1c7115cd4bb396cf02a83b884365",
|
||||||
|
@ -16,15 +17,15 @@
|
||||||
{
|
{
|
||||||
"id": "55ef5e325ab444d19e15a1183a97fb35",
|
"id": "55ef5e325ab444d19e15a1183a97fb35",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"url": "/local/custom_ui/room-glance-card.js?v=1.1"
|
"url": "/local/custom_ui/room-glance-card.js?v=1.09"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/scheduler-card/scheduler-card.js?hacstag=286270157220",
|
"url": "/hacsfiles/scheduler-card/scheduler-card.js?hacstag=286270157236",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "af379618bd83489a9f2f15a0be498eaf"
|
"id": "af379618bd83489a9f2f15a0be498eaf"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/lovelace-slider-entity-row/slider-entity-row.js?hacstag=1448997001710",
|
"url": "/hacsfiles/lovelace-slider-entity-row/slider-entity-row.js?hacstag=1448997001721",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "7067680a3f314af285c5ebe1605e0451"
|
"id": "7067680a3f314af285c5ebe1605e0451"
|
||||||
},
|
},
|
||||||
|
@ -34,27 +35,27 @@
|
||||||
"id": "aa48cd5ffa8a4e0883ce06e64391cf46"
|
"id": "aa48cd5ffa8a4e0883ce06e64391cf46"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/rgb-light-card/card.js?hacstag=215327195190",
|
"url": "/hacsfiles/rgb-light-card/card.js?hacstag=2153271951110",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "9fa16ed42d0c480ab9dc711cb98790e7"
|
"id": "9fa16ed42d0c480ab9dc711cb98790e7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/mini-graph-card/mini-graph-card-bundle.js?hacstag=1512800620100",
|
"url": "/hacsfiles/mini-graph-card/mini-graph-card-bundle.js?hacstag=1512800620110",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "5fb0764a8bb54c4aaf4a4be15022095b"
|
"id": "5fb0764a8bb54c4aaf4a4be15022095b"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/mini-media-player/mini-media-player-bundle.js?hacstag=1485208381130",
|
"url": "/hacsfiles/mini-media-player/mini-media-player-bundle.js?hacstag=1485208381164",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "9f7ce776f265476f89246c9926a933a8"
|
"id": "9f7ce776f265476f89246c9926a933a8"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/lovelace-multiple-entity-row/multiple-entity-row.js?hacstag=178921037420",
|
"url": "/hacsfiles/lovelace-multiple-entity-row/multiple-entity-row.js?hacstag=178921037441",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "295d5e67ee594e31935e535c2c4b7bd4"
|
"id": "295d5e67ee594e31935e535c2c4b7bd4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/hass-hue-icons/hass-hue-icons.js?hacstag=3844345221088",
|
"url": "/hacsfiles/hass-hue-icons/hass-hue-icons.js?hacstag=3844345221243",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "59ab7764b5724e75ac5ff57fdcd54e2c"
|
"id": "59ab7764b5724e75ac5ff57fdcd54e2c"
|
||||||
},
|
},
|
||||||
|
@ -69,14 +70,19 @@
|
||||||
"id": "c5461acbb2e742e4b06cebf73181ffc7"
|
"id": "c5461acbb2e742e4b06cebf73181ffc7"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/apexcharts-card/apexcharts-card.js?hacstag=331701152190",
|
"url": "/hacsfiles/apexcharts-card/apexcharts-card.js?hacstag=331701152201",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "322b6b5391e84fd1bb126c8448db1ebb"
|
"id": "322b6b5391e84fd1bb126c8448db1ebb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/hacsfiles/kiosk-mode/kiosk-mode.js?hacstag=303101606171",
|
"url": "/hacsfiles/kiosk-mode/kiosk-mode.js?hacstag=303101606172",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"id": "58eff8b61ebf463b86570a8c975adda3"
|
"id": "58eff8b61ebf463b86570a8c975adda3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "/hacsfiles/lovelace-valetudo-map-card/valetudo-map-card.js?hacstag=20303610820211205",
|
||||||
|
"type": "module",
|
||||||
|
"id": "44c1654a1a8b4e078c2d69bf52ba2ce5"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
123
automations.yaml
123
automations.yaml
|
@ -1,5 +1,5 @@
|
||||||
- id: '1575130335468'
|
- id: '1575130335468'
|
||||||
alias: FernbedienungWeihnachtslichterOben
|
alias: Fernbedienung Weihnachtslichter Oben
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- event_data:
|
- event_data:
|
||||||
|
@ -13,6 +13,7 @@
|
||||||
- data:
|
- data:
|
||||||
entity_id: switch.mobile_steckdose_schalter_2
|
entity_id: switch.mobile_steckdose_schalter_2
|
||||||
service: switch.toggle
|
service: switch.toggle
|
||||||
|
mode: single
|
||||||
- id: '1575202743482'
|
- id: '1575202743482'
|
||||||
alias: Wecker Licht an
|
alias: Wecker Licht an
|
||||||
description: ''
|
description: ''
|
||||||
|
@ -44,7 +45,7 @@
|
||||||
- 0.414
|
- 0.414
|
||||||
service: light.turn_on
|
service: light.turn_on
|
||||||
- id: '1589377976830'
|
- id: '1589377976830'
|
||||||
alias: AlarmMartinHandy
|
alias: Alarm Martin Handy
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- entity_id: binary_sensor.gang_bewegungsmelder_schlafzimmer, binary_sensor.gang_bewegungsmelder_ost,
|
- entity_id: binary_sensor.gang_bewegungsmelder_schlafzimmer, binary_sensor.gang_bewegungsmelder_ost,
|
||||||
|
@ -65,7 +66,7 @@
|
||||||
- delay: '30'
|
- delay: '30'
|
||||||
mode: single
|
mode: single
|
||||||
- id: '1598594894559'
|
- id: '1598594894559'
|
||||||
alias: KlingelAufHandy
|
alias: Klingel Auf Handy
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- entity_id: switch.klingel_aussentur
|
- entity_id: switch.klingel_aussentur
|
||||||
|
@ -84,7 +85,7 @@
|
||||||
service: notify.ios_martins_ipad
|
service: notify.ios_martins_ipad
|
||||||
mode: single
|
mode: single
|
||||||
- id: '1606655282153'
|
- id: '1606655282153'
|
||||||
alias: _WeihnachtslichterAnUm6
|
alias: Weihnachtslichter an morgens um 6
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- platform: time
|
- platform: time
|
||||||
|
@ -96,10 +97,13 @@
|
||||||
entity_id:
|
entity_id:
|
||||||
- switch.tasmota01
|
- switch.tasmota01
|
||||||
- switch.tasmota02
|
- switch.tasmota02
|
||||||
- switch.tasmota03
|
- switch.tasmota04
|
||||||
|
- switch.tasmota05
|
||||||
|
- switch.tasmota06
|
||||||
|
- switch.tasmota07
|
||||||
mode: single
|
mode: single
|
||||||
- id: '1607412098745'
|
- id: '1607412098745'
|
||||||
alias: _WeihnachtslichterAusMorgens
|
alias: Weihnachtslichter aus morgens
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- platform: sun
|
- platform: sun
|
||||||
|
@ -112,12 +116,13 @@
|
||||||
entity_id:
|
entity_id:
|
||||||
- switch.tasmota01
|
- switch.tasmota01
|
||||||
- switch.tasmota02
|
- switch.tasmota02
|
||||||
- switch.tasmota03
|
- switch.tasmota04
|
||||||
- switch.mobile_steckdose_schalter_1
|
- switch.tasmota05
|
||||||
- switch.mobile_steckdose_schalter_2
|
- switch.tasmota06
|
||||||
|
- switch.tasmota07
|
||||||
mode: single
|
mode: single
|
||||||
- id: '1607412144113'
|
- id: '1607412144113'
|
||||||
alias: _Weihnachtslichter An Abends
|
alias: Weihnachtslichter An Abends
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- platform: sun
|
- platform: sun
|
||||||
|
@ -129,12 +134,13 @@
|
||||||
entity_id:
|
entity_id:
|
||||||
- switch.tasmota01
|
- switch.tasmota01
|
||||||
- switch.tasmota02
|
- switch.tasmota02
|
||||||
- switch.tasmota03
|
- switch.tasmota04
|
||||||
- switch.mobile_steckdose_schalter_1
|
- switch.tasmota05
|
||||||
- switch.mobile_steckdose_schalter_2
|
- switch.tasmota06
|
||||||
|
- switch.tasmota07
|
||||||
mode: single
|
mode: single
|
||||||
- id: '1607412210097'
|
- id: '1607412210097'
|
||||||
alias: _Weihnachtslichter Aus Abends
|
alias: Weihnachtslichter Aus Abends
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- platform: time
|
- platform: time
|
||||||
|
@ -146,12 +152,13 @@
|
||||||
entity_id:
|
entity_id:
|
||||||
- switch.tasmota01
|
- switch.tasmota01
|
||||||
- switch.tasmota02
|
- switch.tasmota02
|
||||||
- switch.tasmota03
|
- switch.tasmota04
|
||||||
- switch.mobile_steckdose_schalter_1
|
- switch.tasmota05
|
||||||
- switch.mobile_steckdose_schalter_2
|
- switch.tasmota06
|
||||||
|
- switch.tasmota07
|
||||||
mode: single
|
mode: single
|
||||||
- id: '1612028092169'
|
- id: '1612028092169'
|
||||||
alias: 0_BewegungsmelderSchlafzimmerNacht
|
alias: Bewegungsmelder Schlafzimmer Nacht
|
||||||
description: ''
|
description: ''
|
||||||
trigger:
|
trigger:
|
||||||
- platform: state
|
- platform: state
|
||||||
|
@ -198,3 +205,83 @@
|
||||||
target:
|
target:
|
||||||
entity_id: switch.tasmota07
|
entity_id: switch.tasmota07
|
||||||
mode: single
|
mode: single
|
||||||
|
- id: '1632393568599'
|
||||||
|
alias: Herd vorgeheizt -> iPad
|
||||||
|
description: ''
|
||||||
|
trigger:
|
||||||
|
- platform: numeric_state
|
||||||
|
entity_id: sensor.backofen_verbrauch
|
||||||
|
below: '20'
|
||||||
|
for:
|
||||||
|
hours: 0
|
||||||
|
minutes: 0
|
||||||
|
seconds: 5
|
||||||
|
milliseconds: 0
|
||||||
|
condition: []
|
||||||
|
action:
|
||||||
|
- service: notify.mobile_app_martins_ipad
|
||||||
|
data:
|
||||||
|
title: Herd vorgeheizt
|
||||||
|
message: herd ist heiss :)
|
||||||
|
mode: single
|
||||||
|
- id: '1633435293611'
|
||||||
|
alias: Gang Bogen Nachtlicht
|
||||||
|
description: ''
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- binary_sensor.gang_bewegungsmelder_schlafzimmer
|
||||||
|
- binary_sensor.gang_bewegungsmelder_wohnzimmer
|
||||||
|
from: 'off'
|
||||||
|
to: 'on'
|
||||||
|
condition:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ state_attr(''sun.sun'', ''elevation'') < 5 }}'
|
||||||
|
action:
|
||||||
|
- service: light.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: light.gang_bogen
|
||||||
|
data:
|
||||||
|
brightness_pct: 50
|
||||||
|
xy_color:
|
||||||
|
- 0.607
|
||||||
|
- 0.378
|
||||||
|
- delay:
|
||||||
|
hours: 0
|
||||||
|
minutes: 2
|
||||||
|
seconds: 0
|
||||||
|
milliseconds: 0
|
||||||
|
- service: light.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: light.gang_bogen
|
||||||
|
data:
|
||||||
|
transition: 5
|
||||||
|
mode: restart
|
||||||
|
- id: '1634461079797'
|
||||||
|
alias: 3D Drucker State Change
|
||||||
|
description: ''
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id: binary_sensor.octoprint_printing
|
||||||
|
condition: []
|
||||||
|
action:
|
||||||
|
- service: notify.telegram_martin
|
||||||
|
data:
|
||||||
|
title: 3D Drucker
|
||||||
|
message: 3D Drucker hat Zustand gewechselt
|
||||||
|
mode: single
|
||||||
|
- id: '1656971839915'
|
||||||
|
alias: Rollos zu nachts
|
||||||
|
description: ''
|
||||||
|
trigger:
|
||||||
|
- platform: time
|
||||||
|
at: 04:00:00
|
||||||
|
condition: []
|
||||||
|
action:
|
||||||
|
- service: cover.close_cover
|
||||||
|
data: {}
|
||||||
|
target:
|
||||||
|
entity_id:
|
||||||
|
- cover.schlafzimmer_rollo_klein
|
||||||
|
- cover.schlafzimmer_rollo_gross
|
||||||
|
mode: single
|
||||||
|
|
|
@ -1,263 +0,0 @@
|
||||||
attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
|
|
||||||
attr global autoload_undefined_devices 1
|
|
||||||
attr global logfile -
|
|
||||||
attr global modpath .
|
|
||||||
attr global motd Error messages while initializing FHEM:\
|
|
||||||
attr global statefile ./log/fhem.save
|
|
||||||
attr global updateInBackground 1
|
|
||||||
attr global verbose 3
|
|
||||||
attr global genericDeviceType:switch,light,blind,thermostat
|
|
||||||
|
|
||||||
define telnetPort telnet 7072 global
|
|
||||||
|
|
||||||
#define WEB FHEMWEB 8083 global
|
|
||||||
|
|
||||||
#define WEBphone FHEMWEB 8084 global
|
|
||||||
#attr WEBphone stylesheetPrefix smallscreen
|
|
||||||
|
|
||||||
#define WEBtablet FHEMWEB 8085 global
|
|
||||||
#attr WEBtablet stylesheetPrefix touchpad
|
|
||||||
|
|
||||||
# Fake FileLog entry, to access the fhem log from FHEMWEB
|
|
||||||
#define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
|
|
||||||
|
|
||||||
define autocreate autocreate
|
|
||||||
attr autocreate autosave 1
|
|
||||||
#attr autocreate filelog ./log/%NAME-%Y.log
|
|
||||||
|
|
||||||
#define eventTypes eventTypes ./log/eventTypes.txt
|
|
||||||
|
|
||||||
# Disable this to avoid looking for new USB devices on startup
|
|
||||||
#define initialUsbCheck notify global:INITIALIZED usb create
|
|
||||||
|
|
||||||
define CUL_0 CUL __device_placeholder__@9600 1034
|
|
||||||
attr CUL_0 hmId 62a77d
|
|
||||||
attr CUL_0 rfmode HomeMatic
|
|
||||||
|
|
||||||
define Arbeitszimmer_Rollo CUL_HM 339336
|
|
||||||
attr Arbeitszimmer_Rollo IODev CUL_0
|
|
||||||
attr Arbeitszimmer_Rollo autoReadReg 4_reqStatus
|
|
||||||
attr Arbeitszimmer_Rollo expert 2_full
|
|
||||||
attr Arbeitszimmer_Rollo firmware 2.3
|
|
||||||
attr Arbeitszimmer_Rollo model HM-LC-Bl1PBU-FM
|
|
||||||
attr Arbeitszimmer_Rollo room CUL_HM
|
|
||||||
attr Arbeitszimmer_Rollo serialNr LEQ1440417
|
|
||||||
attr Arbeitszimmer_Rollo subType blindActuator
|
|
||||||
attr Arbeitszimmer_Rollo webCmd statusRequest:toggleDir:on:off:up:down:stop
|
|
||||||
attr Arbeitszimmer_Rollo room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
define Arbeitszimmer_Deckenlampe CUL_HM 1AA382
|
|
||||||
attr Arbeitszimmer_Deckenlampe IODev CUL_0
|
|
||||||
attr Arbeitszimmer_Deckenlampe autoReadReg 4_reqStatus
|
|
||||||
attr Arbeitszimmer_Deckenlampe expert 2_full
|
|
||||||
attr Arbeitszimmer_Deckenlampe firmware 2.2
|
|
||||||
attr Arbeitszimmer_Deckenlampe model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Arbeitszimmer_Deckenlampe room CUL_HM
|
|
||||||
attr Arbeitszimmer_Deckenlampe serialNr JEQ0201891
|
|
||||||
attr Arbeitszimmer_Deckenlampe subType dimmer
|
|
||||||
attr Arbeitszimmer_Deckenlampe webCmd getConfig:clear msgEvents
|
|
||||||
define Arbeitszimmer_Deckenlampe_Sw CUL_HM 1AA38201
|
|
||||||
attr Arbeitszimmer_Deckenlampe_Sw model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Arbeitszimmer_Deckenlampe_Sw peerIDs
|
|
||||||
attr Arbeitszimmer_Deckenlampe_Sw webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
define Arbeitszimmer_Deckenlampe_Sw1_V_01 CUL_HM 1AA38202
|
|
||||||
attr Arbeitszimmer_Deckenlampe_Sw1_V_01 model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Arbeitszimmer_Deckenlampe_Sw1_V_01 webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
define Arbeitszimmer_Deckenlampe_Sw1_V_02 CUL_HM 1AA38203
|
|
||||||
attr Arbeitszimmer_Deckenlampe_Sw1_V_02 model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Arbeitszimmer_Deckenlampe_Sw1_V_02 webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
attr Arbeitszimmer_Deckenlampe room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Schlafzimmer_Deckenlampe CUL_HM 1AA1C7
|
|
||||||
attr Schlafzimmer_Deckenlampe IODev CUL_0
|
|
||||||
attr Schlafzimmer_Deckenlampe autoReadReg 4_reqStatus
|
|
||||||
attr Schlafzimmer_Deckenlampe expert 2_full
|
|
||||||
attr Schlafzimmer_Deckenlampe firmware 2.2
|
|
||||||
attr Schlafzimmer_Deckenlampe model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Schlafzimmer_Deckenlampe room CUL_HM
|
|
||||||
attr Schlafzimmer_Deckenlampe serialNr JEQ0201456
|
|
||||||
attr Schlafzimmer_Deckenlampe subType dimmer
|
|
||||||
attr Schlafzimmer_Deckenlampe webCmd getConfig:clear msgEvents
|
|
||||||
define Schlafzimmer_Deckenlampe_Sw CUL_HM 1AA1C701
|
|
||||||
attr Schlafzimmer_Deckenlampe_Sw model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Schlafzimmer_Deckenlampe_Sw peerIDs
|
|
||||||
attr Schlafzimmer_Deckenlampe_Sw webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
define Schlafzimmer_Deckenlampe_Sw1_V_01 CUL_HM 1AA1C702
|
|
||||||
attr Schlafzimmer_Deckenlampe_Sw1_V_01 model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Schlafzimmer_Deckenlampe_Sw1_V_01 webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
define Schlafzimmer_Deckenlampe_Sw1_V_02 CUL_HM 1AA1C703
|
|
||||||
attr Schlafzimmer_Deckenlampe_Sw1_V_02 model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Schlafzimmer_Deckenlampe_Sw1_V_02 webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
attr Schlafzimmer_Deckenlampe room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Schlafzimmer_RolloKlein CUL_HM 338C2A
|
|
||||||
attr Schlafzimmer_RolloKlein IODev CUL_0
|
|
||||||
attr Schlafzimmer_RolloKlein autoReadReg 4_reqStatus
|
|
||||||
attr Schlafzimmer_RolloKlein expert 2_full
|
|
||||||
attr Schlafzimmer_RolloKlein firmware 2.3
|
|
||||||
attr Schlafzimmer_RolloKlein model HM-LC-Bl1PBU-FM
|
|
||||||
attr Schlafzimmer_RolloKlein room CUL_HM
|
|
||||||
attr Schlafzimmer_RolloKlein serialNr LEQ1439693
|
|
||||||
attr Schlafzimmer_RolloKlein subType blindActuator
|
|
||||||
attr Schlafzimmer_RolloKlein webCmd statusRequest:toggleDir:on:off:up:down:stop
|
|
||||||
attr Schlafzimmer_RolloKlein room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Schlafzimmer_RolloGross CUL_HM 338C33
|
|
||||||
attr Schlafzimmer_RolloGross IODev CUL_0
|
|
||||||
attr Schlafzimmer_RolloGross autoReadReg 4_reqStatus
|
|
||||||
attr Schlafzimmer_RolloGross expert 2_full
|
|
||||||
attr Schlafzimmer_RolloGross firmware 2.3
|
|
||||||
attr Schlafzimmer_RolloGross model HM-LC-Bl1PBU-FM
|
|
||||||
attr Schlafzimmer_RolloGross room CUL_HM
|
|
||||||
attr Schlafzimmer_RolloGross serialNr LEQ1439702
|
|
||||||
attr Schlafzimmer_RolloGross subType blindActuator
|
|
||||||
attr Schlafzimmer_RolloGross webCmd statusRequest:toggleDir:on:off:up:down:stop
|
|
||||||
attr Schlafzimmer_RolloGross room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Kinderzimmer_Deckenlampe CUL_HM 1B5305
|
|
||||||
attr Kinderzimmer_Deckenlampe IODev CUL_0
|
|
||||||
attr Kinderzimmer_Deckenlampe autoReadReg 4_reqStatus
|
|
||||||
attr Kinderzimmer_Deckenlampe expert 2_full
|
|
||||||
attr Kinderzimmer_Deckenlampe firmware 2.2
|
|
||||||
attr Kinderzimmer_Deckenlampe model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Kinderzimmer_Deckenlampe room CUL_HM
|
|
||||||
attr Kinderzimmer_Deckenlampe serialNr JEQ0199674
|
|
||||||
attr Kinderzimmer_Deckenlampe subType dimmer
|
|
||||||
attr Kinderzimmer_Deckenlampe webCmd getConfig:clear msgEvents
|
|
||||||
define Kinderzimmer_Deckenlampe_Sw CUL_HM 1B530501
|
|
||||||
attr Kinderzimmer_Deckenlampe_Sw model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Kinderzimmer_Deckenlampe_Sw peerIDs
|
|
||||||
attr Kinderzimmer_Deckenlampe_Sw webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
define Kinderzimmer_Deckenlampe_Sw1_V_01 CUL_HM 1B530502
|
|
||||||
attr Kinderzimmer_Deckenlampe_Sw1_V_01 model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Kinderzimmer_Deckenlampe_Sw1_V_01 webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
define Kinderzimmer_Deckenlampe_Sw1_V_02 CUL_HM 1B530503
|
|
||||||
attr Kinderzimmer_Deckenlampe_Sw1_V_02 model HM-LC-Dim1TPBU-FM
|
|
||||||
attr Kinderzimmer_Deckenlampe_Sw1_V_02 webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
attr Kinderzimmer_Deckenlampe room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Kinderzimmer_Rollo CUL_HM 1AF5DD
|
|
||||||
attr Kinderzimmer_Rollo IODev CUL_0
|
|
||||||
attr Kinderzimmer_Rollo autoReadReg 4_reqStatus
|
|
||||||
attr Kinderzimmer_Rollo expert 2_full
|
|
||||||
attr Kinderzimmer_Rollo firmware 2.1
|
|
||||||
attr Kinderzimmer_Rollo model HM-LC-Bl1PBU-FM
|
|
||||||
attr Kinderzimmer_Rollo room CUL_HM
|
|
||||||
attr Kinderzimmer_Rollo serialNr JEQ0109195
|
|
||||||
attr Kinderzimmer_Rollo subType blindActuator
|
|
||||||
attr Kinderzimmer_Rollo webCmd statusRequest:toggleDir:on:off:up:down:stop
|
|
||||||
attr Kinderzimmer_Rollo room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Steckdose_Dimmer CUL_HM 20E8F1
|
|
||||||
attr Steckdose_Dimmer IODev CUL_0
|
|
||||||
attr Steckdose_Dimmer autoReadReg 4_reqStatus
|
|
||||||
attr Steckdose_Dimmer expert 2_full
|
|
||||||
attr Steckdose_Dimmer firmware 2.3
|
|
||||||
attr Steckdose_Dimmer model HM-LC-Dim1T-Pl-2
|
|
||||||
attr Steckdose_Dimmer room CUL_HM
|
|
||||||
attr Steckdose_Dimmer serialNr KEQ0124588
|
|
||||||
attr Steckdose_Dimmer subType dimmer
|
|
||||||
attr Steckdose_Dimmer webCmd statusRequest:toggle:on:off:up:down
|
|
||||||
attr Steckdose_Dimmer room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Bad_Luefter CUL_HM 1B7501
|
|
||||||
attr Bad_Luefter IODev CUL_0
|
|
||||||
attr Bad_Luefter autoReadReg 4_reqStatus
|
|
||||||
attr Bad_Luefter expert 2_full
|
|
||||||
attr Bad_Luefter firmware 2.1
|
|
||||||
attr Bad_Luefter model HM-LC-Sw1PBU-FM
|
|
||||||
attr Bad_Luefter room CUL_HM
|
|
||||||
attr Bad_Luefter serialNr JEQ0099033
|
|
||||||
attr Bad_Luefter subType switch
|
|
||||||
attr Bad_Luefter webCmd statusRequest:toggle:on:off
|
|
||||||
attr Bad_Luefter room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define Arbeitszimmer_Bewegungsmelder CUL_HM 2F2A4B
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder IODev CUL_0
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder actCycle 000:20
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder actStatus alive
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder autoReadReg 4_reqStatus
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder expert 2_full
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder firmware 1.6
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder model HM-SEC-MDIR-2
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder room CUL_HM
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder serialNr LEQ0797237
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder subType motionDetector
|
|
||||||
attr Arbeitszimmer_Bewegungsmelder room Homekit
|
|
||||||
|
|
||||||
|
|
||||||
define ActionDetector CUL_HM 000000
|
|
||||||
attr ActionDetector event-on-change-reading .*
|
|
||||||
attr ActionDetector model ActionDetector
|
|
||||||
|
|
||||||
|
|
||||||
define MobileSteckdoseSchalter1 CUL_HM 453335
|
|
||||||
attr MobileSteckdoseSchalter1 IODev CUL_0
|
|
||||||
attr MobileSteckdoseSchalter1 actCycle 000:10
|
|
||||||
attr MobileSteckdoseSchalter1 actStatus dead
|
|
||||||
attr MobileSteckdoseSchalter1 autoReadReg 4_reqStatus
|
|
||||||
attr MobileSteckdoseSchalter1 expert 2_full
|
|
||||||
attr MobileSteckdoseSchalter1 firmware 1.6
|
|
||||||
attr MobileSteckdoseSchalter1 model HM-ES-PMSw1-Pl
|
|
||||||
attr MobileSteckdoseSchalter1 room CUL_HM
|
|
||||||
attr MobileSteckdoseSchalter1 serialNr NEQ0153825
|
|
||||||
attr MobileSteckdoseSchalter1 subType powerMeter
|
|
||||||
attr MobileSteckdoseSchalter1 webCmd getConfig:clear msgEvents
|
|
||||||
define MobileSteckdoseSchalter1_Sw CUL_HM 45333501
|
|
||||||
attr MobileSteckdoseSchalter1_Sw model HM-ES-PMSw1-Pl
|
|
||||||
attr MobileSteckdoseSchalter1_Sw peerIDs
|
|
||||||
define MobileSteckdoseSchalter1_Pwr CUL_HM 45333502
|
|
||||||
attr MobileSteckdoseSchalter1_Pwr model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter1_SenPwr CUL_HM 45333503
|
|
||||||
attr MobileSteckdoseSchalter1_SenPwr model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter1_SenI CUL_HM 45333504
|
|
||||||
attr MobileSteckdoseSchalter1_SenI model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter1_SenU CUL_HM 45333505
|
|
||||||
attr MobileSteckdoseSchalter1_SenU model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter1_SenF CUL_HM 45333506
|
|
||||||
attr MobileSteckdoseSchalter1_SenF model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter2 CUL_HM 338E72
|
|
||||||
attr MobileSteckdoseSchalter2 IODev CUL_0
|
|
||||||
attr MobileSteckdoseSchalter2 actCycle 000:10
|
|
||||||
attr MobileSteckdoseSchalter2 actStatus dead
|
|
||||||
attr MobileSteckdoseSchalter2 autoReadReg 4_reqStatus
|
|
||||||
attr MobileSteckdoseSchalter2 expert 2_full
|
|
||||||
attr MobileSteckdoseSchalter2 firmware 1.6
|
|
||||||
attr MobileSteckdoseSchalter2 model HM-ES-PMSw1-Pl
|
|
||||||
attr MobileSteckdoseSchalter2 room CUL_HM
|
|
||||||
attr MobileSteckdoseSchalter2 serialNr LEQ1345055
|
|
||||||
attr MobileSteckdoseSchalter2 subType powerMeter
|
|
||||||
attr MobileSteckdoseSchalter2 webCmd getConfig:clear msgEvents
|
|
||||||
define MobileSteckdoseSchalter2_Sw CUL_HM 338E7201
|
|
||||||
attr MobileSteckdoseSchalter2_Sw model HM-ES-PMSw1-Pl
|
|
||||||
attr MobileSteckdoseSchalter2_Sw peerIDs
|
|
||||||
define MobileSteckdoseSchalter2_Pwr CUL_HM 338E7202
|
|
||||||
attr MobileSteckdoseSchalter2_Pwr model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter2_SenPwr CUL_HM 338E7203
|
|
||||||
attr MobileSteckdoseSchalter2_SenPwr model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter2_SenI CUL_HM 338E7204
|
|
||||||
attr MobileSteckdoseSchalter2_SenI model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter2_SenU CUL_HM 338E7205
|
|
||||||
attr MobileSteckdoseSchalter2_SenU model HM-ES-PMSw1-Pl
|
|
||||||
define MobileSteckdoseSchalter2_SenF CUL_HM 338E7206
|
|
||||||
attr MobileSteckdoseSchalter2_SenF model HM-ES-PMSw1-Pl
|
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
# Add only entities here that are auto-discovered (not KNX devices)
|
# Add only entities here that are auto-discovered (not KNX devices)
|
||||||
|
|
||||||
#default_view:
|
|
||||||
# view: true
|
|
||||||
# icon: mdi:home
|
|
||||||
|
|
||||||
living_area:
|
living_area:
|
||||||
name: Wohnbereich
|
name: Wohnbereich
|
||||||
entities:
|
entities:
|
||||||
|
|
|
@ -1,337 +0,0 @@
|
||||||
import re
|
|
||||||
import os
|
|
||||||
from ruamel.yaml import YAML
|
|
||||||
|
|
||||||
yaml = YAML()
|
|
||||||
|
|
||||||
# -------------------------------------- put the config here -----------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
def get_config():
|
|
||||||
return {
|
|
||||||
'bedroom': {
|
|
||||||
'ir_host': 'bedroompi.fritz.box',
|
|
||||||
'media_player': 'media_player.bedroompi',
|
|
||||||
'group': 'group.bedroom',
|
|
||||||
|
|
||||||
'mapping': {
|
|
||||||
'btn_1': '[playlist] Good Morning',
|
|
||||||
'btn_2': '[playlist] Good Night Long',
|
|
||||||
'btn_3': '[playlist] Good Night',
|
|
||||||
|
|
||||||
'btn_4': '[playlist] Bar Classics',
|
|
||||||
'btn_5': '[playlist] Sentimental Moods',
|
|
||||||
'btn_6': '[playlist] Pop',
|
|
||||||
|
|
||||||
'btn_7': '[radio] B 5 aktuell',
|
|
||||||
'btn_8': '[radio] BR-Klassik',
|
|
||||||
'btn_9': '[playlist] http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3', # Klassik Radio
|
|
||||||
|
|
||||||
'key_numeric_star': [
|
|
||||||
*repeat_one_crossfade('media_player.bedroompi'),
|
|
||||||
service('media_player.play_media', 'media_player.bedroompi',
|
|
||||||
media_content_id='Foen', media_content_type='music'),
|
|
||||||
service('media_player.volume_set', 'media_player.bedroompi', volume_level=60),
|
|
||||||
],
|
|
||||||
'btn_0': '[radio] Bayern 3',
|
|
||||||
'key_numeric_pound': '[radio] Bayern 2',
|
|
||||||
|
|
||||||
'key_red': '[scene] schlafzimmer_stillen',
|
|
||||||
'key_green': '[scene] schlafzimmer_orange',
|
|
||||||
'key_yellow': '[scene] schlafzimmer_ganz_hell',
|
|
||||||
'key_blue': '[scene] nachtswennallelieberschlafen',
|
|
||||||
|
|
||||||
'key_tv': [service('script.turn_on', 'script.timed_sleep',
|
|
||||||
variables={'media_content_id': 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd', # Regen
|
|
||||||
'light_off_secs': 15 * 60,
|
|
||||||
'music_off_secs': 45 * 60,
|
|
||||||
'shuffle': 1,
|
|
||||||
})],
|
|
||||||
'key_video': [service('script.turn_on', 'script.timed_sleep',
|
|
||||||
variables={'media_content_id': 'Good Night',
|
|
||||||
'light_off_secs': 15 * 60,
|
|
||||||
'music_off_secs': 45 * 60,
|
|
||||||
'shuffle': 0,
|
|
||||||
})],
|
|
||||||
'key_music': [service('script.turn_on', 'script.timed_sleep',
|
|
||||||
variables={'media_content_id': 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd', # Regen
|
|
||||||
'light_off_secs': 5 * 60,
|
|
||||||
'music_off_secs': 20 * 60,
|
|
||||||
'shuffle': 1,
|
|
||||||
})],
|
|
||||||
'key_pictures': [service('script.turn_on', 'script.timed_sleep',
|
|
||||||
variables={'media_content_id': 'Good Night',
|
|
||||||
'light_off_secs': 5 * 60,
|
|
||||||
'music_off_secs': 20 * 60,
|
|
||||||
'shuffle': 0,
|
|
||||||
})],
|
|
||||||
|
|
||||||
'key_power': [ # Music & Lights off
|
|
||||||
service('media_player.media_pause', 'media_player.bedroompi'),
|
|
||||||
service('light.turn_off', 'group.bedroom'),
|
|
||||||
],
|
|
||||||
'key_ok': [ # Grosser Rollo zu, kleiner halb zu
|
|
||||||
service('cover.close_cover', 'cover.schlafzimmer_rollo_gross'),
|
|
||||||
service('cover_half.set_half', 'cover.schlafzimmer_rollo_klein'),
|
|
||||||
],
|
|
||||||
'key_mute': [service('light.turn_off', 'group.all_downstairs_but_bedroom_and_outside')],
|
|
||||||
'key_channel': [service('light.turn_off', 'group.all_downstairs_but_bedroom')],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'living_area': {
|
|
||||||
'ir_host': 'kitchenpi.fritz.box',
|
|
||||||
'media_player': 'media_player.kitchenpi',
|
|
||||||
'group': 'group.living_area',
|
|
||||||
|
|
||||||
'mapping': {
|
|
||||||
'btn_4': '[playlist] Bar Classics',
|
|
||||||
'btn_5': '[playlist] Sentimental Moods',
|
|
||||||
'btn_6': '[playlist] Pop',
|
|
||||||
|
|
||||||
'btn_7': '[radio] B 5 aktuell',
|
|
||||||
'btn_8': '[radio] BR-Klassik',
|
|
||||||
'btn_9': '[playlist] http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3', # Klassik Radio
|
|
||||||
|
|
||||||
'key_numeric_star': '[radio] Antenne Bayern',
|
|
||||||
'btn_0': '[radio] Bayern 3',
|
|
||||||
'key_numeric_pound': '[radio] Bayern 2',
|
|
||||||
|
|
||||||
'key_red': '[scene] wohnbereich_orange',
|
|
||||||
'key_green': '[scene] wohnbereich_grun',
|
|
||||||
'key_yellow': '[scene] wohnbereich_hell',
|
|
||||||
'key_blue': '[scene] wohnbereich_blau_grun',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'first_floor_dining_room': {
|
|
||||||
'ir_host': 'esszimmerradio.fritz.box',
|
|
||||||
'media_player': 'media_player.esszimmer',
|
|
||||||
'mapping': {
|
|
||||||
'btn_1': '[radio] Bayern 1',
|
|
||||||
'btn_2': '[radio] Bayern 2',
|
|
||||||
'btn_3': '[radio] BR Heimat',
|
|
||||||
'btn_4': '[radio] Bayern+',
|
|
||||||
'btn_5': '[radio] B 5 Aktuell',
|
|
||||||
'btn_6': '[radio] BR-Klassik',
|
|
||||||
'btn_7': '[playlist] Gesammelte Weihnachtslieder',
|
|
||||||
'btn_8': '[playlist] Harmonic Brass Christmas',
|
|
||||||
'btn_9': '[playlist] German Brass Christmas',
|
|
||||||
'key_numeric_star': '[playlist] Weihnachten mit den Wiener Sängerknaben',
|
|
||||||
'btn_0': '[playlist] Weihnachten mit den Wiener Sängerknaben',
|
|
||||||
'key_numeric_pound': '[playlist] SammlungGeorg',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'first_floor_living_room': {
|
|
||||||
'ir_host': 'musikserverWohnzimmerOben.fritz.box',
|
|
||||||
'media_player': 'media_player.wohnzimmer',
|
|
||||||
'mapping': {
|
|
||||||
'btn_1': '[radio] Bayern 1',
|
|
||||||
'btn_2': '[radio] Bayern 2',
|
|
||||||
'btn_3': '[radio] BR Heimat',
|
|
||||||
'btn_4': '[radio] Bayern+',
|
|
||||||
'btn_5': '[radio] B 5 Aktuell',
|
|
||||||
'btn_6': '[radio] BR-Klassik',
|
|
||||||
'btn_7': '[playlist] Gesammelte Weihnachtslieder',
|
|
||||||
'btn_8': '[playlist] Harmonic Brass Christmas',
|
|
||||||
'btn_9': '[playlist] German Brass Christmas',
|
|
||||||
'key_numeric_star': '[playlist] Weihnachten mit den Wiener Sängerknaben',
|
|
||||||
'btn_0': '[playlist] Weihnachten mit den Wiener Sängerknaben',
|
|
||||||
'key_numeric_pound': '[playlist] SammlungGeorg',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
description_regex = re.compile(r'\[\s*(.*)\s*\](.*)')
|
|
||||||
|
|
||||||
|
|
||||||
def split_description(d):
|
|
||||||
res = description_regex.match(d)
|
|
||||||
return res.group(1).strip(), res.group(2).strip()
|
|
||||||
|
|
||||||
|
|
||||||
def default_music_settings(media_player):
|
|
||||||
return [
|
|
||||||
service('media_player.shuffle_set', media_player, shuffle=False),
|
|
||||||
service('media_player.squeezebox_call_method', media_player, command='playlist repeat 0'),
|
|
||||||
service('media_player.squeezebox_call_method', media_player, command="playerpref transitionType 0"),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def repeat_one_crossfade(media_player):
|
|
||||||
return [
|
|
||||||
service('media_player.repeat_set', media_player, repeat='one'),
|
|
||||||
service('media_player.squeezebox_call_method', media_player, command="playerpref transitionType 1"),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def automation_from_config(ir_description):
|
|
||||||
ir_host = ir_description['ir_host']
|
|
||||||
|
|
||||||
result = []
|
|
||||||
for key, description in ir_description['mapping'].items():
|
|
||||||
automation = {'alias': f'IR {ir_host} {key}',
|
|
||||||
'trigger': ir_trigger(ir_host, key)}
|
|
||||||
if isinstance(description, list):
|
|
||||||
action = description
|
|
||||||
elif isinstance(description, str):
|
|
||||||
function, value = split_description(description)
|
|
||||||
if function == 'playlist':
|
|
||||||
media_player = ir_description['media_player']
|
|
||||||
action = [*default_music_settings(media_player),
|
|
||||||
service('media_player.play_media', media_player,
|
|
||||||
media_content_id=value, media_content_type='music')]
|
|
||||||
elif function == 'radio':
|
|
||||||
media_player = ir_description['media_player']
|
|
||||||
action = service('media_player.play_media', media_player,
|
|
||||||
media_content_id=value, media_content_type='channel')
|
|
||||||
elif function == 'scene':
|
|
||||||
action = service('scene.turn_on', 'scene.' + value)
|
|
||||||
elif function == 'timed_light_off':
|
|
||||||
group = ir_description['group']
|
|
||||||
action = service('light.turn_off', group, transition=str(60 * int(value)))
|
|
||||||
else:
|
|
||||||
raise ValueError("Invalid prefix " + function)
|
|
||||||
else:
|
|
||||||
raise ValueError("Invalid type for entry " + key)
|
|
||||||
|
|
||||||
automation['action'] = action
|
|
||||||
result.append(automation)
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
def ir_trigger(ir_host, button_name):
|
|
||||||
return {
|
|
||||||
'platform': 'event',
|
|
||||||
'event_type': 'ir_command_received',
|
|
||||||
'event_data': {
|
|
||||||
'button_name': button_name,
|
|
||||||
'repeat_counter': 0,
|
|
||||||
'host': ir_host,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def service(service_name, entity_id, **kwargs):
|
|
||||||
kwargs['entity_id'] = entity_id
|
|
||||||
return {
|
|
||||||
'service': service_name,
|
|
||||||
'data': kwargs
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def default_shutter_controls(device_group, ir_host):
|
|
||||||
"""Default rules for Hauppauge IR for Shutter control with up, down, left, right buttons"""
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Rollo auf',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_up'),
|
|
||||||
'action': service('cover.open_cover', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Rollo zu',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_down'),
|
|
||||||
'action': service('cover.close_cover', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Rollo halb',
|
|
||||||
'trigger': [ir_trigger(ir_host, 'key_left'), ir_trigger(ir_host, 'key_right')],
|
|
||||||
'action': service('cover_half.set_half', device_group),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def default_light_controls(device_group, ir_host):
|
|
||||||
"""Default light rules for Hauppauge IR for light dimming with channel up/down and light off with stop button"""
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Licht heller',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_channelup'),
|
|
||||||
'action': service('dimmer.dim', device_group, offset=30),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Licht dunkler',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_channeldown'),
|
|
||||||
'action': service('dimmer.dim', device_group, offset=-30),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Licht viel heller',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_menu'),
|
|
||||||
'action': service('dimmer.dim', device_group, offset=130),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Licht viel dunkler',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_stop'),
|
|
||||||
'action': service('dimmer.dim', device_group, offset=-130),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Licht aus',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_goto'),
|
|
||||||
'action': service('light.turn_off', device_group),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def default_music_controls(device_group, ir_host):
|
|
||||||
"""Default music control (play, pause, next) for Hauppauge IR"""
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Musik Play',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_play'),
|
|
||||||
'action': service('media_player.media_play_pause', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Musik Pause',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_pause'),
|
|
||||||
'action': service('media_player.turn_off', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Musik Next',
|
|
||||||
'trigger': [ir_trigger(ir_host, 'key_forward'), ir_trigger(ir_host, 'key_fastforward')],
|
|
||||||
'action': service('media_player.media_next_track', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Musik Prev',
|
|
||||||
'trigger': [ir_trigger(ir_host, 'key_previous'), ir_trigger(ir_host, 'key_rewind')],
|
|
||||||
'action': service('media_player.media_next_track', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Vol Up',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_volumeup'),
|
|
||||||
'action': service('media_player.volume_up', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Vol Down',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_volumedown'),
|
|
||||||
'action': service('media_player.volume_down', device_group),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Shuffle On',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_menu'),
|
|
||||||
'action': service('media_player.shuffle_set', device_group, shuffle=True),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'alias': f'IR {ir_host} Shuffle Off',
|
|
||||||
'trigger': ir_trigger(ir_host, 'key_exit'),
|
|
||||||
'action': service('media_player.shuffle_set', device_group, shuffle=False),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def create_rules(folder):
|
|
||||||
for name, data in get_config().items():
|
|
||||||
rules = []
|
|
||||||
rules += automation_from_config(data)
|
|
||||||
|
|
||||||
if 'group' in data:
|
|
||||||
rules += default_shutter_controls(data['group'], data['ir_host'])
|
|
||||||
rules += default_light_controls(data['group'], data['ir_host'])
|
|
||||||
if 'media_player' in data:
|
|
||||||
rules += default_music_controls(data['media_player'], data['ir_host'])
|
|
||||||
|
|
||||||
file_name = os.path.join(folder, "ir_" + name + '.yaml')
|
|
||||||
with open(file_name, 'w') as f:
|
|
||||||
f.write("# Dont' edit manually! this is generated!\n\n")
|
|
||||||
yaml.dump(rules, f)
|
|
|
@ -3,7 +3,6 @@ import argparse
|
||||||
from util import DeviceInfo, add_to_group, name_to_id
|
from util import DeviceInfo, add_to_group, name_to_id
|
||||||
from ruamel.yaml import YAML
|
from ruamel.yaml import YAML
|
||||||
import knx_conf as knx
|
import knx_conf as knx
|
||||||
from ir_automations import create_rules as create_automation_rules
|
|
||||||
|
|
||||||
script_path = os.path.dirname(os.path.realpath(__file__))
|
script_path = os.path.dirname(os.path.realpath(__file__))
|
||||||
yaml = YAML()
|
yaml = YAML()
|
||||||
|
@ -13,8 +12,8 @@ yaml.preserve_quotes = True
|
||||||
sensor_exclude_list = [
|
sensor_exclude_list = [
|
||||||
'sensor.fritz_box_7490_bytes_received',
|
'sensor.fritz_box_7490_bytes_received',
|
||||||
'sensor.fritz_box_7490_bytes_sent',
|
'sensor.fritz_box_7490_bytes_sent',
|
||||||
#'sensor.fritz_box_7490_kbyte_sec_received',
|
# 'sensor.fritz_box_7490_kbyte_sec_received',
|
||||||
#'sensor.fritz_box_7490_kbyte_sec_sent',
|
# 'sensor.fritz_box_7490_kbyte_sec_sent',
|
||||||
'sensor.fritz_box_7490_packets_received',
|
'sensor.fritz_box_7490_packets_received',
|
||||||
'sensor.fritz_box_7490_packets_sec_received',
|
'sensor.fritz_box_7490_packets_sec_received',
|
||||||
'sensor.fritz_box_7490_packets_sec_sent',
|
'sensor.fritz_box_7490_packets_sec_sent',
|
||||||
|
@ -165,7 +164,6 @@ def add_knx_devices(devices, groups):
|
||||||
return template_sensors
|
return template_sensors
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def add_meta_groups(groups):
|
def add_meta_groups(groups):
|
||||||
all_devices = set()
|
all_devices = set()
|
||||||
for group in groups.values():
|
for group in groups.values():
|
||||||
|
@ -256,11 +254,10 @@ def create_config(target_directory, development=False):
|
||||||
manual_config_dict = yaml.load(open(manual_config_path, encoding="utf-8"))
|
manual_config_dict = yaml.load(open(manual_config_path, encoding="utf-8"))
|
||||||
|
|
||||||
knx_conf = {
|
knx_conf = {
|
||||||
'rate_limit': 20,
|
#'tunneling': {
|
||||||
'tunneling': {
|
# 'host': '192.168.178.65',
|
||||||
'host': '192.168.178.65',
|
# 'port': 3671
|
||||||
'port': 3671
|
#}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
template_sensors = add_knx_devices(knx_conf, group_dict)
|
template_sensors = add_knx_devices(knx_conf, group_dict)
|
||||||
|
|
||||||
|
@ -298,8 +295,6 @@ def create_config(target_directory, development=False):
|
||||||
additional_file = 'secrets_development.yaml' if development else 'secrets_deploy.yaml'
|
additional_file = 'secrets_development.yaml' if development else 'secrets_deploy.yaml'
|
||||||
output.write(open(os.path.join(script_path, additional_file), 'r').read())
|
output.write(open(os.path.join(script_path, additional_file), 'r').read())
|
||||||
|
|
||||||
#create_automation_rules(os.path.join(target_directory, 'automations'))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
|
|
@ -8,7 +8,6 @@ mobile_app:
|
||||||
person:
|
person:
|
||||||
sun:
|
sun:
|
||||||
system_health:
|
system_health:
|
||||||
updater:
|
|
||||||
#logbook:
|
#logbook:
|
||||||
|
|
||||||
input_boolean:
|
input_boolean:
|
||||||
|
@ -155,94 +154,94 @@ switch:
|
||||||
name: esszimmer_oben_radio_steckdose
|
name: esszimmer_oben_radio_steckdose
|
||||||
host: esszimmerradio.fritz.box
|
host: esszimmerradio.fritz.box
|
||||||
num_power_plugs: 4
|
num_power_plugs: 4
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: PoolPumpeSteckdose
|
# name: PoolPumpeSteckdose
|
||||||
state_topic: "stat/poolpumpesteckdose/POWER"
|
# state_topic: "stat/poolpumpesteckdose/POWER"
|
||||||
command_topic: "cmnd/poolpumpesteckdose/POWER"
|
# command_topic: "cmnd/poolpumpesteckdose/POWER"
|
||||||
availability_topic: "tele/poolpumpesteckdose/LWT"
|
# availability_topic: "tele/poolpumpesteckdose/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: Tasmota01
|
# name: Tasmota01
|
||||||
state_topic: "stat/tasmota01/POWER"
|
# state_topic: "stat/tasmota01/POWER"
|
||||||
command_topic: "cmnd/tasmota01/POWER"
|
# command_topic: "cmnd/tasmota01/POWER"
|
||||||
availability_topic: "tele/tasmota01/LWT"
|
# availability_topic: "tele/tasmota01/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: Tasmota02
|
# name: Tasmota02
|
||||||
state_topic: "stat/tasmota02/POWER"
|
# state_topic: "stat/tasmota02/POWER"
|
||||||
command_topic: "cmnd/tasmota02/POWER"
|
# command_topic: "cmnd/tasmota02/POWER"
|
||||||
availability_topic: "tele/tasmota02/LWT"
|
# availability_topic: "tele/tasmota02/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: Tasmota03
|
# name: Tasmota03
|
||||||
state_topic: "stat/tasmota03/POWER"
|
# state_topic: "stat/tasmota03/POWER"
|
||||||
command_topic: "cmnd/tasmota03/POWER"
|
# command_topic: "cmnd/tasmota03/POWER"
|
||||||
availability_topic: "tele/tasmota03/LWT"
|
# availability_topic: "tele/tasmota03/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: Tasmota04
|
# name: Tasmota04
|
||||||
state_topic: "stat/tasmota04/POWER"
|
# state_topic: "stat/tasmota04/POWER"
|
||||||
command_topic: "cmnd/tasmota04/POWER"
|
# command_topic: "cmnd/tasmota04/POWER"
|
||||||
availability_topic: "tele/tasmota04/LWT"
|
# availability_topic: "tele/tasmota04/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: Tasmota05
|
# name: Tasmota05
|
||||||
state_topic: "stat/tasmota05/POWER"
|
# state_topic: "stat/tasmota05/POWER"
|
||||||
command_topic: "cmnd/tasmota05/POWER"
|
# command_topic: "cmnd/tasmota05/POWER"
|
||||||
availability_topic: "tele/tasmota05/LWT"
|
# availability_topic: "tele/tasmota05/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: Tasmota06
|
# name: Tasmota06
|
||||||
state_topic: "stat/tasmota06/POWER"
|
# state_topic: "stat/tasmota06/POWER"
|
||||||
command_topic: "cmnd/tasmota06/POWER"
|
# command_topic: "cmnd/tasmota06/POWER"
|
||||||
availability_topic: "tele/tasmota06/LWT"
|
# availability_topic: "tele/tasmota06/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
- platform: mqtt
|
# - platform: mqtt
|
||||||
name: Tasmota07
|
# name: Tasmota07
|
||||||
state_topic: "stat/tasmota07/POWER"
|
# state_topic: "stat/tasmota07/POWER"
|
||||||
command_topic: "cmnd/tasmota07/POWER"
|
# command_topic: "cmnd/tasmota07/POWER"
|
||||||
availability_topic: "tele/tasmota07/LWT"
|
# availability_topic: "tele/tasmota07/LWT"
|
||||||
qos: 1
|
# qos: 1
|
||||||
payload_on: "ON"
|
# payload_on: "ON"
|
||||||
payload_off: "OFF"
|
# payload_off: "OFF"
|
||||||
payload_available: "Online"
|
# payload_available: "Online"
|
||||||
payload_not_available: "Offline"
|
# payload_not_available: "Offline"
|
||||||
retain: false
|
# retain: false
|
||||||
|
|
||||||
long_click:
|
long_click:
|
||||||
duration: 0.6
|
duration: 0.6
|
||||||
|
@ -479,9 +478,9 @@ homematic:
|
||||||
username: homeassistant
|
username: homeassistant
|
||||||
password: !secret homematic_pw
|
password: !secret homematic_pw
|
||||||
|
|
||||||
zwave:
|
#zwave:
|
||||||
usb_path: /dev/serial/by-id/usb-0658_0200-if00
|
# usb_path: /dev/serial/by-id/usb-0658_0200-if00
|
||||||
network_key: "0xE0, 0x64, 0x50, 0x55, 0x20, 0x63, 0xC7, 0x05, 0x62, 0xD3, 0xEA, 0x91, 0x87, 0xE0, 0x1E, 0x74"
|
# network_key: "0xE0, 0x64, 0x50, 0x55, 0x20, 0x63, 0xC7, 0x05, 0x62, 0xD3, 0xEA, 0x91, 0x87, 0xE0, 0x1E, 0x74"
|
||||||
|
|
||||||
|
|
||||||
sysdweb:
|
sysdweb:
|
||||||
|
@ -549,13 +548,6 @@ media_player:
|
||||||
- platform: squeezebox_telnet
|
- platform: squeezebox_telnet
|
||||||
host: musikserverWohnzimmerOben.fritz.box
|
host: musikserverWohnzimmerOben.fritz.box
|
||||||
|
|
||||||
# set up via frontend :(
|
|
||||||
#vacuum:
|
|
||||||
# - platform: xiaomi_miio
|
|
||||||
# host: vacuum.fritz.box
|
|
||||||
# token: !secret vacuum_token
|
|
||||||
|
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: mqtt
|
- platform: mqtt
|
||||||
state_topic: 'monitor/kitchen/martin_handy'
|
state_topic: 'monitor/kitchen/martin_handy'
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -87,10 +87,12 @@ export class RoomGlanceCard extends LitElement {
|
||||||
return html`
|
return html`
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="${buttonCfg.icon || "mdi:checkbox-blank"}"
|
icon="${buttonCfg.icon || "mdi:checkbox-blank"}"
|
||||||
style="color: ${buttonCfg.color || ""};"
|
|
||||||
title="${buttonCfg.name}"
|
title="${buttonCfg.name}"
|
||||||
@click=${this.serviceHandler("scene", "turn_on", {entity_id: buttonCfg.scene})}
|
@click=${this.serviceHandler("scene", "turn_on", {entity_id: buttonCfg.scene})}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon style="color: ${buttonCfg.color || ""};"
|
||||||
|
icon="${buttonCfg.icon || "mdi:checkbox-blank"}"></ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,18 +101,24 @@ export class RoomGlanceCard extends LitElement {
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="mdi:close-circle"
|
icon="mdi:close-circle"
|
||||||
@click=${this.serviceHandler("light", "turn_off")}
|
@click=${this.serviceHandler("light", "turn_off")}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="mdi:close-circle"></ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
|
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="mdi:chevron-up"
|
icon="mdi:chevron-up"
|
||||||
title="Heller"
|
title="Heller"
|
||||||
@click=${this.serviceHandler("dimmer", "dim", {offset: 30})}
|
@click=${this.serviceHandler("dimmer", "dim", {offset: 30})}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="mdi:chevron-up"></ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="mdi:chevron-down"
|
icon="mdi:chevron-down"
|
||||||
title="Dunkler"
|
title="Dunkler"
|
||||||
@click=${this.serviceHandler("dimmer", "dim", {offset: -30})}
|
@click=${this.serviceHandler("dimmer", "dim", {offset: -30})}
|
||||||
></ha-icon-button>`;
|
>
|
||||||
|
<ha-icon icon="mdi:chevron-down"></ha-icon>
|
||||||
|
</ha-icon-button>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderCoverControl() {
|
private renderCoverControl() {
|
||||||
|
@ -118,19 +126,27 @@ export class RoomGlanceCard extends LitElement {
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:menu"
|
icon="hass:menu"
|
||||||
@click=${this.serviceHandler("cover_half", "set_half")}
|
@click=${this.serviceHandler("cover_half", "set_half")}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:menu"></ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-up"
|
icon="hass:arrow-up"
|
||||||
@click=${this.serviceHandler("cover", "open_cover")}
|
@click=${this.serviceHandler("cover", "open_cover")}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-up"></ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:stop"
|
icon="hass:stop"
|
||||||
@click=${this.serviceHandler("cover", "stop_cover")}
|
@click=${this.serviceHandler("cover", "stop_cover")}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:stop"></ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-down"
|
icon="hass:arrow-down"
|
||||||
@click=${this.serviceHandler("cover", "close_cover")}
|
@click=${this.serviceHandler("cover", "close_cover")}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-down"></ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,9 +243,7 @@ export class RoomGlanceCard extends LitElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
ha-icon {
|
ha-icon {
|
||||||
cursor: pointer;
|
height: auto;
|
||||||
padding: 8px;
|
|
||||||
color: #a9a9a9;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ha-icon.state-on {
|
ha-icon.state-on {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
const i=new WeakMap,n=t=>"function"==typeof t&&i.has(t),r=void 0!==window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,o=(t,e,s=null)=>{for(;e!==s;){const s=e.nextSibling;t.removeChild(e),e=s}},a={},l={},h=`{{lit-${String(Math.random()).slice(2)}}}`,c=`\x3c!--${h}--\x3e`,p=new RegExp(`${h}|${c}`),d="$lit$";class u{constructor(t,e){this.parts=[],this.element=e;const s=[],i=[],n=document.createTreeWalker(e.content,133,null,!1);let r=0,o=-1,a=0;const{strings:l,values:{length:c}}=t;for(;a<c;){const t=n.nextNode();if(null!==t){if(o++,1===t.nodeType){if(t.hasAttributes()){const e=t.attributes,{length:s}=e;let i=0;for(let t=0;t<s;t++)_(e[t].name,d)&&i++;for(;i-- >0;){const e=l[a],s=y.exec(e)[2],i=s.toLowerCase()+d,n=t.getAttribute(i);t.removeAttribute(i);const r=n.split(p);this.parts.push({type:"attribute",index:o,name:s,strings:r}),a+=r.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),n.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(h)>=0){const i=t.parentNode,n=e.split(p),r=n.length-1;for(let e=0;e<r;e++){let s,r=n[e];if(""===r)s=m();else{const t=y.exec(r);null!==t&&_(t[2],d)&&(r=r.slice(0,t.index)+t[1]+t[2].slice(0,-d.length)+t[3]),s=document.createTextNode(r)}i.insertBefore(s,t),this.parts.push({type:"node",index:++o})}""===n[r]?(i.insertBefore(m(),t),s.push(t)):t.data=n[r],a+=r}}else if(8===t.nodeType)if(t.data===h){const e=t.parentNode;null!==t.previousSibling&&o!==r||(o++,e.insertBefore(m(),t)),r=o,this.parts.push({type:"node",index:o}),null===t.nextSibling?t.data="":(s.push(t),o--),a++}else{let e=-1;for(;-1!==(e=t.data.indexOf(h,e+1));)this.parts.push({type:"node",index:-1}),a++}}else n.currentNode=i.pop()}for(const t of s)t.parentNode.removeChild(t)}}const _=(t,e)=>{const s=t.length-e.length;return s>=0&&t.slice(s)===e},f=t=>-1!==t.index,m=()=>document.createComment(""),y=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=\/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;
|
const i=new WeakMap,n=t=>"function"==typeof t&&i.has(t),r=void 0!==window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,o=(t,e,s=null)=>{for(;e!==s;){const s=e.nextSibling;t.removeChild(e),e=s}},a={},l={},h=`{{lit-${String(Math.random()).slice(2)}}}`,c=`\x3c!--${h}--\x3e`,p=new RegExp(`${h}|${c}`),u="$lit$";class d{constructor(t,e){this.parts=[],this.element=e;const s=[],i=[],n=document.createTreeWalker(e.content,133,null,!1);let r=0,o=-1,a=0;const{strings:l,values:{length:c}}=t;for(;a<c;){const t=n.nextNode();if(null!==t){if(o++,1===t.nodeType){if(t.hasAttributes()){const e=t.attributes,{length:s}=e;let i=0;for(let t=0;t<s;t++)_(e[t].name,u)&&i++;for(;i-- >0;){const e=l[a],s=g.exec(e)[2],i=s.toLowerCase()+u,n=t.getAttribute(i);t.removeAttribute(i);const r=n.split(p);this.parts.push({type:"attribute",index:o,name:s,strings:r}),a+=r.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),n.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(h)>=0){const i=t.parentNode,n=e.split(p),r=n.length-1;for(let e=0;e<r;e++){let s,r=n[e];if(""===r)s=m();else{const t=g.exec(r);null!==t&&_(t[2],u)&&(r=r.slice(0,t.index)+t[1]+t[2].slice(0,-u.length)+t[3]),s=document.createTextNode(r)}i.insertBefore(s,t),this.parts.push({type:"node",index:++o})}""===n[r]?(i.insertBefore(m(),t),s.push(t)):t.data=n[r],a+=r}}else if(8===t.nodeType)if(t.data===h){const e=t.parentNode;null!==t.previousSibling&&o!==r||(o++,e.insertBefore(m(),t)),r=o,this.parts.push({type:"node",index:o}),null===t.nextSibling?t.data="":(s.push(t),o--),a++}else{let e=-1;for(;-1!==(e=t.data.indexOf(h,e+1));)this.parts.push({type:"node",index:-1}),a++}}else n.currentNode=i.pop()}for(const t of s)t.parentNode.removeChild(t)}}const _=(t,e)=>{const s=t.length-e.length;return s>=0&&t.slice(s)===e},f=t=>-1!==t.index,m=()=>document.createComment(""),g=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=\/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -26,7 +26,7 @@ const i=new WeakMap,n=t=>"function"==typeof t&&i.has(t),r=void 0!==window.custom
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
class g{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this.options=s}update(t){let e=0;for(const s of this.__parts)void 0!==s&&s.setValue(t[e]),e++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const t=r?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],s=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let n,o=0,a=0,l=i.nextNode();for(;o<s.length;)if(n=s[o],f(n)){for(;a<n.index;)a++,"TEMPLATE"===l.nodeName&&(e.push(l),i.currentNode=l.content),null===(l=i.nextNode())&&(i.currentNode=e.pop(),l=i.nextNode());if("node"===n.type){const t=this.processor.handleTextExpression(this.options);t.insertAfterNode(l.previousSibling),this.__parts.push(t)}else this.__parts.push(...this.processor.handleAttributeExpressions(l,n.name,n.strings,this.options));o++}else this.__parts.push(void 0),o++;return r&&(document.adoptNode(t),customElements.upgrade(t)),t}}
|
class y{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this.options=s}update(t){let e=0;for(const s of this.__parts)void 0!==s&&s.setValue(t[e]),e++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const t=r?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],s=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let n,o=0,a=0,l=i.nextNode();for(;o<s.length;)if(n=s[o],f(n)){for(;a<n.index;)a++,"TEMPLATE"===l.nodeName&&(e.push(l),i.currentNode=l.content),null===(l=i.nextNode())&&(i.currentNode=e.pop(),l=i.nextNode());if("node"===n.type){const t=this.processor.handleTextExpression(this.options);t.insertAfterNode(l.previousSibling),this.__parts.push(t)}else this.__parts.push(...this.processor.handleAttributeExpressions(l,n.name,n.strings,this.options));o++}else this.__parts.push(void 0),o++;return r&&(document.adoptNode(t),customElements.upgrade(t)),t}}
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -39,7 +39,7 @@ class g{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this
|
||||||
* Code distributed by Google as part of the polymer project is also
|
* Code distributed by Google as part of the polymer project is also
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/class v{constructor(t,e,s,i){this.strings=t,this.values=e,this.type=s,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",s=!1;for(let i=0;i<t;i++){const t=this.strings[i],n=t.lastIndexOf("\x3c!--");s=(n>-1||s)&&-1===t.indexOf("--\x3e",n+1);const r=y.exec(t);e+=null===r?t+(s?h:c):t.substr(0,r.index)+r[1]+r[2]+d+r[3]+h}return e+=this.strings[t]}getTemplateElement(){const t=document.createElement("template");return t.innerHTML=this.getHTML(),t}}
|
*/class v{constructor(t,e,s,i){this.strings=t,this.values=e,this.type=s,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",s=!1;for(let i=0;i<t;i++){const t=this.strings[i],n=t.lastIndexOf("\x3c!--");s=(n>-1||s)&&-1===t.indexOf("--\x3e",n+1);const r=g.exec(t);e+=null===r?t+(s?h:c):t.substr(0,r.index)+r[1]+r[2]+u+r[3]+h}return e+=this.strings[t]}getTemplateElement(){const t=document.createElement("template");return t.innerHTML=this.getHTML(),t}}
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -53,7 +53,7 @@ class g{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class w{constructor(t,e,s){this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(let t=0;t<s.length-1;t++)this.parts[t]=this._createPart()}_createPart(){return new P(this)}_getValue(){const t=this.strings,e=t.length-1;let s="";for(let i=0;i<e;i++){s+=t[i];const e=this.parts[i];if(void 0!==e){const t=e.value;if(S(t)||!b(t))s+="string"==typeof t?t:String(t);else for(const e of t)s+="string"==typeof e?e:String(e)}}return s+=t[e]}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class P{constructor(t){this.value=void 0,this.committer=t}setValue(t){t===a||S(t)&&t===this.value||(this.value=t,n(t)||(this.committer.dirty=!0))}commit(){for(;n(this.value);){const t=this.value;this.value=a,t(this)}this.value!==a&&this.committer.commit()}}class C{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild(m()),this.endNode=t.appendChild(m())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=m()),t.__insert(this.endNode=m())}insertAfterPart(t){t.__insert(this.startNode=m()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}const t=this.__pendingValue;t!==a&&(S(t)?t!==this.value&&this.__commitText(t):t instanceof v?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):b(t)?this.__commitIterable(t):t===l?(this.value=l,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const e=this.startNode.nextSibling;t=null==t?"":t,e===this.endNode.previousSibling&&3===e.nodeType?e.data=t:this.__commitNode(document.createTextNode("string"==typeof t?t:String(t))),this.value=t}__commitTemplateResult(t){const e=this.options.templateFactory(t);if(this.value instanceof g&&this.value.template===e)this.value.update(t.values);else{const s=new g(e,t.processor,this.options),i=s._clone();s.update(t.values),this.__commitNode(i),this.value=s}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const e=this.value;let s,i=0;for(const n of t)void 0===(s=e[i])&&(s=new C(this.options),e.push(s),0===i?s.appendIntoPart(this):s.insertAfterPart(e[i-1])),s.setValue(n),s.commit(),i++;i<e.length&&(e.length=i,this.clear(s&&s.endNode))}clear(t=this.startNode){o(this.startNode.parentNode,t.nextSibling,this.endNode)}}class x{constructor(t,e,s){if(this.value=void 0,this.__pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=a}}class O extends w{constructor(t,e,s){super(t,e,s),this.single=2===s.length&&""===s[0]&&""===s[1]}_createPart(){return new T(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class T extends P{}let N=!1;try{const t={get capture(){return N=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}class A{constructor(t,e,s){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this.__boundHandleEvent=t=>this.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=this.__pendingValue,e=this.value,s=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||s);s&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=j(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=a}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const j=t=>t&&(N?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);
|
const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class w{constructor(t,e,s){this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(let t=0;t<s.length-1;t++)this.parts[t]=this._createPart()}_createPart(){return new P(this)}_getValue(){const t=this.strings,e=t.length-1;let s="";for(let i=0;i<e;i++){s+=t[i];const e=this.parts[i];if(void 0!==e){const t=e.value;if(S(t)||!b(t))s+="string"==typeof t?t:String(t);else for(const e of t)s+="string"==typeof e?e:String(e)}}return s+=t[e]}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class P{constructor(t){this.value=void 0,this.committer=t}setValue(t){t===a||S(t)&&t===this.value||(this.value=t,n(t)||(this.committer.dirty=!0))}commit(){for(;n(this.value);){const t=this.value;this.value=a,t(this)}this.value!==a&&this.committer.commit()}}class C{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild(m()),this.endNode=t.appendChild(m())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=m()),t.__insert(this.endNode=m())}insertAfterPart(t){t.__insert(this.startNode=m()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}const t=this.__pendingValue;t!==a&&(S(t)?t!==this.value&&this.__commitText(t):t instanceof v?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):b(t)?this.__commitIterable(t):t===l?(this.value=l,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const e=this.startNode.nextSibling;t=null==t?"":t,e===this.endNode.previousSibling&&3===e.nodeType?e.data=t:this.__commitNode(document.createTextNode("string"==typeof t?t:String(t))),this.value=t}__commitTemplateResult(t){const e=this.options.templateFactory(t);if(this.value instanceof y&&this.value.template===e)this.value.update(t.values);else{const s=new y(e,t.processor,this.options),i=s._clone();s.update(t.values),this.__commitNode(i),this.value=s}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const e=this.value;let s,i=0;for(const n of t)void 0===(s=e[i])&&(s=new C(this.options),e.push(s),0===i?s.appendIntoPart(this):s.insertAfterPart(e[i-1])),s.setValue(n),s.commit(),i++;i<e.length&&(e.length=i,this.clear(s&&s.endNode))}clear(t=this.startNode){o(this.startNode.parentNode,t.nextSibling,this.endNode)}}class x{constructor(t,e,s){if(this.value=void 0,this.__pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=a}}class O extends w{constructor(t,e,s){super(t,e,s),this.single=2===s.length&&""===s[0]&&""===s[1]}_createPart(){return new T(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class T extends P{}let N=!1;try{const t={get capture(){return N=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}class A{constructor(t,e,s){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this.__boundHandleEvent=t=>this.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=this.__pendingValue,e=this.value,s=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||s);s&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=j(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=a}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const j=t=>t&&(N?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -79,7 +79,7 @@ const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isAr
|
||||||
* Code distributed by Google as part of the polymer project is also
|
* Code distributed by Google as part of the polymer project is also
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/function V(t){let e=k.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},k.set(t.type,e));let s=e.stringsArray.get(t.strings);if(void 0!==s)return s;const i=t.strings.join(h);return void 0===(s=e.keyString.get(i))&&(s=new u(t,t.getTemplateElement()),e.keyString.set(i,s)),e.stringsArray.set(t.strings,s),s}const k=new Map,M=new WeakMap;
|
*/function V(t){let e=k.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},k.set(t.type,e));let s=e.stringsArray.get(t.strings);if(void 0!==s)return s;const i=t.strings.join(h);return void 0===(s=e.keyString.get(i))&&(s=new d(t,t.getTemplateElement()),e.keyString.set(i,s)),e.stringsArray.set(t.strings,s),s}const k=new Map,M=new WeakMap;
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -120,7 +120,7 @@ const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isAr
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
const q=(t,e)=>`${t}--${e}`;let I=!0;void 0===window.ShadyCSS?I=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),I=!1);const H=t=>e=>{const s=q(e.type,t);let i=k.get(s);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},k.set(s,i));let n=i.stringsArray.get(e.strings);if(void 0!==n)return n;const r=e.strings.join(h);if(void 0===(n=i.keyString.get(r))){const s=e.getTemplateElement();I&&window.ShadyCSS.prepareTemplateDom(s,t),n=new u(e,s),i.keyString.set(r,n)}return i.stringsArray.set(e.strings,n),n},D=["html","svg"],L=new Set,B=(t,e,s)=>{L.add(s);const i=t.querySelectorAll("style"),{length:n}=i;if(0===n)return void window.ShadyCSS.prepareTemplateStyles(e.element,s);const r=document.createElement("style");for(let t=0;t<n;t++){const e=i[t];e.parentNode.removeChild(e),r.textContent+=e.textContent}(t=>{D.forEach(e=>{const s=k.get(q(e,t));void 0!==s&&s.keyString.forEach(t=>{const{element:{content:e}}=t,s=new Set;Array.from(e.querySelectorAll("style")).forEach(t=>{s.add(t)}),z(t,s)})})})(s);const o=e.element.content;!function(t,e,s=null){const{element:{content:i},parts:n}=t;if(null==s)return void i.appendChild(e);const r=document.createTreeWalker(i,U,null,!1);let o=$(n),a=0,l=-1;for(;r.nextNode();)for(l++,r.currentNode===s&&(a=F(e),s.parentNode.insertBefore(e,s));-1!==o&&n[o].index===l;){if(a>0){for(;-1!==o;)n[o].index+=a,o=$(n,o);return}o=$(n,o)}}(e,r,o.firstChild),window.ShadyCSS.prepareTemplateStyles(e.element,s);const a=o.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==a)t.insertBefore(a.cloneNode(!0),t.firstChild);else{o.insertBefore(r,o.firstChild);const t=new Set;t.add(r),z(e,t)}};
|
const q=(t,e)=>`${t}--${e}`;let I=!0;void 0===window.ShadyCSS?I=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),I=!1);const H=t=>e=>{const s=q(e.type,t);let i=k.get(s);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},k.set(s,i));let n=i.stringsArray.get(e.strings);if(void 0!==n)return n;const r=e.strings.join(h);if(void 0===(n=i.keyString.get(r))){const s=e.getTemplateElement();I&&window.ShadyCSS.prepareTemplateDom(s,t),n=new d(e,s),i.keyString.set(r,n)}return i.stringsArray.set(e.strings,n),n},D=["html","svg"],L=new Set,B=(t,e,s)=>{L.add(s);const i=t.querySelectorAll("style"),{length:n}=i;if(0===n)return void window.ShadyCSS.prepareTemplateStyles(e.element,s);const r=document.createElement("style");for(let t=0;t<n;t++){const e=i[t];e.parentNode.removeChild(e),r.textContent+=e.textContent}(t=>{D.forEach(e=>{const s=k.get(q(e,t));void 0!==s&&s.keyString.forEach(t=>{const{element:{content:e}}=t,s=new Set;Array.from(e.querySelectorAll("style")).forEach(t=>{s.add(t)}),z(t,s)})})})(s);const o=e.element.content;!function(t,e,s=null){const{element:{content:i},parts:n}=t;if(null==s)return void i.appendChild(e);const r=document.createTreeWalker(i,U,null,!1);let o=$(n),a=0,l=-1;for(;r.nextNode();)for(l++,r.currentNode===s&&(a=F(e),s.parentNode.insertBefore(e,s));-1!==o&&n[o].index===l;){if(a>0){for(;-1!==o;)n[o].index+=a,o=$(n,o);return}o=$(n,o)}}(e,r,o.firstChild),window.ShadyCSS.prepareTemplateStyles(e.element,s);const a=o.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==a)t.insertBefore(a.cloneNode(!0),t.firstChild);else{o.insertBefore(r,o.firstChild);const t=new Set;t.add(r),z(e,t)}};
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -162,7 +162,7 @@ const st=(t,e)=>"method"!==e.kind||!e.descriptor||"value"in e.descriptor?{kind:"
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
(window.litElementVersions||(window.litElementVersions=[])).push("2.0.1");const ot=t=>t.flat?t.flat(1/0):function t(e,s=[]){for(let i=0,n=e.length;i<n;i++){const n=e[i];Array.isArray(n)?t(n,s):s.push(n)}return s}(t);class at extends et{static finalize(){super.finalize(),this._styles=this.hasOwnProperty(JSCompiler_renameProperty("styles",this))?this._getUniqueStyles():this._styles||[]}static _getUniqueStyles(){const t=this.styles,e=[];if(Array.isArray(t)){ot(t).reduceRight((t,e)=>(t.add(e),t),new Set).forEach(t=>e.unshift(t))}else t&&e.push(t);return e}initialize(){super.initialize(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?rt?this.renderRoot.adoptedStyleSheets=t.map(t=>t.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map(t=>t.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){super.update(t);const e=this.render();e instanceof v&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)}))}render(){}}at.finalized=!0,at.render=(t,e,s)=>{const i=s.scopeName,n=M.has(e),r=I&&11===e.nodeType&&!!e.host&&t instanceof v,a=r&&!L.has(i),l=a?document.createDocumentFragment():e;if(((t,e,s)=>{let i=M.get(e);void 0===i&&(o(e,e.firstChild),M.set(e,i=new C(Object.assign({templateFactory:V},s))),i.appendInto(e)),i.setValue(t),i.commit()})(t,l,Object.assign({templateFactory:H(i)},s)),a){const t=M.get(l);M.delete(l),t.value instanceof g&&B(l,t.value.template,i),o(e,e.firstChild),e.appendChild(l),M.set(e,t)}!n&&r&&window.ShadyCSS.styleElement(e.host)};const lt=(t,e)=>0!=(t.attributes.supported_features&e);class ht{constructor(t,e){this.hass=t,this.stateObj=e,this._attr=e.attributes,this._feat=this._attr.supported_features}get isFullyOpen(){return void 0!==this._attr.current_position?100===this._attr.current_position:"open"===this.stateObj.state}get isFullyClosed(){return void 0!==this._attr.current_position?0===this._attr.current_position:"closed"===this.stateObj.state}get isFullyOpenTilt(){return 100===this._attr.current_tilt_position}get isFullyClosedTilt(){return 0===this._attr.current_tilt_position}get isOpening(){return"opening"===this.stateObj.state}get isClosing(){return"closing"===this.stateObj.state}get supportsOpen(){return lt(this.stateObj,1)}get supportsClose(){return lt(this.stateObj,2)}get supportsSetPosition(){return lt(this.stateObj,4)}get supportsStop(){return lt(this.stateObj,8)}get supportsOpenTilt(){return lt(this.stateObj,16)}get supportsCloseTilt(){return lt(this.stateObj,32)}get supportsStopTilt(){return lt(this.stateObj,64)}get supportsSetTiltPosition(){return lt(this.stateObj,128)}get isTiltOnly(){const t=this.supportsOpen||this.supportsClose||this.supportsStop;return(this.supportsOpenTilt||this.supportsCloseTilt||this.supportsStopTilt)&&!t}openCover(){this.callService("open_cover")}closeCover(){this.callService("close_cover")}stopCover(){this.callService("stop_cover")}openCoverTilt(){this.callService("open_cover_tilt")}closeCoverTilt(){this.callService("close_cover_tilt")}stopCoverTilt(){this.callService("stop_cover_tilt")}setCoverPosition(t){this.callService("set_cover_position",{position:t})}setCoverTiltPosition(t){this.callService("set_cover_tilt_position",{tilt_position:t})}callService(t,e={}){e.entity_id=this.stateObj.entity_id,this.hass.callService("cover",t,e)}}s.d(e,"StateCardCustomCover",function(){return pt});var ct=function(t,e,s,i){var n,r=arguments.length,o=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,s,i);else for(var a=t.length-1;a>=0;a--)(n=t[a])&&(o=(r<3?n(o):r>3?n(e,s,o):n(e,s))||o);return r>3&&o&&Object.defineProperty(e,s,o),o};let pt=class extends at{constructor(){super(...arguments),this.inDialog=!1}get stateObj(){return this.hass&&this._config?this.hass.states[this._config.entity]:null}setConfig(t){if(!t||!t.entity)throw new Error("Invalid configuration");this._config=t}get entityObj(){if(this.hass&&this.stateObj)return new ht(this.hass,this.stateObj);throw new Error("Trying to get entityObj before setting hass & config")}static getCardSize(){return 1}stateInfoTemplate(){return R`
|
(window.litElementVersions||(window.litElementVersions=[])).push("2.0.1");const ot=t=>t.flat?t.flat(1/0):function t(e,s=[]){for(let i=0,n=e.length;i<n;i++){const n=e[i];Array.isArray(n)?t(n,s):s.push(n)}return s}(t);class at extends et{static finalize(){super.finalize(),this._styles=this.hasOwnProperty(JSCompiler_renameProperty("styles",this))?this._getUniqueStyles():this._styles||[]}static _getUniqueStyles(){const t=this.styles,e=[];if(Array.isArray(t)){ot(t).reduceRight((t,e)=>(t.add(e),t),new Set).forEach(t=>e.unshift(t))}else t&&e.push(t);return e}initialize(){super.initialize(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?rt?this.renderRoot.adoptedStyleSheets=t.map(t=>t.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map(t=>t.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){super.update(t);const e=this.render();e instanceof v&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)}))}render(){}}at.finalized=!0,at.render=(t,e,s)=>{const i=s.scopeName,n=M.has(e),r=I&&11===e.nodeType&&!!e.host&&t instanceof v,a=r&&!L.has(i),l=a?document.createDocumentFragment():e;if(((t,e,s)=>{let i=M.get(e);void 0===i&&(o(e,e.firstChild),M.set(e,i=new C(Object.assign({templateFactory:V},s))),i.appendInto(e)),i.setValue(t),i.commit()})(t,l,Object.assign({templateFactory:H(i)},s)),a){const t=M.get(l);M.delete(l),t.value instanceof y&&B(l,t.value.template,i),o(e,e.firstChild),e.appendChild(l),M.set(e,t)}!n&&r&&window.ShadyCSS.styleElement(e.host)};const lt=(t,e)=>0!=(t.attributes.supported_features&e);class ht{constructor(t,e){this.hass=t,this.stateObj=e,this._attr=e.attributes,this._feat=this._attr.supported_features}get isFullyOpen(){return void 0!==this._attr.current_position?100===this._attr.current_position:"open"===this.stateObj.state}get isFullyClosed(){return void 0!==this._attr.current_position?0===this._attr.current_position:"closed"===this.stateObj.state}get isFullyOpenTilt(){return 100===this._attr.current_tilt_position}get isFullyClosedTilt(){return 0===this._attr.current_tilt_position}get isOpening(){return"opening"===this.stateObj.state}get isClosing(){return"closing"===this.stateObj.state}get supportsOpen(){return lt(this.stateObj,1)}get supportsClose(){return lt(this.stateObj,2)}get supportsSetPosition(){return lt(this.stateObj,4)}get supportsStop(){return lt(this.stateObj,8)}get supportsOpenTilt(){return lt(this.stateObj,16)}get supportsCloseTilt(){return lt(this.stateObj,32)}get supportsStopTilt(){return lt(this.stateObj,64)}get supportsSetTiltPosition(){return lt(this.stateObj,128)}get isTiltOnly(){const t=this.supportsOpen||this.supportsClose||this.supportsStop;return(this.supportsOpenTilt||this.supportsCloseTilt||this.supportsStopTilt)&&!t}openCover(){this.callService("open_cover")}closeCover(){this.callService("close_cover")}stopCover(){this.callService("stop_cover")}openCoverTilt(){this.callService("open_cover_tilt")}closeCoverTilt(){this.callService("close_cover_tilt")}stopCoverTilt(){this.callService("stop_cover_tilt")}setCoverPosition(t){this.callService("set_cover_position",{position:t})}setCoverTiltPosition(t){this.callService("set_cover_tilt_position",{tilt_position:t})}callService(t,e={}){e.entity_id=this.stateObj.entity_id,this.hass.callService("cover",t,e)}}s.d(e,"StateCardCustomCover",function(){return pt});var ct=function(t,e,s,i){var n,r=arguments.length,o=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,s,i);else for(var a=t.length-1;a>=0;a--)(n=t[a])&&(o=(r<3?n(o):r>3?n(e,s,o):n(e,s))||o);return r>3&&o&&Object.defineProperty(e,s,o),o};let pt=class extends at{constructor(){super(...arguments),this.inDialog=!1}get stateObj(){return this.hass&&this._config?this.hass.states[this._config.entity]:null}setConfig(t){if(!t||!t.entity)throw new Error("Invalid configuration");this._config=t}get entityObj(){if(this.hass&&this.stateObj)return new ht(this.hass,this.stateObj);throw new Error("Trying to get entityObj before setting hass & config")}static getCardSize(){return 1}stateInfoTemplate(){return R`
|
||||||
State info template
|
State info template
|
||||||
`}render(){if(!this._config||!this.hass)return R``;const t=this.entityObj,e=this.hass.states[this._config.entity];return e?R`
|
`}render(){if(!this._config||!this.hass)return R``;const t=this.entityObj,e=this.hass.states[this._config.entity];return e?R`
|
||||||
<style include="iron-flex iron-flex-alignment"></style>
|
<style include="iron-flex iron-flex-alignment"></style>
|
||||||
|
@ -179,6 +179,10 @@ const st=(t,e)=>"method"!==e.kind||!e.descriptor||"value"in e.descriptor?{kind:"
|
||||||
--mdc-icon-size: 25px;
|
--mdc-icon-size: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ha-icon {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
[invisible] {
|
[invisible] {
|
||||||
visibility: hidden !important;
|
visibility: hidden !important;
|
||||||
}
|
}
|
||||||
|
@ -189,17 +193,23 @@ const st=(t,e)=>"method"!==e.kind||!e.descriptor||"value"in e.descriptor?{kind:"
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:menu"
|
icon="hass:menu"
|
||||||
@click=${this.onHalfOpenTap}
|
@click=${this.onHalfOpenTap}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:menu"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-up"
|
icon="hass:arrow-up"
|
||||||
@click=${this.onOpenTap}
|
@click=${this.onOpenTap}
|
||||||
.disabled="${this.computeOpenDisabled(e,this.entityObj)}"
|
.disabled="${this.computeOpenDisabled(e,this.entityObj)}"
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-up"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-down"
|
icon="hass:arrow-down"
|
||||||
@click=${this.onCloseTap}
|
@click=${this.onCloseTap}
|
||||||
.disabled="${this.computeClosedDisabled(e,t)}"
|
.disabled="${this.computeClosedDisabled(e,t)}"
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-down"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
</div>
|
</div>
|
||||||
</hui-generic-entity-row>
|
</hui-generic-entity-row>
|
||||||
`:R`
|
`:R`
|
||||||
|
|
|
@ -83,6 +83,10 @@ export class StateCardCustomCover extends LitElement {
|
||||||
--mdc-icon-size: 25px;
|
--mdc-icon-size: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ha-icon {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
[invisible] {
|
[invisible] {
|
||||||
visibility: hidden !important;
|
visibility: hidden !important;
|
||||||
}
|
}
|
||||||
|
@ -93,17 +97,23 @@ export class StateCardCustomCover extends LitElement {
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:menu"
|
icon="hass:menu"
|
||||||
@click=${this.onHalfOpenTap}
|
@click=${this.onHalfOpenTap}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:menu"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-up"
|
icon="hass:arrow-up"
|
||||||
@click=${this.onOpenTap}
|
@click=${this.onOpenTap}
|
||||||
.disabled="${this.computeOpenDisabled(stateObj, this.entityObj)}"
|
.disabled="${this.computeOpenDisabled(stateObj, this.entityObj)}"
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-up"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-down"
|
icon="hass:arrow-down"
|
||||||
@click=${this.onCloseTap}
|
@click=${this.onCloseTap}
|
||||||
.disabled="${this.computeClosedDisabled(stateObj, entityObj)}"
|
.disabled="${this.computeClosedDisabled(stateObj, entityObj)}"
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-down"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
</div>
|
</div>
|
||||||
</hui-generic-entity-row>
|
</hui-generic-entity-row>
|
||||||
`;
|
`;
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
martins_ipad:
|
||||||
|
hide_if_away: false
|
||||||
|
icon:
|
||||||
|
mac:
|
||||||
|
name: Martin’s iPad
|
||||||
|
picture:
|
||||||
|
track: true
|
|
@ -0,0 +1,416 @@
|
||||||
|
# Dont' edit manually! this is generated!
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- name: Gang Bewegungsmelder West Helligkeit
|
||||||
|
state_address: 0/0/42
|
||||||
|
type: illuminance
|
||||||
|
- name: Gang Bewegungsmelder Mitte Helligkeit
|
||||||
|
state_address: 0/0/45
|
||||||
|
type: illuminance
|
||||||
|
- name: Gang Bewegungsmelder Ost Helligkeit
|
||||||
|
state_address: 0/0/48
|
||||||
|
type: illuminance
|
||||||
|
- name: Esszimmer Temperatur
|
||||||
|
state_address: 0/0/6
|
||||||
|
type: temperature
|
||||||
|
- name: Treppenhaus Oben Temperatur
|
||||||
|
state_address: 0/0/5
|
||||||
|
type: temperature
|
||||||
|
- name: Eingangsbereich Temperatur
|
||||||
|
state_address: 0/0/24
|
||||||
|
type: temperature
|
||||||
|
- name: Wohnzimmer Gang Temperatur
|
||||||
|
state_address: 0/0/25
|
||||||
|
type: temperature
|
||||||
|
- name: Wohnzimmer Terassentür Temperatur
|
||||||
|
state_address: 0/0/26
|
||||||
|
type: temperature
|
||||||
|
- name: Vorratsraum Steckdose 1 Betriebsstunden
|
||||||
|
state_address: 0/5/62
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Vorratsraum Steckdose 1 Verbrauch mA
|
||||||
|
state_address: 0/5/65
|
||||||
|
type: DPT-9
|
||||||
|
- name: Vorratsraum Steckdose 1 Verbrauch Summe
|
||||||
|
state_address: 0/5/70
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Vorratsraum Steckdose 2 Betriebsstunden
|
||||||
|
state_address: 0/5/80
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Vorratsraum Steckdose 2 Verbrauch mA
|
||||||
|
state_address: 0/5/83
|
||||||
|
type: DPT-9
|
||||||
|
- name: Vorratsraum Steckdose 2 Verbrauch Summe
|
||||||
|
state_address: 0/5/88
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Gefrierschrank Betriebsstunden
|
||||||
|
state_address: 0/5/98
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Gefrierschrank Verbrauch mA
|
||||||
|
state_address: 0/5/101
|
||||||
|
type: DPT-9
|
||||||
|
- name: Gefrierschrank Verbrauch Summe
|
||||||
|
state_address: 0/5/106
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Trockner Betriebsstunden
|
||||||
|
state_address: 0/5/26
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Trockner Verbrauch mA
|
||||||
|
state_address: 0/5/29
|
||||||
|
type: DPT-9
|
||||||
|
- name: Trockner Verbrauch Summe
|
||||||
|
state_address: 0/5/34
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Waschmaschine Betriebsstunden
|
||||||
|
state_address: 0/5/8
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Waschmaschine Verbrauch mA
|
||||||
|
state_address: 0/5/11
|
||||||
|
type: DPT-9
|
||||||
|
- name: Waschmaschine Verbrauch Summe
|
||||||
|
state_address: 0/5/16
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Küche Steckdosen rechts Betriebsstunden
|
||||||
|
state_address: 0/4/98
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Küche Steckdosen rechts Verbrauch mA
|
||||||
|
state_address: 0/4/101
|
||||||
|
type: DPT-9
|
||||||
|
- name: Küche Steckdosen rechts Verbrauch Summe
|
||||||
|
state_address: 0/4/106
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Dunstabzug Betriebsstunden
|
||||||
|
state_address: 0/4/116
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Dunstabzug Verbrauch mA
|
||||||
|
state_address: 0/4/119
|
||||||
|
type: DPT-9
|
||||||
|
- name: Dunstabzug Verbrauch Summe
|
||||||
|
state_address: 0/4/124
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Spülmaschine Betriebsstunden
|
||||||
|
state_address: 0/4/8
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Spülmaschine Verbrauch mA
|
||||||
|
state_address: 0/4/11
|
||||||
|
type: DPT-9
|
||||||
|
- name: Backofen Betriebsstunden
|
||||||
|
state_address: 0/4/26
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Backofen Verbrauch mA
|
||||||
|
state_address: 0/4/29
|
||||||
|
type: DPT-9
|
||||||
|
- name: Backofen Verbrauch Summe
|
||||||
|
state_address: 0/4/34
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Herd Phase 1 Betriebsstunden
|
||||||
|
state_address: 0/4/44
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Herd Phase 1 Verbrauch mA
|
||||||
|
state_address: 0/4/47
|
||||||
|
type: DPT-9
|
||||||
|
- name: Herd Phase 1 Verbrauch Summe
|
||||||
|
state_address: 0/4/52
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Herd Phase 2 Betriebsstunden
|
||||||
|
state_address: 0/4/62
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Herd Phase 2 Verbrauch mA
|
||||||
|
state_address: 0/4/65
|
||||||
|
type: DPT-9
|
||||||
|
- name: Herd Phase 2 Verbrauch Summe
|
||||||
|
state_address: 0/4/70
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Herd Phase 3 Betriebsstunden
|
||||||
|
state_address: 0/4/80
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Herd Phase 3 Verbrauch mA
|
||||||
|
state_address: 0/4/83
|
||||||
|
type: DPT-9
|
||||||
|
- name: Herd Phase 3 Verbrauch Summe
|
||||||
|
state_address: 0/4/88
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Arbeitszimmer Steckdose Betriebsstunden
|
||||||
|
state_address: 0/4/134
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Arbeitszimmer Steckdose Verbrauch mA
|
||||||
|
state_address: 0/4/137
|
||||||
|
type: DPT-9
|
||||||
|
- name: Arbeitszimmer Steckdose Verbrauch Summe
|
||||||
|
state_address: 0/4/142
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Wohnzimmer Steckdose 1 Betriebsstunden
|
||||||
|
state_address: 0/4/152
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Wohnzimmer Steckdose 1 Verbrauch mA
|
||||||
|
state_address: 0/4/155
|
||||||
|
type: DPT-9
|
||||||
|
- name: Wohnzimmer Steckdose 1 Verbrauch Summe
|
||||||
|
state_address: 0/4/160
|
||||||
|
type: 4byte_unsigned
|
||||||
|
- name: Wohnzimmer Steckdose 2 Betriebsstunden
|
||||||
|
state_address: 0/4/170
|
||||||
|
type: 2byte_unsigned
|
||||||
|
- name: Wohnzimmer Steckdose 2 Verbrauch mA
|
||||||
|
state_address: 0/4/173
|
||||||
|
type: DPT-9
|
||||||
|
- name: Wohnzimmer Steckdose 2 Verbrauch Summe
|
||||||
|
state_address: 0/4/178
|
||||||
|
type: 4byte_unsigned
|
||||||
|
binary_sensor:
|
||||||
|
- name: Gang Bewegungsmelder Schlafzimmer
|
||||||
|
state_address: 0/0/40
|
||||||
|
device_class: motion
|
||||||
|
- name: Gang Bewegungsmelder Wohnzimmer
|
||||||
|
state_address: 0/0/41
|
||||||
|
device_class: motion
|
||||||
|
- name: Gang Bewegungsmelder Mitte
|
||||||
|
state_address: 0/0/44
|
||||||
|
device_class: motion
|
||||||
|
- name: Gang Bewegungsmelder Ost
|
||||||
|
state_address: 0/0/47
|
||||||
|
device_class: motion
|
||||||
|
light:
|
||||||
|
- name: Wohnzimmer Deckenlampe
|
||||||
|
address: 0/1/3
|
||||||
|
state_address: 0/1/8
|
||||||
|
brightness_address: 0/1/7
|
||||||
|
brightness_state_address: 0/1/9
|
||||||
|
- name: Esszimmer Deckenlampe West
|
||||||
|
address: 0/1/21
|
||||||
|
state_address: 0/1/26
|
||||||
|
brightness_address: 0/1/25
|
||||||
|
brightness_state_address: 0/1/27
|
||||||
|
- name: Esszimmer Deckenlampe Mitte
|
||||||
|
address: 0/1/39
|
||||||
|
state_address: 0/1/44
|
||||||
|
brightness_address: 0/1/43
|
||||||
|
brightness_state_address: 0/1/45
|
||||||
|
- name: Esszimmer Schrankleuchte
|
||||||
|
address: 0/2/39
|
||||||
|
state_address: 0/2/44
|
||||||
|
brightness_address: 0/2/43
|
||||||
|
brightness_state_address: 0/2/45
|
||||||
|
- name: Küche Deckenlampe
|
||||||
|
address: 0/1/57
|
||||||
|
state_address: 0/1/62
|
||||||
|
brightness_address: 0/1/61
|
||||||
|
brightness_state_address: 0/1/63
|
||||||
|
- name: Aussen Terassenlicht
|
||||||
|
address: 0/2/21
|
||||||
|
state_address: 0/2/26
|
||||||
|
brightness_address: 0/2/25
|
||||||
|
brightness_state_address: 0/2/27
|
||||||
|
- name: Gang Licht
|
||||||
|
address: 0/3/3
|
||||||
|
state_address: 0/3/8
|
||||||
|
brightness_address: 0/3/7
|
||||||
|
brightness_state_address: 0/3/9
|
||||||
|
- name: Bad Licht
|
||||||
|
address: 0/3/21
|
||||||
|
state_address: 0/3/26
|
||||||
|
brightness_address: 0/3/25
|
||||||
|
brightness_state_address: 0/3/27
|
||||||
|
- name: Gang Einganglicht
|
||||||
|
address: 0/3/39
|
||||||
|
state_address: 0/3/44
|
||||||
|
brightness_address: 0/3/43
|
||||||
|
brightness_state_address: 0/3/45
|
||||||
|
- name: Waschküche Licht
|
||||||
|
address: 0/3/57
|
||||||
|
state_address: 0/3/62
|
||||||
|
brightness_address: 0/3/61
|
||||||
|
brightness_state_address: 0/3/63
|
||||||
|
- name: Haustür Licht
|
||||||
|
address: 0/0/1
|
||||||
|
state_address: 0/0/2
|
||||||
|
- name: Haustür Licht NW
|
||||||
|
address: 0/0/3
|
||||||
|
state_address: 0/0/4
|
||||||
|
- name: Treppenhaus Licht
|
||||||
|
address: 0/5/180
|
||||||
|
state_address: 0/5/185
|
||||||
|
- name: Vorratsraum Licht
|
||||||
|
address: 0/5/36
|
||||||
|
state_address: 0/5/41
|
||||||
|
- name: Bewegungsmelder Mitte LED
|
||||||
|
address: 0/0/46
|
||||||
|
- name: Bewegungsmelder West LED
|
||||||
|
address: 0/0/43
|
||||||
|
- name: Bewegungsmelder Ost LED
|
||||||
|
address: 0/0/49
|
||||||
|
cover:
|
||||||
|
- name: Wohnzimmer Fenster Rollo
|
||||||
|
move_long_address: 0/7/10
|
||||||
|
move_short_address: 0/7/11
|
||||||
|
position_address: 0/7/28
|
||||||
|
position_state_address: 0/7/24
|
||||||
|
- name: Wohnzimmer Terrassentür Rollo
|
||||||
|
move_long_address: 0/7/36
|
||||||
|
move_short_address: 0/7/37
|
||||||
|
position_address: 0/7/54
|
||||||
|
position_state_address: 0/7/50
|
||||||
|
- name: Küche Fenster Rollo
|
||||||
|
move_long_address: 0/7/62
|
||||||
|
move_short_address: 0/7/63
|
||||||
|
position_address: 0/7/80
|
||||||
|
position_state_address: 0/7/76
|
||||||
|
- name: Esszimmer Fenster Rollo
|
||||||
|
move_long_address: 0/7/88
|
||||||
|
move_short_address: 0/7/89
|
||||||
|
position_address: 0/7/106
|
||||||
|
position_state_address: 0/7/102
|
||||||
|
switch:
|
||||||
|
- name: Klingel Oben
|
||||||
|
address: 0/0/15
|
||||||
|
state_address: 0/0/15
|
||||||
|
- name: Klingel Innentür
|
||||||
|
address: 0/5/108
|
||||||
|
state_address: 0/5/113
|
||||||
|
- name: Klingel Außentür
|
||||||
|
address: 0/5/126
|
||||||
|
state_address: 0/5/131
|
||||||
|
- name: Esszimmer Szene 0
|
||||||
|
address: 0/0/11
|
||||||
|
state_address: 0/0/11
|
||||||
|
- name: Esszimmer Szene 1
|
||||||
|
address: 0/0/12
|
||||||
|
state_address: 0/0/12
|
||||||
|
- name: Esszimmer Szene 2
|
||||||
|
address: 0/0/9
|
||||||
|
state_address: 0/0/9
|
||||||
|
- name: Esszimmer Szene 3
|
||||||
|
address: 0/0/10
|
||||||
|
state_address: 0/0/10
|
||||||
|
- name: Esszimmer Szene 4
|
||||||
|
address: 0/0/8
|
||||||
|
state_address: 0/0/8
|
||||||
|
- name: Esszimmer Szene 5
|
||||||
|
address: 0/0/19
|
||||||
|
state_address: 0/0/19
|
||||||
|
- name: Wohnzimmer Szene 0
|
||||||
|
address: 0/0/27
|
||||||
|
state_address: 0/0/27
|
||||||
|
- name: Wohnzimmer Szene 1
|
||||||
|
address: 0/0/28
|
||||||
|
state_address: 0/0/28
|
||||||
|
- name: Wohnzimmer Szene 2
|
||||||
|
address: 0/0/29
|
||||||
|
state_address: 0/0/29
|
||||||
|
- name: Wohnzimmer Szene 3
|
||||||
|
address: 0/0/30
|
||||||
|
state_address: 0/0/30
|
||||||
|
- name: Wohnzimmer Szene 4
|
||||||
|
address: 0/0/31
|
||||||
|
state_address: 0/0/31
|
||||||
|
- name: Wohnzimmer Szene 5
|
||||||
|
address: 0/0/32
|
||||||
|
state_address: 0/0/32
|
||||||
|
- name: Eingang Szene 2
|
||||||
|
address: 0/0/20
|
||||||
|
state_address: 0/0/20
|
||||||
|
- name: Eingang Szene 3
|
||||||
|
address: 0/0/21
|
||||||
|
state_address: 0/0/21
|
||||||
|
- name: Eingang Szene 4
|
||||||
|
address: 0/0/22
|
||||||
|
state_address: 0/0/22
|
||||||
|
- name: Eingang Szene 5
|
||||||
|
address: 0/0/23
|
||||||
|
state_address: 0/0/23
|
||||||
|
- name: Wohnzimmer Terrassentür Szene 2
|
||||||
|
address: 0/0/17
|
||||||
|
state_address: 0/0/17
|
||||||
|
- name: Wohnzimmer Terrassentür Szene 3
|
||||||
|
address: 0/0/18
|
||||||
|
state_address: 0/0/18
|
||||||
|
- name: alarm_led_links_normal
|
||||||
|
address: 0/0/7
|
||||||
|
state_address: 0/0/7
|
||||||
|
- name: alarm_led_links_ueberlagert
|
||||||
|
address: 0/0/13
|
||||||
|
state_address: 0/0/13
|
||||||
|
- name: alarm_led_rechts_normal
|
||||||
|
address: 0/0/14
|
||||||
|
state_address: 0/0/14
|
||||||
|
- name: alarm_led_rechts_ueberlagert
|
||||||
|
address: 0/0/16
|
||||||
|
state_address: 0/0/16
|
||||||
|
- name: wc_licht_taster
|
||||||
|
address: 0/5/198
|
||||||
|
state_address: 0/5/198
|
||||||
|
- name: Vorratsraum Steckdose 1
|
||||||
|
address: 0/5/54
|
||||||
|
state_address: 0/5/59
|
||||||
|
- name: Vorratsraum Steckdose 1 Betriebsstunden Reset
|
||||||
|
address: 0/5/63
|
||||||
|
- name: Vorratsraum Steckdose 2
|
||||||
|
address: 0/5/72
|
||||||
|
state_address: 0/5/77
|
||||||
|
- name: Vorratsraum Steckdose 2 Betriebsstunden Reset
|
||||||
|
address: 0/5/81
|
||||||
|
- name: Gefrierschrank
|
||||||
|
address: 0/5/90
|
||||||
|
state_address: 0/5/95
|
||||||
|
- name: Gefrierschrank Betriebsstunden Reset
|
||||||
|
address: 0/5/99
|
||||||
|
- name: Trockner
|
||||||
|
address: 0/5/18
|
||||||
|
state_address: 0/5/23
|
||||||
|
- name: Trockner Betriebsstunden Reset
|
||||||
|
address: 0/5/27
|
||||||
|
- name: Waschmaschine
|
||||||
|
address: 0/5/0
|
||||||
|
state_address: 0/5/5
|
||||||
|
- name: Waschmaschine Betriebsstunden Reset
|
||||||
|
address: 0/5/9
|
||||||
|
- name: Küche Steckdosen rechts
|
||||||
|
address: 0/4/90
|
||||||
|
state_address: 0/4/95
|
||||||
|
- name: Küche Steckdosen rechts Betriebsstunden Reset
|
||||||
|
address: 0/4/99
|
||||||
|
- name: Dunstabzug
|
||||||
|
address: 0/4/108
|
||||||
|
state_address: 0/4/113
|
||||||
|
- name: Dunstabzug Betriebsstunden Reset
|
||||||
|
address: 0/4/117
|
||||||
|
- name: Spülmaschine
|
||||||
|
address: 0/4/0
|
||||||
|
state_address: 0/4/5
|
||||||
|
- name: Spülmaschine Betriebsstunden Reset
|
||||||
|
address: 0/4/9
|
||||||
|
- name: Backofen
|
||||||
|
address: 0/4/18
|
||||||
|
state_address: 0/4/23
|
||||||
|
- name: Backofen Betriebsstunden Reset
|
||||||
|
address: 0/4/27
|
||||||
|
- name: Herd Phase 1
|
||||||
|
address: 0/4/36
|
||||||
|
state_address: 0/4/41
|
||||||
|
- name: Herd Phase 1 Betriebsstunden Reset
|
||||||
|
address: 0/4/45
|
||||||
|
- name: Herd Phase 2
|
||||||
|
address: 0/4/54
|
||||||
|
state_address: 0/4/59
|
||||||
|
- name: Herd Phase 2 Betriebsstunden Reset
|
||||||
|
address: 0/4/63
|
||||||
|
- name: Herd Phase 3
|
||||||
|
address: 0/4/72
|
||||||
|
state_address: 0/4/77
|
||||||
|
- name: Herd Phase 3 Betriebsstunden Reset
|
||||||
|
address: 0/4/81
|
||||||
|
- name: Arbeitszimmer Steckdose
|
||||||
|
address: 0/4/126
|
||||||
|
state_address: 0/4/131
|
||||||
|
- name: Arbeitszimmer Steckdose Betriebsstunden Reset
|
||||||
|
address: 0/4/135
|
||||||
|
- name: Wohnzimmer Steckdose 1
|
||||||
|
address: 0/4/144
|
||||||
|
state_address: 0/4/149
|
||||||
|
- name: Wohnzimmer Steckdose 1 Betriebsstunden Reset
|
||||||
|
address: 0/4/153
|
||||||
|
- name: Wohnzimmer Steckdose 2
|
||||||
|
address: 0/4/162
|
||||||
|
state_address: 0/4/167
|
||||||
|
- name: Wohnzimmer Steckdose 2 Betriebsstunden Reset
|
||||||
|
address: 0/4/171
|
|
@ -1,4 +1,5 @@
|
||||||
apps:
|
apps:
|
||||||
|
bad_luefter
|
||||||
ir_remote_kitchenpi
|
ir_remote_kitchenpi
|
||||||
ir_remote_oben
|
ir_remote_oben
|
||||||
ir_remote_schlafzimmer
|
ir_remote_schlafzimmer
|
||||||
|
|
|
@ -15,6 +15,11 @@ def timed_sleep_f(content, light_off_mins, music_off_mins, shuffle):
|
||||||
return f
|
return f
|
||||||
|
|
||||||
|
|
||||||
|
@state_trigger("switch.tasmota07 == 'on'")
|
||||||
|
def foen_auto_off():
|
||||||
|
timer.fon_timer.start(duration="00:45:00")
|
||||||
|
|
||||||
|
|
||||||
@event_trigger("ir_command_received", "host == 'bedroompi.fritz.box' and repeat_counter == 0")
|
@event_trigger("ir_command_received", "host == 'bedroompi.fritz.box' and repeat_counter == 0")
|
||||||
def ir_remote_schlafzimmer(button_name=None, **kwargs):
|
def ir_remote_schlafzimmer(button_name=None, **kwargs):
|
||||||
p = {'player': 'media_player.bedroompi'}
|
p = {'player': 'media_player.bedroompi'}
|
||||||
|
@ -36,7 +41,7 @@ def ir_remote_schlafzimmer(button_name=None, **kwargs):
|
||||||
|
|
||||||
'btn_0': radio_f('Bayern 3', **p),
|
'btn_0': radio_f('Bayern 3', **p),
|
||||||
'key_numeric_pound': radio_f('Bayern 2', **p),
|
'key_numeric_pound': radio_f('Bayern 2', **p),
|
||||||
'key_numeric_star': radio_f('Antenne Bayern', **player),
|
#'key_numeric_star': lambda: timer.fon_timer.start(duration="00:10:00"),
|
||||||
|
|
||||||
'key_red': scene_f('schlafzimmer_stillen'),
|
'key_red': scene_f('schlafzimmer_stillen'),
|
||||||
'key_green': scene_f('schlafzimmer_orange'),
|
'key_green': scene_f('schlafzimmer_orange'),
|
||||||
|
@ -51,9 +56,10 @@ def ir_remote_schlafzimmer(button_name=None, **kwargs):
|
||||||
if button_name in mapping:
|
if button_name in mapping:
|
||||||
mapping[button_name]()
|
mapping[button_name]()
|
||||||
elif button_name == "key_numeric_star": # Foen
|
elif button_name == "key_numeric_star": # Foen
|
||||||
repeat_one_crossfade(**p)
|
#repeat_one_crossfade(**p)
|
||||||
media_player.play_media(media_content_id='Foen', media_content_type='music', entity_id=p['player'])
|
#media_player.play_media(media_content_id='Foen', media_content_type='music', entity_id=p['player'])
|
||||||
media_player.volume_set(volume_level=60, entity_id=p['player'])
|
#media_player.volume_set(volume_level=60, entity_id=p['player'])
|
||||||
|
timer.fon_timer.start(duration="00:10:00")
|
||||||
elif button_name == 'key_power': # Music & Lights off
|
elif button_name == 'key_power': # Music & Lights off
|
||||||
media_player.media_pause(entity_id=p['player'])
|
media_player.media_pause(entity_id=p['player'])
|
||||||
light.turn_off(entity_id='group.bedroom')
|
light.turn_off(entity_id='group.bedroom')
|
||||||
|
|
|
@ -1,11 +1,30 @@
|
||||||
|
|
||||||
@event_trigger("homematic.keypress", "name == 'schlafzimmer_deckenlampe'")
|
|
||||||
def schlafzimmer_licht(channel=None, param=None):
|
|
||||||
up = (channel == 1)
|
|
||||||
long = (param == "PRESS_LONG")
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
# oben: kurz: orange szene
|
# oben: kurz: orange szene
|
||||||
# lang: helle szene
|
# lang: helle szene
|
||||||
# unten: kurz: off, but 1 min bedlight
|
# unten: kurz: off, but 1 min bedlight
|
||||||
# lang: rollos zu
|
# lang: rollos zu: nur tagsueber wenn komplett offen
|
||||||
|
@event_trigger("homematic.keypress", "name == 'schlafzimmer_deckenlampe'")
|
||||||
|
def schlafzimmer_licht(channel=None, param=None, **kwargs):
|
||||||
|
up = (channel == 2)
|
||||||
|
down = (channel == 1)
|
||||||
|
long = (param == "PRESS_LONG")
|
||||||
|
short = not long
|
||||||
|
log.info(f"Schlafzimmer knopf up {up}, long {long}")
|
||||||
|
|
||||||
|
if up and short:
|
||||||
|
scene.schlafzimmer_orange.turn_on()
|
||||||
|
elif up and long:
|
||||||
|
scene.schlafzimmer_ganz_hell.turn_on()
|
||||||
|
elif down and short:
|
||||||
|
light.turn_off(entity_id='group.bedroom')
|
||||||
|
scene.schlafzimmer_bettlicht_dunkel.turn_on()
|
||||||
|
task.wait_until(timeout=60)
|
||||||
|
light.bett_martin.turn_off()
|
||||||
|
light.bett_rebecca.turn_off()
|
||||||
|
elif down and long:
|
||||||
|
during_day = float(sun.sun.elevation) > 5
|
||||||
|
covers_fully_open = (int(cover.schlafzimmer_rollo_gross.current_position) > 95 or
|
||||||
|
int(cover.schlafzimmer_rollo_klein.current_position) > 95)
|
||||||
|
if during_day and covers_fully_open:
|
||||||
|
cover.schlafzimmer_rollo_gross.close_cover()
|
||||||
|
cover_half.set_half(entity_id="cover.schlafzimmer_rollo_klein")
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -12,7 +12,7 @@
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
const i=new WeakMap,n=t=>"function"==typeof t&&i.has(t),r=void 0!==window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,o=(t,e,s=null)=>{for(;e!==s;){const s=e.nextSibling;t.removeChild(e),e=s}},a={},l={},h=`{{lit-${String(Math.random()).slice(2)}}}`,c=`\x3c!--${h}--\x3e`,p=new RegExp(`${h}|${c}`),d="$lit$";class u{constructor(t,e){this.parts=[],this.element=e;const s=[],i=[],n=document.createTreeWalker(e.content,133,null,!1);let r=0,o=-1,a=0;const{strings:l,values:{length:c}}=t;for(;a<c;){const t=n.nextNode();if(null!==t){if(o++,1===t.nodeType){if(t.hasAttributes()){const e=t.attributes,{length:s}=e;let i=0;for(let t=0;t<s;t++)_(e[t].name,d)&&i++;for(;i-- >0;){const e=l[a],s=y.exec(e)[2],i=s.toLowerCase()+d,n=t.getAttribute(i);t.removeAttribute(i);const r=n.split(p);this.parts.push({type:"attribute",index:o,name:s,strings:r}),a+=r.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),n.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(h)>=0){const i=t.parentNode,n=e.split(p),r=n.length-1;for(let e=0;e<r;e++){let s,r=n[e];if(""===r)s=m();else{const t=y.exec(r);null!==t&&_(t[2],d)&&(r=r.slice(0,t.index)+t[1]+t[2].slice(0,-d.length)+t[3]),s=document.createTextNode(r)}i.insertBefore(s,t),this.parts.push({type:"node",index:++o})}""===n[r]?(i.insertBefore(m(),t),s.push(t)):t.data=n[r],a+=r}}else if(8===t.nodeType)if(t.data===h){const e=t.parentNode;null!==t.previousSibling&&o!==r||(o++,e.insertBefore(m(),t)),r=o,this.parts.push({type:"node",index:o}),null===t.nextSibling?t.data="":(s.push(t),o--),a++}else{let e=-1;for(;-1!==(e=t.data.indexOf(h,e+1));)this.parts.push({type:"node",index:-1}),a++}}else n.currentNode=i.pop()}for(const t of s)t.parentNode.removeChild(t)}}const _=(t,e)=>{const s=t.length-e.length;return s>=0&&t.slice(s)===e},f=t=>-1!==t.index,m=()=>document.createComment(""),y=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=\/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;
|
const i=new WeakMap,n=t=>"function"==typeof t&&i.has(t),r=void 0!==window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,o=(t,e,s=null)=>{for(;e!==s;){const s=e.nextSibling;t.removeChild(e),e=s}},a={},l={},h=`{{lit-${String(Math.random()).slice(2)}}}`,c=`\x3c!--${h}--\x3e`,p=new RegExp(`${h}|${c}`),u="$lit$";class d{constructor(t,e){this.parts=[],this.element=e;const s=[],i=[],n=document.createTreeWalker(e.content,133,null,!1);let r=0,o=-1,a=0;const{strings:l,values:{length:c}}=t;for(;a<c;){const t=n.nextNode();if(null!==t){if(o++,1===t.nodeType){if(t.hasAttributes()){const e=t.attributes,{length:s}=e;let i=0;for(let t=0;t<s;t++)_(e[t].name,u)&&i++;for(;i-- >0;){const e=l[a],s=g.exec(e)[2],i=s.toLowerCase()+u,n=t.getAttribute(i);t.removeAttribute(i);const r=n.split(p);this.parts.push({type:"attribute",index:o,name:s,strings:r}),a+=r.length-1}}"TEMPLATE"===t.tagName&&(i.push(t),n.currentNode=t.content)}else if(3===t.nodeType){const e=t.data;if(e.indexOf(h)>=0){const i=t.parentNode,n=e.split(p),r=n.length-1;for(let e=0;e<r;e++){let s,r=n[e];if(""===r)s=m();else{const t=g.exec(r);null!==t&&_(t[2],u)&&(r=r.slice(0,t.index)+t[1]+t[2].slice(0,-u.length)+t[3]),s=document.createTextNode(r)}i.insertBefore(s,t),this.parts.push({type:"node",index:++o})}""===n[r]?(i.insertBefore(m(),t),s.push(t)):t.data=n[r],a+=r}}else if(8===t.nodeType)if(t.data===h){const e=t.parentNode;null!==t.previousSibling&&o!==r||(o++,e.insertBefore(m(),t)),r=o,this.parts.push({type:"node",index:o}),null===t.nextSibling?t.data="":(s.push(t),o--),a++}else{let e=-1;for(;-1!==(e=t.data.indexOf(h,e+1));)this.parts.push({type:"node",index:-1}),a++}}else n.currentNode=i.pop()}for(const t of s)t.parentNode.removeChild(t)}}const _=(t,e)=>{const s=t.length-e.length;return s>=0&&t.slice(s)===e},f=t=>-1!==t.index,m=()=>document.createComment(""),g=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=\/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -26,7 +26,7 @@ const i=new WeakMap,n=t=>"function"==typeof t&&i.has(t),r=void 0!==window.custom
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
class g{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this.options=s}update(t){let e=0;for(const s of this.__parts)void 0!==s&&s.setValue(t[e]),e++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const t=r?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],s=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let n,o=0,a=0,l=i.nextNode();for(;o<s.length;)if(n=s[o],f(n)){for(;a<n.index;)a++,"TEMPLATE"===l.nodeName&&(e.push(l),i.currentNode=l.content),null===(l=i.nextNode())&&(i.currentNode=e.pop(),l=i.nextNode());if("node"===n.type){const t=this.processor.handleTextExpression(this.options);t.insertAfterNode(l.previousSibling),this.__parts.push(t)}else this.__parts.push(...this.processor.handleAttributeExpressions(l,n.name,n.strings,this.options));o++}else this.__parts.push(void 0),o++;return r&&(document.adoptNode(t),customElements.upgrade(t)),t}}
|
class y{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this.options=s}update(t){let e=0;for(const s of this.__parts)void 0!==s&&s.setValue(t[e]),e++;for(const t of this.__parts)void 0!==t&&t.commit()}_clone(){const t=r?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=[],s=this.template.parts,i=document.createTreeWalker(t,133,null,!1);let n,o=0,a=0,l=i.nextNode();for(;o<s.length;)if(n=s[o],f(n)){for(;a<n.index;)a++,"TEMPLATE"===l.nodeName&&(e.push(l),i.currentNode=l.content),null===(l=i.nextNode())&&(i.currentNode=e.pop(),l=i.nextNode());if("node"===n.type){const t=this.processor.handleTextExpression(this.options);t.insertAfterNode(l.previousSibling),this.__parts.push(t)}else this.__parts.push(...this.processor.handleAttributeExpressions(l,n.name,n.strings,this.options));o++}else this.__parts.push(void 0),o++;return r&&(document.adoptNode(t),customElements.upgrade(t)),t}}
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -39,7 +39,7 @@ class g{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this
|
||||||
* Code distributed by Google as part of the polymer project is also
|
* Code distributed by Google as part of the polymer project is also
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/class v{constructor(t,e,s,i){this.strings=t,this.values=e,this.type=s,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",s=!1;for(let i=0;i<t;i++){const t=this.strings[i],n=t.lastIndexOf("\x3c!--");s=(n>-1||s)&&-1===t.indexOf("--\x3e",n+1);const r=y.exec(t);e+=null===r?t+(s?h:c):t.substr(0,r.index)+r[1]+r[2]+d+r[3]+h}return e+=this.strings[t]}getTemplateElement(){const t=document.createElement("template");return t.innerHTML=this.getHTML(),t}}
|
*/class v{constructor(t,e,s,i){this.strings=t,this.values=e,this.type=s,this.processor=i}getHTML(){const t=this.strings.length-1;let e="",s=!1;for(let i=0;i<t;i++){const t=this.strings[i],n=t.lastIndexOf("\x3c!--");s=(n>-1||s)&&-1===t.indexOf("--\x3e",n+1);const r=g.exec(t);e+=null===r?t+(s?h:c):t.substr(0,r.index)+r[1]+r[2]+u+r[3]+h}return e+=this.strings[t]}getTemplateElement(){const t=document.createElement("template");return t.innerHTML=this.getHTML(),t}}
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -53,7 +53,7 @@ class g{constructor(t,e,s){this.__parts=[],this.template=t,this.processor=e,this
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class w{constructor(t,e,s){this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(let t=0;t<s.length-1;t++)this.parts[t]=this._createPart()}_createPart(){return new P(this)}_getValue(){const t=this.strings,e=t.length-1;let s="";for(let i=0;i<e;i++){s+=t[i];const e=this.parts[i];if(void 0!==e){const t=e.value;if(S(t)||!b(t))s+="string"==typeof t?t:String(t);else for(const e of t)s+="string"==typeof e?e:String(e)}}return s+=t[e]}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class P{constructor(t){this.value=void 0,this.committer=t}setValue(t){t===a||S(t)&&t===this.value||(this.value=t,n(t)||(this.committer.dirty=!0))}commit(){for(;n(this.value);){const t=this.value;this.value=a,t(this)}this.value!==a&&this.committer.commit()}}class C{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild(m()),this.endNode=t.appendChild(m())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=m()),t.__insert(this.endNode=m())}insertAfterPart(t){t.__insert(this.startNode=m()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}const t=this.__pendingValue;t!==a&&(S(t)?t!==this.value&&this.__commitText(t):t instanceof v?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):b(t)?this.__commitIterable(t):t===l?(this.value=l,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const e=this.startNode.nextSibling;t=null==t?"":t,e===this.endNode.previousSibling&&3===e.nodeType?e.data=t:this.__commitNode(document.createTextNode("string"==typeof t?t:String(t))),this.value=t}__commitTemplateResult(t){const e=this.options.templateFactory(t);if(this.value instanceof g&&this.value.template===e)this.value.update(t.values);else{const s=new g(e,t.processor,this.options),i=s._clone();s.update(t.values),this.__commitNode(i),this.value=s}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const e=this.value;let s,i=0;for(const n of t)void 0===(s=e[i])&&(s=new C(this.options),e.push(s),0===i?s.appendIntoPart(this):s.insertAfterPart(e[i-1])),s.setValue(n),s.commit(),i++;i<e.length&&(e.length=i,this.clear(s&&s.endNode))}clear(t=this.startNode){o(this.startNode.parentNode,t.nextSibling,this.endNode)}}class x{constructor(t,e,s){if(this.value=void 0,this.__pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=a}}class O extends w{constructor(t,e,s){super(t,e,s),this.single=2===s.length&&""===s[0]&&""===s[1]}_createPart(){return new T(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class T extends P{}let N=!1;try{const t={get capture(){return N=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}class A{constructor(t,e,s){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this.__boundHandleEvent=t=>this.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=this.__pendingValue,e=this.value,s=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||s);s&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=j(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=a}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const j=t=>t&&(N?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);
|
const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isArray(t)||!(!t||!t[Symbol.iterator]);class w{constructor(t,e,s){this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(let t=0;t<s.length-1;t++)this.parts[t]=this._createPart()}_createPart(){return new P(this)}_getValue(){const t=this.strings,e=t.length-1;let s="";for(let i=0;i<e;i++){s+=t[i];const e=this.parts[i];if(void 0!==e){const t=e.value;if(S(t)||!b(t))s+="string"==typeof t?t:String(t);else for(const e of t)s+="string"==typeof e?e:String(e)}}return s+=t[e]}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class P{constructor(t){this.value=void 0,this.committer=t}setValue(t){t===a||S(t)&&t===this.value||(this.value=t,n(t)||(this.committer.dirty=!0))}commit(){for(;n(this.value);){const t=this.value;this.value=a,t(this)}this.value!==a&&this.committer.commit()}}class C{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild(m()),this.endNode=t.appendChild(m())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=m()),t.__insert(this.endNode=m())}insertAfterPart(t){t.__insert(this.startNode=m()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}const t=this.__pendingValue;t!==a&&(S(t)?t!==this.value&&this.__commitText(t):t instanceof v?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):b(t)?this.__commitIterable(t):t===l?(this.value=l,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const e=this.startNode.nextSibling;t=null==t?"":t,e===this.endNode.previousSibling&&3===e.nodeType?e.data=t:this.__commitNode(document.createTextNode("string"==typeof t?t:String(t))),this.value=t}__commitTemplateResult(t){const e=this.options.templateFactory(t);if(this.value instanceof y&&this.value.template===e)this.value.update(t.values);else{const s=new y(e,t.processor,this.options),i=s._clone();s.update(t.values),this.__commitNode(i),this.value=s}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const e=this.value;let s,i=0;for(const n of t)void 0===(s=e[i])&&(s=new C(this.options),e.push(s),0===i?s.appendIntoPart(this):s.insertAfterPart(e[i-1])),s.setValue(n),s.commit(),i++;i<e.length&&(e.length=i,this.clear(s&&s.endNode))}clear(t=this.startNode){o(this.startNode.parentNode,t.nextSibling,this.endNode)}}class x{constructor(t,e,s){if(this.value=void 0,this.__pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=a}}class O extends w{constructor(t,e,s){super(t,e,s),this.single=2===s.length&&""===s[0]&&""===s[1]}_createPart(){return new T(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class T extends P{}let N=!1;try{const t={get capture(){return N=!0,!1}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){}class A{constructor(t,e,s){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this.__boundHandleEvent=t=>this.handleEvent(t)}setValue(t){this.__pendingValue=t}commit(){for(;n(this.__pendingValue);){const t=this.__pendingValue;this.__pendingValue=a,t(this)}if(this.__pendingValue===a)return;const t=this.__pendingValue,e=this.value,s=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),i=null!=t&&(null==e||s);s&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=j(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=a}handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}const j=t=>t&&(N?{capture:t.capture,passive:t.passive,once:t.once}:t.capture);
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -79,7 +79,7 @@ const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isAr
|
||||||
* Code distributed by Google as part of the polymer project is also
|
* Code distributed by Google as part of the polymer project is also
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/function V(t){let e=k.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},k.set(t.type,e));let s=e.stringsArray.get(t.strings);if(void 0!==s)return s;const i=t.strings.join(h);return void 0===(s=e.keyString.get(i))&&(s=new u(t,t.getTemplateElement()),e.keyString.set(i,s)),e.stringsArray.set(t.strings,s),s}const k=new Map,M=new WeakMap;
|
*/function V(t){let e=k.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},k.set(t.type,e));let s=e.stringsArray.get(t.strings);if(void 0!==s)return s;const i=t.strings.join(h);return void 0===(s=e.keyString.get(i))&&(s=new d(t,t.getTemplateElement()),e.keyString.set(i,s)),e.stringsArray.set(t.strings,s),s}const k=new Map,M=new WeakMap;
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -120,7 +120,7 @@ const S=t=>null===t||!("object"==typeof t||"function"==typeof t),b=t=>Array.isAr
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
const q=(t,e)=>`${t}--${e}`;let I=!0;void 0===window.ShadyCSS?I=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),I=!1);const H=t=>e=>{const s=q(e.type,t);let i=k.get(s);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},k.set(s,i));let n=i.stringsArray.get(e.strings);if(void 0!==n)return n;const r=e.strings.join(h);if(void 0===(n=i.keyString.get(r))){const s=e.getTemplateElement();I&&window.ShadyCSS.prepareTemplateDom(s,t),n=new u(e,s),i.keyString.set(r,n)}return i.stringsArray.set(e.strings,n),n},D=["html","svg"],L=new Set,B=(t,e,s)=>{L.add(s);const i=t.querySelectorAll("style"),{length:n}=i;if(0===n)return void window.ShadyCSS.prepareTemplateStyles(e.element,s);const r=document.createElement("style");for(let t=0;t<n;t++){const e=i[t];e.parentNode.removeChild(e),r.textContent+=e.textContent}(t=>{D.forEach(e=>{const s=k.get(q(e,t));void 0!==s&&s.keyString.forEach(t=>{const{element:{content:e}}=t,s=new Set;Array.from(e.querySelectorAll("style")).forEach(t=>{s.add(t)}),z(t,s)})})})(s);const o=e.element.content;!function(t,e,s=null){const{element:{content:i},parts:n}=t;if(null==s)return void i.appendChild(e);const r=document.createTreeWalker(i,U,null,!1);let o=$(n),a=0,l=-1;for(;r.nextNode();)for(l++,r.currentNode===s&&(a=F(e),s.parentNode.insertBefore(e,s));-1!==o&&n[o].index===l;){if(a>0){for(;-1!==o;)n[o].index+=a,o=$(n,o);return}o=$(n,o)}}(e,r,o.firstChild),window.ShadyCSS.prepareTemplateStyles(e.element,s);const a=o.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==a)t.insertBefore(a.cloneNode(!0),t.firstChild);else{o.insertBefore(r,o.firstChild);const t=new Set;t.add(r),z(e,t)}};
|
const q=(t,e)=>`${t}--${e}`;let I=!0;void 0===window.ShadyCSS?I=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),I=!1);const H=t=>e=>{const s=q(e.type,t);let i=k.get(s);void 0===i&&(i={stringsArray:new WeakMap,keyString:new Map},k.set(s,i));let n=i.stringsArray.get(e.strings);if(void 0!==n)return n;const r=e.strings.join(h);if(void 0===(n=i.keyString.get(r))){const s=e.getTemplateElement();I&&window.ShadyCSS.prepareTemplateDom(s,t),n=new d(e,s),i.keyString.set(r,n)}return i.stringsArray.set(e.strings,n),n},D=["html","svg"],L=new Set,B=(t,e,s)=>{L.add(s);const i=t.querySelectorAll("style"),{length:n}=i;if(0===n)return void window.ShadyCSS.prepareTemplateStyles(e.element,s);const r=document.createElement("style");for(let t=0;t<n;t++){const e=i[t];e.parentNode.removeChild(e),r.textContent+=e.textContent}(t=>{D.forEach(e=>{const s=k.get(q(e,t));void 0!==s&&s.keyString.forEach(t=>{const{element:{content:e}}=t,s=new Set;Array.from(e.querySelectorAll("style")).forEach(t=>{s.add(t)}),z(t,s)})})})(s);const o=e.element.content;!function(t,e,s=null){const{element:{content:i},parts:n}=t;if(null==s)return void i.appendChild(e);const r=document.createTreeWalker(i,U,null,!1);let o=$(n),a=0,l=-1;for(;r.nextNode();)for(l++,r.currentNode===s&&(a=F(e),s.parentNode.insertBefore(e,s));-1!==o&&n[o].index===l;){if(a>0){for(;-1!==o;)n[o].index+=a,o=$(n,o);return}o=$(n,o)}}(e,r,o.firstChild),window.ShadyCSS.prepareTemplateStyles(e.element,s);const a=o.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==a)t.insertBefore(a.cloneNode(!0),t.firstChild);else{o.insertBefore(r,o.firstChild);const t=new Set;t.add(r),z(e,t)}};
|
||||||
/**
|
/**
|
||||||
* @license
|
* @license
|
||||||
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
|
||||||
|
@ -162,7 +162,7 @@ const st=(t,e)=>"method"!==e.kind||!e.descriptor||"value"in e.descriptor?{kind:"
|
||||||
* subject to an additional IP rights grant found at
|
* subject to an additional IP rights grant found at
|
||||||
* http://polymer.github.io/PATENTS.txt
|
* http://polymer.github.io/PATENTS.txt
|
||||||
*/
|
*/
|
||||||
(window.litElementVersions||(window.litElementVersions=[])).push("2.0.1");const ot=t=>t.flat?t.flat(1/0):function t(e,s=[]){for(let i=0,n=e.length;i<n;i++){const n=e[i];Array.isArray(n)?t(n,s):s.push(n)}return s}(t);class at extends et{static finalize(){super.finalize(),this._styles=this.hasOwnProperty(JSCompiler_renameProperty("styles",this))?this._getUniqueStyles():this._styles||[]}static _getUniqueStyles(){const t=this.styles,e=[];if(Array.isArray(t)){ot(t).reduceRight((t,e)=>(t.add(e),t),new Set).forEach(t=>e.unshift(t))}else t&&e.push(t);return e}initialize(){super.initialize(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?rt?this.renderRoot.adoptedStyleSheets=t.map(t=>t.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map(t=>t.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){super.update(t);const e=this.render();e instanceof v&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)}))}render(){}}at.finalized=!0,at.render=(t,e,s)=>{const i=s.scopeName,n=M.has(e),r=I&&11===e.nodeType&&!!e.host&&t instanceof v,a=r&&!L.has(i),l=a?document.createDocumentFragment():e;if(((t,e,s)=>{let i=M.get(e);void 0===i&&(o(e,e.firstChild),M.set(e,i=new C(Object.assign({templateFactory:V},s))),i.appendInto(e)),i.setValue(t),i.commit()})(t,l,Object.assign({templateFactory:H(i)},s)),a){const t=M.get(l);M.delete(l),t.value instanceof g&&B(l,t.value.template,i),o(e,e.firstChild),e.appendChild(l),M.set(e,t)}!n&&r&&window.ShadyCSS.styleElement(e.host)};const lt=(t,e)=>0!=(t.attributes.supported_features&e);class ht{constructor(t,e){this.hass=t,this.stateObj=e,this._attr=e.attributes,this._feat=this._attr.supported_features}get isFullyOpen(){return void 0!==this._attr.current_position?100===this._attr.current_position:"open"===this.stateObj.state}get isFullyClosed(){return void 0!==this._attr.current_position?0===this._attr.current_position:"closed"===this.stateObj.state}get isFullyOpenTilt(){return 100===this._attr.current_tilt_position}get isFullyClosedTilt(){return 0===this._attr.current_tilt_position}get isOpening(){return"opening"===this.stateObj.state}get isClosing(){return"closing"===this.stateObj.state}get supportsOpen(){return lt(this.stateObj,1)}get supportsClose(){return lt(this.stateObj,2)}get supportsSetPosition(){return lt(this.stateObj,4)}get supportsStop(){return lt(this.stateObj,8)}get supportsOpenTilt(){return lt(this.stateObj,16)}get supportsCloseTilt(){return lt(this.stateObj,32)}get supportsStopTilt(){return lt(this.stateObj,64)}get supportsSetTiltPosition(){return lt(this.stateObj,128)}get isTiltOnly(){const t=this.supportsOpen||this.supportsClose||this.supportsStop;return(this.supportsOpenTilt||this.supportsCloseTilt||this.supportsStopTilt)&&!t}openCover(){this.callService("open_cover")}closeCover(){this.callService("close_cover")}stopCover(){this.callService("stop_cover")}openCoverTilt(){this.callService("open_cover_tilt")}closeCoverTilt(){this.callService("close_cover_tilt")}stopCoverTilt(){this.callService("stop_cover_tilt")}setCoverPosition(t){this.callService("set_cover_position",{position:t})}setCoverTiltPosition(t){this.callService("set_cover_tilt_position",{tilt_position:t})}callService(t,e={}){e.entity_id=this.stateObj.entity_id,this.hass.callService("cover",t,e)}}s.d(e,"StateCardCustomCover",function(){return pt});var ct=function(t,e,s,i){var n,r=arguments.length,o=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,s,i);else for(var a=t.length-1;a>=0;a--)(n=t[a])&&(o=(r<3?n(o):r>3?n(e,s,o):n(e,s))||o);return r>3&&o&&Object.defineProperty(e,s,o),o};let pt=class extends at{constructor(){super(...arguments),this.inDialog=!1}get stateObj(){return this.hass&&this._config?this.hass.states[this._config.entity]:null}setConfig(t){if(!t||!t.entity)throw new Error("Invalid configuration");this._config=t}get entityObj(){if(this.hass&&this.stateObj)return new ht(this.hass,this.stateObj);throw new Error("Trying to get entityObj before setting hass & config")}static getCardSize(){return 1}stateInfoTemplate(){return R`
|
(window.litElementVersions||(window.litElementVersions=[])).push("2.0.1");const ot=t=>t.flat?t.flat(1/0):function t(e,s=[]){for(let i=0,n=e.length;i<n;i++){const n=e[i];Array.isArray(n)?t(n,s):s.push(n)}return s}(t);class at extends et{static finalize(){super.finalize(),this._styles=this.hasOwnProperty(JSCompiler_renameProperty("styles",this))?this._getUniqueStyles():this._styles||[]}static _getUniqueStyles(){const t=this.styles,e=[];if(Array.isArray(t)){ot(t).reduceRight((t,e)=>(t.add(e),t),new Set).forEach(t=>e.unshift(t))}else t&&e.push(t);return e}initialize(){super.initialize(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const t=this.constructor._styles;0!==t.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?rt?this.renderRoot.adoptedStyleSheets=t.map(t=>t.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(t.map(t=>t.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(t){super.update(t);const e=this.render();e instanceof v&&this.constructor.render(e,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(t=>{const e=document.createElement("style");e.textContent=t.cssText,this.renderRoot.appendChild(e)}))}render(){}}at.finalized=!0,at.render=(t,e,s)=>{const i=s.scopeName,n=M.has(e),r=I&&11===e.nodeType&&!!e.host&&t instanceof v,a=r&&!L.has(i),l=a?document.createDocumentFragment():e;if(((t,e,s)=>{let i=M.get(e);void 0===i&&(o(e,e.firstChild),M.set(e,i=new C(Object.assign({templateFactory:V},s))),i.appendInto(e)),i.setValue(t),i.commit()})(t,l,Object.assign({templateFactory:H(i)},s)),a){const t=M.get(l);M.delete(l),t.value instanceof y&&B(l,t.value.template,i),o(e,e.firstChild),e.appendChild(l),M.set(e,t)}!n&&r&&window.ShadyCSS.styleElement(e.host)};const lt=(t,e)=>0!=(t.attributes.supported_features&e);class ht{constructor(t,e){this.hass=t,this.stateObj=e,this._attr=e.attributes,this._feat=this._attr.supported_features}get isFullyOpen(){return void 0!==this._attr.current_position?100===this._attr.current_position:"open"===this.stateObj.state}get isFullyClosed(){return void 0!==this._attr.current_position?0===this._attr.current_position:"closed"===this.stateObj.state}get isFullyOpenTilt(){return 100===this._attr.current_tilt_position}get isFullyClosedTilt(){return 0===this._attr.current_tilt_position}get isOpening(){return"opening"===this.stateObj.state}get isClosing(){return"closing"===this.stateObj.state}get supportsOpen(){return lt(this.stateObj,1)}get supportsClose(){return lt(this.stateObj,2)}get supportsSetPosition(){return lt(this.stateObj,4)}get supportsStop(){return lt(this.stateObj,8)}get supportsOpenTilt(){return lt(this.stateObj,16)}get supportsCloseTilt(){return lt(this.stateObj,32)}get supportsStopTilt(){return lt(this.stateObj,64)}get supportsSetTiltPosition(){return lt(this.stateObj,128)}get isTiltOnly(){const t=this.supportsOpen||this.supportsClose||this.supportsStop;return(this.supportsOpenTilt||this.supportsCloseTilt||this.supportsStopTilt)&&!t}openCover(){this.callService("open_cover")}closeCover(){this.callService("close_cover")}stopCover(){this.callService("stop_cover")}openCoverTilt(){this.callService("open_cover_tilt")}closeCoverTilt(){this.callService("close_cover_tilt")}stopCoverTilt(){this.callService("stop_cover_tilt")}setCoverPosition(t){this.callService("set_cover_position",{position:t})}setCoverTiltPosition(t){this.callService("set_cover_tilt_position",{tilt_position:t})}callService(t,e={}){e.entity_id=this.stateObj.entity_id,this.hass.callService("cover",t,e)}}s.d(e,"StateCardCustomCover",function(){return pt});var ct=function(t,e,s,i){var n,r=arguments.length,o=r<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,s,i);else for(var a=t.length-1;a>=0;a--)(n=t[a])&&(o=(r<3?n(o):r>3?n(e,s,o):n(e,s))||o);return r>3&&o&&Object.defineProperty(e,s,o),o};let pt=class extends at{constructor(){super(...arguments),this.inDialog=!1}get stateObj(){return this.hass&&this._config?this.hass.states[this._config.entity]:null}setConfig(t){if(!t||!t.entity)throw new Error("Invalid configuration");this._config=t}get entityObj(){if(this.hass&&this.stateObj)return new ht(this.hass,this.stateObj);throw new Error("Trying to get entityObj before setting hass & config")}static getCardSize(){return 1}stateInfoTemplate(){return R`
|
||||||
State info template
|
State info template
|
||||||
`}render(){if(!this._config||!this.hass)return R``;const t=this.entityObj,e=this.hass.states[this._config.entity];return e?R`
|
`}render(){if(!this._config||!this.hass)return R``;const t=this.entityObj,e=this.hass.states[this._config.entity];return e?R`
|
||||||
<style include="iron-flex iron-flex-alignment"></style>
|
<style include="iron-flex iron-flex-alignment"></style>
|
||||||
|
@ -179,6 +179,10 @@ const st=(t,e)=>"method"!==e.kind||!e.descriptor||"value"in e.descriptor?{kind:"
|
||||||
--mdc-icon-size: 25px;
|
--mdc-icon-size: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ha-icon {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
[invisible] {
|
[invisible] {
|
||||||
visibility: hidden !important;
|
visibility: hidden !important;
|
||||||
}
|
}
|
||||||
|
@ -189,17 +193,23 @@ const st=(t,e)=>"method"!==e.kind||!e.descriptor||"value"in e.descriptor?{kind:"
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:menu"
|
icon="hass:menu"
|
||||||
@click=${this.onHalfOpenTap}
|
@click=${this.onHalfOpenTap}
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:menu"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-up"
|
icon="hass:arrow-up"
|
||||||
@click=${this.onOpenTap}
|
@click=${this.onOpenTap}
|
||||||
.disabled="${this.computeOpenDisabled(e,this.entityObj)}"
|
.disabled="${this.computeOpenDisabled(e,this.entityObj)}"
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-up"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
<ha-icon-button
|
<ha-icon-button
|
||||||
icon="hass:arrow-down"
|
icon="hass:arrow-down"
|
||||||
@click=${this.onCloseTap}
|
@click=${this.onCloseTap}
|
||||||
.disabled="${this.computeClosedDisabled(e,t)}"
|
.disabled="${this.computeClosedDisabled(e,t)}"
|
||||||
></ha-icon-button>
|
>
|
||||||
|
<ha-icon icon="hass:arrow-down"> </ha-icon>
|
||||||
|
</ha-icon-button>
|
||||||
</div>
|
</div>
|
||||||
</hui-generic-entity-row>
|
</hui-generic-entity-row>
|
||||||
`:R`
|
`:R`
|
||||||
|
|
Loading…
Reference in New Issue